All pastes #716382 Raw Edit

Meins

public text v1 · immutable
#716382 ·published 2007-09-26 19:42 UTC
rendered paste body
//fireworks

void console_fireworks(char *args[], int numArgs, bool adminConsole, short NetworkID)
{
	Player* p = instances[0].AccessPlayer(NetworkID);
	
	/* Cheap Fireworks
	pck.Add(p->AASetGenericValue(0x11, 0x511, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x512, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x4e, NetworkID));*/

	CompiledPacket pck;
	NetMessage s;
	s.ID=NetworkID;
	int waittime = 0;

	pck.Add(p->AASetGenericValue(0x11, 0x50f, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x50e, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x517, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x513, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x511, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50c, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x50d, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x515, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x516, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50f, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x515, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50c, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50e, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x511, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x514, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x517, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x513, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x50d, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x50d, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50c, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50d, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50c, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x50e, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x512, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x517, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x510, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x512, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50e, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x513, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50d, NetworkID));
	pck.Add(p->AASetGenericValue(0x11, 0x517, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x512, NetworkID));

	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);

	pck.Add(p->AASetGenericValue(0x11, 0x50c, NetworkID));
	
	s.data=pck.GetString(&s.dataSize);
	GameServer->SendData(&s, (waittime++)*1000);
}


#include "Instance.h"
#include "Main.h"
#include "AgentPackets.h"

void CommandProcessing(char *commandString, bool adminConsole, void *lir, Player *p);

void Instance::WriteGeneralChat(unsigned char *buffer, long numUniChars, char color, unsigned long LocalID, short NetworkID)
{
	long playerSlot=instances[0]->FindPlayerByNID(NetworkID);
	Player *p=&(instances[0]->players[playerSlot]);

	if(buffer==NULL){return;}
	CompiledPacket pck(true);

	//Add the message packet
	pck.AddShort(PckHeaders.GENERAL_CHAT);

	pck.AddShort(numUniChars+3);
	pck.AddLong(0x01070108);
	pck.Add(buffer,numUniChars*2,false);
	pck.AddShort(0x0001);

	if(p->control==-1)
	{
		//Add the message owner packet
		pck.AddShort(PckHeaders.GENERAL_CHAT_OWNER);
		pck.AddShort(LocalID);
		pck.AddByte(color);
	}
	else if(p->control==1)
	{
		//Add the message owner packet
		pck.AddShort(0x0050);
		pck.AddShort(0x0000);
		pck.AddByte(0x08);
	}
	else if(p->control==2)
	{
		//Add the message owner packet
		pck.AddShort(0x0050);
		pck.AddShort(0x0000);
		pck.AddByte(0x02);
	}

	NetMessage s;
	s.ID=NetworkID;

	s.data=pck.GetString(&s.dataSize);


	GameServer->SendData(&s);
	

}

int Instance::ProcessGuildChat(int ID, unsigned char *d)
{
	return 0;
}

int Instance::ProcessCommand(unsigned char *dest,NetMessage *d, NetMessage *s, void* lir)
{
			/*
			dash effect and icon
			pck.AddShort(0x00cd);
		pck.AddLong(p->GetAgentID());

		pck.AddShort(0x0413);
		pck.AddLong(0x0);

		pck.AddShort(0x008f);
		pck.AddLong(0x39);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(0xbe1b26ca);

		pck.AddShort(0x00ce);
		pck.AddLong(p->GetAgentID());

		pck.AddShort(0x0413);
		pck.AddLong(0x0);
		pck.AddLong(0x8);

		pck.AddShort(0x008c);
		pck.AddLong(0x2b);
		pck.AddLong(p->GetAgentID());

		pck.AddShort(0x0413);
		pck.AddShort(0x0);
		
		pck.AddShort(0x008c);
		pck.AddLong(0x12);
		pck.AddLong(p->GetAgentID());

		pck.AddShort(0x0498);
		pck.AddShort(0x0);

		pck.AddShort(0x0036);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(0xc);

		pck.AddShort(0x0034);
		pck.AddLong(p->GetAgentID());
		
		pck.AddShort(0x0413);
		pck.AddLong(0x0);
		pck.AddLong(0xc);
		pck.AddLong(0x40400000);

		pck.AddShort(0x00cc);
		pck.AddLong(p->GetAgentID());

		pck.AddShort(0x0413);
		pck.AddLong(0x0);

		pck.AddShort(0x0011);
		pck.AddLong(0x5e);*/
	long playerSlot=FindPlayerByNID(((LOGIN_INFO*)lir)->NetworkID);
	Player *p=&players[playerSlot];
	char* cmd = new char[d->dataSize-6];
	memset(cmd, 0, d->dataSize-6);
	for(int t = 0, i = 6; i<((d->dataSize-6)*2+6); t++, i+=2)
		cmd[t] = dest[i];
	cmd[d->dataSize-7] = 0;
	printf("%s", cmd);
	if(strstr(cmd,".gm")==&cmd[0])
	{
		p->Stats.vitalStatus ^= 0x00000200;
		p->Send_UpdateVitalStatus(((LOGIN_INFO*)lir)->NetworkID);
		if(p->chatcolor==5) p->chatcolor = 3;
		else p->chatcolor = 5;
	}
	if(strstr(cmd,".toggle frog")==&cmd[0])
	{
		if(p->control==-1) p->control = 1;
		else p->control = -1;
	}
	if(strstr(cmd,".toggle broadcast")==&cmd[0])
	{
		if(p->control==-1) p->control = 2;
		else p->control = -1;
	}
	else if(strstr(cmd,".earthquake")==&cmd[0])
	{
		CompiledPacket pck;
		short header=PckHeaders.UPDATE_GENERIC_VALUE;
		pck.AddShort(header);
		pck.AddLong(0x00000008);
		pck.AddLong(p->target);
		char str = cmd[11];
		pck.AddLong(atol(&str));
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".speed")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x001a);
		pck.AddLong(p->GetAgentID());
		char level[4];
		level[0] = 0;
		level[1] = 0;
		level[2] = 0;
		level[3] = 0;
		int len = 4;
		if(!(48<=cmd[8])&&(cmd[8]<=57)) len = 1;
		if(!(48<=cmd[9])&&(cmd[9]<=57)) len = 2;
		if(!(48<=cmd[10])&&(cmd[10]<=57)) len = 3;
		if(!(48<=cmd[11])&&(cmd[11]<=57)) len = 4;
		memcpy(&level[0], &cmd[7], len);
		long speed = atol(level);
		float realspeed = speed * 288.0f;
		p->Stats.currentSpeed = realspeed;
		pck.AddFloat(realspeed);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".preparecupcakes")==&cmd[0])
	{
		Item item;
		if(!ItemDefMan.CreateItem("BirthdayCupcake",&item))
		{
 			CoreLog.LOCATION;
 			CoreLog.error("Failed to create Cupcake!");
 		}
		vector<Player>::iterator cycleItr;
		for(cycleItr=players.begin(); cycleItr!=players.end(); cycleItr++)
		{
			if(!cycleItr->isGhost)
			{
 				for(int i=0; i<20; i++)
 				{
					item.GenerateID(cycleItr->GetAccountID(),cycleItr->GetCharacterID(),NULL);
 					item.SetItemStorageLocation(LOC_IN_BACKPACK);
 					item.SetItemStoragePosition(i);
					item.Save();
				}
			}
		}
	}
	else if(strstr(cmd,".drop")==&cmd[0])
	{
		int itemslot = 0x07; //First inventory slot = 0x07
		int i = 0;
cupcake:
			//Initialise packet.
			CompiledPacket pck;

			//Get a new agent id for the drop.
			int agentid = AgentIDMan.GetFreeID();

			//Get random position around the player.
			float x, y;
			x = rand()%2?p->GetCurrentPos().x+rand()%5000:p->GetCurrentPos().x-rand()%5000;
			y = rand()%2?p->GetCurrentPos().y+rand()%5000:p->GetCurrentPos().y-rand()%5000;

			//Add to cupcake vector.
			CUPCAKE Cupcake;
			Cupcake.AgentID = agentid;
			Cupcake.x = x;
			Cupcake.y = y;
			(*(*instances.begin())->GetCupcakeVector()).push_back(Cupcake);

			//Spawn drop.
			pck.AddShort(0x0013);
			pck.AddLong(agentid);
			pck.AddLong(itemslot);
			pck.AddShort(0x0004);
			pck.AddFloat(x);
			pck.AddFloat(y);
			pck.AddShort(0x0000);
			pck.AddFloat(1);
			pck.AddFloat(0); //Rotation
			pck.AddShort(0x0001);
			pck.AddByte(0x0000);
			pck.AddShort(0);
			pck.AddFloat(1);
			pck.AddShort(0x0000);
			pck.AddShort(0x3400);
			pck.AddShort (0);
			pck.AddShort(0);
			pck.Fill(0x00, 0x1c);
			pck.AddFloat(1);
			pck.AddFloat(1);
			pck.Fill(0x00, 0x06);
			pck.AddFloat(1);
			pck.AddFloat(1);
			pck.AddShort(0x0000);  

			time_t waittime = rand();

			//Send to player.
			NetMessage s;
			s.data=pck.GetString(&s.dataSize);
			s.ID=p->GetNetworkID();

			GameServer->SendData(&s, waittime);

			//Update all other players in the instance of this drop.
			PLAYER_CYCLE_START(p)
			s.ID=cycleItr->GetNetworkID();
			GameServer->SendData(&s, waittime);
			PLAYER_CYCLE_END()
			pck.Clear();
		if(i<=1000)
		{
			i++;
			goto cupcake;
		}
	}
	else if(strstr(cmd,".size")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x0087 );
		pck.AddLong(p->target);
		pck.AddShort(0x0000);
		pck.AddByte(0x00);
		pck.AddByte(cmd[9]);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".kill")==&cmd[0])
	{
		AgentPackets::SetVitalStatus(p->target, 0x00000010, (((LOGIN_INFO*)lir)->NetworkID));
	}
	else if(strstr(cmd,".res")==&cmd[0])
	{
		AgentPackets::SetVitalStatus(p->target, 0x00000000, (((LOGIN_INFO*)lir)->NetworkID));
		AgentPackets::SetGenericValue(0x00000025, p->target, p->Stats.maxHP, p->GetNetworkID());
		AgentPackets::SetGenericValue(0x00000024, p->target, p->Stats.maxEnergy, p->GetNetworkID());
	}
	else if(strstr(cmd,".rank")==&cmd[0])
	{
		long emote = 0x0000000C;
		AgentPackets::SetGenericValue(0x00000016, p->target, emote, ((LOGIN_INFO*)lir)->NetworkID);
		AgentPackets::SetGenericValue(0x00000013, p->target, 0x363540B9, ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".knockdown")==&cmd[0])
	{
		AgentPackets::SetGenericValue(0x0000001E, p->target, cmd[11], ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".addquest")==&cmd[0])
	{
		AgentPackets::SetGenericValue(0x0000000A, p->target, 0, ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".removequest")==&cmd[0])
	{
		AgentPackets::SetGenericValue(0x0000000B, p->target, 0, ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".stance")==&cmd[0])
	{
		AgentPackets::SetGenericValue(0x00000021, p->target, 0, ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".targetself")==&cmd[0])
	{
		p->target = p->GetAgentID();
	}
	else if(strstr(cmd,".targetminipet")==&cmd[0])
	{
		p->target = p->minipet;
	}
	else if(strstr(cmd,".come")==&cmd[0])
	{
		CompiledPacket mini;
		mini.AddShort(PckHeaders.GOTO_LOCATION);
		mini.AddLong(p->target);
		mini.AddFloat(p->GetCurrentPos().x);
		mini.AddFloat(p->GetCurrentPos().y);
		mini.AddFloat(p->GetCurrentPos().z);
		NetMessage s;
		s.ID=p->GetNetworkID();
		s.data=mini.GetString(&s.dataSize);
		GameServer->SendData(&s);
	}
	else if(strstr(cmd,".cast")==&cmd[0])
	{
		CompiledPacket pck;
		short header=PckHeaders.UPDATE_GENERIC_VALUE;
		pck.AddShort(header);
		pck.AddLong(0x00000037);
		pck.AddLong(p->target);
		char level[4];
		level[0] = 0;
		level[1] = 0;
		level[2] = 0;
		level[3] = 0;
		int len = 4;
		if(!(48<=cmd[7])&&(cmd[7]<=57)) len = 1;
		if(!(48<=cmd[8])&&(cmd[8]<=57)) len = 2;
		if(!(48<=cmd[9])&&(cmd[9]<=57)) len = 3;
		if(!(48<=cmd[10])&&(cmd[10]<=57)) len = 4;
		memcpy(&level[0], &cmd[6], len);
		pck.AddLong(atol(level));
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".glow")==&cmd[0])
	{
		CompiledPacket pck;
		short header=PckHeaders.UPDATE_GENERIC_VALUE;
		pck.AddShort(header);
		pck.AddLong(0x00000018);
		pck.AddLong(p->target);
		srand(time(NULL));
		pck.AddLong(rand() % 10 + 1);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".pick")==&cmd[0])
	{
		CompiledPacket pck;
		short header=PckHeaders.UPDATE_GENERIC_VALUE;
		pck.AddShort(header);
		pck.AddLong(0x00000022);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(1);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".value")==&cmd[0])
	{
		char *model1 = new char[9];
		memset(model1, 0, 8);
		model1[8] = ' ';
		char *pEnd1;
		pEnd1 = model1+7;
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+7];
		long lModel1 = Util::HexToDecimal(model1);
		printf("\n%X\n", lModel1);
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+16];
		long lModel2 = Util::HexToDecimal(model1);
		printf("%X\n", lModel2);

		AgentPackets::SetGenericValue(lModel1, p->target, lModel2, ((LOGIN_INFO*)lir)->NetworkID);
	}
	else if(strstr(cmd,".setlevel")==&cmd[0])
	{
		CompiledPacket pck;
		short header=PckHeaders.UPDATE_GENERIC_VALUE;

		pck.AddShort(header);
		pck.AddLong(0x00000020);
		pck.AddLong(p->target);
		char level[3];
		level[0] = 0;
		level[1] = 0;
		level[2] = 0;
		int len;
		if(!(48<=cmd[11])&&(cmd[11]<=57)) len = 1;
		if(!(48<=cmd[12])&&(cmd[12]<=57)) len = 2;
		if(!(48<=cmd[13])&&(cmd[13]<=57)) len = 3;
		memcpy(&level[0], &cmd[10], len);
		pck.AddLong(atol(level));
		printf("%d",atol(level));
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".morph")==&cmd[0])
	{
		char *model1 = new char[9];
		memset(model1, 0, 8);
		model1[8] = ' ';
		char *pEnd1;
		pEnd1 = model1+7;
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+7];
		long lModel1 = Util::HexToDecimal(model1);
		printf("\n%X\n", lModel1);
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+16];
		long lModel2 = Util::HexToDecimal(model1);
		printf("%X\n", lModel2);

		CompiledPacket pck;
		short header=0x0048;
		Util::ReverseShortByteOrder(&header);
		
		unsigned long npcid = Instance::LocalIDMan.GetFreeID();
		
		//change model (spawn an npc)
		pck.AddShort(0x0048); // const
		pck.AddLong(npcid); // const
		pck.AddLong(lModel1); //elf model 1
		pck.Fill(0x00, 0x06);
		pck.AddShort(0x6400); //size
		pck.AddLong(0x00000000); // const
		pck.AddLong(0x0000000c); // const
		pck.AddShort(0x000b); // const
		pck.AddShort(0x0002); // const
		pck.AddShort(0x8101); // const
		pck.AddShort(0x5E63);

		if(lModel2!=0)
		{
		pck.AddShort(0x0049);
		pck.AddLong(npcid);
		pck.AddShort(0x0001); // const
		pck.AddLong(lModel2); // elf model 2
		}

		//change model (turn you into the npc)
		pck.AddShort(0x009b); // const
		pck.AddLong(p->target);
		pck.AddLong(npcid); // const*/

		pck.AddShort(0x008c);
		pck.AddLong(0x00000007);
		pck.AddLong(p->target);
		pck.AddLong(0x00000000);

		Instance::LocalIDMan.FreeID(npcid);

		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".frog")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x004f); //Header
		pck.AddShort(0x001c);
		pck.AddShort(0x0108);
		pck.AddShort(0x0107);
		pck.AddShort(0x0049);
		pck.AddShort(0x006e);
		pck.AddShort(0x0064);
		pck.AddShort(0x0065);
		pck.AddShort(0x0065);
		pck.AddShort(0x0064);
		pck.AddShort(0x002c);
		pck.AddShort(0x0020);
		pck.AddShort(0x0054);
		pck.AddShort(0x0068);
		pck.AddShort(0x0065);
		pck.AddShort(0x0020);
		pck.AddShort(0x0046);
		pck.AddShort(0x0072);
		pck.AddShort(0x006f);
		pck.AddShort(0x0067);
		pck.AddShort(0x0020);
		pck.AddShort(0x0069);
		pck.AddShort(0x0073);
		pck.AddShort(0x0020);
		pck.AddShort(0x0068);
		pck.AddShort(0x0065);
		pck.AddShort(0x0072);
		pck.AddShort(0x0065);
		pck.AddShort(0x002e);
		pck.AddShort(0x0001);

		//no_owner_packet
		pck.AddShort(0x0050); //header
		pck.AddShort(0x0000); //no_owner? :P
		pck.AddByte(0x0d); //color

		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}

/*000001ec:4f 00 1c 00 08 01 07 01 49 00 6e 00 64 00 65 00    O.......I.n.d.e.
000001fc:65 00 64 00 2c 00 20 00 54 00 68 00 65 00 20 00    e.d.,. .T.h.e. .
0000020c:46 00 72 00 6f 00 67 00 20 00 69 00 73 00 20 00    F.r.o.g. .i.s. .
0000021c:68 00 65 00 72 00 65 00 2e 00 01 00 50 00 00 00    h.e.r.e.....P...
0000022c:08 11 00 2f 00 00 00 18 00 59 01 00 00 72 01 6f    .../.....Y...r.o
0000023c:3f 00 db b6 3e 01 1c 00 59 01 00 00 74 c2 bb 45    ?.۶>...Y...t»E
0000024c:ee 8a f7 45 23 00 23 00 11 00 10 00 00 00          îŠ÷E#.#.......  */


	}
	else if(strstr(cmd,"dance")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x004f); //Header
		pck.AddShort(0x0003); //unknown
		pck.AddShort(0x079d); //text reference for dance text
		pck.AddByte(0x0d); //?
		pck.AddByte(0x01); //bitfield?
		pck.AddByte(0x01); //bitfield?
		pck.AddByte(0x01); //bitfield?
		pck.AddShort(0x0050);
		pck.AddShort(0x0001);
		pck.AddShort(0x8c06);
		pck.AddByte(0x00);
		pck.AddLong(0x00000014);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(0x00000004);
		pck.AddShort(0x008c);
		pck.AddLong(0x00000017);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(0x31939cbb); //dance animation reference?
		pck.AddShort(0x008c);
		pck.AddLong(0x00000007);
		pck.AddLong(p->GetAgentID());
		pck.AddLong(0x00000001);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".dance")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x004f); //Header
		pck.AddShort(0x0003); //unknown
		pck.AddShort(0x079d); //text reference for dance text
		pck.AddByte(0x0d); //?
		pck.AddByte(0x01); //bitfield?
		pck.AddByte(0x01); //bitfield?
		pck.AddByte(0x01); //bitfield?
		pck.AddShort(0x0050);
		pck.AddShort(0x0001);
		pck.AddShort(0x8c06);
		pck.AddByte(0x00);
		pck.AddLong(0x00000014);
		pck.AddLong(p->target);
		pck.AddLong(0x00000004);
		pck.AddShort(0x008c);
		pck.AddLong(0x00000017);
		pck.AddLong(p->target);
		pck.AddLong(0x31939cbb); //dance animation reference?
		pck.AddShort(0x008c);
		pck.AddLong(0x00000007);
		pck.AddLong(p->target);
		pck.AddLong(0x00000001);
		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}
	}
	else if(strstr(cmd,".spawn")==&cmd[0])
	{
		char *model1 = new char[9];
		memset(model1, 0, 8);
		model1[8] = ' ';
		char *pEnd1;
		pEnd1 = model1+7;
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+7];
		long lModel1 = Util::HexToDecimal(model1);
		printf("\n%X\n", lModel1);
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+16];
		long lModel2 = Util::HexToDecimal(model1);
		printf("%X\n", lModel2);

		CompiledPacket pck;
		

		unsigned long npcid = Instance::LocalIDMan.GetFreeID();
		
		//change model (spawn an npc)
		pck.AddShort(0x0048); // const
		pck.AddLong(npcid); // const
		pck.AddLong(lModel1); //elf model 1
		pck.Fill(0x00, 0x06);
		pck.AddShort(0x6400);
		pck.AddLong(0x00000000); // const
		pck.AddLong(0x0000000c); // const
		pck.AddShort(0x000b); // const
		pck.AddShort(0x0002); // const
		pck.AddShort(0x8101); // const
		pck.AddShort(0x5E63);

		if(lModel2!=0)
		{
		pck.AddShort(0x0049);
		pck.AddLong(npcid);
		pck.AddShort(0x0001); // const
		pck.AddLong(lModel2); // elf model 2
		}

		int agentid = AgentIDMan.GetFreeID();
		//position npc
		pck.AddShort(0x0013);
        pck.AddLong(agentid);
        pck.AddLong(npcid | 0x20000000 );
        pck.AddShort( 0x0901 );
		pck.AddFloat( p->GetCurrentPos().x);
        pck.AddFloat( p->GetCurrentPos().y );
        pck.AddShort( 0x0000 );
        pck.AddFloat( 1 );
		pck.AddFloat( 0 /*rotaion*/ );
        pck.AddShort( 0x0001 );
        pck.AddByte( 0x0000 );
        pck.AddShort( 0x4396 );
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );
        pck.AddShort( 0x4140 );
        pck.AddShort (0x6e63 );
        pck.AddShort( 0x6e6f );
        pck.Fill( 0x00, 0x1c );
        pck.AddFloat             ( 1 );
        pck.AddFloat              ( 1 );
        pck.Fill     ( 0x00, 0x06 );
        pck.AddFloat( 1 );
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );
		printf("Spawned NPC with modelID %x %x and agentID %x (%d) at X = %f and Y = %f", lModel1, lModel2, agentid, agentid, ZoneInfos[GetZoneInfo(GetZoneID())].spawnX, ZoneInfos[GetZoneInfo(GetZoneID())].spawnY);



		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}

		
	}	
	else if(strstr(cmd,".ghostinabox")==&cmd[0])
	{
		long lModel1 = 0x0000cc7f;

		CompiledPacket pck;
		

		unsigned long npcid = Instance::LocalIDMan.GetFreeID();
		
		//change model (spawn an npc)
		pck.AddShort(0x0048); // const
		pck.AddLong(npcid); // const
		pck.AddLong(lModel1); //elf model 1
		pck.Fill(0x00, 0x06);
		pck.AddShort(0x6400);
		pck.AddLong(0x00000000); // const
		pck.AddLong(0x0000000c); // const
		pck.AddShort(0x000b); // const
		pck.AddShort(0x0002); // const
		pck.AddShort(0x8101); // const
		pck.AddShort(0x5E63);

		int agentid = AgentIDMan.GetFreeID();
		//position npc
		pck.AddShort(0x0013);
        pck.AddLong(agentid);
        pck.AddLong(npcid | 0x20000000 );
        pck.AddShort( 0x0901 );
		pck.AddFloat( Vertex::GetPointInBox(Vertex(p->GetCurrentPos().x,p->GetCurrentPos().y),Vertex(10,10)).x);
		pck.AddFloat( Vertex::GetPointInBox(Vertex(p->GetCurrentPos().x,p->GetCurrentPos().y),Vertex(10,10)).y);
        pck.AddShort( 0x0000 );
        pck.AddFloat( 1 );
		pck.AddFloat( rand() /*rotaion*/ );
        pck.AddShort( 0x0001 );
        pck.AddByte( 0x0000 );
        pck.AddShort( 0x4396 );
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );
        pck.AddShort( 0x4140 );
        pck.AddShort (0x6e63 );
        pck.AddShort( 0x6e6f );
        pck.Fill( 0x00, 0x1c );
        pck.AddFloat             ( 1 );
        pck.AddFloat              ( 1 );
        pck.Fill     ( 0x00, 0x06 );
        pck.AddFloat( 1 );
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );
		printf("Spawned NPC with modelID %x %x and agentID %x (%d) at X = %f and Y = %f", lModel1, 0, agentid, agentid, ZoneInfos[GetZoneInfo(GetZoneID())].spawnX, ZoneInfos[GetZoneInfo(GetZoneID())].spawnY);

		//Send to player.
		NetMessage s;
		s.data=pck.GetString(&s.dataSize);
		s.ID=p->GetNetworkID();
		GameServer->SendData(&s);

		//Update all other players in the instance.
		PLAYER_CYCLE_START(p)
		s.ID=cycleItr->GetNetworkID();
		GameServer->SendData(&s);
		PLAYER_CYCLE_END()
		pck.Clear();

		pck.AddShort(0xd6);

		pck.AddLong(agentid);
		pck.AddLong(0x00000010);

		s.data=pck.GetString(&s.dataSize);
		s.ID=p->GetNetworkID();

		GameServer->SendData(&s, 1000);

		//Update all other players in the instance.
		for(cycleItr=players.begin(); cycleItr!=players.end(); cycleItr++){if(cycleItr->Connected && !cycleItr->isGhost && !selPlayer->isGhost && cycleItr->GetLocalID()!=selPlayer->GetLocalID()){
		s.ID=cycleItr->GetNetworkID();
		GameServer->SendData(&s, 1000);
		PLAYER_CYCLE_END()
		pck.Clear();


		pck.AddShort(0x14);
		pck.AddLong(agentid);

		s.data=pck.GetString(&s.dataSize);
		s.ID=p->GetNetworkID();

		GameServer->SendData(&s, 3000);

		//Update all other players in the instance.
		for(cycleItr=players.begin(); cycleItr!=players.end(); cycleItr++){if(!cycleItr->isGhost && !selPlayer->isGhost && cycleItr->GetLocalID()!=selPlayer->GetLocalID()){
		s.ID=cycleItr->GetNetworkID();
		GameServer->SendData(&s, 3000);
		PLAYER_CYCLE_END()
		pck.Clear();

		
	}
	else if(strstr(cmd,".minipet")==&cmd[0])
	{
		if(p->minipet) 
		{
			CompiledPacket pck;
			pck.AddShort(0x14);
			pck.AddLong(p->minipet);

			if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}	
		}
		char *model1 = new char[9];
		memset(model1, 0, 8);
		model1[8] = ' ';
		char *pEnd1;
		pEnd1 = model1+7;
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+9];
		long lModel1 = Util::HexToDecimal(model1);
		printf("\n%X\n", lModel1);
		for(int i = 0; i<8; i++)
			model1[i] = cmd[i+18];
		long lModel2 = Util::HexToDecimal(model1);
		printf("%X\n", lModel2);

		CompiledPacket pck;
		

		unsigned long npcid = Instance::LocalIDMan.GetFreeID();
		
		//change model (spawn an npc)
		pck.AddShort(0x0048); // const
		pck.AddLong(npcid); // const
		pck.AddLong(lModel1); //elf model 1
		pck.Fill(0x00, 0x06);
		pck.AddShort(0x2800); //size... 2800 for Gwen mini
		pck.AddLong(0x00000000); // const
		pck.AddLong(0x00006084); // const
		pck.AddShort(0x0001); // const
		pck.AddShort(0x0005); // const
		pck.AddShort(0x8101); // const
		pck.AddShort(0x682b); // const
		pck.AddShort(0xdbde);
		pck.AddShort(0xf8dd);
		pck.AddShort(0x049a);

		/*//change model (spawn an npc)
		pck.AddShort(0x0048); // const
		pck.AddLong(npcid); // const
		pck.AddLong(lModel1); //elf model 1
		pck.Fill(0x00, 0x06);
		pck.AddShort(0x6400);
		pck.AddLong(0x00000000); // const
		pck.AddLong(0x0000000c); // const
		pck.AddShort(0x000b); // const
		pck.AddShort(0x0002); // const
		pck.AddShort(0x8101); // const
		pck.AddShort(0x5E63);*/

		if(lModel2!=0)
		{
		pck.AddShort(0x0049);
		pck.AddLong(npcid);
		pck.AddShort(0x0001); // const
		pck.AddLong(lModel2); // elf model 2

		/*pck.AddShort(0xc818);
		pck.AddLong(0x00870001);
		pck.AddLong(npcid);
		pck.AddLong(0x28);
*/

		pck.AddShort(0x008c);
		pck.AddLong(0x001f);
		pck.AddLong(npcid);
		pck.AddLong(1);

		pck.AddShort(0x00d6);
		pck.AddLong(npcid);
		pck.AddLong(0);

		/*pck.AddShort(0x0011);
		pck.AddShort(0x5e);
		pck.AddByte(0);*/
		}

		int agentid = AgentIDMan.GetFreeID();
		//position npc
		pck.AddShort(0x0013);
        pck.AddLong(agentid);
        pck.AddLong(npcid | 0x20000000 );
        pck.AddShort( 0x0901 );
		pck.AddFloat( p->GetCurrentPos().x);
        pck.AddFloat( p->GetCurrentPos().y );
        pck.AddShort( 0x0000 );
        pck.AddFloat( 1 );
		pck.AddFloat( 0 /*rotaion*/ );
		pck.AddByte(1);
		pck.AddFloat(288);//speed
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );
        pck.AddShort( 0x4140 );
        pck.AddShort (0x6e63 );
        pck.AddShort( 0x6e6f );
        pck.Fill( 0x00, 0x1c );
        pck.AddFloat( 1 );
        pck.AddFloat( 1 );
        pck.Fill( 0x00, 0x06 );
        pck.AddFloat( 1 );
        pck.AddFloat( 1 );
        pck.AddShort( 0x0000 );

		//set minipet :)
		pck.AddShort(0x005f);
		pck.AddLong(agentid);
		pck.AddLong(0);
		pck.AddLong(0);

		pck.AddShort(0x008f);
		pck.AddLong(0x00000027);
		pck.AddLong(agentid);
		pck.AddShort(0xcccd);
		pck.AddShort(0x3e4c);

		pck.AddShort(0x0019);
		pck.AddLong(agentid);
		pck.AddByte(0x08);

		pck.AddShort(0x0011);
		pck.AddLong(0x0000009c);

		p->minipet = agentid;

		printf("Spawned NPC with modelID %x %x and agentID %x (%d) at X = %f and Y = %f", lModel1, lModel2, agentid, agentid, ZoneInfos[GetZoneInfo(GetZoneID())].spawnX, ZoneInfos[GetZoneInfo(GetZoneID())].spawnY);



		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}

		
	}	
	else if(strstr(cmd,".del")==&cmd[0])
	{
		CompiledPacket pck;
		pck.AddShort(0x14);
		pck.AddLong(p->target);

		if(((LOGIN_INFO*)lir)->NetworkID==0){pck.GetMiniPck();}else{Util::SendCompiledPacket(&pck,((LOGIN_INFO*)lir)->NetworkID,GameServer);}	
	}	
	//ConsoleWrite("You used a test command", false, p->GetNetworkID(), p->GetLocalID(), 13);
	return d->dataSize;
}

int Instance::ProcessTeamChat(unsigned char *dest,NetMessage *d, NetMessage *s, void* lir)
{
	return 4+(dest[2]*2);
}

int Instance::ProcessLocalChat(unsigned char *dest,NetMessage *d, NetMessage *s, void* lir)
{
	long playerSlot=FindPlayerByNID(((LOGIN_INFO*)lir)->NetworkID);
	Player *p=&players[playerSlot];

	char messageU[250];
	memset(messageU,0,250);
	memcpy( messageU, &dest[0x06], ((*((unsigned short*)&dest[0x02])) - 1) * 2 );

	vector<Player>::iterator itr;
	for(itr=players.begin(); itr!=players.end(); itr++)
	{
			WriteGeneralChat((unsigned char*)messageU,((*((unsigned short*)&dest[0x02])) - 1),p->chatcolor,p->GetLocalID(),itr->GetNetworkID());
	}
	return 4+(dest[2]*2);
}

int Instance::ProcessTradeChat(unsigned char *dest,NetMessage *d, NetMessage *s, void* lir)
{
	long playerSlot=FindPlayerByNID(((LOGIN_INFO*)lir)->NetworkID);
	Player *p=&players[playerSlot];

	char messageU[250];
	memset(messageU,0,250);
	memcpy( messageU, &dest[0x06], ((*((unsigned short*)&dest[0x02])) - 1) * 2 );

	vector<Player>::iterator itr;
	for(itr=players.begin(); itr!=players.end(); itr++)
	{
			WriteGeneralChat((unsigned char*)messageU,((*((unsigned short*)&dest[0x02])) - 1),12,p->GetLocalID(),itr->GetNetworkID());
	}
	return 4+(dest[2]*2);
}

int Instance::ProcessWhisperChat(unsigned char *dest,NetMessage *d, NetMessage *s, void* lir)
{
	return 0;
}