Не работают скрипты С++

Borisov99

New member
Новичок
Регистрация
11.07.2018
Сообщения
5
Реакции
0
Баллы
0
Возраст
25
Местоположение
Красноярск
Привет ребят;)
Решил сделать парочку небольших скриптов, но столкнулся с проблемами.
1)Скрипты компилится, но не работает в игре.
C++:
#include "ScriptMgr.h"
#include "Chat.h"
#include "InstanceScript.h"

#define instance_customScriptName "instance_custom"

// Скрипты на картах и боссов

enum
{
    QUEST_START = 25502
};

class instance_custom : public InstanceMapScript
{
    public:
        instance_custom() : InstanceMapScript(instance_customScriptName, 543) { }

        struct instance_custom_InstanceMapScript : public InstanceScript
        {
            instance_custom_InstanceMapScript(Map* map) : InstanceScript(map) { }

            void OnPlayerEnter(Map* map, Player* player)
            {
                ChatHandler handler(player->GetSession());
                if (player->GetQuestStatus(QUEST_START) == QUEST_STATUS_COMPLETE)
                {
                    handler.SendSysMessage("|cff9932CCДобро пожаловать в стартовое подземелье|r");
                    return;
                }
                else
                {
                    player->TeleportTo(560, 1348.836670f, 2146.367676f, 100.552673f, 3.478260f);
                    handler.SendSysMessage("|cff9932CCВам нужно завершить тренировку|r");
                    return;
                }
            }

        };

        InstanceScript* GetInstanceScript(InstanceMap* map) const override
        {
            return new instance_custom_InstanceMapScript(map);
        }

};

void AddSC_instance_custom()
{
    new instance_custom();
}
2) Скрипт на босса, собственно в этот же инст)
C++:
#include "ScriptMgr.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"


enum Spells
{
    SPELL_PROKOL      =  56090,
    SPELL_NITE        =  57369,
};

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

        struct start_boss : public ScriptedAI
        {
            start_bossAI(Creature* creature) : ScriptedAI(creature)
            {
                Initialize();
            }

            void Initialize()
            {
                SPELL_PROKOL_Timer = 25000;
                SPELL_NITE_Timer = 17000;
            }
      
            uint32 SPELL_PROKOL_Timer
            uint32 SPELL_NITE_Timer

            void Reset() override
            {
                Initialize();
            }

      
            void EnterCombat(Unit* creature) override
            {
                creature->Say("Ты выбрал не того противника, салага!", LANG_UNIVERSAL, 0);
            }

            void JustDied(Unit* creature) override
            {
                creature->Say("Я ещё вернусь в этот мир.", LANG_UNIVERSAL, 0);
            }

            void KilledUnit(Unit* creature) override
            {
                creature->Say("Встречай смерть, щенок!", LANG_UNIVERSAL, 0);
            }

            void UpdateAI(uint32 diff) override;
            {
                if(SPELL_PROKOL_Timer <= diff)
                {
                    if (Unit* target = SELECT_TARGET_RANDOM)
                    {
                        DoCast(Unit* target, SPELL_PROKOL);
                        SPELL_PROKOL_Timer = 25000;
                    }
                    else
                    {
                        SPELL_PROKOL_Timer _= diff;
                    }
                }

                if(SPELL_NITE_Timer <= diff)
                {
                    if (Unit* target = SELECT_TARGET_TOPAGGRO)
                    {
                        DoCast(Unit* target, SPELL_NITE);
                        SPELL_NITE_Timer = 17000;
                    }
                    else
                    {
                        SPELL_NITE_Timer _= diff;
                    }
                }
                DoMeleeAttackIfReady();
            }
        };


        CreatureAI* GetAI(Creature* creature) const override
        {
            return new start_bossAI(creature);
        }


};

void AddSC_start_boss()
{
    new start_boss();
}
 

WinWoolF

New member
Команда форума
Администратор
Регистрация
13.10.2013
Сообщения
5 354
Реакции
450
Баллы
0
Я к сожалению не большой знаток C++, но если ты подробнее опишешь что ты хотел добиться в работе скрипта, то возможно я смогу что то подсказать.
 

Sergei1221

New member
Новичок
Регистрация
21.08.2019
Сообщения
11
Реакции
8
Баллы
0
Возраст
43
Местоположение
Москва
Год назад, но всё же...

Вместо -
Код:
instance_custom() : InstanceMapScript(instance_customScriptName, 543) { }

Судя по TrinityCore: src/server/game/Scripting/ScriptMgr.h Source File

должно быть что-то вроде -

Код:
instance_custom()  : ScriptObject(instance_customScriptName, 543)
{
   ScriptRegistry<instance_custom>::AddScript(this);
}

А то созданный экземпляр класса так и останется висеть в памяти без дела.
 
Последнее редактирование модератором:
Верх Низ