void NpcJanela(char *Packet)//Deseja continuar ? (sim/nao)" { p28B *p = (p28B*)Packet; MOB *player = (MOB*)GetMobFromIndex(p->Header.ClientID); MOB *npc = (MOB*)GetMobFromIndex(p->npcid); if(p->ClickOk == 1) { switch(npc->Merchant) { case 42: Merchant42(p->Header.ClientID,p->npcid); ZeroMemory((short*)Packet, *(short*)Packet); break; case 74: ZeroMemory((short*)Packet, *(short*)Packet); break; case 19: //ZeroMemory((short*)Packet, *(short*)Packet); break; default: SendSay(p->npcid,"Ainda não estou disponivel."); break; } } return; }
//Clock para retirar jogadores da sala void Pista0_clock() { if(clock() >= tempo) { if(pista0 == FALSE) { return; } tempo = clock() + 900 * CLOCKS_PER_SEC; for(int i=1;i<99;i++) { int rid = i * 0x0410; int cX = PInt(rid + 0x015C6CEC); int cY = PInt(rid + 0x015C6CF0); if(cX >= 3321 && cY >= 1599 && cX <= 3461 && cY <= 1664) { DoTeleport(i,3284,1686); } } int itemslot1 = GetFirstSlotSADD(Lider1,0,64); int itemslot2 = GetFirstSlotSADD(Lider2,0,64); MOB *lider1 = (MOB*)GetMobFromIndex(Lider1); MOB *lider2 = (MOB*)GetMobFromIndex(Lider2); lider1->Inventory[itemslot1].Index = 5134; lider1->Inventory[itemslot1].EF1 = 43; lider1->Inventory[itemslot1].EFV1 = 1; lider2->Inventory[itemslot2].Index = 5134; lider2->Inventory[itemslot2].EF1 = 43; lider2->Inventory[itemslot2].EFV1 = 1; for(int i=1000;i<32000;i++) { int rid = i * 0x0410; int cX = PInt(rid + 0x015C6CEC); int cY = PInt(rid + 0x015C6CF0); if(cX >= 3321 && cY >= 1599 && cX <= 3461 && cY <= 1664) { DeleteMob(i,5); } } PartyCount = 0; pista0 = FALSE; Lider1 = 0; Lider2 = 0; Spot1 = 0; Spot2 = 0; Spot3 = 0; Spot4 = 0; Spot5 = 0; Spot6 = 0; Spot7 = 0; Spot8 = 0; Spot9 = 0; Spot10 = 0; } }
void ExpAreaPesa(int ClientID,int exp) { int cPartys = PInt(ClientID*0x0410 + 0x015C6CD0); int cXPar = PInt(cPartys * 0x410 + 0x015C6CEC); int cYPar = PInt(cPartys * 0x410 + 0x015C6CF0); if(cPartys == 0) { for(int i = 0; i < 12; i++) { int masterIndex = ClientID * 0x410; int memberId = *(WORD*)(masterIndex + 0x15C6D86 + (i * 2)); int cXthi = PInt(memberId * 0x410 + 0x015C6CEC); int cYthi = PInt(memberId * 0x410 + 0x015C6CF0); if(memberId != ClientID) { if(memberId >= 1 && memberId <= 800) { MOB *thisclient = (MOB*)GetMobFromIndex(memberId); if(*(DWORD*)(memberId * 0xC4C + 0x7B318E0) == 0x16) { if(cXthi >= 1100 && cYthi >= 100 && cXthi <= 1300 && cYthi <= 255)//player->Exp += exp; thisclient->Exp += exp; } } } } return; } else { MOB *lider = (MOB*)GetMobFromIndex(cPartys); if(cXPar >= 1100 && cYPar >= 100 && cXPar <= 1300 && cYPar <= 255) lider->Exp += exp; for(int i = 0; i < 12; i++) { int masterIndex = cPartys * 0x410; int memberId = *(WORD*)(masterIndex + 0x15C6D86 + (i * 2)); int cXthi2 = PInt(memberId * 0x410 + 0x015C6CEC); int cYthi2 = PInt(memberId * 0x410 + 0x015C6CF0); if(memberId != ClientID) { if(memberId >= 1 && memberId <= 800) { MOB *thisclient = (MOB*)GetMobFromIndex(memberId); if(*(DWORD*)(memberId * 0xC4C + 0x7B318E0) == 0x16) { if(cXthi2 >= 1100 && cYthi2 >= 100 && cXthi2 <= 1300 && cYthi2 <= 255) thisclient->Exp += exp; } } } } } }
void FixSendAffect_CLIENT(BYTE *m_PacketBuffer, BYTE *packetBuffer) // 6.13 { *(DWORD*)&m_PacketBuffer[40] = *(DWORD*)&m_PacketBuffer[44]; *(DWORD*)&m_PacketBuffer[44] = 0x0; p613_SendAffect *p613 = (p613_SendAffect*)m_PacketBuffer; p754_GetAffect pack_3B9 = *(p754_GetAffect*)malloc(sizeof(p754_GetAffect)); p_Affect *aff = (p_Affect*)m_PacketBuffer; st_Mob *sender = (st_Mob*)GetMobFromIndex(p613->ClientID); st_Mob *affected = (st_Mob*)GetMobFromIndex(p613->AffectedMobId); SendAffects(p613->Header.ClientID); }
void SendAffects(int clientId) // 7.54 { if(clientId > PLAYER) return; p754_GetAffect pack_3B9 = *(p754_GetAffect*)malloc(sizeof(p754_GetAffect)); pack_3B9.Header.PacketId = 0x3B9; pack_3B9.Header.Size = 140; pack_3B9.Header.ClientID = clientId; int addr_base = clientId * 0x0410; st_Mob_754 *_mob = (st_Mob_754*)GetMobFromIndex(clientId); for(short i = 0; i < 16 && _mob != NULL; i++) { if(mobaffectbuffer[clientId].Affects[i].Time != 0) { pack_3B9.Affect[i + 1].Index = (BYTE)mobaffectbuffer[clientId].Affects[i].Index; pack_3B9.Affect[i + 1].Master = (BYTE)mobaffectbuffer[clientId].Affects[i].Master; pack_3B9.Affect[i + 1].Value = mobaffectbuffer[clientId].Affects[i].Value; pack_3B9.Affect[i + 1].Time = mobaffectbuffer[clientId].Affects[i].Time; } } //AddMessage((BYTE*)&pack_3B9, clientId); AddMessage(clientId, (char*)&pack_3B9, 128); return; }
void saldo(int clientid,int npcid) { FILE *arquivo; MOB *player = (MOB*)GetMobFromIndex(clientid); char search[100]; char cash[100]; int cashh = PByte(0x04BFBA5); char local[100], line[120], msg[100]; int var; FILE *arq; sprintf(search,"DataBase\\Cash\\%s.txt",vLogin(clientid)); arq=fopen(local,"r"); if(arq != NULL) { while((fscanf(arq, "%[^\n]", line)) != EOF) { fgetc(arq); sscanf(line,"%d",&cash); } fclose(arq); if(cash != 0) { sprintf(msg,"Você possui [%d] de Donate.",cash); SendClientMsg(clientid,msg); return; } sprintf(msg,"Você possui [%d] de Donate.",cash); SendClientMsg(clientid,msg); return; } else sprintf(msg,"Você possui [%d] de Donate.",cash); SendClientMsg(clientid,msg); return; }
bool __stdcall HKD_FixTrainningCamp(INT32 clientid) { bool sucess = true; st_Mob *player = GetMobFromIndex(clientid); if(player->Equip[0].EFV2 > MORTAL) sucess = false; else if(player->Status.Level > 34 && player->Status.Level < 999) sucess = false; if(wdBuffer[clientid].Ingame.isAdmin) sucess = true; if(!sucess) { DoTeleport(clientid, 2100 + (rand() % 10), 2100 + (rand() % 10)); SendClientMessage(clientid, "Área permitida somente para mortais e níveis abaixo de 35."); //SendLog(Users[clientid].Username, "%s foi pego no campo de treino em condições incorretas.", player->Name); } return sucess; }
void FixGetCreateMob_SERVER(BYTE *m_PacketBuffer, BYTE *packetBuffer) { p613_GetCreateMob *def_GetCreateMob = (p613_GetCreateMob*)packetBuffer; p754_GetCreateMob *new_GetCreateMob = (p754_GetCreateMob*)m_PacketBuffer; st_Mob *thisMob = (st_Mob*)GetMobFromIndex(new_GetCreateMob->ClientId); memcpy(&new_GetCreateMob->Affect[0], &def_GetCreateMob->Affect[0], 8); memset(&new_GetCreateMob->Affect[4], 0x0, 24); memcpy(&new_GetCreateMob->GuildIndex, &def_GetCreateMob->GuildIndex, 32); for(int i = 0; i < 16; i++) { st_Item *item = &thisMob->Equip[i]; new_GetCreateMob->AnctCode[i] = GetAnctCode(item); new_GetCreateMob->ItemEff[i].ItemID = GetItemIDAndEffect(item,i==14); } //memset(&new_GetCreateMob->AnctCode, 0x0, 16); memset(&new_GetCreateMob->Tab[0], 0xFF, 26); // TODO: Implemente o tab aqui. Faça uma matriz armazenando o mesmo! strncpy(&new_GetCreateMob->Tab[0], "", 26); memset(&new_GetCreateMob->Unknow[0], 0xCC, 4); }
void SkillAlchemy(UINT8 *m_PacketBuffer, bool *pRetn) { *pRetn = true; st_Window *pServer = (st_Window*)m_PacketBuffer; INT16 cId = pServer->Header.ClientId; if(cId <= NULL || cId >= MAX_PLAYER) return; st_Mob *player = GetMobFromIndex(cId); if(pServer->Slot[0] == 0xFF || pServer->Slot[1] == 0xFF || pServer->Slot[2] == 0xFF) SendClientMessage(cId, "Coloque os três itens necessários."); else { for(char i = 0; i < 3; i ++) { if(memcmp(&pServer->ItemId[i], &player->Inventory[pServer->Slot[i]], sizeof st_Item)) return; else if(pServer->ItemId[i].Index != player->Inventory[pServer->Slot[i]].Index) return; } Composition(pServer, player); SendClientSignalParm(cId, 0x7530, 0x3A7, 2); } }
void FixSendScore_SERVER(BYTE *m_PacketBuffer, BYTE *packetBuffer) { p754_SendScore *new_SendScore = (p754_SendScore*)m_PacketBuffer; p613_SendScore *def_SendScore = (p613_SendScore*)packetBuffer; st_Mob*_mob = (st_Mob*)GetMobFromIndex(new_SendScore->Header.ClientID); short clientid; memcpy(&clientid, &new_SendScore->Header.ClientID, 2); memcpy(&new_SendScore->Affect[0], &def_SendScore->Affect[0], 8); memset(&new_SendScore->Affect[4], 0x0, 24); memcpy(&new_SendScore->GuildMemberType, &def_SendScore->GuildMemberType, 18); new_SendScore->CurrHP = _mob->Status.curHP; new_SendScore->CurrMP = _mob->Status.curMP; new_SendScore->Resist1 = _mob->Resist1; new_SendScore->Resist2 = _mob->Resist2; new_SendScore->Resist3 = _mob->Resist3; new_SendScore->Resist4 = _mob->Resist4; new_SendScore->MagicIncrement = _mob->MagicIncrement; new_SendScore->MagicIncrement = GetMobAbility(_mob, EF_MAGIC) / 2; new_SendScore->Critical = ((GetMobAbility(_mob, 42) / 10) * 2.5F) + (GetMobAbility(_mob, 71) / 10 * 2.5F); for(int i = 0; i < 16; i ++) { new_SendScore->Affect[i].Index = (BYTE)mobaffectbuffer[clientid].Affects[i].Index; new_SendScore->Affect[i].Time = (BYTE)mobaffectbuffer[clientid].Affects[i].Time; } }
void DesbloqLvL40(int ClientID, BYTE slot[7]) { MOB *player = (MOB*)GetMobFromIndex(ClientID); int Result = CompositionValidt(ClientID,7,slot,cDesbloq40); if(Result != 0){ player->Equip[0].EFV2 = 3; player->bStatus.Level = 39; if(player->Equip[0].EFV2 == 3 || player->Equip[0].EFV2 == 4){ if(player->bStatus.Level == 39){ if(CCont[ClientID].Acont[CCont[ClientID].CharSlot].QuestInfo[0] == 0){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); CCont[ClientID].Acont[CCont[ClientID].CharSlot].QuestInfo[0] = 1; SendALL(ClientID); SendClientMsg(ClientID,"Celestial Foi Desbloqueado."); } else{ SendClientMsg(ClientID,"Você já desbloqueou o level 40."); } } else{ SendClientMsg(ClientID,"Desbloqueio apenas para lvl 40"); } } else{ SendClientMsg(ClientID,"Desbloqueio apenas para Celestiais / Sub Celestiais."); } } else{ SendClientMsg(ClientID, "Composição incorreta."); } SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; }
int32_t Functions::GetFirstSlot(int32_t client, SlotType type, uint16_t itemId) { auto *mob = GetMobFromIndex(client); if (type == SlotType::Inventory) { for (int i = 0; i < MAX_INVENTORY; i++) { if (mob->Mob.Inventory[i].Index == itemId) return i; } } else if (type == SlotType::Equipment) { for (int i = 0; i < MAX_EQUIPMENT; i++) { if (mob->Mob.Equip[i].Index == itemId) return i; } } else if (type == SlotType::Storage) { auto user = Functions::GetUserFromIndex(client); if (user) { for (int i = 0; i < MAX_STORAGE; i++) { if (user->Storage.Item[i].Index == itemId) return i; } } } return -1; }
void SecretaTerra(int ClientID, BYTE slot[7]){ srand(time_t(NULL)); int tempo = abs(rand()) % 100; MOB *player = (MOB*)GetMobFromIndex(ClientID); int Result = CompositionValidt(ClientID,7,slot,cSecretaTerra); if(player->Gold < 1999999){ SendClientMsg(ClientID,"Gold insuficiente."); } else if(Result == 1){ if(tempo < 95){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Inventory[slot[0]].Index = 5335; player->Gold -= 2000000; SendALL(ClientID); SendClientMsg(ClientID,"Composição Terra concluída."); } else{ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Gold -= 2000000; SendALL(ClientID); SendClientMsg(ClientID,"Composição Falhou."); } } else if(Result == 2){ if(tempo < 5){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Inventory[slot[0]].Index = 5335; player->Gold -= 2000000; SendALL(ClientID); SendClientMsg(ClientID,"Composição Terra concluída."); } else{ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Gold -= 2000000; SendALL(ClientID); SendClientMsg(ClientID,"Composição Falhou."); } } else{ SendClientMsg(ClientID,"Composição incorreta."); } SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; }
void CashNPC(int ClientID,int npcid) { FILE *arquivo; char cash[1000]; //char cash2[1000]; //char line[120], nome[100], msg[100]; // Retirar variáveis desnecessárias MOB *player = (MOB*)GetMobFromIndex(ClientID); MOB *vLogin = (MOB*)GetMobFromIndex(ClientID); int itenslot1 = GetFirstSlotSADD(ClientID,3394,64); if(itenslot1 != -1) { sprintf(cash,"DataBase\\Cash\\%s.txt",vLogin(ClientID)); if(file_exists(cash)) { arquivo = fopen(cash, "w"); fputs("1000", arquivo); fclose(arquivo); SendSay(npcid,"Obrigado por nos ajudar. Agora você possui 1000 Cash"); player->Inventory[itenslot1].Index = 0; SendInv(ClientID,itenslot1); SendCharList(ClientID); return; } else { arquivo = fopen(cash, "w"); fputs("1000", arquivo); fclose(arquivo); SendSay(npcid,"Obrigado por nos ajudar. Agora você possui 1000 Cash"); player->Inventory[itenslot1].Index = 0; SendInv(ClientID,itenslot1); SendCharList(ClientID); return; } } else { SendSay(npcid,"Nos Traga seu Vale Cash!"); return; } }
void DesbugaFaceBM(int clientid,int cmd_addr) { int faceBM = 28; MOB *player = (MOB*)GetMobFromIndex(clientid); if(player->Equip[0].EFV2 = 2 && player->Equip[0].Index == 22 || player->Equip[0].Index == 23 || player->Equip[0].Index ==24 || player->Equip[0].Index == 25 || player->Equip[0].Index == 32) { MOB *playe = (MOB*)GetMobFromIndex(clientid); playe->Equip[0].Index = faceBM; Atualizar(clientid, _equip, 0); SendItens(clientid,0); GetCurrentScore(clientid); SendStats(clientid); SendScore(clientid); SendEquip(clientid); SendALL(clientid); SendClientMsg(clientid,"Sua face foi alterada."); return; } }
void FixSendMyAffect(BYTE *m_PacketBuffer,BYTE *packetBuffer,int ClientId) { st_Mob *thisMob = (st_Mob*)GetMobFromIndex(ClientId); for(int kp = 0; kp <= 16; kp++) { st_Item *item = &thisMob->Equip[kp]; *(short*)&m_PacketBuffer[12 + (kp*2)] = (short)GetItemIDAndEffect(item, kp); *(char*)&m_PacketBuffer[44 + kp] = (char)GetAnctCode(item); } }
void Selo_do_guerreiro(int clientid) { Atualizar ; FILE *arquivo; MOB *player = (MOB*)GetMobFromIndex(clientid); char quest[100]; char Fama[100]; char fama[100]; char fama2[100]; char line[100]; int itenslot = GetFirstSlotSADD(clientid,3274,64); int fame = PByte(0x04BFBA5); int var; sprintf(quest,"DataBase/Fama/Fama_de_[%s].xml", player->Name); if(file_exists(quest)) { arquivo = fopen(quest, "r"); while ((fscanf(arquivo, "%[^\n]", line)) != EOF) fgetc(arquivo); int Fama3; sscanf(line, "%d",&Fama3); Fama3 += 10; arquivo = fopen(quest, "w"); sprintf(fama,"%d", Fama3); fputs(fama, arquivo); sprintf(fama2,"Gerado 10 de Fama.", fame); SendClientMsg(clientid,fama2); fclose(arquivo); (clientid,"usou o item [Selo do Guerreiro]."); player->Inventory[itenslot].Index = 0; SendALL(clientid); return; } else { arquivo = fopen(quest, "w"); var = 10; sprintf(fama,"%d", var); fputs(fama, arquivo); fputs(fama, arquivo); sprintf(fama2,"Gerado 10 de Fama.", fame); SendClientMsg(clientid,fama2); fclose(arquivo); (clientid,"usou o item [Selo do Guerreiro]."); player->Inventory[itenslot].Index = 0; SendALL(clientid); return; return; } }
void DesbloqLvL90(int ClientID, BYTE slot[7]) { MOB *player = (MOB*)GetMobFromIndex(ClientID); int Result = CompositionValidt(ClientID,7,slot,cDesbloq90); srand(time_t(NULL)); int tempo = abs(rand()) % 100; if(Result == 1){ if(tempo < 95){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Inventory[slot[0]].Index = 3020; SendALL(ClientID); SendClientMsg(ClientID, "Composição Concluída."); } else{ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); SendALL(ClientID); SendClientMsg(ClientID, "Composição falhou."); } } else if(Result == 2){ if(tempo < 5){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Inventory[slot[0]].Index = 3020; SendALL(ClientID); SendClientMsg(ClientID, "Composição Concluída."); } else{ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); SendALL(ClientID); SendClientMsg(ClientID, "Composição falhou."); } } else{ SendClientMsg(ClientID, "Composição incorreta."); } SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; }
void Ordem_Terra(int ClientID,int npcid) { MOB *player = (MOB*)GetMobFromIndex(ClientID); //MOB *thisclient = (MOB*)GetMobFromIndex(Client); int addr_bclient = ClientID * 0x0410; int stone0 = GetFirstSlotSADD(ClientID,1760,64); // Sephirot TK int stone1 = GetFirstSlotSADD(ClientID,1761,64); // Sephirot FM int stone2 = GetFirstSlotSADD(ClientID,1762,64); // Sephirot BM int stone3 = GetFirstSlotSADD(ClientID,1763,64); // Sephirot HT int stone4 = GetFirstSlotSADD(ClientID,5338,64); // Ideal int stone5 = GetFirstSlotSADD(ClientID,592,64); // Brinco HP if(player->Gold < 300000000 ) { SendClientMsg(ClientID,"É necessário 300kk."); return; } if (stone4 == -1) { SendClientMsg(ClientID,"Esta faltando a Pedra Ideal."); return; } if (stone5 == -1) { SendClientMsg(ClientID,"Esta faltando o Brinco de Titã."); return; } if(player->Inventory[stone0].Index == 1760 && player->Inventory[stone1].Index == 1761 && player->Inventory[stone2].Index == 1762 && player->Inventory[stone3].Index == 1763 && player->Inventory[stone4].Index == 5338 && player->Inventory[stone5].Index == 592) { player->Inventory[stone0].Index = 6457; // Ordem da Terra //DeleteItem(ClientID,stone0); DeleteItem(ClientID,stone1); DeleteItem(ClientID,stone2); DeleteItem(ClientID,stone3); DeleteItem(ClientID,stone4); DeleteItem(ClientID,stone5); player->Gold -= 300000000; SendALL(ClientID); SendClientMsg(ClientID,"Composição sucedida."); SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; } if(stone0 == -1 || stone1 == -1 || stone2 == -1 || stone3 == -1) { SendClientMsg(ClientID,"É necessário os quatro Sephirot (TK,FM,BM,HT)."); return; } }
INT32 HKD_ProcessClientMessage_ApplyBonus(BYTE *buffer, INT32 clientid) { p277 *p = (p277*)buffer; INT16 cId = p->Header.ClientId; st_Mob *player = (st_Mob*)GetMobFromIndex(cId); if(!p->Info) { if(player->bStatus.Mastery[p->Info] >= 200) return 0; return 1; } if(player->Equip[0].EFV2 >= CELESTIAL) { if(player->bStatus.Mastery[p->Info] < 200) return 1; } int Have = player->Learn & (1 << (8 * p->Info - 1)); if(Have) { if(player->bStatus.Mastery[p->Info] >= 255) { SendClientMessage(cId, "Limite máximo de pontos."); //SendLog(Users[cId].Username, "%s tentou distribuir pontos além do limite no mastery %d.", player->Name, p->Info); return 0; } } else { if(player->bStatus.Mastery[p->Info] >= 200) { SendClientMessage(cId, "Limite máximo de pontos"); //SendLog(Users[cId].Username, "%s tentou distribuir pontos além do limite no mastery %d.", player->Name, p->Info); return 0; } } return 1; }
void Dell(int clientid , int SrcSlot) { MOB *thisclient = (MOB*)GetMobFromIndex(clientid); { thisclient->Inventory[SrcSlot].Index = 0; thisclient->Inventory[SrcSlot].EF1 = 0; thisclient->Inventory[SrcSlot].EFV1 = 0; thisclient->Inventory[SrcSlot].EF2 = 0; thisclient->Inventory[SrcSlot].EFV2 = 0; thisclient->Inventory[SrcSlot].EF3 = 0; thisclient->Inventory[SrcSlot].EFV3 = 0; SendItens(clientid,SrcSlot); } }
void MsgSimples(int ClientID, char *Text) { MOB *player = (MOB*)GetMobFromIndex(ClientID); ZeroMemory(BufferSend,130); *(short*)&BufferSend[0] = 128; *(short*)&BufferSend[2] = 0; *(short*)&BufferSend[4] = 0x334; *(short*)&BufferSend[6] = ClientID; strcpy((char*)&BufferSend[12], (const char*)player->Name); strcpy((char*)&BufferSend[28], (const char*)Text); for(int i=1;i<100;i++) { if(i != ClientID) SendPacket(BufferSend,i); } }
void SendMsgPT(int ClientID,char *Text) { int cPartys = PInt(ClientID*0x0410 + 0x015C6CD0); MOB *player = (MOB*)GetMobFromIndex(ClientID); ZeroMemory(BufferSend,130); *(short*)&BufferSend[0] = 128; *(short*)&BufferSend[2] = 0; *(short*)&BufferSend[4] = 0x334; *(short*)&BufferSend[6] = ClientID; strcpy((char*)&BufferSend[12], (const char*)player->Name); strcpy((char*)&BufferSend[28], (const char*)Text); if(cPartys == 0) //Se for zero é pq quem ta chamando é o proprio lider { for(int i = 0; i < 12; i++) { int masterIndex = ClientID * 0x410; int memberId = *(WORD*)(masterIndex + 0x15C6D86 + (i * 2)); if(memberId != ClientID) { if(*(DWORD*)(memberId * 0xC4C + 0x7B318E0) == 0x16) { SendPacket(BufferSend,memberId); } } } } else { SendPacket(BufferSend,cPartys); for(int i = 0; i < 12; i++) { int masterIndex = cPartys * 0x410; int memberId = *(WORD*)(masterIndex + 0x15C6D86 + (i * 2)); if(memberId != ClientID) { if(*(DWORD*)(memberId * 0xC4C + 0x7B318E0) == 0x16) { SendPacket(BufferSend,memberId); } } } } }
int BauExp(int clientid) { MOB *player = (MOB*)GetMobFromIndex(clientid); int ver = 1; for(int i = 0;i <= 16;i++) { if(mobaffectbuffer[clientid].Affects[i].Index == 39) { ver++; break; } } return ver; }
void PistaRunas(int ClientID, BYTE slot[7]){ MOB *player = (MOB*)GetMobFromIndex(ClientID); int Result = CompositionValidt(ClientID,7,slot,cPistaRunas); if(Result != 0){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Inventory[slot[0]].Index = 5134; SendALL(ClientID); SendClientMsg(ClientID,"Criaçao de Pista runas ."); }else{ SendClientMsg(ClientID,"Composição incorreta."); } SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; }
void vereficaSkillBM(WORD clientid,int cmd_addr) { MOB *player = (MOB*)GetMobFromIndex(clientid); for(int i = 0;i < 16;i++) { if(player->Affects[i].Index == 28) { return; } else { char local[100]; int face = player->Equip[0].Index; int face1 = player->Equip[0].EF1; int face2 = player->Equip[0].EFV1; int face3 = player->Equip[0].EF2; int face4 = player->Equip[0].EFV2; int face5 = player->Equip[0].EF3; int face6 = player->Equip[0].EFV3; FILE *arq; sprintf(local,"DataBase\\Chars\\Eden\\%s.eden",player->Name); arq=fopen(local,"r"); fprintf(arq,"%d,%d,%d,%d,%d,%d,%d",face,face1,face2,face3,face4,face5,face6); if (arq!=NULL) // Se o arquivo existir e for carregado executa a aчуo { fclose(arq); remove(local); return; } else { return; } } } }
void RefiCapa(int ClientID, BYTE slot[7]) { MOB *player = (MOB*)GetMobFromIndex(ClientID); int Result = CompositionValidt(ClientID,7,slot,cRefCapa); if(Result == 1){ if(player->Equip[15].Index == 3197 || player->Equip[15].Index == 3198 || player->Equip[15].Index == 3199){ if(player->Equip[15].EFV1 <= 8){ for(int a = 0; a < 7; a++) memset(&player->Inventory[slot[a]],0x00,sizeof(st_Item)); player->Equip[15].EF1 = 43; player->Equip[15].EFV1 += 1; player->Equip[15].EF2 = 0; player->Equip[15].EFV2 = 0; player->Equip[15].EF3 = 0; player->Equip[15].EFV3 = 0; SendALL(ClientID); SendEquip(ClientID); SendItens(ClientID, 15); SendClientMsg(ClientID, "Foi Adicionado + Uma Refinação na sua Capa ."); } else{ SendClientMsg(ClientID, "Sua capa tem de estar com refinação inferior a +9."); } } else{ SendClientMsg(ClientID, "Sua capa não é uma capa valida."); } } else{ SendClientMsg(ClientID, "Composição incorreta."); } SendClientSignalParm(ClientID,0x7530, 0x3A7, 2); return; }
void MoveItem1(unsigned char* szBuffer) { try { p376 *p = (p376*)szBuffer; st_Mob *player = (st_Mob*)GetMobFromIndex((unsigned short)szBuffer[6]); if(p->SrcType == Cargo_Type && p->DstType == Equip_Type) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == 747) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a coroa."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Equip[0].EFV2 == 1) { for(int i = 0; i < 16; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == SetsCele[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == SetsCeleSelado[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais selados em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == SetsArch[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 3; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == MontaTigre[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a montaria Tigre de Fogo em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 6; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == MontaDrag[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a montaria Dragão em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 40; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasCeleAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasArchAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasCeleSelada[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais seladas em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasArchNaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } else if(player->Equip[0].EFV2 == 2) { for(int i = 0; i < 16; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == SetsCele[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == SetsCeleSelado[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais selados em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 40; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasCeleAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasEAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasCeleSelada[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais seladas em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasENaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } else if(player->Equip[0].EFV2 >= 3 && player->Equip[0].EFV2 <= 5) { for(int i = 0; i < 40; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasEAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em sua classe."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(BancoSlot((unsigned short)szBuffer[6],p->SrcSlot) == ArmasENaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em sua classe."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } } else if(p->SrcType == Equip_Type && p->DstType == Inv_Type)//do equip pro inv { if(player->Equip[p->SrcSlot].Index == 747) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel desequipar a coroa."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(p->SrcSlot == 15)//medalha capa { ZeroMemory(szBuffer, p->Header.Size); return; } else if(p->SrcSlot == 12) { SendClientMessage((unsigned short)szBuffer[6],"Para retirar sua medalha de guilda use /Expulsar"); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } else if(p->SrcType == Equip_Type && p->DstSlot == Cargo_Type)//do equip pro banco { if(player->Equip[p->SrcType].Index == 747 || player->Equip[p->SrcType].Index == 5447 || player->Equip[p->SrcType].Index == 5446 || player->Equip[p->SrcType].Index == 5445 || player->Equip[p->SrcType].Index == 5444 || player->Equip[p->SrcType].Index == 3507 || player->Equip[p->SrcType].Index == 3506 || player->Equip[p->SrcType].Index == 3505 || player->Equip[p->SrcType].Index == 3504 || player->Equip[p->SrcType].Index == 3503 || player->Equip[p->SrcType].Index == 3502 || player->Equip[p->SrcType].Index == 3501 || player->Equip[p->SrcType].Index == 3500) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel desequipar a coroa e cytheras."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } else if(p->SrcType == Inv_Type && p->DstType == Equip_Type)//do inv pro equip { if(player->Inventory[p->SrcSlot].Index == 747 || player->Inventory[p->SrcSlot].Index == 5447 || player->Inventory[p->SrcSlot].Index == 5446 || player->Inventory[p->SrcSlot].Index == 5445 || player->Inventory[p->SrcSlot].Index == 5444 || player->Inventory[p->SrcSlot].Index == 3507 || player->Inventory[p->SrcSlot].Index == 3506 || player->Inventory[p->SrcSlot].Index == 3505 || player->Inventory[p->SrcSlot].Index == 3504 || player->Inventory[p->SrcSlot].Index == 3503 || player->Inventory[p->SrcSlot].Index == 3502 || player->Inventory[p->SrcSlot].Index == 3501 || player->Inventory[p->SrcSlot].Index == 3500) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a coroa e cytheras"); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Equip[0].EFV2 == 1) { for(int i = 0; i < 16; i++) { if(player->Inventory[p->SrcSlot].Index == SetsCele[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Inventory[p->SrcSlot].Index == SetsCeleSelado[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais selados em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Inventory[p->SrcSlot].Index == SetsArch[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 3; i++) { if(player->Inventory[p->SrcSlot].Index == MontaTigre[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a montaria Tigre de Fogo em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 6; i++) { if(player->Inventory[p->SrcSlot].Index == MontaDrag[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar a montaria Dragão em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 40; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasCeleAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Inventory[p->SrcSlot].Index == ArmasArchAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasCeleSelada[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais seladas em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } if(player->Inventory[p->SrcSlot].Index == ArmasArchNaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas archs em mortais."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } else if(player->Equip[0].EFV2 == 2) { for(int i = 0; i < 16; i++) { if(player->Inventory[p->SrcSlot].Index == SetsCele[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Inventory[p->SrcSlot].Index == SetsCeleSelado[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar sets celestiais selados em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 40; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasCeleAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } else if(player->Inventory[p->SrcSlot].Index == ArmasEAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasCeleSelada[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas celestiais seladas em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } if(player->Inventory[p->SrcSlot].Index == ArmasENaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em archs."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } else if(player->Equip[0].EFV2 >= 3 && player->Equip[0].EFV2 <= 5) { for(int i = 0; i < 40; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasEAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em sua classe."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } for(int i = 0; i < 10; i++) { if(player->Inventory[p->SrcSlot].Index == ArmasENaoAnct[i]) { SendClientMessage((unsigned short)szBuffer[6],"Não é possivel equipar armas [E] em sua classe."); ZeroMemory(szBuffer, *(short*)szBuffer); return; } } } } } catch(...) { //LogError(szBuffer); } }
void AddExp(int clientid) { MOB *player = (MOB*)GetMobFromIndex(clientid); int addr_bclient = clientid * 0x0410; int caos = PByte(clientid * 0x410 + 0x15c6c8e); FILE *fs = NULL; char name[100]; char Classe; char Level; Classe = player->Equip[0].EFV2; Level = player->bStatus.Level; PremioLv(clientid); if(player->Equip[0].EFV2 >= 3) { if(player->bStatus.Level >= 5) { if(player->Exp < exp_Cele_Sub[player->bStatus.Level - 2]) { player->Exp = exp_Cele_Sub[player->bStatus.Level - 1]; } } } if(player->Equip[0].EFV2 == 1) { if(player->bStatus.Level < 255) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { player->StatusPoint += 5; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level < 300) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { player->StatusPoint += 10; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level < 394) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { player->StatusPoint += 15; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { player->StatusPoint += 15; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } return; } else if(player->Equip[0].EFV2 == 2) { if(player->bStatus.Level == 350) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level+4]) { player->StatusPoint += 10; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 2; player->bStatus.Defense += 3; PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level > 351 && player->bStatus.Level < 353) { player->StatusPoint += 13; player->MasterPoint += 3; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } else if(player->bStatus.Level < 370) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { //if(player->QuestInfo == 1) { player->StatusPoint += 12; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Mortal_Arch[player->bStatus.Level]) { //if(player->QuestInfo == 2) { player->StatusPoint += 12; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 2; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } } return; } else if(player->Equip[0].EFV2 == 3) { if(player->bStatus.Level < 40) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 5; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Attack += 1; player->bStatus.Defense += 3; player->bStatus.Level += 1; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level < 90) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 1) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 10; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; //} } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 2) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 15; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 4; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; //} } } } else if(player->Equip[0].EFV2 == 4) { if(player->bStatus.Level < 40) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 5; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; } } else if(player->bStatus.Level < 90) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 1) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 10; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; //} } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 2) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 15; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 4; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ // return; //} } } } else if(player->Equip[0].EFV2 == 5) { if(player->bStatus.Level < 40) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 5; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ // return; } } else if(player->bStatus.Level < 90) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 1) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 10; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ // return; //} } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 2) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 15; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 4; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ // return; //} } } } else if(player->Equip[0].EFV2 == 6) { if(player->bStatus.Level < 40) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 7; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 3; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ // return; } } else if(player->bStatus.Level < 90) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 1) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 10; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 4; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; //} } } else if(player->bStatus.Level < 399) { if(player->Exp >= exp_Cele_Sub[player->bStatus.Level]) { //if(player->QuestInfo == 2) //{ printf("\n %s evoluiu para level %d \n.",player->Name,player->bStatus.Level +2); player->StatusPoint += 15; player->MasterPoint += 4; player->SkillPoint += 3; player->bStatus.Level += 1; player->bStatus.Attack += 1; player->bStatus.Defense += 6; if(caos <= 148) { PByte(clientid * 0x410 + 0x15c6c8e) += 3; RespawCreatMob(clientid); SendCreateMob(clientid,clientid,1); } PInt(addr_bclient + 0x015C6A04) = PInt(addr_bclient + 0x015C6A00); player->bStatus.curHP = player->bStatus.maxMP; player->Status.curHP = player->bStatus.maxHP; player->Status.curMP = player->bStatus.maxMP; GetCurrentScore(clientid); SendScore(clientid); SendStats(clientid); SendSetHpMp(clientid); SendClientMsg(clientid, "+ + + LEVEL UP + + +"); SendEffect(3, 0xE, clientid); /*Ranking(clientid); DeletarPlayer1(clientid); DeletarPlayer2(clientid); DeletarPlayer3(clientid);*/ return; //} } } } }
int archequip(char *Packet) { MoveItem *c = (MoveItem*)Packet; MOB *thisclient = (MOB*)GetMobFromIndex(c->Header.ClientID); int item = thisclient->Inventory[c->srcSlot].Index; int slot = GetFirstSlotSADD(c->Header.ClientID,0,64); if(thisclient->Equip[15].EF3 != 5 && slot >= 0 && thisclient->Equip[0].EFV2 >= 2) { thisclient->Equip[15].EF3 = 5; thisclient->Inventory[slot] = thisclient->Equip[7]; thisclient->Equip[7].Index = 0; thisclient->Equip[7].EF1 = 0; thisclient->Equip[7].EF2 = 0; thisclient->Equip[7].EF3 = 0; thisclient->Equip[7].EFV1 = 0; thisclient->Equip[7].EFV2 = 0; thisclient->Equip[7].EFV3 = 0; slot = GetFirstSlotSADD(c->Header.ClientID,0,64); thisclient->Inventory[slot] = thisclient->Equip[6]; thisclient->Equip[6].Index = 0; thisclient->Equip[6].EF1 = 0; thisclient->Equip[6].EF2 = 0; thisclient->Equip[6].EF3 = 0; thisclient->Equip[6].EFV1 = 0; thisclient->Equip[6].EFV2 = 0; thisclient->Equip[6].EFV3 = 0; SendItens(c->Header.ClientID,7); SendItens(c->Header.ClientID,6); SendALL(c->Header.ClientID); } if(c->srcType == 0 && c->destType == 1) { if(thisclient->Equip[c->srcSlot].Index == 3506) { return TRUE; } } if(c->srcType == 1 && c->destType == 0) { if(thisclient->Equip[0].EFV2 == 5) { if(c->destSlot == 1) { return TRUE; } } } if(c->srcType == 1 && c->destType == 0 && thisclient->Equip[0].EFV2 >= 2 && thisclient->Equip[0].EFV2 >= 2) { if(thisclient->Equip[c->destSlot].Index == 0 && c->destSlot < 6 && thisclient->Equip[0].EFV2 >= 2) { thisclient->Equip[c->destSlot] = thisclient->Inventory[c->srcSlot]; thisclient->Inventory[c->srcSlot].Index = 0; thisclient->Inventory[c->srcSlot].EF1 = 0; thisclient->Inventory[c->srcSlot].EFV1 = 0; thisclient->Inventory[c->srcSlot].EF2 = 0; thisclient->Inventory[c->srcSlot].EFV2 = 0; thisclient->Inventory[c->srcSlot].EF3 = 0; thisclient->Inventory[c->srcSlot].EFV3 = 0; SendItens(c->Header.ClientID,c->destSlot); SendALL(c->Header.ClientID); return TRUE; } } return FALSE; }