void generate_choosechar_packet( )
{
	//char choosecharpacket[100] = {-56,7,15,48,7,15,7,15,66,117,102,102,66,111,121,48,49,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,12,7,15,7,15,7,15,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,29,29,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,-28,-108,22,7,15,1,'\0'};
	char choosecharpacket[100] = {-56,7,15,48,7,15,7,15,71,111,112,104,101,114,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,11,7,15,92,92,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,18,29,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,42,-97,-48,8,1,'\0'};
	Sec_Client_Forward( choosecharpacket );

	char important1packet[20] = {-66,7,14,7,15,7,15,1,'\0'};
	Sec_Client_Forward( important1packet );

	char important2packet[20] = {30,7,8,7,15,7,15,1,'\0'};
	Sec_Client_Forward( important2packet );
}

void generate_coords_from_file( char buf[], int i )
{
	char tempchar = 0;
	//if( i == 0 )
	//{
	//	coord.open("by.txt", ios::in | ios::nocreate);
	//	while( !coord.eof() )
	//	{
	//		coord >> VALIDCOORDS[i][0];
	//		coord >> tempchar;
	//		coord >> VALIDCOORDS[i][1];
	//		i++;
	//		coord >> ws;
	//	}
	//	return;
	//}

	int k = 0;
	while( k < 100 )
	{
		VALIDCOORDS[k][0] = 0;
		VALIDCOORDS[k][1] = 0;
		k++;
	}
	char coordfile[10];
	i = i + 3;
	int j = 0;
	while( buf[i] != '.' )
	{
		coordfile[j] = buf[i];
		j++;
		i++;
	}
	coordfile[j] = '.';
	j++;
	coordfile[j] = 't';
	j++;
	coordfile[j] = 'x';
	j++;
	coordfile[j] = 't';
	j++;
	coordfile[j] = '\0';

	char say[] = {'L','O','A','D',' ','C','O','O','R','D','F','I','L','E',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};
	i = 0;
	j = 15;
	while( coordfile[i] != '\0' )
	{
		say[j] = coordfile[i];
		j++;
		i++;
	}
	say[j] = '\0';
	generate_systemtalk_packet( say );

	coord.open(coordfile, ios::in | ios::nocreate);
	if ( coord.fail() )
	{
		fprintf( log, "Error opening input file, %s\n", coordfile );
		cin.get();
		exit(EXIT_FAILURE);
	}
	i = 0;
	while( !coord.eof() )
	{
		coord >> VALIDCOORDS[i][0];
		coord >> tempchar;
		coord >> VALIDCOORDS[i][1];
		i++;
		coord >> ws;
	}

	//i = 0;
	//while( VALIDCOORDS[i][0] != 0 )
	//{
	//	fprintf( log, "%d,%d\n", VALIDCOORDS[i][0], VALIDCOORDS[i][1] );
	//	i++;
	//}
}

void generate_mailbox_packet( char buf[] )
{
	char mailboxpacket[50] = {24,7,14,7,13,7,15,7,13,7,15,1,'\0'};
	Pri_Client_Forward( mailboxpacket );
}

void generate_mapchange_packet( char buf[], int i )
{
	char mapchangepacket[50] = {-55,7,15,27,7,15,21,7,15,49,48,49,52,49,58,50,48,57,46,49,55,48,46,49,54,46,50,51,48,44,-29,-108,22,7,15,1,'\0'};
	if( buf[i] == 'S' && buf[i+1] == 'T' && buf[i+2] == '1' )
	{
		//Port
		mapchangepacket[9] = '1';
		mapchangepacket[10] = '0';
		mapchangepacket[11] = '1';
		mapchangepacket[12] = '2';
		mapchangepacket[13] = '1';
		//IP
		mapchangepacket[26] = '2';
		mapchangepacket[27] = '2';
		mapchangepacket[28] = '9';
		PriServerPacket( mapchangepacket );
	}
	else if( buf[i] == 'D' && buf[i+1] == 'T' && buf[i+2] == '1' )
	{
		//Port
		mapchangepacket[9] = '1';
		mapchangepacket[10] = '0';
		mapchangepacket[11] = '1';
		mapchangepacket[12] = '2';
		mapchangepacket[13] = '3';
		//IP
		mapchangepacket[26] = '2';
		mapchangepacket[27] = '2';
		mapchangepacket[28] = '8';
		PriServerPacket( mapchangepacket );
	}
	else
	{
		char say[] = {'F','A','I','L','E','D','\0'};
		generate_systemtalk_packet( say );
	}
}

void generate_mailmoney_packet( void )
{
	//currently 800
	//char mailcomposepacket[50] = {-70,7,14,7,8,7,15,66,117,102,102,66,111,121,1,'\0'};
	//Pri_Client_Forward( mailcomposepacket );

	//char mailsendpacket[50] = {-78,7,14,7,15,7,15,1,'\0'};
	//Pri_Client_Forward( mailsendpacket );

	//char mailsendbodypacket[50] = {-76,7,14,7,11,7,15,98,98,98,98,1,'\0'};
	//Pri_Client_Forward( mailsendbodypacket );

	char mailsendtitlepacket[50] = {-74,7,14,17,7,15,7,14,7,10,7,14,7,15,7,15,32,7,12,7,15,7,15,100,7,10,7,10,7,15,97,97,97,97,1,'\0'};
	//char mailsendtitlepacket[50] = {-74,7,14,7,8,7,15,7,15,120,120,120,120,120,120,1,'\0'};
	Pri_Client_Forward( mailsendtitlepacket );
}

void generate_trader_packet( char buf[] )
{
	char traderpacket[50] = {24,7,14,15,7,15,32,7,15,24,7,15,43,-80,-59,-73,-95,-68,-46,-63,-42,-64,-50,1,'\0'};
	Pri_Client_Forward( traderpacket );
}

void generate_doctor_packet( char buf[] )
{
	char doctorpacket[50] = {24,7,14,9,7,15,8,7,15,13,7,15,43,-64,-57,-69,-25,1,'\0'};
	Pri_Client_Forward( doctorpacket );
	char confirmdoctorpacket[50] = {-42,7,14,7,15,7,15,1,'\0'};
	Pri_Client_Forward( confirmdoctorpacket );
}

void generate_bank_packet( char buf[] )
{
	char bankpacket[50] = {24,7,14,12,7,15,7,9,7,15,21,7,15,43,-64,-70,-57,-32,-65,-8,49,1,'\0'};
	Pri_Client_Forward( bankpacket );
}

void generate_othertalk_packet( char buf[], int i )
{
	char othertalkpacket[100] = {47,7,14,0,7,15,7,15,7,14};
	int k = 10;
	i = i + 3;
	while( buf[i] != ',' )
	{
		othertalkpacket[k] = buf[i];
		k++;
		i++;
	}
	othertalkpacket[k++] = 10;
	i++;
	int count = 10;
	while( buf[i] != '.' )
	{
		othertalkpacket[k] = buf[i];
		k++;
		i++;
		count++;
	}
	othertalkpacket[3] = count;
	othertalkpacket[k++] = 1;
	othertalkpacket[k] = '\0';
	Pri_Server_Forward( othertalkpacket );
}

void generate_systemtalk_packet( char say[] )
{
	char systemtalkpacket[100] = {47,7,14,0,7,15,7,15,7,14,'S','Y','S','T','E','M',10};
	int k = 17;
	int i = 0;
	int count = 9;
	while( say[i] != '\0' )
	{
		systemtalkpacket[k] = say[i];
		k++;
		i++;
		count++;
	}
	systemtalkpacket[3] = count;
	systemtalkpacket[k++] = 1;
	systemtalkpacket[k] = '\0';
	fprintf( log, "SystemTalkPacket-> " );
	//int q = 0;
	//while( systemtalkpacket[q] != '\0' )
	//{
	//	fprintf( log, "%d ", systemtalkpacket[q] );
	//	q++;
	//}
	Pri_Server_Forward( systemtalkpacket );
}

void generate_createitem_packet( char buf[] )
{
	//inventory at login
	//char createitempacket[50] = {-33,7,15,14,7,15,7,14,7,15,7,11,7,15,38,7,15,10,7,15,7,15,7,15,7,15,7,15,7,15,7,15,1,'\0'};

	//inventoryafter pickup
	//char createitempacket[50] = {-33,7,15,14,7,15,7,14,7,15,7,11,-71,38,7,15,10,7,15,7,15,7,15,7,15,7,14,77,95,1,'\0'};

	//onground
	//char createitempacket[50] = {-35,7,15,18,7,15,-88,7,15,65,7,15,7,15,51,7,11,7,15,38,7,15,10,7,15,7,15,7,15,7,15,7,15,7,15,7,15,1,'\0'};

	//pickup
	char createitempacket[50] = {-36,7,15,18,7,15,7,11,-71,38,7,15,10,7,15,7,15,7,15,7,15,7,14,77,95,-88,7,15,65,7,15,7,15,7,9,1,'\0'};

	int q = 0;
	while( createitempacket[q] != '\0' )
	{
		fprintf( log, "%d ", createitempacket[q] );
		q++;
	}
	Pri_Client_Forward( createitempacket );
}

void generate_st2runawaygirl_packet( char buf[] )
{
	char st2runawaygirlpacket[50] = {24,7,14,14,7,15,57,7,15,14,7,15,43,-80,-95,-61,-30,-68,-46,-77,-32,49,1,'\0'};
	Pri_Client_Forward( st2runawaygirlpacket );
}


void generate_st2foodvendor_packet( char buf[] )
{
	char st2foodvendor[50] = {24,7,14,14,7,15,55,7,15,16,7,15,43,-69,-13,-63,-95,-63,-42,-64,-50,49,1,'\0'};
	Pri_Client_Forward( st2foodvendor );
}

void generate_st2arms_packet( char buf[] )
{
	char st2armspacket[50] = {24,7,14,12,7,15,56,7,15,19,7,15,43,-77,-21,-63,-95,-69,-13,49,1,'\0'};
	Pri_Client_Forward( st2armspacket );
}

void generate_st1foodvendor_packet( char buf[] )
{
	char st1foodvendor[50] = {24,7,14,14,7,15,51,7,15,16,7,15,43,-69,-13,-63,-95,-63,-42,-64,-50,49,1,'\0'};
	Pri_Client_Forward( st1foodvendor );
}

void generate_st1arms_packet( char buf[] )
{
	char st1armspacket[50] = {24,7,14,12,7,15,52,7,15,19,7,15,43,-77,-21,-63,-95,-69,-13,49,1,'\0'};
	Pri_Client_Forward( st1armspacket );
}

void generate_quit_packet( char buf[] )
{
	char quitpacket[50] = {124,7,15,7,14,7,15,7,15,1,'\0'};
	Pri_Client_Forward( quitpacket );
}

void generate_abs_packet( char buf[] )
{
	char abspacket[50] = {-6,7,15,7,12,7,15,7,14,7,13,7,15,1,'\0'};
	Pri_Client_Forward( abspacket );
}
void generate_movement_packet( char buf[], int i )
{
	char movementpacket[50]= {-54,7,15,8,7,15};
	int x = 0, y = 0;
	int k = i + 3;
	while( buf[k] != ',' && k != 100 )
	{
		x = ( x * 10 ) + ( buf[k] - 48 );
		k++;
	}
	CURRENT_X = x;
	k++;
	while( buf[k] != '.' && k != 100 )
	{
		y = ( y * 10 ) + ( buf[k] - 48 );
		k++;
	}
	CURRENT_Y = y;
	if( x > 127 )
		x = x - 256;
	if( y > 127 )
		y = y - 256;
	i = 6;
	if( x > 7 || x < 1 )
		movementpacket[i] = x;
	else
	{
		movementpacket[i] = 7;
		movementpacket[++i] = 15 - x;
	}
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	if( y > 7 || y < 1 )
		movementpacket[++i] = y;
	else
	{
		movementpacket[++i] = 7;
		movementpacket[++i] = 15 - y;
	}
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	movementpacket[++i] = 45;
	movementpacket[++i] = 7;
	movementpacket[++i] = 14;
	movementpacket[++i] = 7;
	movementpacket[++i] = 13;
	movementpacket[++i] = 1;
	movementpacket[++i] = '\0';

	PriClientPacket( movementpacket );
}

void generate_movement_packet_from_coords( char coords[] )
{
	char movementpacket[50]= {-54,7,15,8,7,15};
	int x = 0, y = 0;
	x = coords[0];
	y = coords[1];

	CURRENT_X = x;
	CURRENT_Y = y;
	int i = 6;
	if( x > 127 )
		x = x - 256;
	if( y > 127 )
		y = y - 256;
	if( x > 7 || x < 1 )
		movementpacket[i] = x;
	else
	{
		movementpacket[i] = 7;
		movementpacket[++i] = 15 - x;
	}
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	if( y > 7 || y < 1 )
		movementpacket[++i] = y;
	else
	{
		movementpacket[++i] = 7;
		movementpacket[++i] = 15 - y;
	}
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	movementpacket[++i] = 7;
	movementpacket[++i] = 15;
	movementpacket[++i] = 45;
	movementpacket[++i] = 7;
	movementpacket[++i] = 14;
	movementpacket[++i] = 7;
	movementpacket[++i] = 13;
	movementpacket[++i] = 1;
	movementpacket[++i] = '\0';
	Pri_Client_Forward( movementpacket );

	/*if( ( x > 7 || x < 1 ) && ( y > 7 || y < 1 ) )
	{
		char othersightpacket[125] = {-51,7,15,51,7,15,7,15,68,101,108,83,111,108,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,10,29,-2,7,15,7,15,7,15,7,15,7,15,7,15,7,15,x,7,15,y,7,15,7,15,7,15,7,15,1,'\0'};
		Pri_Server_Forward( othersightpacket );
	}
	else if( x > 7 || x < 1 )
	{
		char othersightpacket[125] = {-51,7,15,51,7,15,7,15,68,101,108,83,111,108,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,10,29,-2,7,15,7,15,7,15,7,15,7,15,7,15,7,15,x,7,15,7,(15-y),7,15,7,15,7,15,7,15,1,'\0'};
		Pri_Server_Forward( othersightpacket );
	}
	else if( y > 7 || y < 1 )
	{
		char othersightpacket[125] = {-51,7,15,51,7,15,7,15,68,101,108,83,111,108,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,10,29,-2,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,(15-x),7,15,y,7,15,7,15,7,15,7,15,1,'\0'};
		Pri_Server_Forward( othersightpacket );
	}
	else
	{
		char othersightpacket[125] = {-51,7,15,51,7,15,7,15,68,101,108,83,111,108,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,13,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,10,29,-2,7,15,7,15,7,15,7,15,7,15,7,15,7,15,7,(15-x),7,15,(15-y),7,15,7,15,7,15,7,15,1,'\0'};
		Pri_Server_Forward( othersightpacket );
	}*/
}

void generate_random_movement_packet( void )
{
	char randommovementpacket[50]= {-54,7,15,8,7,15};
	int x = 0, y = 0;
	if( VALIDCOORDS[CURRENTCOORD][0] == 0 )
		CURRENTCOORD = 0;
	x = VALIDCOORDS[CURRENTCOORD][0];
	y = VALIDCOORDS[CURRENTCOORD][1];
	CURRENT_X = x;
	CURRENT_Y = y;
	CURRENTCOORD++;

	if( x > 127 )
		x = x - 256;
	if( y > 127 )
		y = y - 256;

	int i = 6;

	randommovementpacket[i] = x;
	randommovementpacket[++i] = 7;
	randommovementpacket[++i] = 15;

	randommovementpacket[++i] = y;
	randommovementpacket[++i] = 7;
	randommovementpacket[++i] = 15;
	randommovementpacket[++i] = 7;
	randommovementpacket[++i] = 15;
	randommovementpacket[++i] = 45;
	randommovementpacket[++i] = 7;
	randommovementpacket[++i] = 14;
	randommovementpacket[++i] = 7;
	randommovementpacket[++i] = 13;
	randommovementpacket[++i] = 1;
	randommovementpacket[++i] = '\0';

	PriClientPacket( randommovementpacket );

	PINGPACKETSSINCETELEPORT = 0;
}