Maybe useful for someone
Code:
typedef void (__cdecl* SendPacketType )( char * sendpacket, int packetsize );
SendPacketType sendp = (SendPacketType)address;
void xcall( BYTE fraktion )
{
// 0 = light 1 = dark
char packet[3] = {0};
strcpy_s( packet, "\x18\xFa" );
memcpy_s( packet, 1, &fraktion, 1 );
sendp( packet, 3 );
}
void WriteNotice( char* message )
{
char packet[150] = {0};
strcpy_s( packet, "\x0B\xF9\x00\x00" );
char msglen = static_cast<char>( strlen( message ) );
int psize = strlen( message );
psize += 6;
strcpy_s(packet+4, 146, &msglen );
strcpy_s( packet+5, 145, message );
sendp( packet, psize );
}
void bMove( float x, float y, short mapid )
{
char packet[13] = {0};
strcpy_s( packet, "\x0A\xFA" );
memcpy_s( packet+2, 11, &x, 4 );
memcpy_s( packet+6, 7, &y, 4 );
memcpy_s( packet+10, 3, &mapid, 2 );
sendp( packet, 0x0C );
}
void CreateNpc( BYTE Type, WORD npcid )
{
BYTE a = 0x01;
char packet[6] = {0};
strcpy_s( packet, "\x0C\xF7" );
memcpy_s( packet+2, 5, &Type, 1 );
memcpy_s( packet+3, 4, &npcid, 2 );
memcpy_s( packet+5, 1, &a, 1 );
sendp( packet, 6 );
}
void DeleteNpc( BYTE Type, WORD npcid )
{
BYTE a = 0x01;
char packet[6] = {0};
strcpy_s( packet, "\x0D\xF7" );
memcpy_s( packet+2, 5, &Type, 1 );
memcpy_s( packet+3, 4, &npcid, 2 );
memcpy_s( packet+5, 1, &a, 1 );
sendp( packet, 6 );
}
void CreateMonster( short mobid, BYTE numberofmobs )
{
char packet[5] = {0};
strcpy_s( packet, "\x04\xF7" );
memcpy_s( packet+2, 4, &mobid, 2 );
memcpy_s( packet+4, 1, &numberofmobs, 1 );
sendp( packet, 5 );
}
void SendPrivateMessage( char* Message, char* Player )
{
char Packet[256] = {0};
// Copy OP Code
strcpy_s( Packet, 256, "\x02\xF1" );
// Copy Playername
strcat_s( Packet, 256, Player );
// Copy Message Size
char msglen = static_cast<char>( strlen( Message ) );
strcpy_s( Packet+23, 256, &msglen );
// Copy Message
strcpy_s( Packet+24, 256, Message );
// Send Packet
int packetsize = strlen( Message );
packetsize += 24;
sendp( Packet, packetsize );
}