• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

TrinityCore 3.3.5 CustomScript

Lstm

Respected Member
Hello, I'm working on a new revision of Trinitycore.
However I am having some problems in time to add custom scripts, any custom script that I am adding generates an error;

Code:
1>------ Build started: Project: ZERO_CHECK, Configuration: Release x64 ------
2>------ Build started: Project: revision_data.h, Configuration: Release x64 ------
3>------ Build started: Project: scripts, Configuration: Release x64 ------
3>  custom_script_loader.cpp
3>  scripts.vcxproj -> D:\WoW\MtgBuild\src\server\scripts\Release\scripts.lib
4>------ Build started: Project: worldserver, Configuration: Release x64 ------
4>scripts.lib(custom_script_loader.obj) : error LNK2019: unresolved external symbol "void __cdecl AddSC_Npc_Beastmaster(void)" (?AddSC_Npc_Beastmaster@@YAXXZ) referenced in function "void __cdecl AddCustomScripts(void)" (?AddCustomScripts@@YAXXZ)
4>D:\WoW\MtgBuild\bin\Release\worldserver.exe : fatal error LNK1120: 1 unresolved externals
5>------ Build started: Project: ALL_BUILD, Configuration: Release x64 ------
5>  Build all projects
6>------ Skipped Build: Project: INSTALL, Configuration: Release x64 ------
6>Project not selected to build for this solution configuration 
========== Build: 4 succeeded, 1 failed, 13 up-to-date, 1 skipped ==========

Script Used
Code:
//Fixed by ******* Community
//Modified by Marcus
//Updated by Quadral
//original script created by ??
#include "ScriptMgr.h"
#include "Cell.h"
#include "CellImpl.h"
#include "GameEventMgr.h"
#include "GridNotifiers.h"
#include "GridNotifiersImpl.h"
#include "Unit.h"
#include "GameObject.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "InstanceScript.h"
#include "CombatAI.h"
#include "PassiveAI.h"
#include "Chat.h"
#include "DBCStructure.h"
#include "DBCStores.h"
#include "ObjectMgr.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "Pet.h"
 
#define GOSSIP_ITEM_STABLE "Stable"
#define GOSSIP_ITEM_NEWPET "New Pet"
#define GOSSIP_ITEM_BOAR "Boar"
#define GOSSIP_ITEM_SERPENT "Serpent"
#define GOSSIP_ITEM_SCRAB "Scrab"
#define GOSSIP_ITEM_LION "Lion"
#define GOSSIP_ITEM_WOLF "Wolf"
#define GOSSIP_ITEM_RAVAGER "Ravenger"
 
#define GOSSIP_ITEM_UNTRAINEPET "Restart Pet"
 
class Npc_Beastmaster : public CreatureScript
{
public:
    Npc_Beastmaster() : CreatureScript("Npc_Beastmaster") { }
 
    void CreatePet(Player *player, Creature * m_creature, uint32 entry) {
 
        if (player->getClass() != CLASS_HUNTER) {
            m_creature->Whisper("You are not a Hunter!", LANG_UNIVERSAL, player, false);
            player->PlayerTalkClass->SendCloseGossip();
            return;
        }
 
        if (player->GetPet()) {
            m_creature->Whisper("First you must drop your pet!", LANG_UNIVERSAL, player, false);;
            player->PlayerTalkClass->SendCloseGossip();
            return;
        }
 
        Creature *creatureTarget = m_creature->SummonCreature(entry, player->GetPositionX(), player->GetPositionY() + 2, player->GetPositionZ(), player->GetOrientation(), TEMPSUMMON_CORPSE_TIMED_DESPAWN, 500);
        if (!creatureTarget) return;
 
        Pet* pet = player->CreateTamedPetFrom(creatureTarget, 0);
        if (!pet)
            return;
 
        // kill original creature
        creatureTarget->setDeathState(JUST_DIED);
        creatureTarget->RemoveCorpse();
        creatureTarget->SetHealth(0);                       // just for nice GM-mode view
 
        pet->SetPower(POWER_HAPPINESS, 1048000);
 
        //pet->SetUInt32Value(UNIT_FIELD_PETEXPERIENCE,0);
        //pet->SetUInt32Value(UNIT_FIELD_PETNEXTLEVELEXP, uint32((Trinity::XP::xp_to_level(70))/4));
 
        // prepare visual effect for levelup
        pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel() - 1);
        pet->GetMap()->AddToMap(pet->ToCreature());
 
        // visual effect for levelup
        pet->SetUInt32Value(UNIT_FIELD_LEVEL, player->getLevel());
 
 
        if (!pet->InitStatsForLevel(player->getLevel()))
            // sLog->outError("Pet Create fail: no init stats for entry %u", entry);
 
            pet->UpdateAllStats();
 
        // caster have pet now
        player->SetMinion(pet, true);
 
        pet->SavePetToDB(PET_SAVE_AS_CURRENT);
        pet->InitTalentForLevel();
        player->PetSpellInitialize();
 
        //end
        player->PlayerTalkClass->SendCloseGossip();
        m_creature->Whisper("Pet added!", LANG_UNIVERSAL, player, false);;
    }
 
 
    bool OnGossipHello(Player *player, Creature * m_creature)
    {
 
        if (player->getClass() != CLASS_HUNTER)
        {
            m_creature->Whisper("You are not a Hunter!", LANG_UNIVERSAL, player, false);
            return true;
        }
        player->ADD_GOSSIP_ITEM(4, "Get a New Pet.", GOSSIP_SENDER_MAIN, 30);
        if (player->CanTameExoticPets())
        {
            player->ADD_GOSSIP_ITEM(4, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
        }
        player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
        player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
        player->ADD_GOSSIP_ITEM(5, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);
        player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
        return true;
    }
 
    bool OnGossipSelect(Player *player, Creature * m_creature, uint32 sender, uint32 action)
    {
        player->PlayerTalkClass->ClearMenus();
        switch (action)
        {
 
        case 100:
            player->ADD_GOSSIP_ITEM(4, "Get a New Pet.", GOSSIP_SENDER_MAIN, 30);
            if (player->CanTameExoticPets())
            {
                player->ADD_GOSSIP_ITEM(4, "Get a New Exotic Pet.", GOSSIP_SENDER_MAIN, 50);
            }
            player->ADD_GOSSIP_ITEM(2, "Take me to the Stable.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_STABLEPET);
            // player->ADD_GOSSIP_ITEM(6, "Sell me some Food for my Pet.", GOSSIP_SENDER_MAIN, GOSSIP_OPTION_VENDOR);
            player->ADD_GOSSIP_ITEM(5, "Close Beastmaster Window.", GOSSIP_SENDER_MAIN, 150);
            player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
            break;
 
        case 150:
            player->CLOSE_GOSSIP_MENU();
            break;
        case 30:
            player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100);
            player->ADD_GOSSIP_ITEM(4, "Next Page. ->", GOSSIP_SENDER_MAIN, 31);
            player->ADD_GOSSIP_ITEM(6, "Bat.", GOSSIP_SENDER_MAIN, 18);
            player->ADD_GOSSIP_ITEM(6, "Bear.", GOSSIP_SENDER_MAIN, 1);
            player->ADD_GOSSIP_ITEM(6, "Boar.", GOSSIP_SENDER_MAIN, 2);
            player->ADD_GOSSIP_ITEM(6, "Cat.", GOSSIP_SENDER_MAIN, 4);
            player->ADD_GOSSIP_ITEM(6, "Carrion Bird.", GOSSIP_SENDER_MAIN, 5);
            player->ADD_GOSSIP_ITEM(6, "Crab.", GOSSIP_SENDER_MAIN, 6);
            player->ADD_GOSSIP_ITEM(6, "Crocolisk.", GOSSIP_SENDER_MAIN, 7);
            player->ADD_GOSSIP_ITEM(6, "Dragonhawk.", GOSSIP_SENDER_MAIN, 17);
            player->ADD_GOSSIP_ITEM(6, "Gorilla.", GOSSIP_SENDER_MAIN, 8);
            player->ADD_GOSSIP_ITEM(6, "Hound.", GOSSIP_SENDER_MAIN, 9);
            player->ADD_GOSSIP_ITEM(6, "Hyena.", GOSSIP_SENDER_MAIN, 10);
            player->ADD_GOSSIP_ITEM(6, "Moth.", GOSSIP_SENDER_MAIN, 11);
            player->ADD_GOSSIP_ITEM(6, "Owl.", GOSSIP_SENDER_MAIN, 12);
            player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
            break;
 
        case 31:
            player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 30);
            player->ADD_GOSSIP_ITEM(4, "<- Previous Page.", GOSSIP_SENDER_MAIN, 30);
            player->ADD_GOSSIP_ITEM(6, "Raptor.", GOSSIP_SENDER_MAIN, 20);
            player->ADD_GOSSIP_ITEM(6, "Ravager.", GOSSIP_SENDER_MAIN, 19);
            player->ADD_GOSSIP_ITEM(6, "Strider.", GOSSIP_SENDER_MAIN, 13);
            player->ADD_GOSSIP_ITEM(6, "Scorpid.", GOSSIP_SENDER_MAIN, 414);
            player->ADD_GOSSIP_ITEM(6, "Spider.", GOSSIP_SENDER_MAIN, 16);
            player->ADD_GOSSIP_ITEM(6, "Serpent.", GOSSIP_SENDER_MAIN, 21);
            player->ADD_GOSSIP_ITEM(6, "Turtle.", GOSSIP_SENDER_MAIN, 15);
            player->ADD_GOSSIP_ITEM(6, "Wasp.", GOSSIP_SENDER_MAIN, 93);
            player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
            break;
 
        case 50:
            player->ADD_GOSSIP_ITEM(2, "<- Back to Main Menu.", GOSSIP_SENDER_MAIN, 100);
            player->ADD_GOSSIP_ITEM(2, "<- Get a New Normal Pet.", GOSSIP_SENDER_MAIN, 100);
            player->ADD_GOSSIP_ITEM(6, "Chimaera.", GOSSIP_SENDER_MAIN, 51);
            player->ADD_GOSSIP_ITEM(6, "Core Hound.", GOSSIP_SENDER_MAIN, 52);
            player->ADD_GOSSIP_ITEM(6, "Devilsaur.", GOSSIP_SENDER_MAIN, 53);
            player->ADD_GOSSIP_ITEM(6, "Rhino.", GOSSIP_SENDER_MAIN, 54);
            player->ADD_GOSSIP_ITEM(6, "Silithid.", GOSSIP_SENDER_MAIN, 55);
            player->ADD_GOSSIP_ITEM(6, "Worm.", GOSSIP_SENDER_MAIN, 56);
            player->ADD_GOSSIP_ITEM(6, "Loque'nahak.", GOSSIP_SENDER_MAIN, 57);
            player->ADD_GOSSIP_ITEM(6, "Skoll.", GOSSIP_SENDER_MAIN, 58);
            player->ADD_GOSSIP_ITEM(6, "Gondria.", GOSSIP_SENDER_MAIN, 59);
            player->SEND_GOSSIP_MENU(1, m_creature->GetGUID());
            break;
 
        case GOSSIP_OPTION_STABLEPET:
            player->GetSession()->SendStablePet(m_creature->GetGUID());
            break;
        case GOSSIP_OPTION_VENDOR:
            player->GetSession()->SendListInventory(m_creature->GetGUID());
            break;
        case 51: //chimera
            CreatePet(player, m_creature, 21879);
            break;
        case 52: //core hound
            CreatePet(player, m_creature, 21108);
            break;
        case 53: //Devilsaur
            CreatePet(player, m_creature, 20931);
            break;
        case 54: //rhino
            CreatePet(player, m_creature, 30445);
            break;
        case 55: //silithid
            CreatePet(player, m_creature, 5460);
            break;
        case 56: //Worm
            CreatePet(player, m_creature, 30148);
            break;
        case 57: //Loque'nahak
            CreatePet(player, m_creature, 32517);
            break;
        case 58: //Skoll
            CreatePet(player, m_creature, 35189);
            break;
        case 59: //Gondria
            CreatePet(player, m_creature, 33776);
            break;
        case 16: //Spider
            CreatePet(player, m_creature, 2349);
            break;
        case 17: //Dragonhawk
            CreatePet(player, m_creature, 27946);
            break;
        case 18: //Bat
            CreatePet(player, m_creature, 28233);
            break;
        case 19: //Ravager
            CreatePet(player, m_creature, 17199);
            break;
        case 20: //Raptor
            CreatePet(player, m_creature, 14821);
            break;
        case 21: //Serpent
            CreatePet(player, m_creature, 28358);
            break;
        case 1: //bear
            CreatePet(player, m_creature, 29319);
            break;
        case 2: //Boar
            CreatePet(player, m_creature, 29996);
            break;
        case 93: //Bug
            CreatePet(player, m_creature, 28085);
            break;
        case 4: //cat
            CreatePet(player, m_creature, 28097);
            break;
        case 5: //carrion
            CreatePet(player, m_creature, 26838);
            break;
        case 6: //crab
            CreatePet(player, m_creature, 24478);
            break;
        case 7: //crocolisk
            CreatePet(player, m_creature, 1417);
            break;
        case 8: //gorila
            CreatePet(player, m_creature, 28213);
            break;
        case 9: //hound
            CreatePet(player, m_creature, 29452);
            break;
        case 10: //hynea
            CreatePet(player, m_creature, 13036);
            break;
        case 11: //Moth
            CreatePet(player, m_creature, 27421);
            break;
        case 12: //owl
            CreatePet(player, m_creature, 23136);
            break;
        case 13: //strider
            CreatePet(player, m_creature, 22807);
            break;
        case 414: //scorpid
            CreatePet(player, m_creature, 9698);
            break;
        case 15: //turtle
            CreatePet(player, m_creature, 25482);
            break;
        }
        return true;
    }
};
 
void AddSC_Npc_Beastmaster()
{
    new Npc_Beastmaster();
}

custom_script_loader.cpp

http://i.imgur.com/DNoojgp.png
 

Tommy

Founder
When you added the script to your project did you reconfigure & regenerate CMake? Where did you get that script anyway? Majority of those includes are pointless. :/
 
Top