hola chicos tengo un problema con el autobuff en el offlevel por ejemplo
yo lo dejo en un spot y deberia consumir la mana estando en offlevel
aqui les dejo un ejemplo con el soul master
ya eh modificado el codigo de todas las manera y nada
Son las SRC De Exteam.
si alguien me puede colaborar como arreglar para que se ejecute, estoy proceso de aprendizaje..
//=====================================
// Dark Wizard Offline Experience
//=====================================
void cOffExp::DarkWizardOff(LPOBJ lpObj)
{
int SearchSkill = 0;
CMagicInf * lpMagic;
if(gObjGetMagicSearch( lpObj, 9) != NULL) SearchSkill = 9;
else if(gObjGetMagicSearch( lpObj, 445) != NULL) SearchSkill = 445;
else if(gObjGetMagicSearch( lpObj, 446) != NULL) SearchSkill = 446;
else if(gObjGetMagicSearch( lpObj, 447) != NULL) SearchSkill = 447;
else if(gObjGetMagicSearch( lpObj, 448) != NULL) SearchSkill = 448;
else if(gObjGetMagicSearch( lpObj, 449) != NULL) SearchSkill = 449;
else return;
lpMagic = gObjGetMagicSearch( lpObj, SearchSkill);
if(lpMagic==NULL) return;
gObjUseSkill.UseSkill(lpObj->m_Index, lpMagic,lpObj->X, lpObj->Y,0,0,-1);
int dis;
int tObjNum;
BYTE attr;
for (int n=0;n<MAX_VIEWPORT_MONSTER;n++)
{
tObjNum = lpObj->VpPlayer2[n].number;
if(lpObj->VpPlayer2[n].state == 0) continue;
if ( tObjNum >= 0 )
{
if ( gObj[tObjNum].Type == OBJ_MONSTER )
{
attr = MapC[gObj[tObjNum].MapNumber].GetAttr(gObj[tObjNum].X, gObj[tObjNum].Y);
if ( (attr&1) != 1 )
{
dis = gObjCalDistance(lpObj, &gObj[tObjNum]);
if(6 >= dis)
{
gObjAttack(lpObj, &gObj[tObjNum], lpMagic, FALSE, 1, 0, FALSE,0,0);
}
}
}
}
}
this->UseMana(lpObj->m_Index);
}
codigo para el que funcione el autobuff del mana.
void cOffExp::UseMana(int aIndex)
{
LPOBJ lpObj = &gObj[aIndex];
if(lpObj->Mana > 100) return;
int pos;
pos = gObjGetManaItemPos(aIndex);
if(pos == -1) return;
if( lpObj->pInventory[pos].m_Type == ITEMGET(14,4) ||
lpObj->pInventory[pos].m_Type == ITEMGET(14,5) ||
lpObj->pInventory[pos].m_Type == ITEMGET(14,6) )
{
int tMana = (lpObj->pInventory[pos].m_Value*10) - (gObj[aIndex].Level);
if ( tMana < 0 )
{
tMana=0;
}
switch ( lpObj->pInventory[pos].m_Type )
{
case ITEMGET(14,4):
tMana += ((int)(gObj[aIndex].MaxMana + gObj[aIndex].AddMana))*20/100;
break;
case ITEMGET(14,5):
tMana += ((int)(gObj[aIndex].MaxMana + gObj[aIndex].AddMana))*30/100;
break;
case ITEMGET(14,6):
tMana += ((int)(gObj[aIndex].MaxMana + gObj[aIndex].AddMana))*40/100;
break;
}
gObj[aIndex].Mana += tMana;
if ( gObj[aIndex].Mana > (gObj[aIndex].MaxMana+gObj[aIndex].AddMana-1.0f) )
{
gObj[aIndex].Mana = gObj[aIndex].MaxMana+gObj[aIndex].AddMana;
}
GCManaSend(aIndex, (int)gObj[aIndex].Mana, 0xFF, 0, (int)gObj[aIndex].BP);
if ( !gObjSearchItemMinus(&gObj[aIndex], pos, 1) )
{
gObjInventoryItemSet(aIndex, pos, -1);
gObj[aIndex].pInventory[pos].Clear();
GCInventoryItemDeleteSend(aIndex, pos, 1);
}
}
}
.h
void UseMana(int aIndex);