|
Архив - только для чтения |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина При добивании моба на всех вешается дэбафф (Как получить доступ к переменной другого скрипта (класса)) |
| При добивании моба на всех вешается дэбафф |
Короче, у меня есть 2 скрипта: guards.cpp и player.cpp. Когда в guards.cpp происходит одно событие (добивание моба), мне нид на всех игроков сервера повесить дэбафф. Как я понял, мне нужно объявить булку в каком-то файле (player.h наверное) и когда добили моба сделать ее true и в player.cpp когда она тру будет вешатся дебафф. Так вот, в c# сделать мне это было легко, а тут не получается, так что прошу помогите. Буду рад увидеть и другие варианты реализации
|
Код for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) { WorldSession* session = itr->second; if (!session || !session->GetPlayer() || !session->GetPlayer()->IsInWorld() || session->GetPlayer()->isAFK()) continue; session->GetPlayer()->CastSpell(session->GetPlayer()->ToUnit(), 34234, true); }
Сообщение # 4 написано 18.01.2014 в 18:03
|
Очень грязный, особенно, если это НЕ подготовленные выражения, которыми я поделюсь ниже. Кстати, пишу по памяти в этом окошке, так что подправишь. Если хочешь оптимизировать, переделай отправку sql путем подготовленных выражений. QueryResult result = CharacterDatabase.PQuery("SELECT guid FROM characters WHERE online = 0"); if (result) { do { Field* fields = result->Fetch(); uint64 guid = fields[0].GetUInt64(); CharacterDatabase.PQuery("REPLACE INTO character_aura (%u, ид_ауры)", guid); // тут не помню , ни названия таблицы аур , ни ее филдов , подправишь. } while (result->NextRow()); } // затем for (SessionMap::const_iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) { WorldSession* session = itr->second; if (!session || !session->GetPlayer() || !session->GetPlayer()->IsInWorld()) continue; session->GetPlayer()->CastSpell(session->GetPlayer()->ToUnit(), 34234, true); }
Сообщение # 12 написано 22.01.2014 в 20:56
|
| |||
| |||
