Возвращаемся к нашим баранам...
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 то все делалось довольно тривиально, а так приходится извращаться немного
=============================
В общем у кого какие идеи?