porque seus creditos vc que fez ?
Bom Não Vou dizer nada a respeito da source poi e super boa aprovo ^^
se gosto agradeça ;D
MossSystem.cpp
MossSystem.hCódigo PHP:
bool MossSellItem(int aIndex, unsigned char* aRecv)
{
OBJECTSTRUCT *lpObj = (OBJECTSTRUCT*)OBJECT_POINTER(aIndex);
if(ObjTab[aIndex].TargetShopNumber==492)
{
PMSG_BUYRESULT pResult;
pResult.h.c=0xC1;
pResult.h.headcode=0x32;
pResult.h.size=16;
pResult.Result=-1;
if ( ObjTab[aIndex].Money < Config.moss.Zen )
{
GCServerMsgStringSend("You are short of zen.", aIndex, 1);
Log.outNormal("[Moss the Gambler] [%s][%s] Lacking zen.", ObjTab[aIndex].AccountID, ObjTab[aIndex].Name);
DataSend(aIndex, (LPBYTE)&pResult, pResult.h.size);
return true;
}
if ( !Config.moss.Enabled )
{
GCServerMsgStringSend("Moss merchant is disabled",aIndex,1);
DataSend(aIndex, (LPBYTE)&pResult, pResult.h.size);
return true;
}
CItem sitemsend;
CItem itemsend;
int ItemDropSkill = 0;
int ItemDropLuck = 0;
int ItemDropOption = 0;
int Excellent = 0;
if(aRecv[3]==0)
{
sitemsend.m_Type=3*512+11;
}
else if(aRecv[3]==2)
{
sitemsend.m_Type=5*512+33;
}
else if(aRecv[3]==4)
{
sitemsend.m_Type=4*512+24;
}
else if(aRecv[3]==6)
{
sitemsend.m_Type=5*512+34;
}
else if(aRecv[3]==24)
{
sitemsend.m_Type=2*512+18;
}
sitemsend.m_Level=(rand()%(1300))/100;
sitemsend.m_serial=0;
sitemsend.m_Number=(unsigned long)gGetItemNumber;
sitemsend.m_SocketOption[0]=0xFF;
sitemsend.m_SocketOption[1]=0xFF;
sitemsend.m_SocketOption[2]=0xFF;
sitemsend.m_SocketOption[3]=0xFF;
sitemsend.m_SocketOption[4]=0xFF;
sitemsend.m_Option1=(rand()%(100))/50;
sitemsend.m_Option2=(rand()%(100))/30;
if(Config.moss.Skill == 0)
{
sitemsend.m_Option1 = 0;
}
if(Config.moss.Luck == 0)
{
sitemsend.m_Option2 = 0;
}
sitemsend.m_Option3=0;
if(Config.moss.Excellent != 0)
{
if((Excellent = rand() % 100) >= 100 - Config.moss.ExcRate)
{
sitemsend.m_NewOption=NewOptionRand(0);
PMSG_SERVERCMD pMsg;
PHeadSubSetB((LPBYTE)&pMsg,0xF3,0x40, sizeof(pMsg));
pMsg.CmdType = 0;
for ( short i=0;i<15;++i)
{
pMsg.X = lpObj->X+(rand() % 5)*2 - 4;
pMsg.Y = lpObj->Y+(rand() % 5)*2 - 4;
MsgSendV2(lpObj,(UCHAR*)&pMsg, sizeof(pMsg));
DataSend(lpObj->m_Index ,(UCHAR*)&pMsg, sizeof(pMsg));
}
GCServerMsgStringSend("Congratulations, you gambled a very nice excellent item!", aIndex, 0);
}
else
{
sitemsend.m_NewOption=0;
}
}
sitemsend.m_SpecialNum=0;
sitemsend.m_SetOption=0x00;
sitemsend.m_bItemExist=0x01;
sitemsend.m_JewelOfHarmonyOption=0x00;
sitemsend.m_ItemOptionEx=0x00;
float durb = ItemGetDurability(sitemsend.m_Type,sitemsend.m_Level,sitemsend.m_NewOption,0);
sitemsend.m_BaseDurability=durb;
sitemsend.m_Durability=durb;
sitemsend.m_DurabilitySmall=0;
itemsend=MossItemStruct(sitemsend);
if(itemsend.m_Type>0)
{
pResult.Result = gObjShopBuyInventoryInsertItem(aIndex, itemsend);
if ( pResult.Result != 0xFF )
{
MossItemByteConvert((LPBYTE)&pResult.ItemInfo[0], itemsend);
pResult.ItemInfo[11]=0xFF;
pResult.ItemInfo[10]=0xFF;
pResult.ItemInfo[9]=0xFF;
pResult.ItemInfo[8]=0xFF;
pResult.ItemInfo[7]=0xFF;
ObjTab[aIndex].Money-=Config.moss.Zen;
}
}
DataSend(aIndex, (LPBYTE)&pResult, pResult.h.size);
Log.outNormal("[Moss the Gambler][%s][%s] Gambled item: [%d] %d/%d/%d/%d/%d", ObjTab[aIndex].AccountID, ObjTab[aIndex].Name, itemsend.m_Type, itemsend.m_Level, itemsend.m_Option1, itemsend.m_Option2, itemsend.m_Option3, itemsend.m_NewOption);
GCMoneySend(aIndex, ObjTab[aIndex].Money);
return true;
}
else
return false;
}
CItem MossItemStruct(CItem item) // pseudo convert
{
int iChaosItem = 0;
if ( item.m_Option1 != 0 )
{
item.m_Special[item.m_SpecialNum] = 1;
item.m_Option1 = 1;
}
if (item.m_Type == 1547) // CRYSTAL SCYTHE
{
if(item.m_NewOption == 0) // NOT EXCELLENT
{
item.m_AttackSpeed = 40;
item.m_DamageMin = 0xBE;
item.m_DamageMax = 0xE2;
item.m_DamageMinOrigin = 0xBE;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
else // EXCELLENT
{
item.m_AttackSpeed = 40;
item.m_DamageMin = 0xE3;
item.m_DamageMax = 0x107;
item.m_DamageMinOrigin = 0xE3;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
// WYMAGANIA KLAS
item.m_RequireClass[0] = 0; // sm
item.m_RequireClass[1] = 2; // bk
item.m_RequireClass[2] = 0; // me
item.m_RequireClass[3] = 1; // mg
item.m_RequireClass[4] = 0; // dl
item.m_RequireClass[5] = 0; // su
}
if(item.m_Type == 2072) // AIR LYN BOW
{
if(item.m_NewOption == 0)
{
item.m_AttackSpeed = 45;
item.m_DamageMin = 0xAA;
item.m_DamageMax = 0xC2;
item.m_DamageMinOrigin = 0xAA;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
else
{
item.m_AttackSpeed = 45;
item.m_DamageMin = 0xCB;
item.m_DamageMax = 0xE3;
item.m_DamageMinOrigin = 0xCB;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
item.m_RequireClass[0] = 0; // sm
item.m_RequireClass[1] = 0; // bk
item.m_RequireClass[2] = 2; // me
item.m_RequireClass[3] = 0; // mg
item.m_RequireClass[4] = 0; // dl
item.m_RequireClass[5] = 0; // su
}
if(item.m_Type == 0x412) // STRIKER SCEPTER
{
if(item.m_NewOption == 0)
{
item.m_AttackSpeed = 40;
item.m_DamageMin = 0x70;
item.m_DamageMax = 0x7C;
item.m_DamageMinOrigin = 0x70;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
else
{
item.m_AttackSpeed = 40;
item.m_DamageMin = 0x88;
item.m_DamageMax = 0x94;
item.m_DamageMinOrigin = 0x88;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 0;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
item.m_RequireClass[0] = 0; // sm
item.m_RequireClass[1] = 0; // bk
item.m_RequireClass[2] = 0; // me
item.m_RequireClass[3] = 0; // mg
item.m_RequireClass[4] = 1; // dl
item.m_RequireClass[5] = 0; // su
}
if(item.m_Type == 0xA21) // CHROMATICK STAFF
{
if(item.m_NewOption == 0)
{
item.m_AttackSpeed = 30;
item.m_DamageMin = 0x37;
item.m_DamageMax = 0x39;
item.m_DamageMinOrigin = 0x37;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 124;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
else
{
item.m_AttackSpeed = 30;
item.m_DamageMin = 0x45;
item.m_DamageMax = 0x47;
item.m_DamageMinOrigin = 0x45;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 150;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
item.m_RequireClass[0] = 2; // sm
item.m_RequireClass[1] = 0; // bk
item.m_RequireClass[2] = 0; // me
item.m_RequireClass[3] = 1; // mg
item.m_RequireClass[4] = 0; // dl
item.m_RequireClass[5] = 0; // su
}
if(item.m_Type == 0xA22) // RAVEN STICK
{
if(item.m_NewOption == 0)
{
item.m_AttackSpeed = 30;
item.m_DamageMin = 0x46;
item.m_DamageMax = 0x4E;
item.m_DamageMinOrigin = 0x46;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 130;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
else
{
item.m_AttackSpeed = 30;
item.m_DamageMin = 0x56;
item.m_DamageMax = 0x5E;
item.m_DamageMinOrigin = 0x56;
item.m_WalkSpeed = 0;
item.m_SuccessfulBlocking = 0;
item.m_Defense = 0;
item.m_MagicDefense = 0;
item.m_Magic = 157;
item.m_Speed = 0;
item.m_DefenseOrigin = 0;
}
item.m_RequireClass[0] = 0; // sm
item.m_RequireClass[1] = 0; // bk
item.m_RequireClass[2] = 0; // me
item.m_RequireClass[3] = 0; // mg
item.m_RequireClass[4] = 0; // dl
item.m_RequireClass[5] = 2; // su
}
item.m_SpecialNum++;
if ( item.m_Option2 != 0 )
{
if ( item.m_Type >= ITEMGET(0,0) && item.m_Type < ITEMGET(12,0) )
{
item.m_Special[item.m_SpecialNum] = 84;
item.m_Option2 = 1;
}
if ( item.m_Type >= ITEMGET(12,0) && item.m_Type <= ITEMGET(12,6) )
{
item.m_Special[item.m_SpecialNum] = 84;
item.m_Option2 = 1;
}
if ( item.m_Type == ITEMGET(13,30) )
{
item.m_Special[item.m_SpecialNum] = 84;
item.m_Option2 = 1;
}
if ( item.m_Type >= ITEMGET(12,36) && item.m_Type <= ITEMGET(12,40) )
{
item.m_Special[item.m_SpecialNum] = 84;
item.m_Option2 = 1;
}
}
item.m_SpecialNum++;
if ( item.m_Option3 != 0 )
{
if ( item.m_Type >= ITEMGET(0,0) && item.m_Type < ITEMGET(5,0) )
{
item.m_Special[item.m_SpecialNum] = 80;
item.m_Option3 = item.m_Option3;
item.m_RequireStrength += item.m_Option3 * 4;
}
if ( item.m_Type >= ITEMGET(5,0) && item.m_Type < ITEMGET(6,0) )
{
item.m_Special[item.m_SpecialNum] = 81;
item.m_Option3 = item.m_Option3;
item.m_RequireStrength += item.m_Option3 * 4;
}
if ( item.m_Type >= ITEMGET(6,0) && item.m_Type < ITEMGET(7,0) )
{
item.m_Special[item.m_SpecialNum] = 82;
item.m_Option3 = item.m_Option3;
item.m_RequireStrength += item.m_Option3 * 4;
}
if ( item.m_Type >= ITEMGET(7,0) && item.m_Type < ITEMGET(12,0) )
{
item.m_Special[item.m_SpecialNum] = 83;
item.m_Option3 = item.m_Option3;
item.m_RequireStrength += item.m_Option3 * 4;
}
}
item.m_SpecialNum++;
if ( (item.m_Type >=ITEMGET(6,0) && item.m_Type <ITEMGET(12,0) ) || ( item.m_Type >=ITEMGET(13,8) && item.m_Type <= ITEMGET(13,9)) || (item.m_Type>=ITEMGET(13,21) && item.m_Type <= ITEMGET(13,24) ) )
{
if ( ((item.m_NewOption>>5)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x56;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>4)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x57;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>3)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x58;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>2)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x59;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>1)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5A;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5B;
item.m_SpecialNum++;
}
}
if ( item.m_DamageMax > 0 )
{
if ( item.m_Level != 0 )
{
item.m_DamageMax += item.m_Level * 3;
if ( item.m_Level >= 10 )
{
item.m_DamageMax += (item.m_Level - 9) * (item.m_Level - 8) / 2;
}
}
}
if ( item.m_DamageMin > 0 )
{
if ( item.m_Level != 0 )
{
item.m_DamageMin += item.m_Level * 3;
if(item.m_Level >= 10)
{
item.m_DamageMin += (item.m_Level - 9) *(item.m_Level - 8) / 2;
}
item.m_DamageMinOrigin = item.m_DamageMin;
}
}
if ( item.m_Magic > 0 )
{
if ( item.m_Level != 0)
{
item.m_Magic += item.m_Level * 3;
if(item.m_Level >= 10)
{
item.m_Magic += (item.m_Level - 9) * (item.m_Level - 8) / 2;
}
}
}
if ( (item.m_Type >=ITEMGET(0,0) && item.m_Type <ITEMGET(6,0) ) || ( item.m_Type >=ITEMGET(13,12) && item.m_Type <= ITEMGET(13,13)) || (item.m_Type>=ITEMGET(13,25) && item.m_Type <= ITEMGET(13,28) ) )
{
if ( ((item.m_NewOption>>5)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5C;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>2)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x61;
item.m_SpecialNum++;
item.m_AttackSpeed += 7;
}
if ( (item.m_Type >=ITEMGET(5,0) && item.m_Type <ITEMGET(6,0) ) || (item.m_Type ==ITEMGET(13,12) ) || (item.m_Type == ITEMGET(13,25)) || (item.m_Type == ITEMGET(13,27) ) )
{
if ( ((item.m_NewOption>>4)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5F;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>3)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x60;
item.m_SpecialNum++;
}
}
else
{
if ( ((item.m_NewOption>>4)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5D;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption>>3)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x5E;
item.m_SpecialNum++;
}
}
if ( ((item.m_NewOption>>2)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x61;
item.m_SpecialNum++;
item.m_AttackSpeed += 7;
}
if ( ((item.m_NewOption>>1)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x62;
item.m_SpecialNum++;
}
if ( ((item.m_NewOption)&1) != 0 )
{
item.m_Special[item.m_SpecialNum] = 0x63;
item.m_SpecialNum++;
}
if(item.m_Type == 1547 || item.m_Type == 2072)
{
item.m_TwoHand = 1;
}
else
{
item.m_TwoHand = 0;
}
}
item.m_RequireStrength = 0;
item.m_RequireDexterity = 0;
item.m_RequireVitality = 0;
item.m_RequireEnergy = 0;
item.m_RequireLeaderShip = 0;
item.m_RequireLevel = 0;
item.m_Part = 0;
item.m_Class = 0;
item.m_Value = 0;
item.m_QuestItem = 0;
item.m_UknB9 = 0;
return item;
}
void MossItemByteConvert(unsigned char* buf, CItem item)
{
int n=0;
memset(buf, 0, 7);
buf[n] = item.m_Type & 0xFF;
n++;
buf[n] = 0;
buf[n] |= item.m_Level * 8;
buf[n] |= item.m_Option1 * 128;
buf[n] |= item.m_Option2 * 4;
buf[n] |= item.m_Option3 & 3;
n++;
buf[n] = item.m_Durability;
n++;
buf[n] = 0;
buf[n] |= ((item.m_Type & 0x100) >> 1);
if ( item.m_Option3 > 3 )
{
buf[n] |= 0x40; // item +16 option
}
buf[n] |= item.m_NewOption;
n++;
buf[n] = item.m_SetOption;
n++;
buf[n] |= (item.m_Type & 0x1E00 ) >> 5;
BYTE btItemEffectFor380 = 0;
btItemEffectFor380 = (item.m_ItemOptionEx & 0x80 ) >> 4;
buf[n] |= btItemEffectFor380;
n++;
buf[n] = item.m_JewelOfHarmonyOption;
}
Item.hCódigo PHP:
bool MossSellItem(int aIndex, unsigned char* aRecv);
CItem MossItemStruct(CItem item);
void MossItemByteConvert(unsigned char* buf, CItem item);
Creditos:Código PHP:
void MossItemByteConvert(unsigned char* buf, CItem item);
CItem MossItemConvert(CItem item);
[ADM]NighT
KGames
Última edição por [ADM]Night; 24-11-2010 às 04:55 PM.
porque seus creditos vc que fez ?
Por Trazer para a IMP e por testa![]()
night 1° nao testou, 2° os creditos nao sao da KGames...
3° falta coisa pra cacete nesse código ^^
os creditos sao da ACG SmallHabbit fez esse moss...
não é o moss original!!!
abraços
esse Moss ai tem severos bugs, não recomendo utilizar ele, além de ser um codigo totalmente porco.
Att. Willerson
Forum Owner & Admin - Imperyus Games Brasil
venho me redimir, eu errei nos creditos.... realmente eu confundi o codigo... eh sim da KGames esse moss...
nao eh da ACG mto menos do smallhabbit...
sim tem severos bugs, uns soh de olhar o código...
mas nada que umas BOAS adaptaçoes nao ajudem... a base eh boa, e o que mais importa sao os packets... a funçao eh facin fazer ^^
abraços!
Como Não Testei?
Tenho a SOurce Completa ad KGames + o Servidor que e Season 4 EP2 Rodado no GS 1.00.90 ^^
Quiserem que eu postei so da um Toque
@NaM4:
Sim são Da KGames Mesmo se vc olha o da ACG Vai te muita diferencia e como vc disse
"...e o que mais importa sao os packets... a funçao eh facin fazer ^^..."
sim os packets e uma nova adaptaçoes não ajuder
estão achu que essa source tem um bom uso pq ate agora não foi postado os packets ou algum do tipo do Moss System
ATT:NighT - BRSTeam Games
Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)
Marcadores