Code:
////////////////////////////////////////////////////////////
/* Mount Item Script Written by Mager1794 of MMOwned //
* //
* This script can be easily edited to be //
* used for your server. Throughout the script //
* are comments on what each thing does so that //
* you can edit this. You can create custom //
* teleporting locations and menus. //
* //
* Originally written by Mager1794 //
*///
/////////////////////////////////////////////////
#include"StdAfx.h"
#include"Setup.h"
#define MOUNT_ITEM 99999
#ifdef WIN32
#pragmawarning(disable:4018) // signed/unsigned mismatch in comparison op
#endif
class SCRIPT_DECL MountItem : public GossipScript
{
public:
void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, constchar * Code);
void GossipEnd(Object * pObject, Player* Plr);
void Destroy(){ deletethis;}
};
void MountItem::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
{
if(Plr->CombatStatus.IsInCombat()){
Plr->BroadcastMessage("You are in combat!");
}else{
GossipMenu *Menu;
objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
Menu->AddItem(0, "Dragonhawk Mount [level 20+]", 1);
Menu->AddItem(0, "Cobra Mount [level 40+]", 2);
Menu->AddItem(0, "Diemtradon [Level 50+]", 3);
Menu->AddItem(0, "Dragon [level 65+]", 4);
Menu->AddItem(12, "Script Written by Mager1794", 0);//you can remove this you wish but i love you long time if you dont XD
if(AutoSend)
Menu->SendTo(Plr);
}
void MountItem::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, constchar * Code)
{
Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
if(pCreature==NULL)
return;
GossipMenu * Menu;
switch(IntId)
{
case 1:
if(Plr->getLevel() >= 20){
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have mounted on Dragonhawk!");
Plr->SetPlayerSpeed(RUN, 9);
Plr->SetPlayerSpeed(SWIM, 9);
Plr->SetPlayerSpeed(RUNBACK, 6);
Plr->SetPlayerSpeed(FLY, 9);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 17547);
}else {
Plr->BroadcastMessage("Not high enough level to ride this mount please level up tp level 20");
}
break;
case 2:
if(Plr->getLevel() >= 35){
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You Have Mounted on Cobra");
Plr->SetPlayerSpeed(RUN, 14);
Plr->SetPlayerSpeed(SWIM, 14);
Plr->SetPlayerSpeed(RUNBACK, 6);
Plr->SetPlayerSpeed(FLY, 14);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 14559);
}else {
Plr->BroadcastMessage("Not high enough level to ride this mount please level up tp level 35");
}
break;
case 3:
if(Plr->getLevel() >= 50){
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You Have Mounted on Diemtradon");
Plr->SetPlayerSpeed(RUN, 20);
Plr->SetPlayerSpeed(SWIM, 20);
Plr->SetPlayerSpeed(RUNBACK, 6);
Plr->SetPlayerSpeed(FLY, 20);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 13210);
}else {
Plr->BroadcastMessage("Not high enough level to ride this mount please level up tp level 50");
}
break;
case 4:
if(Plr->getLevel() >= 65){
pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You Have Mounted on Dragon");
Plr->SetPlayerSpeed(RUN, 40);
Plr->SetPlayerSpeed(SWIM, 40);
Plr->SetPlayerSpeed(RUNBACK, 6);
Plr->SetPlayerSpeed(FLY, 40);
Plr->SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 2554);
}else {
Plr->BroadcastMessage("Not high enough level to ride this mount please level up tp level 65");
}
break;
}
Plr->Gossip_Complete();
}
}
void SetupMountItem(ScriptMgr * mgr)
{
GossipScript * gs = (GossipScript*) new MountItem();
mgr->register_item_gossip_script(MOUNT_ITEM, gs);
}