Exemplo n.º 1
0
player_ptr get_player(std::string uid)
{
	auto itf = online_players.find(uid);
	if (itf != online_players.end()){
		return itf->second;
	}
	return player_ptr();
}
Exemplo n.º 2
0
void players::on_player_connect(int player_id) {
    if (api_ptr->is_has_030_features() && api_ptr->is_player_npc(player_id)) {
        // Не создаем игрока для бота
        return;
    }
    player::ptr player_ptr(new player(player_id));
    std::pair<players_holder_t::iterator, bool> insert_rezult = players_holder.insert(std::make_pair(player_id, player_ptr));
    assert(insert_rezult.second && "Ошибка добавление игрока");
    if (container_execute_handlers(application::instance(), &players_events::on_pre_rejectable_connect_i::on_pre_rejectable_connect, player_ptr)
     && container_execute_handlers(application::instance(), &players_events::on_rejectable_connect_i::on_rejectable_connect, player_ptr)) {
        // Игрока разрешили создать
        container_execute_handlers(application::instance(), &players_events::on_pre_connect_i::on_pre_connect, player_ptr);
        container_execute_handlers(application::instance(), &players_events::on_connect_i::on_connect, player_ptr);
        container_execute_handlers(player_ptr, &player_events::on_connect_i::on_connect);
    }
    else {
        // Запрещено создание игрока - удаляем его из списка игроков. Больше никакие события на него не вызовутся
        players_holder.erase(insert_rezult.first);
        player_ptr->kick();
    }
}