Guest User

Untitled

a guest
May 16th, 2018
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.85 KB | None | 0 0
  1. #include "StdAfx.h"
  2. #include "Setup.h"
  3.  
  4.  
  5. class SCRIPT_DECL CustomItemNpc : public GossipScript
  6. {
  7. public:
  8. void GossipHello(Object * pObject, Player* Plr, bool AutoSend);
  9. void GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code);
  10. void GossipEnd(Object * pObject, Player* Plr);
  11. void Destroy()
  12. {
  13. delete this;
  14. }
  15. // int Choice;
  16. // int getProficiency(Player * Plr);
  17.  
  18.  
  19. };
  20.  
  21. /*string getProficiency(Player * Plr)
  22. {
  23. if( Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == MAGE )
  24. return "1";
  25. if( Plr->getClass() == DRUID || Plr->getClass() == ROGUE )
  26. return "2";
  27. if( Plr->getClass() == HUNTER || Plr->getClass() == SHAMAN )
  28. return "3";
  29. if( Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN )
  30. return "4";
  31. }
  32. */
  33. void CustomItemNpc::GossipHello(Object * pObject, Player* Plr, bool AutoSend)
  34. {
  35. GossipMenu *Menu;
  36.  
  37. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  38. if( Plr->getClass() == DRUID || Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == PALADIN || Plr->getClass() == SHAMAN || Plr->getClass() == MAGE)
  39. {
  40. Menu->AddItem(0, "Spelldamage custom", 1);
  41. // Choice = 0;
  42. }
  43. if( Plr->getClass() == DRUID || Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN || Plr->getClass() == SHAMAN || Plr->getClass() == ROGUE || Plr->getClass() == HUNTER )
  44. {
  45. // Choice = 1;
  46. Menu->AddItem(0, "Attack power custom", 2);
  47. }
  48.  
  49. if(AutoSend)
  50. Menu->SendTo(Plr);
  51. }
  52.  
  53. void CustomItemNpc::GossipSelectOption(Object * pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code)
  54. {
  55. Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?((Creature*)pObject):NULL;
  56. if(pCreature==NULL)
  57. return;
  58.  
  59. static char displayid[255]="";
  60. static char itemname[255]="";
  61.  
  62. GossipMenu *Menu;
  63. switch(IntId)
  64. {
  65. case 0: // Return to start
  66. GossipHello(pCreature, Plr, true);
  67. break;
  68.  
  69. case 1:
  70. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  71. /*const char *Name = Code;
  72. Plr->BroadcastMessage(Code);
  73.  
  74. Menu->AddItem(0, "Stamina?", 2, 1);
  75.  
  76. Menu->SendTo(Plr);
  77. Plr->Gossip_Complete();*/
  78. Menu->AddItem(0, "Head", 3);
  79. Menu->AddItem(0, "Neck", 4);
  80. Menu->AddItem(0, "Shoulder", 5);
  81. Menu->AddItem(0, "Cloak", 6);
  82. Menu->AddItem(0, "Chest", 7);
  83. Menu->AddItem(0, "Wrists", 8);
  84. Menu->AddItem(0, "Hands", 9);
  85. Menu->AddItem(0, "Belt", 10);
  86. Menu->AddItem(0, "Legs", 11);
  87. Menu->AddItem(0, "Feet", 12);
  88. Menu->SendTo(Plr);
  89. break;
  90.  
  91. case 2:
  92. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  93. Menu->AddItem(0, "Head", 13);
  94. Menu->AddItem(0, "Neck", 14);
  95. Menu->AddItem(0, "Shoulder", 15);
  96. Menu->AddItem(0, "Cloak", 16);
  97. Menu->AddItem(0, "Chest", 17);
  98. Menu->AddItem(0, "Wrists", 18);
  99. Menu->AddItem(0, "Hands", 19);
  100. Menu->AddItem(0, "Belt", 20);
  101. Menu->AddItem(0, "Legs", 21);
  102. Menu->AddItem(0, "Feet", 22);
  103. Menu->SendTo(Plr);
  104. break;
  105.  
  106. case 3://head
  107. {
  108. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  109. //const char *Stam = Code;
  110. /*Plr->BroadcastMessage(Code);
  111.  
  112. char query[255];
  113. string entry;
  114.  
  115. sprintf(query, "SELECT MAX(entry)+1 FROM items");
  116. QueryResult * result = WorldDatabase.Query(query);
  117. Field * fields = result->Fetch();
  118. entry = fields[0].GetString();
  119. Plr->BroadcastMessage(entry.c_str());
  120.  
  121. ItemPrototypeStorage.Reload();
  122. Plr->BroadcastMessage("Database reloaded");
  123. Menu->SendTo(Plr);
  124. */
  125. Menu->AddItem(0, "GIEF NAME", 30, 1);
  126. Menu->SendTo(Plr);
  127.  
  128. }
  129. break;
  130.  
  131. case 30:
  132. {
  133. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  134. sprintf(itemname, "%s", Code);
  135. Menu->AddItem(0, "Enter entry of the item you want it to look like [NOT THE DISPLAYID]", 31);
  136.  
  137. Menu->SendTo(Plr);
  138. }
  139.  
  140. case 31:
  141. {
  142. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  143. Menu->AddItem(0, "[1]", 32);
  144. Menu->AddItem(0, "[2]", 33);
  145. Menu->AddItem(0, "[3]", 34);
  146. Menu->AddItem(0, "[4]", 35);
  147. Menu->AddItem(0, "[5]", 36);
  148. Menu->AddItem(0, "[6]", 37);
  149. Menu->AddItem(0, "[7]", 38);
  150. Menu->AddItem(0, "[8]", 39);
  151. Menu->AddItem(0, "[9]", 40);
  152. Menu->AddItem(0, "[0]", 41);
  153. Menu->SendTo(Plr);
  154. }
  155. break;
  156.  
  157. case 32:
  158. {
  159. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  160. sprintf(displayid, "%s1", displayid);
  161. Menu->AddItem(0, "Enter more numbers", 31);
  162. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  163. Menu->SendTo(Plr);
  164. }
  165. break;
  166. case 33:
  167. {
  168. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  169. sprintf(displayid, "%s2", displayid);
  170. Menu->AddItem(0, "Enter more numbers", 31);
  171. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  172. Menu->SendTo(Plr);
  173. }
  174. break;
  175. case 34:
  176. {
  177. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  178. sprintf(displayid, "%s3", displayid);
  179. Menu->AddItem(0, "Enter more numbers", 31);
  180. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  181. Menu->SendTo(Plr);
  182. }
  183. break;
  184. case 35:
  185. {
  186. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  187. sprintf(displayid, "%s4", displayid);
  188. Menu->AddItem(0, "Enter more numbers", 31);
  189. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  190. Menu->SendTo(Plr);
  191. }
  192. break;
  193. case 36:
  194. {
  195. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  196. sprintf(displayid, "%s5", displayid);
  197. Menu->AddItem(0, "Enter more numbers", 31);
  198. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  199. Menu->SendTo(Plr);
  200. }
  201. break;
  202. case 37:
  203. {
  204. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  205. sprintf(displayid, "%s6", displayid);
  206. Menu->AddItem(0, "Enter more numbers", 31);
  207. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  208. Menu->SendTo(Plr);
  209. }
  210. break;
  211. case 38:
  212. {
  213. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  214. sprintf(displayid, "%s7", displayid);
  215. Menu->AddItem(0, "Enter more numbers", 31);
  216. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  217. Menu->SendTo(Plr);
  218. }
  219. break;
  220. case 39:
  221. {
  222. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  223. sprintf(displayid, "%s8", displayid);
  224. Menu->AddItem(0, "Enter more numbers", 31);
  225. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  226. Menu->SendTo(Plr);
  227. }
  228. break;
  229. case 40:
  230. {
  231. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  232. sprintf(displayid, "%s9", displayid);
  233. Menu->AddItem(0, "Enter more numbers", 31);
  234. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  235. Menu->SendTo(Plr);
  236. }
  237. break;
  238. case 41:
  239. {
  240. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  241. sprintf(displayid, "%s0", displayid);
  242. Menu->AddItem(0, "Enter more numbers", 31);
  243. Menu->AddItem(0, "All numbers have been entered, create item", 300);
  244. Menu->SendTo(Plr);
  245. }
  246. break;
  247.  
  248. case 300://Spelldmg head based on rolfcopter
  249. {
  250. char query[255];
  251. char iquery[2550];
  252. char equery[255];
  253. char displayrealid[255];
  254. char pquery[255];
  255. string iProf;
  256. char rtard[255];
  257.  
  258. sprintf(pquery, "SELECT displayid FROM items WHERE entry=%s", displayid);
  259. QueryResult * result = WorldDatabase.Query(pquery);
  260.  
  261. if(!result)
  262. {
  263. Plr->BroadcastMessage("Something went wrong! Fucking rtard, try entering an entry that exists?");
  264. sprintf(rtard, "%s was to retarded to enter a valid entry-id, a kick follows to learn him a lesson.", Plr->GetName());
  265. sWorld.SendWorldText(rtard);
  266. Plr->Kick(5000);
  267. return;
  268. }
  269.  
  270. //Is there anything to display?
  271. if(result->GetRowCount() == 0)
  272. {
  273. Plr->BroadcastMessage("There is no data to display!");
  274. WorldDatabase.FreeQueryResult(result);
  275. return;
  276. }
  277.  
  278. Field * fields = result->Fetch();
  279. sprintf(displayrealid, "%s", fields[0].GetString() );
  280.  
  281.  
  282. /*sprintf(insertquery, "%s '%s')", insertquery, fields[0].GetString() );*/
  283. if( Plr->getClass() == PRIEST || Plr->getClass() == WARLOCK || Plr->getClass() == MAGE )
  284. iProf= "1";
  285. if( Plr->getClass() == DRUID || Plr->getClass() == ROGUE )
  286. iProf= "2";
  287. if( Plr->getClass() == HUNTER || Plr->getClass() == SHAMAN )
  288. iProf= "3";
  289. if( Plr->getClass() == WARRIOR || Plr->getClass() == PALADIN )
  290. iProf= "4";
  291.  
  292. sprintf(query, "SELECT * FROM items WHERE entry=99545"); //roflcopter
  293. sprintf(equery, "SELECT MAX(entry)+1 FROM items WHERE entry<80000");
  294.  
  295. /*sprintf(dquery, "SELECT * FROM custom_item WHERE id=(SELECT MAX(id) FROM custom_item)");
  296. QueryResult * dresult = WorldDatabase.Query(dquery);
  297. Field * dfields = dresult->Fetch();
  298. */
  299.  
  300. result = WorldDatabase.Query(equery);
  301. fields = result->Fetch();
  302. const char * entry = fields[0].GetString();
  303.  
  304. result = WorldDatabase.Query(query);
  305. fields = result->Fetch();
  306.  
  307. sprintf(iquery, "INSERT INTO items VALUES(%s", entry);
  308. for( int i = 1; i < 131; i++ )
  309. {
  310. if( i == 2 )
  311. sprintf(iquery, "%s, '%s'",iquery, iProf.c_str());
  312. else
  313. if( i == 4 || i == 5 || i == 6 || i == 7 )
  314. sprintf(iquery, "%s, '%s'",iquery, itemname );
  315. else
  316. if( i == 8 )
  317. sprintf(iquery, "%s, '%s'",iquery, displayrealid );
  318. else
  319. sprintf(iquery, "%s, '%s'",iquery, fields[i].GetString());
  320.  
  321.  
  322. }
  323. sprintf(iquery, "%s )", iquery);
  324. result = WorldDatabase.Query(iquery);
  325. Plr->BroadcastMessage("Item added to database");
  326. ItemPrototypeStorage.Reload();
  327. Plr->BroadcastMessage("Database reloaded");
  328. char msg[255];
  329. sprintf(msg, "%s made a new custom item called %s!!!", Plr->GetName(), itemname );
  330. sWorld.SendWorldText(msg);
  331. char broadcast[255];
  332. sprintf(broadcast, "Use .additem %s to add the item to your inventory.", entry);
  333. Plr->BroadcastMessage(broadcast);
  334. sprintf(displayid, "");
  335. sprintf(itemname, "");
  336. Plr->Gossip_Complete();
  337. }
  338. break;
  339.  
  340.  
  341. case 99:
  342. objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, Plr);
  343. Menu->SendTo(Plr);
  344. break;
  345. }
  346. }
  347.  
  348.  
  349. void CustomItemNpc::GossipEnd(Object * pObject, Player* Plr)
  350. {
  351. GossipScript::GossipEnd(pObject, Plr);}
  352.  
  353. void SetupCustomItemNpc(ScriptMgr * mgr)
  354. {
  355. GossipScript * gs = (GossipScript*) new CustomItemNpc();
  356.  
  357. mgr->register_gossip_script(50154, gs);
  358. }
Add Comment
Please, Sign In to add comment