Пример #1
0
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;
}
Пример #2
0
//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;
	}
}
Пример #3
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;
					}
				}
			}
		}
	}
				
}
Пример #4
0
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);
	}
Пример #5
0
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;
}
Пример #6
0
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;
}
Пример #8
0
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);
}
Пример #9
0
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);
	}
}
Пример #10
0
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;
		
	}
	
}
Пример #11
0
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;
}
Пример #12
0
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;
}
Пример #13
0
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;
}
Пример #14
0
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;
	}
}
Пример #15
0
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;
		}
	  }
Пример #16
0
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);
	}
}
Пример #17
0
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;
	}
}
Пример #18
0
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;
}
Пример #19
0
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;
}
Пример #21
0
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);
}
}
Пример #22
0
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);
	}        
}
Пример #23
0
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);     
				}
			}
		}
	}
}
Пример #24
0
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;
}
Пример #25
0
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;
}
Пример #26
0
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;
                        }
                }
        }
}
Пример #27
0
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;
}
Пример #28
0
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);
	}
}
Пример #29
0
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;
				//}

			}

		}

	}
	


	
}
Пример #30
0
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;
}