Example #1
0
// Handle a character delete request
void _Server::HandleCharacterDelete(_Buffer &Data, _Peer *Peer) {
	if(!Peer->AccountID)
		return;

	// Get delete slot
	uint32_t Slot = Data.Read<uint8_t>();
	uint32_t CharacterID = 0;

	// Get character id
	CharacterID = Save->GetCharacterIDBySlot(Peer->AccountID, Slot);
	if(!CharacterID)
		return;

	// Delete character
	Save->DeleteCharacter(CharacterID);

	// Update the player
	SendCharacterList(Peer);
}
Example #2
0
void GameSocket::OnCharacter() 
{
	char pType = Reader.ReadByte();
	switch(pType) 
	{
		case 1:
			OnCharCreation();
			break;
		case 2:
			SendCharacterList();
			break;
		case 3:
			OnCharDeletion();
			break;
		case 4:
			OnCharnameCheck();
			break;
		case 5:
			OnCharRestore();
			break;
	}
}
Example #3
0
void GameSocket::OnCharDeletion() 
{
	/*  This is where we should set restore flag, deletion time, etc.
		Just deleting from database for now.
		Also, we MIGHT want to delete items related to this character from items table. */

	unsigned short charlen = Reader.ReadWord();
	char* name = new char[charlen+1];
	memset(name, 0x00, charlen+1);
	Reader.ReadString((unsigned char*)name, charlen);

	int charid = CharacterExists(name);

	Writer.Create(GAME_SERVER_CHARACTER);

		Writer.WriteByte(0x03);

		if(charid) 
		{
			db.Query("delete from characters where name='%s'", name).execute();
			db.Query("delete from items where owner=%d", charid).execute();
			Writer.WriteByte(0x01);
		} 
		else 
		{
			Writer.WriteByte(0x02);
			Writer.WriteByte(0x01);
		}

	Writer.Finalize();
	Send(Writer.Buffer, Writer.Size());

	SendCharacterList();

	delete[] name;
}
Example #4
0
// Sends a player his/her character list
void _Server::HandleCharacterListRequest(_Buffer &Data, _Peer *Peer) {
	if(!Peer->AccountID)
		return;

	SendCharacterList(Peer);
}