Показать сообщение отдельно
Старый 20.09.2010, 18:06   #51
alien
Ученый
 
Регистрация: 17.05.2010
Сообщений: 148
Сказал(а) спасибо: 18
Поблагодарили 25 раз(а) в 22 сообщениях
alien На верном пути
По умолчанию

Возвращаемся к нашим баранам...
1) Самым проблемным для реализации через game_event является виклики у
http://ru.wowhead.com/npc=20735
Тут либо надо хардкодить связь Creature которые находятся сзади с выбираемым квестом, либо создавать еще одну таблицу в которой хранить эту связь. Но и тут не так все просто так-как вначале надо выбирать не квест а Creature так-как вначале отрабатываются то какие Creature будут заспавнены, а только потом квесты.
Да и если в
void GameEventMgr::UpdateEventQuests(uint16 event_id, bool Activate)
легко добавить выбор рандомного квеста и пропуск остальных. то вот в void GameEventMgr::GameEventSpawn(int16 event_id) и void GameEventMgr::GameEventUnspawn(int16 event_id) не так то и просто добавить спавн одного и унспавн других NPC.
Кто нибудь, что нибудь подскажет по этому поводу?

2) Дальше следующая проблема.
Как организовать перезапуск евента?
а)
например можно сделать вот так.
Длительность эвента 1339 минут а стартует каждые 1440.
В итоге у нас будет минута в течении которой квесты будет недоступен.
б)
Добавить в гайм_евент функцию
void GameEventMgr::ResetEvent(uint16 event_id)
{
StopEvent(event_id);
StartEvent(event_id);
}
И соответственно в void World::ResetDailyQuests() вызывать эту функцию с нужными ID
Мне кажется что так правильнее.
Или просто в void World::ResetDailyQuests() вызыв последовательность StopEvent(event_id);
StartEvent(event_id);
Тут есть огромный + мы можем очистить в game_event поле(СМ п 3.б)
и все довольно удобно.

3)
Как хранить(и где) состояние выбранного рандомного виклика дейлика?
а) Добавить еще одну таблицу в которой хранится креатуре которому принадлежит квест и квест id.
б) В game_event добавить еще одно поле которое будет просто хранить рандомный номер(тоесть номер записи в mGameEventQuests[event_id])
Выбор квеста например сейчас выглядит так
mGameEvent[event_id].RandQuest=mGameEventQuests[event_id][urand(0,mGameEventQuests[event_id].size()-1)];
В базу можно например сохранять просто результат
urand(0,mGameEventQuests[event_id].size()-1).

Если бы не надобность выбирать для http://ru.wowhead.com/npc=20735 то все делалось довольно тривиально, а так приходится извращаться немного
=============================
В общем у кого какие идеи?
alien вне форума   Ответить с цитированием