Почему этот простой сценарий сплетни не работает? - PullRequest
3 голосов
/ 16 июня 2019

Когда я пытаюсь создать NPC для сплетен с ИИ, sGossipSelect приходит с неверным идентификатором действия.

Если я добавлю предмет сплетни:

AddGossipItemFor(player, GOSSIP_ICON_CHAT, "testone", GOSSIP_SENDER_MAIN, 1);

, и когда sGossipSelect срабатывает, он приходит с неправильным uint32 значением действия, поэтому он не будет работать.

Вот мой полный код:

class gossip_test : public CreatureScript
{
public:
    gossip_test() : CreatureScript("gossip_test") { }

    struct gossip_testAI : public ScriptedAI
    {
        gossip_testAI(Creature* creature) : ScriptedAI(creature) {}

        void sGossipHello(Player* player)
        {
            AddGossipItemFor(player, GOSSIP_ICON_CHAT, "testone", GOSSIP_SENDER_MAIN, 1);
            AddGossipItemFor(player, GOSSIP_ICON_CHAT, "testwo", GOSSIP_SENDER_MAIN, 2);
            SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, me);
        }
        void sGossipSelect(Player* player, uint32 sender, uint32 action)
        {

            // UINT32 ACTION ALAWAYS HAVE WRONG VALUE
            if (action == 1)
            {
                me->MonsterYell("testone, LANG_UNIVERSAL, me);
            }

            if (action == 2)
            {
                me->MonsterYell("testwo, LANG_UNIVERSAL, me);
            }

            ClearGossipMenuFor(player);
            CloseGossipMenuFor(player);
        }

    };

    CreatureAI* GetAI(Creature* creature) const
    {
        return new gossip_testAI(creature);
    }
};
...