banda estoy dando lata con la source de louis update 13 que liberó, bueno el punto es que estoy creando objetos mix desde source, agregue de manera correcta en mix.bmd para que la machine chaos acepte mi combinación pero tengo un detallito
//=================================================================================================
//alas level 4
//=================================================================================================
void CChaosBox::Wing4Mix(LPOBJ lpObj) // OK
{
int Chaospack30 = 0;
int Creationpack30 = 0;
int SoulPack30 = 0;
int BlessPack30 = 0;
int GarudaFlame = 0;
int GarudaFeather = 0;
int Wings3 = 0;
int itemcount = 0;
int ItemMoney = 0;
for(int n=0;n < CHAOS_BOX_SIZE;n++)
{
if(lpObj->ChaosBox[n].IsItem() == 0)
{
continue;
}
if(lpObj->ChaosBox[n].m_Index == GET_ITEM(12,141) && lpObj->ChaosBox[n].m_Level == 2)
{
Chaospack30++;
}
else if(lpObj->ChaosBox[n].m_Index == GET_ITEM(12,137) && lpObj->ChaosBox[n].m_Level == 2)
{
Creationpack30++;
}
else if(lpObj->ChaosBox[n].m_Index == GET_ITEM(12,31) && lpObj->ChaosBox[n].m_Level == 2)
{
SoulPack30++;
}
else if(lpObj->ChaosBox[n].m_Index == GET_ITEM(12,30) && lpObj->ChaosBox[n].m_Level == 2)
{
BlessPack30++;
}
else if(lpObj->ChaosBox[n].m_Index == GET_ITEM(13,166))
{
GarudaFlame++;
}
else if(lpObj->ChaosBox[n].m_Index == GET_ITEM(13,165))
{
GarudaFeather++;
}
else if(((lpObj->ChaosBox[n].m_Index >= GET_ITEM(12,36) && lpObj->ChaosBox[n].m_Index <= GET_ITEM(12,37)) || lpObj->ChaosBox[n].m_Index == GET_ITEM(12,38) || lpObj->ChaosBox[n].m_Index == GET_ITEM(12,39) || lpObj->ChaosBox[n].m_Index == GET_ITEM(12,40)) && (lpObj->ChaosBox[n].m_Level >= 9 && lpObj->ChaosBox[n].m_Option3 >= 1))
{
Wings3++;
ItemMoney += lpObj->ChaosBox[n].m_BuyMoney;
}
}
if(Chaospack30 != 1 || Creationpack30 != 1 || SoulPack30 != 1 || BlessPack30 != 1 || GarudaFlame != 1 || GarudaFeather != 1 || itemcount == 0)
{
this->GCChaosMixSend(lpObj->Index,7,0);
return;
}
if(gServerInfo.m_Wing4MixRate[lpObj->AccountLevel] == -1)
{
lpObj->ChaosSuccessRate = (ItemMoney/3000000)+1;
}
else
{
lpObj->ChaosSuccessRate = gServerInfo.m_Wing4MixRate[lpObj->AccountLevel];
}
if(this->GetTalismanOfLuckRate(lpObj,&lpObj->ChaosSuccessRate) == 0)
{
this->GCChaosMixSend(lpObj->Index,240,0);
return;
}
if(gServerInfo.m_Wing4MixRate[lpObj->AccountLevel] == -1)
{
lpObj->ChaosSuccessRate = ((lpObj->ChaosSuccessRate>40)?40:lpObj->ChaosSuccessRate);
}
else
{
lpObj->ChaosSuccessRate = ((lpObj->ChaosSuccessRate>100)?100:lpObj->ChaosSuccessRate);
}
lpObj->ChaosMoney = lpObj->ChaosSuccessRate*200000;
int TaxMoney = (lpObj->ChaosMoney*gCastleSiegeSync.GetTaxRateChaos(lpObj->Index))/100;
lpObj->ChaosMoney += TaxMoney;
if(lpObj->Money < ((DWORD)lpObj->ChaosMoney))
{
this->GCChaosMixSend(lpObj->Index,2,0);
return;
}
lpObj->Money -= lpObj->ChaosMoney;
GCMoneySend(lpObj->Index,lpObj->Money);
gCastleSiegeSync.AddTributeMoney(TaxMoney);
if((GetLargeRand()%100) < lpObj->ChaosSuccessRate)
{
WORD ItemIndex = 0;
BYTE ItemOption2 = 0;
BYTE ItemOption3 = 0;
BYTE ItemNewOption = 0;
CRandomManager RandomManager;
RandomManager.AddElement(GET_ITEM(12,414),1);
RandomManager.AddElement(GET_ITEM(12,415),1);
RandomManager.AddElement(GET_ITEM(12,416),1);
RandomManager.AddElement(GET_ITEM(12,417),1);
RandomManager.AddElement(GET_ITEM(12,419),1);
RandomManager.AddElement(GET_ITEM(12,181),1);
RandomManager.AddElement(GET_ITEM(12,182),1);
for (int i=0; i < gCustomWingMix.m_count; i++)
{
RandomManager.AddElement(GET_ITEM(gCustomWingMix.m_Data[i].m_Category,gCustomWingMix.m_Data[i].m_Index),1);
}
if (gServerInfo.m_DisableWingMixDL != 1)
{
RandomManager.AddElement(GET_ITEM(12,81),1);
}
if (gServerInfo.m_DisableWingMixSU != 1)
{
RandomManager.AddElement(GET_ITEM(12,419),1);
}
#if(GAMESERVER_UPDATE>=601)
if (gServerInfo.m_DisableWingMixRF != 1)
{
RandomManager.AddElement(GET_ITEM(12,182),1);
}
#endif
RandomManager.GetRandomElement(&ItemIndex);
gItemOptionRate.GetItemOption2(6,&ItemOption2);
gItemOptionRate.GetItemOption3(6,&ItemOption3);
gItemOptionRate.GetItemOption4(6,&ItemNewOption);
gItemOptionRate.MakeNewOption(ItemIndex,ItemNewOption,&ItemNewOption);
GDCreateItemSend(lpObj->Index,0xFF,0,0,ItemIndex,0,0,0,ItemOption2,ItemOption3,-1,(ItemNewOption+(16*(GetLargeRand()%3))),0,0,0,0,0xFF,0);
gLog.Output(LOG_CHAOS_MIX,"[Wing4Mix][Success][%s][%s] - (ChaosSuccessRate: %d, ChaosMoney: %d)",lpObj->Account,lpObj->Name,lpObj->ChaosSuccessRate,lpObj->ChaosMoney);
}
else
{
this->ChaosBoxInit(lpObj);
this->GCChaosBoxSend(lpObj,0);
this->GCChaosMixSend(lpObj->Index,0,0);
gLog.Output(LOG_CHAOS_MIX,"[Wing4Mix][Failure][%s][%s] - (ChaosSuccessRate: %d, ChaosMoney: %d)",lpObj->Account,lpObj->Name,lpObj->ChaosSuccessRate,lpObj->ChaosMoney);
}
}
Si alguno me es tan amable de indicar que es lo que posiblemente no estoy haciendo?, quiero pensar que esa función se agrega en algun lugar mas, para generar el llamado de dicha función, o algo me ha de estar faltando