• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
При добивании моба на всех вешается дэбафф
Llfe
Скаут
Короче, у меня есть 2 скрипта: guards.cpp и player.cpp. Когда в guards.cpp происходит одно событие (добивание моба), мне нид на всех игроков сервера повесить дэбафф. Как я понял, мне нужно объявить булку в каком-то файле (player.h наверное) и когда добили моба сделать ее true и в player.cpp когда она тру будет вешатся дебафф. Так вот, в c# сделать мне это было легко, а тут не получается, так что прошу помогите. Буду рад увидеть и другие варианты реализации smile
Сообщение # 1 отредактировано Llfe - Суббота, 18.01.2014, 16:47
_dm666
<3 Death Metal
А не легче в скрипте смерти моба через цикл повесить баф?
Сообщение # 2 написано 18.01.2014 в 17:05
Llfe
Скаут
Ну и на кого я буду вешать этот баф? Через цикл.. ну а подробнее.?
Сообщение # 3 написано 18.01.2014 в 17:19
_dm666
<3 Death Metal
Код
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
Llfe
Скаут
Мне нужно, чтобы этот дэбафф был весь день, даже если клиент офф
Сообщение # 5 написано 18.01.2014 в 18:07
_dm666
<3 Death Metal
Длительность спела или на тех игроков, которые не в сети?
Сообщение # 6 написано 18.01.2014 в 18:36
Llfe
Скаут
Убили моба и на всю фракцию повеслися дебаф, аж на весь день пока снова не реснится моб. То есть если игрок был офф и не принимал участвия в убийстве моба и зашел посреди дня, то чтобы он тоже имел этот дэбафф... Вот так вот
Сообщение # 7 написано 18.01.2014 в 18:42
_dm666
<3 Death Metal
В таком случае я бы сделал через запрос, но это грязный способ.
Сообщение # 8 написано 18.01.2014 в 18:50
Llfe
Скаут
Значит это невозможно... Однако спс за помощь)
Сообщение # 9 написано 18.01.2014 в 19:10
_dm666
<3 Death Metal
Я не говорил, что это невозможно. Нужно время только и желание.
Сообщение # 10 написано 18.01.2014 в 19:40
Llfe
Скаут
Не, у меня нету времени на изучение этого всего. Так что буду менять на менее сложное
Сообщение # 11 написано 18.01.2014 в 19:46
Vitalya7
Ну просто умничка=))

Цитата std_Suicide ()
В таком случае я бы сделал через запрос, но это грязный способ.

Очень грязный, особенно, если это НЕ подготовленные выражения, которыми я поделюсь ниже.
Кстати, пишу по памяти в этом окошке, так что подправишь. Если хочешь оптимизировать, переделай отправку 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());
}

// затем
Цитата std_Suicide ()
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
  • Страница 1 из 1
  • 1
Поиск: