Mentor
03/02/2018, 03:21 PM
Olá pessoal, venho compartilhar na PZ uma maneira de ter um combo em qualquer personagem neste caso, eu farei isso com um MG, isso é fornecido em Files Season 6. Essa custom foi compartilhada pelo fedrock, então os créditos são dele.
Em GS ComboSkill.cpp buscar por:
int CComboSkill::GetSkillType(WORD skill) // OK
Então vai aparecer algo assim:
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH)
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM)
{
return 1;
}
else
{
return -1;
}
}
Uma vez que a linha é encontrada, nós nos concentramos no if e no outro, quais são estes dois:
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH) // E adicione a Skill que desejamos aqui. Por exemplo, adicionei isso: SKILL_FIRE_SLASH, mas você deve ter em mente que aqui está a Skill que é inserida no primeiro osso com o qual colamos primeiro
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM)// Então, aqui, entramos na segunda e terceira habilidade e, neste caso, eu apenas entrei um que seria o seguinte: SKILL_LIGHTNING
{
return 1;
}
E isso parece:
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH || skill == SKILL_FIRE_SLASH )
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM || skill == SKILL_LIGHTNING)
{
return 1;
}
else
{
return -1;
}
}
Todas as Skill que você deseja colocar são encontradas no SkillManager.h.
O combo funciona da seguinte forma 1) FireFlash 2) Lighting 3) TwistingSlash
A Skill Twisting Slash não precisa ser adicionada porque já está na linha como habilidade == SKILL_TWISTING_SLASH
Aqui está uma imagem do combo:
[Only registered and activated users can see links]
Atenção! Informações importante passada pelo louis para que o tutorial funcione 100%:
Não tem como colocar tudo que o falta, mas você tem que editar todas as skills (de ataque) no SkillManager.cpp, quando digo todos é todas que você queira que funcione o combo, no caso a skill 3(ultima skill que ativa o combo), eu adicionei em todas skills do servidor para isso um exemplo:
bool CSkillManager::SkillDecay(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];
if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,x,y) == 0)
{
return 0;
}
int count = 0;
for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}
int index = lpObj->VpPlayer2[n].index;
if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}
if(this->CheckSkillRadio(lpSkill->m_index,x,y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}
gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,0);
if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}
if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
{
break;
}
}
return 1;
}
o que está em vermelho não existia.
Além disso você deve modificar todos o .h referente as funções e a função RunningSkill.
Basta copiar o exemplo da skill do combo do bk.
abraço
Créditos:
fedrock
louis
Em GS ComboSkill.cpp buscar por:
int CComboSkill::GetSkillType(WORD skill) // OK
Então vai aparecer algo assim:
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH)
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM)
{
return 1;
}
else
{
return -1;
}
}
Uma vez que a linha é encontrada, nós nos concentramos no if e no outro, quais são estes dois:
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH) // E adicione a Skill que desejamos aqui. Por exemplo, adicionei isso: SKILL_FIRE_SLASH, mas você deve ter em mente que aqui está a Skill que é inserida no primeiro osso com o qual colamos primeiro
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM)// Então, aqui, entramos na segunda e terceira habilidade e, neste caso, eu apenas entrei um que seria o seguinte: SKILL_LIGHTNING
{
return 1;
}
E isso parece:
int CComboSkill::GetSkillType(WORD skill) // OK
{
if(skill == SKILL_FALLING_SLASH || skill == SKILL_LUNGE || skill == SKILL_UPPERCUT || skill == SKILL_CYCLONE || skill == SKILL_SLASH || skill == SKILL_FIRE_SLASH )
{
return 0;
}
else if(skill == SKILL_TWISTING_SLASH || skill == SKILL_RAGEFUL_BLOW || skill == SKILL_DEATH_STAB || skill == SKILL_FROZEN_STAB || skill == SKILL_BLOOD_STORM || skill == SKILL_LIGHTNING)
{
return 1;
}
else
{
return -1;
}
}
Todas as Skill que você deseja colocar são encontradas no SkillManager.h.
O combo funciona da seguinte forma 1) FireFlash 2) Lighting 3) TwistingSlash
A Skill Twisting Slash não precisa ser adicionada porque já está na linha como habilidade == SKILL_TWISTING_SLASH
Aqui está uma imagem do combo:
[Only registered and activated users can see links]
Atenção! Informações importante passada pelo louis para que o tutorial funcione 100%:
Não tem como colocar tudo que o falta, mas você tem que editar todas as skills (de ataque) no SkillManager.cpp, quando digo todos é todas que você queira que funcione o combo, no caso a skill 3(ultima skill que ativa o combo), eu adicionei em todas skills do servidor para isso um exemplo:
bool CSkillManager::SkillDecay(int aIndex,int bIndex,CSkill* lpSkill,BYTE x,BYTE y,bool combo) // OK
{
LPOBJ lpObj = &gObj[aIndex];
if(this->CheckSkillRange(lpSkill->m_index,lpObj->X,lpObj->Y,x,y) == 0)
{
return 0;
}
int count = 0;
for(int n=0;n < MAX_VIEWPORT;n++)
{
if(lpObj->VpPlayer2[n].state == VIEWPORT_NONE)
{
continue;
}
int index = lpObj->VpPlayer2[n].index;
if(this->CheckSkillTarget(lpObj,index,bIndex,lpObj->VpPlayer2[n].type) == 0)
{
continue;
}
if(this->CheckSkillRadio(lpSkill->m_index,x,y,gObj[index].X,gObj[index].Y) == 0)
{
continue;
}
gAttack.Attack(lpObj,&gObj[index],lpSkill,0,0,0,0,0);
if(combo != 0)
{
this->GCSkillAttackSend(lpObj,SKILL_COMBO,index,1);
}
if(CHECK_SKILL_ATTACK_COUNT(count) == 0)
{
break;
}
}
return 1;
}
o que está em vermelho não existia.
Além disso você deve modificar todos o .h referente as funções e a função RunningSkill.
Basta copiar o exemplo da skill do combo do bk.
abraço
Créditos:
fedrock
louis