Заметил такую проблему. Когда подходишь к тренеру обучаться, то он без
всяких диалогов открывает сразу список спелов. Если же тренер
даёт/забирает квест, то вместо названи квеста в меню стоит пункт Do
quest. Это не соответсвует офу. Поэтому я решил попробовать исправить
положение. И вот что получилось. Quester_ui.cpp
uint32 result = DIALOG_STATUS_NONE; result = _Creature->QUEST_DIALOG_STATUS(player, DIALOG_STATUS_NONE); if(result!=DIALOG_STATUS_NONE)isqg = true; if (_Creature->isQuestGiver()) { player->PrepareQuestMenu( guid ); player->SendPreparedQuest( guid ); } if(_Creature->isTrainer()) { if(_Creature->isCanTrainingOf(player,false)) { istr = true; switch(_Creature->GetCreatureInfo()->trainer_type) { case TRAINER_TYPE_CLASS: { switch(_Creature->GetCreatureInfo()->classNum) { case DRUID: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a druid", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case HUNTER: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a hunter", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case MAGE: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a mage", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case PALADIN:{player->ADD_GOSSIP_ITEM( 3, "I seek training as a paladin", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case PRIEST: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a priest", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case ROGUE: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a rogue", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case SHAMAN: {player->ADD_GOSSIP_ITEM( 3, "I seek training as a shaman", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case WARLOCK:{player->ADD_GOSSIP_ITEM( 3, "I seek training as a warlock", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} case WARRIOR:{player->ADD_GOSSIP_ITEM( 3, "I seek training as a warrior", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break;} } break; } case TRAINER_TYPE_PETS: { player->ADD_GOSSIP_ITEM( 3, "Train me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break; } case TRAINER_TYPE_MOUNTS: { player->ADD_GOSSIP_ITEM( 3, "Train me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break; } case TRAINER_TYPE_TRADESKILLS: { player->ADD_GOSSIP_ITEM( 3, "Train me.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_TRAIN); break; } } } else { switch(_Creature->GetCreatureInfo()->classNum) { case DRUID: {textid=4913; break;} case HUNTER: {textid=10090; break;} case MAGE: {textid=328; break;} case PALADIN:{textid=1635; break;} case PRIEST: {textid=4436; break;} case ROGUE: {textid=4797; break;} case SHAMAN: {textid=5003; break;} case WARLOCK:{textid=5836; break;} case WARRIOR:{textid=4985; break;} } } } if(textid!=DEFAULT_GOSSIP_MESSAGE || (isqg&&istr) ) { player->SEND_GOSSIP_MENU(textid,_Creature->GetGUID()); return true; } return false; }
} Я
не совсем понял как задавать госсип-текст (на вики ничего нет), но с
использованием данных скриптов нужно просто заполнить поля npc_guid и
textid таблицы npc_gossip. textid берётся из таблицы npc_text.