enum eMenus
{
MY_CITIES_MENU = 1,
NVM_EXIT = 2,
PLAYER_MENU = 3,
HEAL_MENU = 4,
BUFF_MENU = 5,
CUSTOM_AREAS_MENU = 6,
REZ_MENU = 7,
CUSTOM_LOCATION_PORT = 8,
A_CITIES_MENU = 9,
H_CITIES_MENU = 10,
DARNASSUS_PORT = 11,
THE_EXODAR_PORT = 12,
STORMWIND_PORT = 13,
IRONFORGE_PORT = 14,
ORGRIMMAR_PORT = 15,
THUNDER_BLUFF_PORT = 16,
UNDERCITY_PORT = 17,
SILVERMOON_CITY_PORT = 18,
MY_LOCATIONS_MENU = 19,
SERVICES_MENU = 20,
DALARAN_PORT = 21,
SHATTRATH_CITY_PORT = 22
};
enum eIcons
{
CHAT_ICON = 0,
VENDOR_ICON = 1,
FLIGHT_ICON = 2,
TRAINER_ICON = 3,
GEAR_ICON = 4,
GEAR_ICON_2 = 5,
BANK_ICON = 6,
CHAT_DOTS_ICON = 7,
TABARD_ICON = 8,
SWORDS_ICON = 9,
GOLD_DOT_ICON = 10
};
/* Gossip Colors */
#define TEXT_CUSTOM_ORANGE "|cff873600"
#define TEXT_CUSTOM_RED "|cffA40000"
#define TEXT_CUSTOM_BLUE "|cff00479E"
#define TEXT_CUSTOM_GREEN "|cff065600"
#define TEXT_CUSTOM_PURPLE "|cff5A005B"
#define TEXT_CUSTOM_GREY "|cff515151"
#define TEXT_CUSTOM_CYAN "|cff005853"
#define TEXT_CUSTOM_BROWN "|cff584200"
/* Gossip Strings */
#define IN_COMBAT " Leave combat first!"
#define SERVICES_GOSSIP " -> Services"
#define MY_LOCATIONS_GOSSIP " -> Cities"
/* Add your own locations */
#define CUSTOM_AREAS_GOSSIP " -> PvP Zone" //Add your own custom title
#define CUSTOM_LOCATION_GOSSIP " -> Gurubashi Arena" //Add your own custom location
#define PLAYER_SERVICES " -> Player Services"
#define NVM_GOSSIP " Nevermind..."
#define GO_BACK_GOSSIP " ...Go Back"
#define BUFF_ME_GOSSIP " -> Buff Me!"
#define HEAL_ME_GOSSIP " -> Heal Me!"
#define REMOVE_REZ_GOSSIP " -> Remove Ressurection Debuff"
#define CITIES_GOSSIP " -> My Cities"
/* Alliance Cities */
#define DARNASSUS_GOSSIP " -> Darnassus"
#define IRONFORGE_GOSSIP " -> Mall"
#define STORMWIND_GOSSIP " -> Stormwind City"
#define THE_EXODAR_GOSSIP " -> Transmogrification Place"
/* Horde Cities */
#define ORGRIMMAR_GOSSIP " -> Transmogrification Place"
#define SILVERMOON_CITY_GOSSIP " -> Silvermoon City"
#define THUNDER_BLUFF_GOSSIP " -> Thunder Bluff"
#define UNDERCITY_GOSSIP " -> Mall"
#define DALARAN_GOSSIP " -> Proffesion Place"
#define SHATTRATH_CITY_GOSSIP " -> Duel Zone"
class tc_teleporter : public CreatureScript
{
public:
tc_teleporter() : CreatureScript("tc_teleporter") {}
bool OnGossipHello(Player* player, Creature* creature)
{
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE SERVICES_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
return true;
}
bool OnGossipSelect(Player* player, Creature* creature, uint32 Sender, uint32 Actions)
{
player->PlayerTalkClass->ClearMenus();
if (player->IsInCombat())
{
ChatHandler(player->GetSession()).PSendSysMessage("Combat");
return false;
}
if(Sender == GOSSIP_SENDER_MAIN)
{
switch(Actions)
{
case SERVICES_MENU:
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE MY_LOCATIONS_GOSSIP, GOSSIP_SENDER_MAIN, MY_LOCATIONS_MENU);
player->ADD_GOSSIP_ITEM(SWORDS_ICON, TEXT_CUSTOM_ORANGE PLAYER_SERVICES, GOSSIP_SENDER_MAIN, PLAYER_MENU);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
case MY_LOCATIONS_MENU:
if(player->GetTeam() == ALLIANCE)
{
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_CYAN CITIES_GOSSIP, GOSSIP_SENDER_MAIN, A_CITIES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN CUSTOM_AREAS_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_AREAS_MENU);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
}
else
{
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_CYAN CITIES_GOSSIP, GOSSIP_SENDER_MAIN, H_CITIES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN CUSTOM_AREAS_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_AREAS_MENU);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
}
break;
case CUSTOM_AREAS_MENU:
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE CUSTOM_LOCATION_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_LOCATION_PORT);
//Add more custom locations here
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
case PLAYER_MENU:
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BROWN BUFF_ME_GOSSIP, GOSSIP_SENDER_MAIN, BUFF_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN HEAL_ME_GOSSIP, GOSSIP_SENDER_MAIN, HEAL_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE REMOVE_REZ_GOSSIP, GOSSIP_SENDER_MAIN, REZ_MENU);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
case A_CITIES_MENU:
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE DALARAN_GOSSIP, GOSSIP_SENDER_MAIN, DALARAN_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE DARNASSUS_GOSSIP, GOSSIP_SENDER_MAIN, DARNASSUS_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE IRONFORGE_GOSSIP, GOSSIP_SENDER_MAIN, IRONFORGE_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE SHATTRATH_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SHATTRATH_CITY_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE STORMWIND_GOSSIP, GOSSIP_SENDER_MAIN, STORMWIND_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE THE_EXODAR_GOSSIP, GOSSIP_SENDER_MAIN, THE_EXODAR_PORT);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
case H_CITIES_MENU:
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE DALARAN_GOSSIP, GOSSIP_SENDER_MAIN, DALARAN_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE ORGRIMMAR_GOSSIP, GOSSIP_SENDER_MAIN, ORGRIMMAR_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE SHATTRATH_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SHATTRATH_CITY_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE SILVERMOON_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SILVERMOON_CITY_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE THUNDER_BLUFF_GOSSIP, GOSSIP_SENDER_MAIN, THUNDER_BLUFF_PORT);
player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE UNDERCITY_GOSSIP, GOSSIP_SENDER_MAIN, UNDERCITY_PORT);
player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
break;
case NVM_EXIT:
player->PlayerTalkClass->SendCloseGossip();
break;
case CUSTOM_LOCATION_PORT:
player->TeleportTo(0, -13261.555664f, 163.497223f, 35.992432f, 4.283933f);
player->PlayerTalkClass->SendCloseGossip();
break;
case DALARAN_PORT:
player->TeleportTo(1, -6933.288086f, -4915.037598f, 0.714902f, 4.708452f);
player->PlayerTalkClass->SendCloseGossip();
break;
case SHATTRATH_CITY_PORT:
player->TeleportTo(0, -4248.310059f, -3325.095459f, 231.959869f, 4.653796f);
player->PlayerTalkClass->SendCloseGossip();
break;
case DARNASSUS_PORT:
player->TeleportTo(1, 9949.559570f, 2284.20996f, 1342.969482f, 1.595870f);
player->PlayerTalkClass->SendCloseGossip();
break;
case IRONFORGE_PORT:
player->TeleportTo(0, -4108.489746f, -1397.591675f, 180.133575f, 6.030600f);
player->PlayerTalkClass->SendCloseGossip();
break;
case STORMWIND_PORT:
player->TeleportTo(1, -11852.586914f, -4838.486816f, 9.331769f, 0.921275f);
player->PlayerTalkClass->SendCloseGossip();
break;
case THE_EXODAR_PORT:
player->TeleportTo(530, -855.770020f, 6997.636230f, 34.994953f, 1.067743f);
player->PlayerTalkClass->SendCloseGossip();
break;
case ORGRIMMAR_PORT:
player->TeleportTo(530, -855.770020f, 6997.636230f, 34.994953f, 1.067743f);
player->PlayerTalkClass->SendCloseGossip();
break;
case SILVERMOON_CITY_PORT:
player->TeleportTo(1, 6528.465332f, -4070.930908f, 658.677490f, 1.804462f);
player->PlayerTalkClass->SendCloseGossip();
break;
case THUNDER_BLUFF_PORT:
player->TeleportTo(1, -1277.369995f, 124.804001f, 134.094009f, 5.222740f);
player->PlayerTalkClass->SendCloseGossip();
break;
case UNDERCITY_PORT:
player->TeleportTo(0, -4108.489746f, -1397.591675f, 180.133575f, 6.030600f);
player->PlayerTalkClass->SendCloseGossip();
break;
case HEAL_MENU:
{
uint32 currentHp = player->GetHealth();
uint32 maximumHp = player->GetMaxHealth();
if (currentHp == maximumHp)
ChatHandler(player->GetSession()).PSendSysMessage("Bah, you have full health. Dont waste my time!");
else
{
player->SetHealth(maximumHp);
player->SetPower(POWER_MANA, player->GetMaxPower(POWER_MANA));
ChatHandler(player->GetSession()).PSendSysMessage("You have been healed!");
}
player->PlayerTalkClass->SendCloseGossip();
break;
}
case BUFF_MENU:
{
player->CastSpell(player, 35874, true);
player->CastSpell(player, 35912, true);
player->CastSpell(player, 38734, true);
ChatHandler(player->GetSession()).PSendSysMessage("Do you feel any more buff?");
player->PlayerTalkClass->SendCloseGossip();
break;
}
case REZ_MENU:
{
if (player->HasAura(15007))
{
player->RemoveAura(15007);
ChatHandler(player->GetSession()).PSendSysMessage("You have been cured.");
}
else
ChatHandler(player->GetSession()).PSendSysMessage("You would have to be sick first...");
player->PlayerTalkClass->SendCloseGossip();
break;
}
}
}
return true;
}
};
void AddSC_npc_teleporter()
{
new tc_teleporter();
}
کد PHP:
INSERT INTO ` creature_template ` (` entry `, ` difficulty_entry_1 `, ` difficulty_entry_2 `, ` difficulty_entry_3 `, ` KillCredit1 `, ` KillCredit2 `, ` modelid1 `, ` modelid2 `, ` modelid3 `, ` modelid4 `, ` name `, ` subname `, ` IconName `, ` gossip_menu_id `, ` minlevel `, ` maxlevel `, ` exp `, ` faction `, ` npcflag `, ` speed_walk `, ` speed_run `, ` scale `, ` rank `, ` dmgschool `, ` BaseAttackTime `, ` RangeAttackTime `, ` BaseVariance `, ` RangeVariance `, ` unit_class `, ` unit_flags `, ` unit_flags2 `, ` dynamicflags `, ` family `, ` trainer_type `, ` trainer_spell `, ` trainer_class `, ` trainer_race `, ` type `, ` type_flags `, ` lootid `, ` pickpocketloot `, ` skinloot `, ` resistance1 `, ` resistance2 `, ` resistance3 `, ` resistance4 `, ` resistance5 `, ` resistance6 `, ` spell1 `, ` spell2 `, ` spell3 `, ` spell4 `, ` spell5 `, ` spell6 `, ` spell7 `, ` spell8 `, ` PetSpellDataId `, ` VehicleId `, ` mingold `, ` maxgold `, ` AIName `, ` MovementType `, ` InhabitType `, ` HoverHeight `, ` HealthModifier `, ` ManaModifier `, ` ArmorModifier `, ` DamageModifier `, ` ExperienceModifier `, ` RacialLeader `, ` movementId `, ` RegenHealth `, ` mechanic_immune_mask `, ` flags_extra `, ` ScriptName `, ` VerifiedBuild `) VALUES ( 500000 , 0 , 0 , 0 , 0 , 0 , 19646 , 0 , 0 , 0 , 'tc_teleporter' , '' , 'Interact' , 0 , 100 , 100 , 2 , 35 , 1 , 1 , 1.14286 , 1 , 0 , 0 , 2000 , 0 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 7 , 138936390 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , '' , 0 , 3 , 1 , 100000 , 1 , 1 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 'tc_teleporter' , 12340 );