Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "StdAfx.h"
- #include "Setup.h"
- class SCRIPT_DECL CustomItemNpc : public GossipScript
- {
- public:
- void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
- void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
- void GossipEnd(Object * pObject, Player* Plr);
- void Destroy()
- {
- delete this;
- }
- // int Choice;
- // int getProficiency(Player * Plr);
- };
- /*string getProficiency(Player * Plr)
- {
- if( Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == MAGE )
- return "1";
- if( Plr->getClass() == DRUID || Plr->getClass() == ROGUE )
- return "2";
- if( Plr->getClass() == HUNTER || Plr->getClass() == SHAMAN )
- return "3";
- if( Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN )
- return "4";
- }
- */
- void CustomItemNpc::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
- {
- GossipMenu *Menu;
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- if( Plr->getClass() == DRUID || Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == PALADIN || Plr->getClass() == SHAMAN || Plr->getClass() == MAGE)
- {
- Menu->AddItem(0, "Spelldamage custom", 1);
- // Choice = 0;
- }
- if( Plr->getClass() == DRUID || Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN || Plr->getClass() == SHAMAN || Plr->getClass() == ROGUE || Plr->getClass() == HUNTER )
- {
- // Choice = 1;
- Menu->AddItem(0, "Attack power custom", 2);
- }
- if(AutoSend)
- Menu->SendTo(Plr);
- }
- void CustomItemNpc::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
- {
- Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
- if(pCreature==NULL)
- return;
- static char displayid[255]="";
- static char itemname[255]="";
- GossipMenu *Menu;
- switch(IntId)
- {
- case 0: // Return to start
- GossipHello(pCreature, Plr, true);
- break;
- case 1:
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- /*const char *Name = Code;
- Plr->BroadcastMessage(Code);
- Menu->AddItem(0, "Stamina?", 2, 1);
- Menu->SendTo(Plr);
- Plr->Gossip_Complete();*/
- Menu->AddItem(0, "Head", 3);
- Menu->AddItem(0, "Neck", 4);
- Menu->AddItem(0, "Shoulder", 5);
- Menu->AddItem(0, "Cloak", 6);
- Menu->AddItem(0, "Chest", 7);
- Menu->AddItem(0, "Wrists", 8);
- Menu->AddItem(0, "Hands", 9);
- Menu->AddItem(0, "Belt", 10);
- Menu->AddItem(0, "Legs", 11);
- Menu->AddItem(0, "Feet", 12);
- Menu->SendTo(Plr);
- break;
- case 2:
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- Menu->AddItem(0, "Head", 13);
- Menu->AddItem(0, "Neck", 14);
- Menu->AddItem(0, "Shoulder", 15);
- Menu->AddItem(0, "Cloak", 16);
- Menu->AddItem(0, "Chest", 17);
- Menu->AddItem(0, "Wrists", 18);
- Menu->AddItem(0, "Hands", 19);
- Menu->AddItem(0, "Belt", 20);
- Menu->AddItem(0, "Legs", 21);
- Menu->AddItem(0, "Feet", 22);
- Menu->SendTo(Plr);
- break;
- case 3://head
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- //const char *Stam = Code;
- /*Plr->BroadcastMessage(Code);
- char query[255];
- string entry;
- sprintf(query, "SELECT MAX(entry)+1 FROM items");
- QueryResult * result = WorldDatabase.Query(query);
- Field * fields = result->Fetch();
- entry = fields[0].GetString();
- Plr->BroadcastMessage(entry.c_str());
- ItemPrototypeStorage.Reload();
- Plr->BroadcastMessage("Database reloaded");
- Menu->SendTo(Plr);
- */
- Menu->AddItem(0, "GIEF NAME", 30, 1);
- Menu->SendTo(Plr);
- }
- break;
- case 30:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(itemname, "%s", Code);
- Menu->AddItem(0, "Enter entry of the item you want it to look like [NOT THE DISPLAYID]", 31);
- Menu->SendTo(Plr);
- }
- case 31:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- Menu->AddItem(0, "[1]", 32);
- Menu->AddItem(0, "[2]", 33);
- Menu->AddItem(0, "[3]", 34);
- Menu->AddItem(0, "[4]", 35);
- Menu->AddItem(0, "[5]", 36);
- Menu->AddItem(0, "[6]", 37);
- Menu->AddItem(0, "[7]", 38);
- Menu->AddItem(0, "[8]", 39);
- Menu->AddItem(0, "[9]", 40);
- Menu->AddItem(0, "[0]", 41);
- Menu->SendTo(Plr);
- }
- break;
- case 32:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s1", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 33:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s2", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 34:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s3", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 35:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s4", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 36:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s5", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 37:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s6", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 38:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s7", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 39:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s8", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 40:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s9", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 41:
- {
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- sprintf(displayid, "%s0", displayid);
- Menu->AddItem(0, "Enter more numbers", 31);
- Menu->AddItem(0, "All numbers have been entered, create item", 300);
- Menu->SendTo(Plr);
- }
- break;
- case 300://Spelldmg head based on rolfcopter
- {
- char query[255];
- char iquery[2550];
- char equery[255];
- char displayrealid[255];
- char pquery[255];
- string iProf;
- char rtard[255];
- sprintf(pquery, "SELECT displayid FROM items WHERE entry=%s", displayid);
- QueryResult * result = WorldDatabase.Query(pquery);
- if(!result)
- {
- Plr->BroadcastMessage("Something went wrong! Fucking rtard, try entering an entry that exists?");
- sprintf(rtard, "%s was to retarded to enter a valid entry-id, a kick follows to learn him a lesson.", Plr->GetName());
- sWorld.SendWorldText(rtard);
- Plr->Kick(5000);
- return;
- }
- //Is there anything to display?
- if(result->GetRowCount() == 0)
- {
- Plr->BroadcastMessage("There is no data to display!");
- WorldDatabase.FreeQueryResult(result);
- return;
- }
- Field * fields = result->Fetch();
- sprintf(displayrealid, "%s", fields[0].GetString() );
- /*sprintf(insertquery, "%s '%s')", insertquery, fields[0].GetString() );*/
- if( Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == MAGE )
- iProf= "1";
- if( Plr->getClass() == DRUID || Plr->getClass() == ROGUE )
- iProf= "2";
- if( Plr->getClass() == HUNTER || Plr->getClass() == SHAMAN )
- iProf= "3";
- if( Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN )
- iProf= "4";
- sprintf(query, "SELECT * FROM items WHERE entry=99545"); //roflcopter
- sprintf(equery, "SELECT MAX(entry)+1 FROM items WHERE entry<80000");
- /*sprintf(dquery, "SELECT * FROM custom_item WHERE id=(SELECT MAX(id) FROM custom_item)");
- QueryResult * dresult = WorldDatabase.Query(dquery);
- Field * dfields = dresult->Fetch();
- */
- result = WorldDatabase.Query(equery);
- fields = result->Fetch();
- const char * entry = fields[0].GetString();
- result = WorldDatabase.Query(query);
- fields = result->Fetch();
- sprintf(iquery, "INSERT INTO items VALUES(%s", entry);
- for( int i = 1; i < 131; i++ )
- {
- if( i == 2 )
- sprintf(iquery, "%s, '%s'",iquery, iProf.c_str());
- else
- if( i == 4 || i == 5 || i == 6 || i == 7 )
- sprintf(iquery, "%s, '%s'",iquery, itemname );
- else
- if( i == 8 )
- sprintf(iquery, "%s, '%s'",iquery, displayrealid );
- else
- sprintf(iquery, "%s, '%s'",iquery, fields[i].GetString());
- }
- sprintf(iquery, "%s )", iquery);
- result = WorldDatabase.Query(iquery);
- Plr->BroadcastMessage("Item added to database");
- ItemPrototypeStorage.Reload();
- Plr->BroadcastMessage("Database reloaded");
- char msg[255];
- sprintf(msg, "%s made a new custom item called %s!!!", Plr->GetName(), itemname );
- sWorld.SendWorldText(msg);
- char broadcast[255];
- sprintf(broadcast, "Use .additem %s to add the item to your inventory.", entry);
- Plr->BroadcastMessage(broadcast);
- sprintf(displayid, "");
- sprintf(itemname, "");
- Plr->Gossip_Complete();
- }
- break;
- case 99:
- objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
- Menu->SendTo(Plr);
- break;
- }
- }
- void CustomItemNpc::GossipEnd(Object * pObject, Player* Plr)
- {
- GossipScript::GossipEnd(pObject, Plr);}
- void SetupCustomItemNpc(ScriptMgr * mgr)
- {
- GossipScript * gs = (GossipScript*) new CustomItemNpc();
- mgr->register_gossip_script(50154, gs);
- }
Add Comment
Please, Sign In to add comment