Ahoj ľudia, tak skúšal som vytvoriť môj prvý script a dopadlo to tak, že NPC keď s ním prehovorím mi žiadne gossip menu neponúkne.
NPC v DB má priradený script "panda_porter"
do ScriptLoaderu.cpp som zadeklaroval aj zadefinoval funkciu
v CMakeLists.txt mám pridané Custom/panda_porter.cpp -----> kompilujem na Linuxe
prikladám panda_porter.cpp
#include "ScriptPCH.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
class panda_porter : public CreatureScript
{
public:
panda_porter() : CreatureScript("panda_porter"){}
bool OnGossipHello(Player * player, Creature * npc)
{
player->ADD_GOSSIP_ITEM(2, "Alchemy", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
player->ADD_GOSSIP_ITEM(2, "Blacksmithing", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
player->ADD_GOSSIP_ITEM(2, "Cooking", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
player->ADD_GOSSIP_ITEM(2, "Enchanting", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
player->ADD_GOSSIP_ITEM(2, "Engineering", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
player->ADD_GOSSIP_ITEM(2, "Jewelcrafting", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
player->ADD_GOSSIP_ITEM(2, "Leatherworking", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7);
player->ADD_GOSSIP_ITEM(2, "Tailoring", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8);
player->ADD_GOSSIP_ITEM(2, "PORT NA NAMESTIE", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+9);
player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
return true;
}
bool OnGossipSelect(Player * player, Creature * npc, uint32 sender, uint32 action)
{
player->PlayerTalkClass->ClearMenus();
switch(action)
{
case GOSSIP_ACTION_INFO_DEF+1: player->CLOSE_GOSSIP_MENU(); // ALCHEMY
player->TeleportTo(0,-436.4202f,1539.3240f,19.6134f,3.1832f);
break;
case GOSSIP_ACTION_INFO_DEF+2: player->CLOSE_GOSSIP_MENU(); // BLACKSMITHING
player->TeleportTo(0,-345.0581f,1501.8697f,1.8095f,6.1985f);
break;
case GOSSIP_ACTION_INFO_DEF+3: player->CLOSE_GOSSIP_MENU(); // COOKING
player->TeleportTo(0,-390.3982f,1552.5391f,16.9680f,6.1543f);
break;
case GOSSIP_ACTION_INFO_DEF+4: player->CLOSE_GOSSIP_MENU(); // ENCHANTING
player->TeleportTo(0/,-400.3223f,1596.6992f,18.0910f,2.3312f);
break;
case GOSSIP_ACTION_INFO_DEF+5: player->CLOSE_GOSSIP_MENU(); // ENGINEERING
player->TeleportTo(0,-364.3973f,1582.0101f,18.0410f,0.0567f);
break;
case GOSSIP_ACTION_INFO_DEF+6: player->CLOSE_GOSSIP_MENU(); // JEWELCRAFTING
player->TeleportTo(0,-380.8897f,1431.2985f,26.8268f,3.4888f);
break;
case GOSSIP_ACTION_INFO_DEF+7: player->CLOSE_GOSSIP_MENU(); // LEATHERWORKING
player->TeleportTo(0,-431.2386f,1523.3721f,19.5363f,4.1563f);
break;
case GOSSIP_ACTION_INFO_DEF+8: player->CLOSE_GOSSIP_MENU(); // TAILORING
player->TeleportTo(0,-356.5742f,1533.9705f,24.9184f,4.7588f);
break;
case GOSSIP_ACTION_INFO_DEF+9: player->CLOSE_GOSSIP_MENU(); // PORT NA NAMESTIE
player->TeleportTo(0,-403.3943f,1532.8489f,17.4450f,1.5331f);
break;
}
return true;
}
};
void AddSC_PandaPorter()
{
new panda_porter();
}
a úsek zo ScriptLoader.cpp (áno mám dynamic portera od Wolfa, za čo som mu veľmi vďačný )
#ifdef SCRIPTS
/* This is where custom scripts' loading functions should be declared. */
void AddSC_npc_dynamic_teleporter(); //Wolf teleporter
void AddSC_PandaPorter();
#endif
void AddCustomScripts()
{
#ifdef SCRIPTS
/* This is where custom scripts should be added. */
AddSC_npc_dynamic_teleporter();
AddSC_PandaPorter();
#endif
}
za každú radu budem rád.
Lernias