Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
EnRG

[C++] Beastmaster NPC

Recommended Posts

Mám problém. Mám skript pre Beastmaster NPC, ale pre Trinitycore ...

Možno, že niekto môže popísať pre mňa, aby bolo vhodné pre Oregoncore? To by bolo naozaj skvelé!

zdravím

 

 

//Modified by Marcus
//original script created by ??
#include "ScriptPCH.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->MonsterWhisper("You are not a Hunter!", player->GetGUID());
	    player->PlayerTalkClass->SendCloseGossip();
	    return;
    }

    if(player->GetPet()) {
	    m_creature->MonsterWhisper("First you must drop your Pet!", player->GetGUID());
	    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()->Add((Creature*)pet);
    // 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->MonsterWhisper("Pet added. You might want to feed it and name it somehow.", player->GetGUID());
   }


   bool OnGossipHello(Player *player, Creature * m_creature)
   {

    if(player->getClass() != CLASS_HUNTER)
    {
	    m_creature->MonsterWhisper("You are not a Hunter!", player->GetGUID());
	    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();
}

 

 

Edited by EnRG

Share this post


Link to post
Share on other sites

Nemám ani si to vyskúšať. Skript je pre Trinitycore a používam Oregon. Bolo by pekné, keby mi niekto mohol poradiť, ako môžem prepísať, alebo niekoho, kto by to pre mňa.

Share this post


Link to post
Share on other sites

- je to beastmaster na wotlk 3.3.5a trinity core ...

 

na oregon to hadze :

6>  npc_beastmaster.cpp
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(22): error C2504: 'CreatureScript' : base class undefined
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(24): error C2614: 'npc_beastmaster' : illegal member initialization: 'CreatureScript' is not a base or member
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(30): error C2039: 'SendCloseGossip' : is not a member of 'PlayerMenu'
6>		  d:\-=project=-\oregon - new server\src\game\GossipDef.h(233) : see declaration of 'PlayerMenu'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(36): error C2039: 'SendCloseGossip' : is not a member of 'PlayerMenu'
6>		  d:\-=project=-\oregon - new server\src\game\GossipDef.h(233) : see declaration of 'PlayerMenu'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(64): error C2819: type 'Log' does not have an overloaded member 'operator ->'
6>		  d:\-=project=-\oregon - new server\src\shared\Log.h(85) : see declaration of 'Log'
6>		  did you intend to use '.' instead?
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(64): error C2232: '->Log::outError' : left operand has 'class' type, use '.'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(72): error C2039: 'InitTalentForLevel' : is not a member of 'Pet'
6>		  d:\-=project=-\oregon - new server\src\game\Pet.h(131) : see declaration of 'Pet'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(76): error C2039: 'SendCloseGossip' : is not a member of 'PlayerMenu'
6>		  d:\-=project=-\oregon - new server\src\game\GossipDef.h(233) : see declaration of 'PlayerMenu'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(90): error C2039: 'CanTameExoticPets' : is not a member of 'Player'
6>		  d:\-=project=-\oregon - new server\src\game\Player.h(857) : see declaration of 'Player'
6>..\..\..\-=Project=-\OREGON - new SERVER\src\scripts\Custom\npc_beastmaster.cpp(109): error C2039: 'CanTameExoticPets' : is not a member of 'Player'
6>		  d:\-=project=-\oregon - new server\src\game\Player.h(857) : see declaration of 'Player'

Share this post


Link to post
Share on other sites

No tak errory staci opravit :) a je velka sance ze to pujde nevim co ma oregon core misto CreatureScriptu ale tim bych zacal jako prvni :)

Share this post


Link to post
Share on other sites

Tak co ? Oregon core vychazi z TC takze bude mit podobny princip jadra, akorat ma treba rozdilny nazvy pro nektere tridy a funkce, takze je staci prepsat popripade upravit pokud berou jine parametry atd. Jak jinak chces ten kod prepsat ? Psat ho od 0 je zbytecnost.

Share this post


Link to post
Share on other sites

Mne to pisať nemusiš :D mne je to jasne :D je to halke prepisat na OC, otazne je len či to aj bude fungovať :D ... on tu chce cely kod a nie ďalšie prispevky ...

 

- keby ponukol niečo naoplatku :D

Edited by Yaro

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×