void GameEventMgr::ProcessObjectsAndScripts(uint32 id) { Log.Success("GameEvent", "Started loading datas from database for event %u", id); AsyncQuery* queries = new AsyncQuery(new SQLClassCallbackP1<GameEventMgr, uint32>(this, &GameEventMgr::ProcessObjectsAndScriptsProc, id)); queries->AddQuery("SELECT gs.*,cs.map FROM game_event_scripts gs JOIN creature_spawns cs ON (gs.sql_id = cs.id) WHERE gs.event_id = %u;", id); queries->AddQuery("SELECT * FROM game_event_creature_waypoints WHERE event_id = %u;", id); queries->AddQuery("SELECT * FROM game_event_creature_spawns WHERE event_id = %u;", id); queries->AddQuery("SELECT * FROM game_event_gameobject_spawns WHERE event_id = %u;", id); WorldDatabase.QueueAsyncQuery(queries); }
void GameEventMgr::LoadEvents() { Log.Notice("GameEvent","Started loading events..."); // select all events AsyncQuery* queries = new AsyncQuery(new SQLClassCallbackP0<GameEventMgr>(this, &GameEventMgr::LoadEventsProc)); queries->AddQuery("SELECT * FROM game_event;"); WorldDatabase.QueueAsyncQuery(queries); }
void WorldSession::HandleCharEnumOpcode( WorldPacket & recv_data ) { if( m_asyncQuery ) // should be enough return; AsyncQuery * q = new AsyncQuery( new SQLClassCallbackP1<World, uint32>(World::getSingletonPtr(), &World::CharacterEnumProc, GetAccountId()) ); q->AddQuery("SELECT guid, level, race, class, gender, bytes, bytes2, name, positionX, positionY, positionZ, mapId, zoneId, banned, restState, deathstate, forced_rename_pending, player_flags, guild_data.guildid, customizable FROM characters LEFT JOIN guild_data ON characters.guid = guild_data.playerid WHERE acct=%u ORDER BY guid ASC LIMIT 10", GetAccountId()); m_asyncQuery = true; CharacterDatabase.QueueAsyncQuery(q); }
void MailMessage::SaveToDB() { stringstream ss; vector< uint64 >::iterator itr; ss << "REPLACE INTO mailbox VALUES(" << message_id << "," << message_type << "," << player_guid << "," << sender_guid << ",\"" << CharacterDatabase.EscapeString(subject) << "\",\"" << CharacterDatabase.EscapeString(body) << "\"," << money << ",'"; for( itr = items.begin( ); itr != items.end( ); ++itr ) ss << (*itr) << ","; ss << "'," << cod << "," << stationary << "," << expire_time << "," << delivery_time << "," << copy_made << "," << read_flag << "," << deleted_flag << "," << returned_flag << ")"; if(message_id == 0) { AsyncQuery * q = new AsyncQuery( new SQLClassCallbackP0<MailMessage>(this, &MailMessage::SaveToDBCallBack) ); q->AddQuery(ss.str().c_str()); q->AddQuery("SELECT LAST_INSERT_ID()"); CharacterDatabase.QueueAsyncQuery(q); } else { CharacterDatabase.WaitExecute(ss.str().c_str()); } }
void WorldSession::HandlePlayerLoginOpcode(WorldPacket & recv_data) { CHECK_PACKET_SIZE(recv_data, 8); uint64 playerGuid = 0; LOG_DEBUG("WORLD: Recvd Player Logon Message"); recv_data >> playerGuid; // this is the GUID selected by the player if (objmgr.GetPlayer((uint32)playerGuid) != NULL || m_loggingInPlayer || _player) { // A character with that name already exists 0x3E uint8 respons = E_CHAR_LOGIN_DUPLICATE_CHARACTER; OutPacket(SMSG_CHARACTER_LOGIN_FAILED, 1, &respons); return; } AsyncQuery* q = new AsyncQuery(new SQLClassCallbackP0<WorldSession>(this, &WorldSession::LoadPlayerFromDBProc)); q->AddQuery("SELECT guid,class FROM characters WHERE guid = %u AND forced_rename_pending = 0", playerGuid); // 0 CharacterDatabase.QueueAsyncQuery(q); }