@Willerson,
Tambem imaginei isso estou tentando mais ainda não obtive sucesso...
Queria saber se seria mais ou menos isso:
Código:
#include "SkillTree.h"
#include "ObjectStruct.h"
#include "Gameserver.h"
CSkillTree cSkillTree;
CSkillTree::CSkillTree()
{
}
CSkillTree::~CSkillTree()
{
}
void CSkillTree::AddDamage(int aIndex,int MinDmg,int MaxDmg)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
gObj->m_MagicDamageMin+=MinDmg;
gObj->m_MagicDamageMax+=MaxDmg;
gObj->m_AttackDamageMinLeft+=MinDmg;
gObj->m_AttackDamageMinRight+=MinDmg;
gObj->m_AttackDamageMaxLeft+=MaxDmg;
gObj->m_AttackDamageMaxRight+=MaxDmg;
}
// -------------------------
void CSkillTree::RemoveDamage(int aIndex,int MinDmg,int MaxDmg)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
gObj->m_MagicDamageMin-=MinDmg;
gObj->m_MagicDamageMax-=MaxDmg;
gObj->m_AttackDamageMinLeft-=MinDmg;
gObj->m_AttackDamageMinRight-=MinDmg;
gObj->m_AttackDamageMaxLeft-=MaxDmg;
gObj->m_AttackDamageMaxRight-=MaxDmg;
}
// -------------------------
void CSkillTree::Manager(BYTE protoNum,LPBYTE aRecv,DWORD aLen,short aIndex,DWORD Encrypt,int Serial)
{
OBJECTSTRUCT *gObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
int MinDmg=0;
int MaxDmg=0;
BOOL IsDmgSkillUsed = FALSE;
//======================================================================================================
//-- Sleep Strengthener
//======================================================================================================
if (aRecv[3] == 0x02 && aRecv[4] == 0x17) // Sleep Strengthener Lvl 1 {535} //100 Damage //125 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x18) // Sleep Strengthener Lvl 2 {536} //100 Damage //125 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x19) // Sleep Strengthener Lvl 3 {537} //100 Damage //125 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x1A) // Sleep Strengthener Lvl 4 {538} //100 Damage //125 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x1B) // Sleep Strengthener Lvl 5 {539} //100 Damage //125 Mana
{
goto Exit;
}
//======================================================================================================
//-- Chain Lightning Strengthener
//======================================================================================================
if (aRecv[3] == 0x02 && aRecv[4] == 0x1C) // Chain Lightning Strengthener Lvl 1 {540} //75 Damage //94 Mana
{
IsDmgSkillUsed = TRUE;
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x1D) // Chain Lightning Strengthener Lvl 2 {541} //80 Damage //103 Mana
{
IsDmgSkillUsed = TRUE;
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x1E) // Chain Lightning Strengthener Lvl 3 {542} //85 Damage //112 Mana
{
IsDmgSkillUsed = TRUE;
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x1F) // Chain Lightning Strengthener Lvl 4 {543} //90 Damage //121 Mana
{
IsDmgSkillUsed = TRUE;
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x20) // Chain Lightning Strengthener Lvl 5 {544} //95 Damage //130 Mana
{
IsDmgSkillUsed = TRUE;
goto Exit;
}
//======================================================================================================
// Lightning Shock Strengthener
//======================================================================================================
if (aRecv[3] == 0x02 && aRecv[4] == 0x21) // Lightning Shock Strengthener Lvl 1 {545} //100 Damage //125 Mana
{
aRecv[3] = 0x00;
aRecv[4] = 0xE6;
IsDmgSkillUsed = TRUE;
//Fix BP & Mana Usage
gObj->Mana -= (float)(((545 % 5) +1) * 9);
//Calculation Aditional "Defence & Attack"
MinDmg = ((545 % 5) +1) * 70;
MaxDmg = ((545 % 5) +1) * (70 + 5/2);
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x22) // Lightning Shock Strengthener Lvl 2 {546} //105 Damage //135 Mana
{
aRecv[3] = 0x00;
aRecv[4] = 0xE6;
IsDmgSkillUsed = TRUE;
//Fix BP and Mana Usage
gObj->Mana -= (float)(((546 % 5) +1) * 9);
//Calculation Aditional "Defence & Attack"
MinDmg = ((546 % 5) + 1) * 70;
MaxDmg = ((546 % 5) + 1) * (70 + 5/2);
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x23) // Lightning Shock Strengthener Lvl 3 {547} //110 Damage //145 Mana
{
aRecv[3] = 0x00;
aRecv[4] = 0xE6;
IsDmgSkillUsed = TRUE;
//Fix BP and Mana Usage
gObj->Mana -= (float)(((547 % 5) + 1) * 9);
//Calculation Aditional "Defence & Attack"
MinDmg = ((547 % 5) + 1) * 70;
MaxDmg = ((547 % 5) + 1) * (70 + 5/2);
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x24) // Lightning Shock Strengthener Lvl 4 {548} //115 Damage //155 Mana
{
aRecv[3] = 0x00;
aRecv[4] = 0xE6;
IsDmgSkillUsed = TRUE;
//Fix BP and Mana Usage
gObj->Mana -= (float)(((548 % 5) +1) * 9);
//Calculation Aditional "Defence & Attack"
MinDmg =((548 % 5) +1) * 70;
MaxDmg =((548 % 5) +1) * (70 + 5/2);
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x25) // Lightning Shock Strengthener Lvl 5 {549} //120 Damage //165 Mana
{
aRecv[3] = 0x00;
aRecv[4] = 0xE6;
IsDmgSkillUsed = TRUE;
//Fix BP and Mana Usage
gObj->Mana -= (float)(((549 % 5) +1) * 9);
//Calculation Aditional "Defence & Attack"
MinDmg = ((549 % 5) +1) * 70;
MaxDmg = ((549 % 5) +1) * (70 + 5/2);
goto Exit;
}
// -----------------------------------------------------------------------------------------------
// Drain Life Strengthener
// -----------------------------------------------------------------------------------------------
if (aRecv[3] == 0x02 && aRecv[4] == 0x26) //550 Drain Life Strengthener Lvl 1 //40 Dmg //57 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x27) //551 Drain Life Strengthener Lvl 2 //45 Dmg //64 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x28) //552 Drain Life Strengthener Lvl 3 //50 Dmg //71 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x29) //553 Drain Life Strengthener Lvl 4 //55 Dmg //78 Mana
{
goto Exit;
}
else if (aRecv[3] == 0x02 && aRecv[4] == 0x2A) //554 Drain Life Strengthener Lvl 5 //60 Dmg //85 Mana
{
goto Exit;
}
Exit:
if (IsDmgSkillUsed == TRUE)
this->AddDamage(aIndex,MinDmg,MaxDmg);
GCServerMsgStringSend("Added Damage",aIndex,1);
DataRecv(protoNum,aRecv,aLen,aIndex);
if (IsDmgSkillUsed == TRUE)
this->RemoveDamage(aIndex,MinDmg,MaxDmg);
GCServerMsgStringSend("Removed Damage",aIndex,1);
return;
}
Código:
#include "StdAfx.H"
#ifndef SKILL_TREE_H
#define SKILL_TREE_H
class CSkillTree
{
public:
CSkillTree(void);
~CSkillTree(void);
void Manager(BYTE protoNum, LPBYTE aRecv, DWORD aLen, short aIndex, DWORD Encrypt, int Serial);
void AddDamage(int aIndex, int MinDam, int MaxDam);
void RemoveDamage(int aIndex, int MinDmg, int MaxDmg);
};
extern CSkillTree cSkillTree;
#endif
Alguem puder dar uma força...
Agradeço ajuda.