Advertisement
Guest User

Player Housing

a guest
Aug 17th, 2017
579
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 78.99 KB | None | 0 0
  1. /*
  2. House System v4.17
  3.  
  4. Made by Nathan
  5. Updated and edited by Loud21
  6.  
  7. */
  8.  
  9. #include "ScriptPCH.h"
  10. #include "Chat.h"
  11. #include "ObjectMgr.h"
  12. #include "Group.h"
  13.  
  14. enum eEnums
  15. {
  16.     GAMEOBJECT_SPAWN_LIMIT = 20,
  17.     NPC_SPAWN_LIMIT = 10,
  18.  
  19.     SAY_NOT_INTERESTED = -1999922,
  20.     SAY_WRONG = -1999923,
  21.     SAY_CORRECT = -1999924,
  22. };
  23.  
  24. GameObject* GetNearestGob(Player *player)
  25. {
  26.     GameObject* gObj = nullptr;
  27.     Trinity::NearestGameObjectCheck check(*player);
  28.     Trinity::GameObjectLastSearcher<Trinity::NearestGameObjectCheck> searcher(player, gObj, check);
  29.     player->VisitNearbyGridObject(SIZE_OF_GRIDS, searcher);
  30.     return gObj;
  31. }
  32.  
  33. class npc_player_house : public ItemScript
  34. {
  35. public:
  36.     npc_player_house() : ItemScript("npc_player_house") { }
  37.  
  38.     bool OnUse(Player* player, Item* item, SpellCastTargets const& targets)
  39.     {
  40.         bool SpawnGOB(Player *player, uint32 itemID);
  41.         uint32 PlrGUID = player->GetSession()->GetGUIDLow();
  42.         bool SpawnNPC(Player *player, uint32 npcID);
  43.         bool IsInLand(Player *player);
  44.         bool IsLandOwner(Player *player);
  45.         bool HasPackage(uint32 PlrGUID, uint32 package);
  46.  
  47.         player->PlayerTalkClass->ClearMenus();
  48.         if (player->IsInCombat())
  49.  
  50.         {
  51.             ChatHandler(player->GetSession()).PSendSysMessage("You can not use this item while in combat!");
  52.             return false;
  53.         }
  54.  
  55.         if (IsLandOwner(player))
  56.         {
  57.             if (IsInLand(player))
  58.             {
  59.                 player->PlayerTalkClass->ClearMenus();
  60.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 1 Objects ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 500);
  61.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 1 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 501);
  62.                 if (HasPackage(PlrGUID, 1))
  63.                     {
  64.                     AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 2 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 502);
  65.                     AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 2 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 503);
  66.                     }
  67.                 if (HasPackage(PlrGUID, 2))
  68.                     {
  69.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 3 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 504);
  70.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 3 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 505);
  71.                     }
  72.                 if (HasPackage(PlrGUID, 3))
  73.                     {
  74.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 4 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 506);
  75.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 4 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 507);
  76.                     }
  77.                 if (HasPackage(PlrGUID, 4))
  78.                     {
  79.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 5 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 508);
  80.                         AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 5 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 509);
  81.                     }
  82.                 AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Delete closest Object", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  83.                 AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Delete an NPC", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  84.                 AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Summon a Friend!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  85.                 //AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Summon Party/Raid!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  86.                 AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Scale NPC.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  87.                 AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Scale Objects.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
  88.                 AddGossipItemFor(player, GOSSIP_ICON_BATTLE, "Kick Intruder!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  89.                 SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
  90.             }
  91.  
  92.             else
  93.             {
  94.                 {
  95.                     QueryResult result = CharacterDatabase.PQuery("SELECT zone_name FROM player_house_taken WHERE player_guid = %u", PlrGUID);
  96.                     uint32 house_count = 1;
  97.                     if (result)
  98.                     {
  99.                         do
  100.                         {
  101.                             Field *fields = result->Fetch();
  102.                             std::string zone_name = fields[0].GetString();
  103.                             if (zone_name == "")
  104.                                 zone_name = "First House";
  105.                             AddGossipItemFor(player, GOSSIP_ICON_CHAT, "Teleport to " + zone_name, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 800 + house_count);
  106.                             house_count++;
  107.                         } while (result->NextRow());
  108.                     }
  109.                 }
  110.             }
  111.         }
  112.         else
  113.         {
  114.             ChatHandler(player->GetSession()).PSendSysMessage("You do not own any land!");
  115.             return false;
  116.         }
  117.  
  118.         player->PlayerTalkClass->SendGossipMenu(1, item->GetGUID());
  119.         return true;
  120.  
  121.     }
  122.  
  123.     void OnGossipSelect(Player* player, Item* item, uint32 sender, uint32 action)
  124.     {
  125.         bool SpawnGOB(Player *player, uint32 itemID);
  126.         int32 GetGobSpawned(uint32 PlrGUID);
  127.         bool DeleteNearestGOB(Player *player);
  128.         bool IsAllowedGOB(uint32 gobjID);
  129.         bool IsInLand(Player *player);
  130.         bool IsLandOwner(Player *player);
  131.         bool HasPackage(uint32 PlrGUID, uint32 package);
  132.         bool SummonTarget(Player *player);
  133.         bool TeleportToLand(Player *player);
  134.         bool IsAllowedCreature(uint32 npcId);
  135.         int32 GetCreatureSpawned(uint32 PlrGUID);
  136.         bool DeleteNPC(Player *player);
  137.         bool SpawnNPC(Player *player, uint32 npcID);
  138.         bool KickTargetFromLand(Player *plrTarget, uint32 ownerName);
  139.  
  140.         uint32 PlrGUID = player->GetSession()->GetGUIDLow();
  141.         uint32 distance = 10;
  142.         char MsgNPC[50];
  143.         char MsgGOB[50];
  144.         sprintf(MsgNPC, "You can spawn %i more NPCs.", NPC_SPAWN_LIMIT - GetCreatureSpawned(PlrGUID));
  145.         sprintf(MsgGOB, "You can spawn %i more GameObjects.", GAMEOBJECT_SPAWN_LIMIT - GetGobSpawned(PlrGUID));
  146.         switch (action)
  147.         {
  148.             //GOBJS Package 1
  149.         case GOSSIP_ACTION_INFO_DEF + 500:
  150.         {
  151.             player->PlayerTalkClass->ClearMenus();
  152.  
  153.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=1 && CreatureOrObject=1");
  154.             // Determines that the package is 1 and that its an object. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  155.             uint32 object_count = 1;
  156.             if (result)
  157.             {
  158.                 do
  159.                 {
  160.                     Field *fields = result->Fetch();
  161.                     uint64 object_id = fields[0].GetUInt64();
  162.                     std::string object_name = fields[1].GetString();
  163.  
  164.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", object_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3000 + object_count);    
  165.                     object_count++;
  166.                 } while (result->NextRow());
  167.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  168.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  169.             }
  170.             else
  171.             {
  172.                 player->GetSession()->SendNotification("No objects found.");
  173.                 CloseGossipMenuFor(player);
  174.             }
  175.         }
  176.         break;
  177.  
  178.  
  179.         //NPC's Package 1
  180.         case GOSSIP_ACTION_INFO_DEF + 501:
  181.         {
  182.             player->PlayerTalkClass->ClearMenus();
  183.  
  184.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=1 && CreatureOrObject=0");
  185.             // Determines that the package is 1 and that its a creature. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  186.             uint32 creature_count = 1;
  187.             if (result)
  188.             {
  189.                 do
  190.                 {
  191.                     Field *fields = result->Fetch();
  192.                     uint64 creature_id = fields[0].GetUInt64();
  193.                     std::string creature_name = fields[1].GetString();
  194.  
  195.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", creature_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2000 + creature_count);
  196.                     creature_count++;
  197.                 } while (result->NextRow());
  198.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  199.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  200.             }
  201.             else
  202.             {
  203.                 player->GetSession()->SendNotification("No creatures found.");
  204.                 CloseGossipMenuFor(player);
  205.             }
  206.         }
  207.         break;
  208.  
  209.         // Package 2 Objects
  210.         case GOSSIP_ACTION_INFO_DEF + 502:
  211.         {
  212.             player->PlayerTalkClass->ClearMenus();
  213.  
  214.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=2 && CreatureOrObject=1");
  215.             // Determines that the package is 2 and that its an object. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  216.             uint32 object_count = 1;
  217.             if (result)
  218.             {
  219.                 do
  220.                 {
  221.                     Field *fields = result->Fetch();
  222.                     uint64 object_id = fields[0].GetUInt64();
  223.                     std::string object_name = fields[1].GetString();
  224.  
  225.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", object_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3100 + object_count);
  226.                     object_count++;
  227.                 } while (result->NextRow());
  228.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  229.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  230.             }
  231.             else
  232.             {
  233.                 player->GetSession()->SendNotification("No objects found.");
  234.                 CloseGossipMenuFor(player);
  235.             }
  236.         }
  237.         break;
  238.            
  239.  
  240.         // Package 2 NPC
  241.         case GOSSIP_ACTION_INFO_DEF + 503:
  242.         {
  243.             player->PlayerTalkClass->ClearMenus();
  244.  
  245.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=2 && CreatureOrObject=0");
  246.             // Determines that the package is 2 and that its a creature. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  247.             uint32 creature_count = 1;
  248.             if (result)
  249.             {
  250.                 do
  251.                 {
  252.                     Field *fields = result->Fetch();
  253.                     uint64 creature_id = fields[0].GetUInt64();
  254.                     std::string creature_name = fields[1].GetString();
  255.  
  256.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", creature_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2100 + creature_count);
  257.                     creature_count++;
  258.                 } while (result->NextRow());
  259.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  260.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  261.             }
  262.             else
  263.             {
  264.                 player->GetSession()->SendNotification("No creatures found.");
  265.                 CloseGossipMenuFor(player);
  266.             }
  267.         }
  268.         break;
  269.            
  270.             // Package 3 Objects
  271.         case GOSSIP_ACTION_INFO_DEF + 504:
  272.         {
  273.             player->PlayerTalkClass->ClearMenus();
  274.  
  275.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=3 && CreatureOrObject=1");
  276.             // Determines that the package is 3 and that its an object. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  277.             uint32 object_count = 1;
  278.             if (result)
  279.             {
  280.                 do
  281.                 {
  282.                     Field *fields = result->Fetch();
  283.                     uint64 object_id = fields[0].GetUInt64();
  284.                     std::string object_name = fields[1].GetString();
  285.  
  286.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", object_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3200 + object_count);
  287.                     object_count++;
  288.                 } while (result->NextRow());
  289.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  290.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  291.             }
  292.             else
  293.             {
  294.                 player->GetSession()->SendNotification("No objects found.");
  295.                 CloseGossipMenuFor(player);
  296.             }
  297.         }
  298.         break;
  299.            
  300.             // Package 3 NPC
  301.         case GOSSIP_ACTION_INFO_DEF + 505:
  302.         {
  303.             player->PlayerTalkClass->ClearMenus();
  304.  
  305.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=3 && CreatureOrObject=0");
  306.             // Determines that the package is 3 and that its a creature. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  307.             uint32 creature_count = 1;
  308.             if (result)
  309.             {
  310.                 do
  311.                 {
  312.                     Field *fields = result->Fetch();
  313.                     uint64 creature_id = fields[0].GetUInt64();
  314.                     std::string creature_name = fields[1].GetString();
  315.  
  316.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", creature_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2200 + creature_count);
  317.                     creature_count++;
  318.                 } while (result->NextRow());
  319.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  320.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  321.             }
  322.             else
  323.             {
  324.                 player->GetSession()->SendNotification("No creatures found.");
  325.                 CloseGossipMenuFor(player);
  326.             }
  327.         }
  328.          break;
  329.  
  330.             // Package 4 Objects
  331.         case GOSSIP_ACTION_INFO_DEF + 506:
  332.         {
  333.             player->PlayerTalkClass->ClearMenus();
  334.  
  335.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=4 && CreatureOrObject=1");
  336.             // Determines that the package is 4 and that its an object. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  337.             uint32 object_count = 1;
  338.             if (result)
  339.             {
  340.                 do
  341.                 {
  342.                     Field *fields = result->Fetch();
  343.                     uint64 object_id = fields[0].GetUInt64();
  344.                     std::string object_name = fields[1].GetString();
  345.  
  346.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", object_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3300 + object_count);
  347.                     object_count++;
  348.                 } while (result->NextRow());
  349.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  350.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  351.             }
  352.             else
  353.             {
  354.                 player->GetSession()->SendNotification("No objects found.");
  355.                 CloseGossipMenuFor(player);
  356.             }
  357.         }
  358.         break;
  359.  
  360.             // Package 4 NPC
  361.         case GOSSIP_ACTION_INFO_DEF + 507:
  362.         {
  363.             player->PlayerTalkClass->ClearMenus();
  364.  
  365.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=4 && CreatureOrObject=0");
  366.             // Determines that the package is 4 and that its a creature. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  367.             uint32 creature_count = 1;
  368.             if (result)
  369.             {
  370.                 do
  371.                 {
  372.                     Field *fields = result->Fetch();
  373.                     uint64 creature_id = fields[0].GetUInt64();
  374.                     std::string creature_name = fields[1].GetString();
  375.  
  376.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", creature_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2300 + creature_count);
  377.                     creature_count++;
  378.                 } while (result->NextRow());
  379.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  380.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  381.             }
  382.             else
  383.             {
  384.                 player->GetSession()->SendNotification("No creatures found.");
  385.                 CloseGossipMenuFor(player);
  386.             }
  387.         }
  388.         break;
  389.  
  390.             // package 5 Object
  391.         case GOSSIP_ACTION_INFO_DEF + 508:
  392.         {
  393.             player->PlayerTalkClass->ClearMenus();
  394.  
  395.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=5 && CreatureOrObject=1");
  396.             // Determines that the package is 5 and that its an object. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  397.             uint32 object_count = 1;
  398.             if (result)
  399.             {
  400.                 do
  401.                 {
  402.                     Field *fields = result->Fetch();
  403.                     uint64 object_id = fields[0].GetUInt64();
  404.                     std::string object_name = fields[1].GetString();
  405.  
  406.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", object_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3400 + object_count);
  407.                     object_count++;
  408.                 } while (result->NextRow());
  409.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  410.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  411.             }
  412.             else
  413.             {
  414.                 player->GetSession()->SendNotification("No objects found.");
  415.                 CloseGossipMenuFor(player);
  416.             }
  417.         }
  418.         break;
  419.             // Package 5 NPC
  420.         case GOSSIP_ACTION_INFO_DEF + 509:
  421.         {
  422.             player->PlayerTalkClass->ClearMenus();
  423.  
  424.             QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId, CreaOrObjName FROM player_house_spawns WHERE package=5 && CreatureOrObject=0");
  425.             // Determines that the package is 5 and that its a creature. When the value in CreatureOrObject is equal to 1 its an object, when its equal to 0 its a creature.
  426.             uint32 creature_count = 1;
  427.             if (result)
  428.             {
  429.                 do
  430.                 {
  431.                     Field *fields = result->Fetch();
  432.                     uint64 creature_id = fields[0].GetUInt64();
  433.                     std::string creature_name = fields[1].GetString();
  434.  
  435.                     AddGossipItemFor(player, GOSSIP_ICON_CHAT, ("%s ", creature_name), GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2400 + creature_count);
  436.                     creature_count++;
  437.                 } while (result->NextRow());
  438.                 AddGossipItemFor(player, 0, "Main Menu", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 999);
  439.                 player->PlayerTalkClass->SendGossipMenu(9000, item->GetGUID());
  440.             }
  441.             else
  442.             {
  443.                 player->GetSession()->SendNotification("No creatures found.");
  444.                 CloseGossipMenuFor(player);
  445.             }
  446.         }
  447.         break;
  448.  
  449.  
  450.         //main menu
  451.         case GOSSIP_ACTION_INFO_DEF + 999:
  452.             player->PlayerTalkClass->ClearMenus();
  453.             AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 1 Objects ", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 500);
  454.             AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 1 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 501);
  455.             if (HasPackage(PlrGUID, 1))
  456.             {
  457.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 2 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 502);
  458.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 2 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 503);
  459.             }
  460.             if (HasPackage(PlrGUID, 2))
  461.             {
  462.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 3 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 504);
  463.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 3 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 505);
  464.             }
  465.             if (HasPackage(PlrGUID, 3))
  466.             {
  467.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 4 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 506);
  468.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 4 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 507);
  469.             }
  470.             if (HasPackage(PlrGUID, 4))
  471.             {
  472.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 5 Objects", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 508);
  473.                 AddGossipItemFor(player, GOSSIP_ICON_TRAINER, "Package 5 NPCs", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 509);
  474.             }
  475.             AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Delete closest Object", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  476.             AddGossipItemFor(player, GOSSIP_ICON_INTERACT_1, "Delete an NPC", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  477.             AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Summon a Friend!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  478.             //AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Summon Party/Raid!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  479.             AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Scale NPC.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  480.             AddGossipItemFor(player, GOSSIP_ICON_TAXI, "Scale Objects.", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 14);
  481.             AddGossipItemFor(player, GOSSIP_ICON_BATTLE, "Kick Intruder!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  482.             SendGossipMenuFor(player, DEFAULT_GOSSIP_MESSAGE, item->GetGUID());
  483.             break;
  484.  
  485.             //delete gobj
  486.         case GOSSIP_ACTION_INFO_DEF + 2:
  487.             DeleteNearestGOB(player);
  488.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 999);
  489.             break;
  490.             //delete NPC
  491.         case GOSSIP_ACTION_INFO_DEF + 6:
  492.             DeleteNPC(player);
  493.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 999);
  494.             break;
  495.             //teleport to house
  496.         case GOSSIP_ACTION_INFO_DEF + 3:
  497.             CloseGossipMenuFor(player);
  498.             TeleportToLand(player);
  499.             break;
  500.             //summon friend
  501.         case GOSSIP_ACTION_INFO_DEF + 4:
  502.             SummonTarget(player);
  503.             CloseGossipMenuFor(player);
  504.             break;
  505.             //kickplr
  506.         case GOSSIP_ACTION_INFO_DEF + 7:
  507.         {
  508.             player->PlayerTalkClass->SendCloseGossip();
  509.             Group* grp = player->GetGroup();
  510.             if (!grp)
  511.                 break;
  512.             GroupReference* grpRef = grp->GetFirstMember();
  513.             if (!grpRef)
  514.                 break;
  515.  
  516.             for (grpRef; grpRef != NULL; grpRef = grpRef->next())
  517.             {
  518.                 Player* groupMember = grpRef->GetSource();
  519.                 ChatHandler(player->GetSession()).PSendSysMessage("Sending summon request to...");
  520.                 if (!groupMember)
  521.                     continue;
  522.                 else
  523.                     break;
  524.  
  525.                 if (groupMember == player)
  526.                     break;
  527.  
  528.                 player->SetSelection(groupMember->GetGUID());
  529.                 player->CastSpell(groupMember, 7720, true);
  530.                 ChatHandler(player->GetSession()).PSendSysMessage("%s", groupMember->GetName());
  531.             }
  532.         }
  533.         break;
  534.         case GOSSIP_ACTION_INFO_DEF + 8:
  535.             player->PlayerTalkClass->ClearMenus();
  536.             AddGossipItemFor(player, 10, "Set Scale 0.25", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
  537.             AddGossipItemFor(player, 10, "Set Scale 0.50", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
  538.             AddGossipItemFor(player, 10, "Set Scale 1.00", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
  539.             AddGossipItemFor(player, 10, "Set Scale 1.50", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
  540.             AddGossipItemFor(player, 10, "Set Scale 1.75", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
  541.             player->PlayerTalkClass->SendGossipMenu(1, item->GetGUID());
  542.             break;
  543.         case GOSSIP_ACTION_INFO_DEF + 9:
  544.         {
  545.             if (IsInLand(player))
  546.             {
  547.                 Unit* unit = player->GetSelectedUnit();
  548.  
  549.                 if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  550.                 {
  551.                     ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  552.                     return;
  553.                 }
  554.  
  555.                 Creature* target = unit->ToCreature();
  556.                 /*if (!target || !target->GetTypeId() == TYPEID_UNIT || !IsAllowedCreature(target->GetEntry()))
  557.                 {
  558.                 ChatHandler(player->GetSession()).PSendSysMessage("Please select a valid creature within your land area.");
  559.                 player->PlayerTalkClass->SendCloseGossip();
  560.                 return false;
  561.                 }*/
  562.  
  563.                 target->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.25);
  564.                 target->SaveToDB();
  565.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 0.25", target->GetName());
  566.                 player->PlayerTalkClass->SendCloseGossip();
  567.  
  568.                 //return true;
  569.                 return;
  570.             }
  571.             else
  572.             {
  573.                 TeleportToLand(player);
  574.             }
  575.         }
  576.         break;
  577.         case GOSSIP_ACTION_INFO_DEF + 10:
  578.         {
  579.             if (IsInLand(player))
  580.             {
  581.                 Unit* unit = player->GetSelectedUnit();
  582.  
  583.                 if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  584.                 {
  585.                     ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  586.                     return;
  587.                 }
  588.  
  589.                 Creature* target = unit->ToCreature();
  590.                 target->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.50);
  591.                 target->SaveToDB();
  592.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 0.50", target->GetName());
  593.                 player->PlayerTalkClass->SendCloseGossip();
  594.  
  595.                 //return true;
  596.                 return;
  597.             }
  598.             else
  599.             {
  600.                 TeleportToLand(player);
  601.             }
  602.         }
  603.         break;
  604.         case GOSSIP_ACTION_INFO_DEF + 11:
  605.         {
  606.             if (IsInLand(player))
  607.             {
  608.                 Unit* unit = player->GetSelectedUnit();
  609.  
  610.                 if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  611.                 {
  612.                     ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  613.                     return;
  614.                 }
  615.  
  616.                 Creature* target = unit->ToCreature();
  617.                 target->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.00);
  618.                 target->SaveToDB();
  619.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.00", target->GetName());
  620.                 player->PlayerTalkClass->SendCloseGossip();
  621.  
  622.                 return;
  623.             }
  624.             else
  625.             {
  626.                 TeleportToLand(player);
  627.             }
  628.         }
  629.         break;
  630.         case GOSSIP_ACTION_INFO_DEF + 12:
  631.         {
  632.             if (IsInLand(player))
  633.             {
  634.                 Unit* unit = player->GetSelectedUnit();
  635.  
  636.                 if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  637.                 {
  638.                     ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  639.                     return;
  640.                 }
  641.  
  642.                 Creature* target = unit->ToCreature();
  643.                 target->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.50);
  644.                 target->SaveToDB();
  645.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.50", target->GetName());
  646.                 player->PlayerTalkClass->SendCloseGossip();
  647.  
  648.                 return;
  649.             }
  650.             else
  651.             {
  652.                 TeleportToLand(player);
  653.             }
  654.         }
  655.         break;
  656.         case GOSSIP_ACTION_INFO_DEF + 13:
  657.         {
  658.             if (IsInLand(player))
  659.             {
  660.                 Unit* unit = player->GetSelectedUnit();
  661.  
  662.                 if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  663.                 {
  664.                     ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  665.                     return;
  666.                 }
  667.  
  668.                 Creature* target = unit->ToCreature();
  669.                 target->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.75);
  670.                 target->SaveToDB();
  671.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.75", target->GetName());
  672.                 player->PlayerTalkClass->SendCloseGossip();
  673.  
  674.                 return;
  675.             }
  676.             else
  677.             {
  678.                 TeleportToLand(player);
  679.             }
  680.         }
  681.         break;
  682.  
  683.         case GOSSIP_ACTION_INFO_DEF + 14:
  684.             player->PlayerTalkClass->ClearMenus();
  685.             AddGossipItemFor(player, 10, "Set Scale 0.25", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 15);
  686.             AddGossipItemFor(player, 10, "Set Scale 0.50", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 16);
  687.             AddGossipItemFor(player, 10, "Set Scale 1.00", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 17);
  688.             AddGossipItemFor(player, 10, "Set Scale 1.50", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 18);
  689.             AddGossipItemFor(player, 10, "Set Scale 1.75", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 19);
  690.             player->PlayerTalkClass->SendGossipMenu(1, item->GetGUID());
  691.             break;
  692.         case GOSSIP_ACTION_INFO_DEF + 15:
  693.         {
  694.             if (IsInLand(player))
  695.             {
  696.                 GameObject* object = GetNearestGob(player);
  697.                 if (!object)
  698.                 {
  699.                     ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  700.                     return;
  701.                 }
  702.                 if (object->GetDistance(player) > distance)
  703.                 {
  704.                     ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  705.                     return;
  706.                 }
  707.  
  708.                 object->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.25);
  709.                 object->DestroyForNearbyPlayers();
  710.                 object->UpdateObjectVisibility();
  711.                 object->SaveToDB();
  712.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 0.25", object->GetName());
  713.                 player->PlayerTalkClass->SendCloseGossip();
  714.  
  715.                 return;
  716.             }
  717.             else
  718.             {
  719.                 TeleportToLand(player);
  720.             }
  721.         }
  722.         break;
  723.         case GOSSIP_ACTION_INFO_DEF + 16:
  724.         {
  725.             if (IsInLand(player))
  726.             {
  727.                 GameObject* object = GetNearestGob(player);
  728.                 if (!object)
  729.                 {
  730.                     ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  731.                     return;
  732.                 }
  733.                 if (object->GetDistance(player) > distance)
  734.                 {
  735.                     ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  736.                     return;
  737.                 }
  738.  
  739.                 object->SetFloatValue(OBJECT_FIELD_SCALE_X, 0.50);
  740.                 object->DestroyForNearbyPlayers();
  741.                 object->UpdateObjectVisibility();
  742.                 object->SaveToDB();
  743.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 0.50", object->GetName());
  744.                 player->PlayerTalkClass->SendCloseGossip();
  745.                 return;
  746.             }
  747.             else
  748.             {
  749.                 TeleportToLand(player);
  750.             }
  751.         }
  752.         break;
  753.         case GOSSIP_ACTION_INFO_DEF + 17:
  754.         {
  755.             if (IsInLand(player))
  756.             {
  757.                 GameObject* object = GetNearestGob(player);
  758.                 if (!object)
  759.                 {
  760.                     ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  761.                     return;
  762.                 }
  763.                 if (object->GetDistance(player) > distance)
  764.                 {
  765.                     ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  766.                     return;
  767.                 }
  768.  
  769.                 object->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.00);
  770.                 object->DestroyForNearbyPlayers();
  771.                 object->UpdateObjectVisibility();
  772.                 object->SaveToDB();
  773.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.00", object->GetName());
  774.                 player->PlayerTalkClass->SendCloseGossip();
  775.  
  776.                 return;
  777.             }
  778.             else
  779.             {
  780.                 TeleportToLand(player);
  781.             }
  782.         }
  783.         break;
  784.         case GOSSIP_ACTION_INFO_DEF + 18:
  785.         {
  786.             if (IsInLand(player))
  787.             {
  788.                 GameObject* object = GetNearestGob(player);
  789.                 if (!object)
  790.                 {
  791.                     ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  792.                     return;
  793.                 }
  794.                 if (object->GetDistance(player) > distance)
  795.                 {
  796.                     ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  797.                     return;
  798.                 }
  799.  
  800.                 object->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.50);
  801.                 object->DestroyForNearbyPlayers();
  802.                 object->UpdateObjectVisibility();
  803.                 object->SaveToDB();
  804.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.50", object->GetName());
  805.                 player->PlayerTalkClass->SendCloseGossip();
  806.                 return;
  807.             }
  808.             else
  809.             {
  810.                 TeleportToLand(player);
  811.             }
  812.         }
  813.         break;
  814.         case GOSSIP_ACTION_INFO_DEF + 19:
  815.         {
  816.             if (IsInLand(player))
  817.             {
  818.                 GameObject* object = GetNearestGob(player);
  819.                 if (!object)
  820.                 {
  821.                     ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  822.                     return;
  823.                 }
  824.                 if (object->GetDistance(player) > distance)
  825.                 {
  826.                     ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  827.                     return;
  828.                 }
  829.  
  830.                 object->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.75);
  831.                 object->DestroyForNearbyPlayers();
  832.                 object->UpdateObjectVisibility();
  833.                 object->SaveToDB();
  834.                 ChatHandler(player->GetSession()).PSendSysMessage("You have modified %s, and changed the size to: 1.75", object->GetName());
  835.                 player->PlayerTalkClass->SendCloseGossip();
  836.  
  837.                 return;
  838.             }
  839.             else
  840.             {
  841.                 TeleportToLand(player);
  842.             }
  843.         }
  844.         break;
  845.  
  846.         case GOSSIP_ACTION_INFO_DEF + 5:
  847.         {
  848.             player->PlayerTalkClass->SendCloseGossip();
  849.             Player* selPlr = player->GetSelectedPlayer();
  850.             if (!selPlr)
  851.                 break;
  852.             if (selPlr != player)
  853.             {
  854.                 ChatHandler(selPlr->GetSession()).PSendSysMessage("You have been kicked off %s land!", player->GetName());
  855.                 KickTargetFromLand(selPlr, player->GetSession()->GetGUIDLow());
  856.             }
  857.         }
  858.         break;
  859.  
  860.         case GOSSIP_ACTION_INFO_DEF + 801:
  861.             teleportToHouse(player, 1);
  862.             break;
  863.         case GOSSIP_ACTION_INFO_DEF + 802:
  864.             teleportToHouse(player, 2);
  865.             break;
  866.         case GOSSIP_ACTION_INFO_DEF + 803:
  867.             teleportToHouse(player, 3);
  868.             break;
  869.         case GOSSIP_ACTION_INFO_DEF + 804:
  870.             teleportToHouse(player, 4);
  871.             break;
  872.         case GOSSIP_ACTION_INFO_DEF + 805:
  873.             teleportToHouse(player, 5);
  874.             break;
  875.         case GOSSIP_ACTION_INFO_DEF + 806:
  876.             teleportToHouse(player, 6);
  877.             break;
  878.         case GOSSIP_ACTION_INFO_DEF + 807:
  879.             teleportToHouse(player, 7);
  880.             break;
  881.         case GOSSIP_ACTION_INFO_DEF + 808:
  882.             teleportToHouse(player, 8);
  883.             break;
  884.         case GOSSIP_ACTION_INFO_DEF + 809:
  885.             teleportToHouse(player, 9);
  886.             break;
  887.         case GOSSIP_ACTION_INFO_DEF + 810:
  888.             teleportToHouse(player, 10);
  889.             break;
  890.  
  891.             // Spawning creatures package 1
  892.  
  893.         case GOSSIP_ACTION_INFO_DEF + 2001:
  894.             SpawnCreaturePackage1(player, 1);
  895.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  896.             break;
  897.         case GOSSIP_ACTION_INFO_DEF + 2002:
  898.             SpawnCreaturePackage1(player, 2);
  899.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  900.             break;
  901.         case GOSSIP_ACTION_INFO_DEF + 2003:
  902.             SpawnCreaturePackage1(player, 3);
  903.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  904.             break;
  905.         case GOSSIP_ACTION_INFO_DEF + 2004:
  906.             SpawnCreaturePackage1(player, 4);
  907.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  908.             break;
  909.         case GOSSIP_ACTION_INFO_DEF + 2005:
  910.             SpawnCreaturePackage1(player, 5);
  911.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  912.             break;
  913.         case GOSSIP_ACTION_INFO_DEF + 2006:
  914.             SpawnCreaturePackage1(player, 6);
  915.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  916.             break;
  917.         case GOSSIP_ACTION_INFO_DEF + 2007:
  918.             SpawnCreaturePackage1(player, 7);
  919.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  920.             break;
  921.         case GOSSIP_ACTION_INFO_DEF + 2008:
  922.             SpawnCreaturePackage1(player, 8);
  923.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  924.             break;
  925.         case GOSSIP_ACTION_INFO_DEF + 2009:
  926.             SpawnCreaturePackage1(player, 9);
  927.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  928.             break;
  929.         case GOSSIP_ACTION_INFO_DEF + 2010:
  930.             SpawnCreaturePackage1(player, 10);
  931.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  932.             break;
  933.         case GOSSIP_ACTION_INFO_DEF + 2011:
  934.             SpawnCreaturePackage1(player, 11);
  935.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  936.             break;
  937.         case GOSSIP_ACTION_INFO_DEF + 2012:
  938.             SpawnCreaturePackage1(player, 12);
  939.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  940.             break;
  941.         case GOSSIP_ACTION_INFO_DEF + 2013:
  942.             SpawnCreaturePackage1(player, 13);
  943.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  944.             break;
  945.         case GOSSIP_ACTION_INFO_DEF + 2014:
  946.             SpawnCreaturePackage1(player, 14);
  947.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  948.             break;
  949.         case GOSSIP_ACTION_INFO_DEF + 2015:
  950.             SpawnCreaturePackage1(player, 15);
  951.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 501);
  952.             break;
  953.  
  954.  
  955.             // Spawning creatures package 2
  956.  
  957.         case GOSSIP_ACTION_INFO_DEF + 2101:
  958.             SpawnCreaturePackage2(player, 1);
  959.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  960.             break;
  961.         case GOSSIP_ACTION_INFO_DEF + 2102:
  962.             SpawnCreaturePackage2(player, 2);
  963.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  964.             break;
  965.         case GOSSIP_ACTION_INFO_DEF + 2103:
  966.             SpawnCreaturePackage2(player, 3);
  967.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  968.             break;
  969.         case GOSSIP_ACTION_INFO_DEF + 2104:
  970.             SpawnCreaturePackage2(player, 4);
  971.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  972.             break;
  973.         case GOSSIP_ACTION_INFO_DEF + 2105:
  974.             SpawnCreaturePackage2(player, 5);
  975.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  976.             break;
  977.         case GOSSIP_ACTION_INFO_DEF + 2106:
  978.             SpawnCreaturePackage2(player, 6);
  979.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  980.             break;
  981.         case GOSSIP_ACTION_INFO_DEF + 2107:
  982.             SpawnCreaturePackage2(player, 7);
  983.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  984.             break;
  985.         case GOSSIP_ACTION_INFO_DEF + 2108:
  986.             SpawnCreaturePackage2(player, 8);
  987.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  988.             break;
  989.         case GOSSIP_ACTION_INFO_DEF + 2109:
  990.             SpawnCreaturePackage2(player, 9);
  991.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  992.             break;
  993.         case GOSSIP_ACTION_INFO_DEF + 2110:
  994.             SpawnCreaturePackage2(player, 10);
  995.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  996.             break;
  997.         case GOSSIP_ACTION_INFO_DEF + 2111:
  998.             SpawnCreaturePackage2(player, 11);
  999.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  1000.             break;
  1001.         case GOSSIP_ACTION_INFO_DEF + 2112:
  1002.             SpawnCreaturePackage2(player, 12);
  1003.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  1004.             break;
  1005.         case GOSSIP_ACTION_INFO_DEF + 2113:
  1006.             SpawnCreaturePackage2(player, 13);
  1007.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  1008.             break;
  1009.         case GOSSIP_ACTION_INFO_DEF + 2114:
  1010.             SpawnCreaturePackage2(player, 14);
  1011.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  1012.             break;
  1013.         case GOSSIP_ACTION_INFO_DEF + 2115:
  1014.             SpawnCreaturePackage2(player, 15);
  1015.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 503);
  1016.             break;
  1017.  
  1018.             // Spawning creatures package 3
  1019.  
  1020.         case GOSSIP_ACTION_INFO_DEF + 2201:
  1021.             SpawnCreaturePackage3(player, 1);
  1022.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1023.             break;
  1024.         case GOSSIP_ACTION_INFO_DEF + 2202:
  1025.             SpawnCreaturePackage3(player, 2);
  1026.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1027.             break;
  1028.         case GOSSIP_ACTION_INFO_DEF + 2203:
  1029.             SpawnCreaturePackage3(player, 3);
  1030.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1031.             break;
  1032.         case GOSSIP_ACTION_INFO_DEF + 2204:
  1033.             SpawnCreaturePackage3(player, 4);
  1034.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1035.             break;
  1036.         case GOSSIP_ACTION_INFO_DEF + 2205:
  1037.             SpawnCreaturePackage3(player, 5);
  1038.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1039.             break;
  1040.         case GOSSIP_ACTION_INFO_DEF + 2206:
  1041.             SpawnCreaturePackage3(player, 6);
  1042.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1043.             break;
  1044.         case GOSSIP_ACTION_INFO_DEF + 2207:
  1045.             SpawnCreaturePackage3(player, 7);
  1046.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1047.             break;
  1048.         case GOSSIP_ACTION_INFO_DEF + 2208:
  1049.             SpawnCreaturePackage3(player, 8);
  1050.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1051.             break;
  1052.         case GOSSIP_ACTION_INFO_DEF + 2209:
  1053.             SpawnCreaturePackage3(player, 9);
  1054.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1055.             break;
  1056.         case GOSSIP_ACTION_INFO_DEF + 2210:
  1057.             SpawnCreaturePackage3(player, 10);
  1058.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1059.             break;
  1060.         case GOSSIP_ACTION_INFO_DEF + 2211:
  1061.             SpawnCreaturePackage3(player, 11);
  1062.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1063.             break;
  1064.         case GOSSIP_ACTION_INFO_DEF + 2212:
  1065.             SpawnCreaturePackage3(player, 12);
  1066.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1067.             break;
  1068.         case GOSSIP_ACTION_INFO_DEF + 2213:
  1069.             SpawnCreaturePackage3(player, 13);
  1070.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1071.             break;
  1072.         case GOSSIP_ACTION_INFO_DEF + 2214:
  1073.             SpawnCreaturePackage3(player, 14);
  1074.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1075.             break;
  1076.         case GOSSIP_ACTION_INFO_DEF + 2215:
  1077.             SpawnCreaturePackage3(player, 15);
  1078.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 505);
  1079.             break;
  1080.  
  1081.             // Spawning creatures package 4
  1082.  
  1083.         case GOSSIP_ACTION_INFO_DEF + 2301:
  1084.             SpawnCreaturePackage4(player, 1);
  1085.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1086.             break;
  1087.         case GOSSIP_ACTION_INFO_DEF + 2302:
  1088.             SpawnCreaturePackage4(player, 2);
  1089.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1090.             break;
  1091.         case GOSSIP_ACTION_INFO_DEF + 2303:
  1092.             SpawnCreaturePackage4(player, 3);
  1093.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1094.             break;
  1095.         case GOSSIP_ACTION_INFO_DEF + 2304:
  1096.             SpawnCreaturePackage4(player, 4);
  1097.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1098.             break;
  1099.         case GOSSIP_ACTION_INFO_DEF + 2305:
  1100.             SpawnCreaturePackage4(player, 5);
  1101.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1102.             break;
  1103.         case GOSSIP_ACTION_INFO_DEF + 2306:
  1104.             SpawnCreaturePackage4(player, 6);
  1105.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1106.             break;
  1107.         case GOSSIP_ACTION_INFO_DEF + 2307:
  1108.             SpawnCreaturePackage4(player, 7);
  1109.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1110.             break;
  1111.         case GOSSIP_ACTION_INFO_DEF + 2308:
  1112.             SpawnCreaturePackage4(player, 8);
  1113.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1114.             break;
  1115.         case GOSSIP_ACTION_INFO_DEF + 2309:
  1116.             SpawnCreaturePackage4(player, 9);
  1117.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1118.             break;
  1119.         case GOSSIP_ACTION_INFO_DEF + 2310:
  1120.             SpawnCreaturePackage4(player, 10);
  1121.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1122.             break;
  1123.         case GOSSIP_ACTION_INFO_DEF + 2311:
  1124.             SpawnCreaturePackage4(player, 11);
  1125.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1126.             break;
  1127.         case GOSSIP_ACTION_INFO_DEF + 2312:
  1128.             SpawnCreaturePackage4(player, 12);
  1129.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1130.             break;
  1131.         case GOSSIP_ACTION_INFO_DEF + 2313:
  1132.             SpawnCreaturePackage4(player, 13);
  1133.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1134.             break;
  1135.         case GOSSIP_ACTION_INFO_DEF + 2314:
  1136.             SpawnCreaturePackage4(player, 14);
  1137.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1138.             break;
  1139.         case GOSSIP_ACTION_INFO_DEF + 2315:
  1140.             SpawnCreaturePackage4(player, 15);
  1141.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 507);
  1142.             break;
  1143.  
  1144.             // Spawning creatures package 5
  1145.  
  1146.         case GOSSIP_ACTION_INFO_DEF + 2401:
  1147.             SpawnCreaturePackage5(player, 1);
  1148.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1149.             break;
  1150.         case GOSSIP_ACTION_INFO_DEF + 2402:
  1151.             SpawnCreaturePackage5(player, 2);
  1152.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1153.             break;
  1154.         case GOSSIP_ACTION_INFO_DEF + 2403:
  1155.             SpawnCreaturePackage5(player, 3);
  1156.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1157.             break;
  1158.         case GOSSIP_ACTION_INFO_DEF + 2404:
  1159.             SpawnCreaturePackage5(player, 4);
  1160.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1161.             break;
  1162.         case GOSSIP_ACTION_INFO_DEF + 2405:
  1163.             SpawnCreaturePackage5(player, 5);
  1164.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1165.             break;
  1166.         case GOSSIP_ACTION_INFO_DEF + 2406:
  1167.             SpawnCreaturePackage5(player, 6);
  1168.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1169.             break;
  1170.         case GOSSIP_ACTION_INFO_DEF + 2407:
  1171.             SpawnCreaturePackage5(player, 7);
  1172.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1173.             break;
  1174.         case GOSSIP_ACTION_INFO_DEF + 2408:
  1175.             SpawnCreaturePackage5(player, 8);
  1176.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1177.             break;
  1178.         case GOSSIP_ACTION_INFO_DEF + 2409:
  1179.             SpawnCreaturePackage5(player, 9);
  1180.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1181.             break;
  1182.         case GOSSIP_ACTION_INFO_DEF + 2410:
  1183.             SpawnCreaturePackage5(player, 10);
  1184.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1185.             break;
  1186.         case GOSSIP_ACTION_INFO_DEF + 2411:
  1187.             SpawnCreaturePackage5(player, 11);
  1188.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1189.             break;
  1190.         case GOSSIP_ACTION_INFO_DEF + 2412:
  1191.             SpawnCreaturePackage5(player, 12);
  1192.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1193.             break;
  1194.         case GOSSIP_ACTION_INFO_DEF + 2413:
  1195.             SpawnCreaturePackage5(player, 13);
  1196.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1197.             break;
  1198.         case GOSSIP_ACTION_INFO_DEF + 2414:
  1199.             SpawnCreaturePackage5(player, 14);
  1200.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1201.             break;
  1202.         case GOSSIP_ACTION_INFO_DEF + 2415:
  1203.             SpawnCreaturePackage5(player, 15);
  1204.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 509);
  1205.             break;
  1206.  
  1207.             // Spawning Objects Package 1
  1208.         case GOSSIP_ACTION_INFO_DEF + 3001:
  1209.             SpawnObjectPackage1(player, 1);
  1210.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1211.             break;
  1212.         case GOSSIP_ACTION_INFO_DEF + 3002:
  1213.             SpawnObjectPackage1(player, 2);
  1214.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1215.             break;
  1216.         case GOSSIP_ACTION_INFO_DEF + 3003:
  1217.             SpawnObjectPackage1(player, 3);
  1218.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1219.             break;
  1220.         case GOSSIP_ACTION_INFO_DEF + 3004:
  1221.             SpawnObjectPackage1(player, 4);
  1222.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1223.             break;
  1224.         case GOSSIP_ACTION_INFO_DEF + 3005:
  1225.             SpawnObjectPackage1(player, 5);
  1226.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1227.             break;
  1228.         case GOSSIP_ACTION_INFO_DEF + 3006:
  1229.             SpawnObjectPackage1(player, 6);
  1230.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1231.             break;
  1232.         case GOSSIP_ACTION_INFO_DEF + 3007:
  1233.             SpawnObjectPackage1(player, 7);
  1234.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1235.             break;
  1236.         case GOSSIP_ACTION_INFO_DEF + 3008:
  1237.             SpawnObjectPackage1(player, 8);
  1238.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1239.             break;
  1240.         case GOSSIP_ACTION_INFO_DEF + 3009:
  1241.             SpawnObjectPackage1(player, 9);
  1242.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1243.             break;
  1244.         case GOSSIP_ACTION_INFO_DEF + 3010:
  1245.             SpawnObjectPackage1(player, 10);
  1246.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1247.             break;
  1248.         case GOSSIP_ACTION_INFO_DEF + 3011:
  1249.             SpawnObjectPackage1(player, 11);
  1250.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1251.             break;
  1252.         case GOSSIP_ACTION_INFO_DEF + 3012:
  1253.             SpawnObjectPackage1(player, 12);
  1254.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1255.             break;
  1256.         case GOSSIP_ACTION_INFO_DEF + 3013:
  1257.             SpawnObjectPackage1(player, 13);
  1258.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1259.             break;
  1260.         case GOSSIP_ACTION_INFO_DEF + 3014:
  1261.             SpawnObjectPackage1(player, 14);
  1262.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1263.             break;
  1264.         case GOSSIP_ACTION_INFO_DEF + 3015:
  1265.             SpawnObjectPackage1(player, 15);
  1266.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 500);
  1267.             break;
  1268.  
  1269.             // second package
  1270.  
  1271.         case GOSSIP_ACTION_INFO_DEF + 3101:
  1272.             SpawnObjectPackage2(player, 1);
  1273.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1274.             break;
  1275.         case GOSSIP_ACTION_INFO_DEF + 3102:
  1276.             SpawnObjectPackage2(player, 2);
  1277.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1278.             break;
  1279.         case GOSSIP_ACTION_INFO_DEF + 3103:
  1280.             SpawnObjectPackage2(player, 3);
  1281.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1282.             break;
  1283.         case GOSSIP_ACTION_INFO_DEF + 3104:
  1284.             SpawnObjectPackage2(player, 4);
  1285.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1286.             break;
  1287.         case GOSSIP_ACTION_INFO_DEF + 3105:
  1288.             SpawnObjectPackage2(player, 5);
  1289.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1290.             break;
  1291.         case GOSSIP_ACTION_INFO_DEF + 3106:
  1292.             SpawnObjectPackage2(player, 6);
  1293.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1294.             break;
  1295.         case GOSSIP_ACTION_INFO_DEF + 3107:
  1296.             SpawnObjectPackage2(player, 7);
  1297.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1298.             break;
  1299.         case GOSSIP_ACTION_INFO_DEF + 3108:
  1300.             SpawnObjectPackage2(player, 8);
  1301.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1302.             break;
  1303.         case GOSSIP_ACTION_INFO_DEF + 3109:
  1304.             SpawnObjectPackage2(player, 9);
  1305.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1306.             break;
  1307.         case GOSSIP_ACTION_INFO_DEF + 3110:
  1308.             SpawnObjectPackage2(player, 10);
  1309.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1310.             break;
  1311.         case GOSSIP_ACTION_INFO_DEF + 3111:
  1312.             SpawnObjectPackage2(player, 11);
  1313.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1314.             break;
  1315.         case GOSSIP_ACTION_INFO_DEF + 3112:
  1316.             SpawnObjectPackage2(player, 12);
  1317.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1318.             break;
  1319.         case GOSSIP_ACTION_INFO_DEF + 3113:
  1320.             SpawnObjectPackage2(player, 13);
  1321.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1322.             break;
  1323.         case GOSSIP_ACTION_INFO_DEF + 3114:
  1324.             SpawnObjectPackage2(player, 14);
  1325.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1326.             break;
  1327.         case GOSSIP_ACTION_INFO_DEF + 3115:
  1328.             SpawnObjectPackage2(player, 15);
  1329.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 502);
  1330.             break;
  1331.  
  1332.             // third package
  1333.  
  1334.         case GOSSIP_ACTION_INFO_DEF + 3201:
  1335.             SpawnObjectPackage3(player, 1);
  1336.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1337.             break;
  1338.         case GOSSIP_ACTION_INFO_DEF + 3202:
  1339.             SpawnObjectPackage3(player, 2);
  1340.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1341.             break;
  1342.         case GOSSIP_ACTION_INFO_DEF + 3203:
  1343.             SpawnObjectPackage3(player, 3);
  1344.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1345.             break;
  1346.         case GOSSIP_ACTION_INFO_DEF + 3204:
  1347.             SpawnObjectPackage3(player, 4);
  1348.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1349.             break;
  1350.         case GOSSIP_ACTION_INFO_DEF + 3205:
  1351.             SpawnObjectPackage3(player, 5);
  1352.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1353.             break;
  1354.         case GOSSIP_ACTION_INFO_DEF + 3206:
  1355.             SpawnObjectPackage3(player, 6);
  1356.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1357.             break;
  1358.         case GOSSIP_ACTION_INFO_DEF + 3207:
  1359.             SpawnObjectPackage3(player, 7);
  1360.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1361.             break;
  1362.         case GOSSIP_ACTION_INFO_DEF + 3208:
  1363.             SpawnObjectPackage3(player, 8);
  1364.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1365.             break;
  1366.         case GOSSIP_ACTION_INFO_DEF + 3209:
  1367.             SpawnObjectPackage3(player, 9);
  1368.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1369.             break;
  1370.         case GOSSIP_ACTION_INFO_DEF + 3210:
  1371.             SpawnObjectPackage3(player, 10);
  1372.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1373.             break;
  1374.         case GOSSIP_ACTION_INFO_DEF + 3211:
  1375.             SpawnObjectPackage3(player, 11);
  1376.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1377.             break;
  1378.         case GOSSIP_ACTION_INFO_DEF + 3212:
  1379.             SpawnObjectPackage3(player, 12);
  1380.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1381.             break;
  1382.         case GOSSIP_ACTION_INFO_DEF + 3213:
  1383.             SpawnObjectPackage3(player, 13);
  1384.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1385.             break;
  1386.         case GOSSIP_ACTION_INFO_DEF + 3214:
  1387.             SpawnObjectPackage3(player, 14);
  1388.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1389.             break;
  1390.         case GOSSIP_ACTION_INFO_DEF + 3215:
  1391.             SpawnObjectPackage3(player, 15);
  1392.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 504);
  1393.             break;
  1394.         // package 4
  1395.         case GOSSIP_ACTION_INFO_DEF + 3301:
  1396.             SpawnObjectPackage4(player, 1);
  1397.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1398.             break;
  1399.         case GOSSIP_ACTION_INFO_DEF + 3302:
  1400.             SpawnObjectPackage4(player, 2);
  1401.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1402.             break;
  1403.         case GOSSIP_ACTION_INFO_DEF + 3303:
  1404.             SpawnObjectPackage4(player, 3);
  1405.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1406.             break;
  1407.         case GOSSIP_ACTION_INFO_DEF + 3304:
  1408.             SpawnObjectPackage4(player, 4);
  1409.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1410.             break;
  1411.         case GOSSIP_ACTION_INFO_DEF + 3305:
  1412.             SpawnObjectPackage4(player, 5);
  1413.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1414.             break;
  1415.         case GOSSIP_ACTION_INFO_DEF + 3306:
  1416.             SpawnObjectPackage4(player, 6);
  1417.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1418.             break;
  1419.         case GOSSIP_ACTION_INFO_DEF + 3307:
  1420.             SpawnObjectPackage4(player, 7);
  1421.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1422.             break;
  1423.         case GOSSIP_ACTION_INFO_DEF + 3308:
  1424.             SpawnObjectPackage4(player, 8);
  1425.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1426.             break;
  1427.         case GOSSIP_ACTION_INFO_DEF + 3309:
  1428.             SpawnObjectPackage4(player, 9);
  1429.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1430.             break;
  1431.         case GOSSIP_ACTION_INFO_DEF + 3310:
  1432.             SpawnObjectPackage4(player, 10);
  1433.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1434.             break;
  1435.         case GOSSIP_ACTION_INFO_DEF + 3311:
  1436.             SpawnObjectPackage4(player, 11);
  1437.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1438.             break;
  1439.         case GOSSIP_ACTION_INFO_DEF + 3312:
  1440.             SpawnObjectPackage4(player, 12);
  1441.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1442.             break;
  1443.         case GOSSIP_ACTION_INFO_DEF + 3313:
  1444.             SpawnObjectPackage4(player, 13);
  1445.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1446.             break;
  1447.         case GOSSIP_ACTION_INFO_DEF + 3314:
  1448.             SpawnObjectPackage4(player, 14);
  1449.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1450.             break;
  1451.         case GOSSIP_ACTION_INFO_DEF + 3315:
  1452.             SpawnObjectPackage4(player, 15);
  1453.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 506);
  1454.             break;
  1455.  
  1456.             // package 5
  1457.         case GOSSIP_ACTION_INFO_DEF + 3401:
  1458.             SpawnObjectPackage5(player, 1);
  1459.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1460.             break;
  1461.         case GOSSIP_ACTION_INFO_DEF + 3402:
  1462.             SpawnObjectPackage5(player, 2);
  1463.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1464.             break;
  1465.         case GOSSIP_ACTION_INFO_DEF + 3403:
  1466.             SpawnObjectPackage5(player, 3);
  1467.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1468.             break;
  1469.         case GOSSIP_ACTION_INFO_DEF + 3404:
  1470.             SpawnObjectPackage5(player, 4);
  1471.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1472.             break;
  1473.         case GOSSIP_ACTION_INFO_DEF + 3405:
  1474.             SpawnObjectPackage5(player, 5);
  1475.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1476.             break;
  1477.         case GOSSIP_ACTION_INFO_DEF + 3406:
  1478.             SpawnObjectPackage5(player, 6);
  1479.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1480.             break;
  1481.         case GOSSIP_ACTION_INFO_DEF + 3407:
  1482.             SpawnObjectPackage5(player, 7);
  1483.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1484.             break;
  1485.         case GOSSIP_ACTION_INFO_DEF + 3408:
  1486.             SpawnObjectPackage5(player, 8);
  1487.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1488.             break;
  1489.         case GOSSIP_ACTION_INFO_DEF + 3409:
  1490.             SpawnObjectPackage5(player, 9);
  1491.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1492.             break;
  1493.         case GOSSIP_ACTION_INFO_DEF + 3410:
  1494.             SpawnObjectPackage5(player, 10);
  1495.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1496.             break;
  1497.         case GOSSIP_ACTION_INFO_DEF + 3411:
  1498.             SpawnObjectPackage5(player, 11);
  1499.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1500.             break;
  1501.         case GOSSIP_ACTION_INFO_DEF + 3412:
  1502.             SpawnObjectPackage5(player, 12);
  1503.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1504.             break;
  1505.         case GOSSIP_ACTION_INFO_DEF + 3413:
  1506.             SpawnObjectPackage5(player, 13);
  1507.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1508.             break;
  1509.         case GOSSIP_ACTION_INFO_DEF + 3414:
  1510.             SpawnObjectPackage5(player, 14);
  1511.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1512.             break;
  1513.         case GOSSIP_ACTION_INFO_DEF + 3415:
  1514.             SpawnObjectPackage5(player, 15);
  1515.             OnGossipSelect(player, item, item->GetGUID(), GOSSIP_ACTION_INFO_DEF + 508);
  1516.             break;
  1517.  
  1518.            
  1519.         }
  1520.  
  1521.         return;
  1522. }
  1523.  
  1524.     bool teleportToHouse(Player* player, uint32 selection)
  1525.     {
  1526.         if (player->IsInCombat() || player->GetMap()->IsBattlegroundOrArena() || player->GetMap()->IsDungeon())
  1527.         {
  1528.             return false;
  1529.         }
  1530.  
  1531.         QueryResult result = CharacterDatabase.PQuery("SELECT map_id, spawn_x, spawn_y, spawn_z, spawn_o FROM player_house_taken WHERE player_guid = %u", player->GetSession()->GetGUIDLow());
  1532.         uint32 house_count = 1;
  1533.         do
  1534.         {
  1535.             if (house_count == selection)
  1536.             {
  1537.                 Field *fields = result->Fetch();
  1538.                 player->TeleportTo(fields[0].GetUInt32(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat());
  1539.                 ChatHandler(player->GetSession()).SendSysMessage("Welcome Home!");
  1540.                 return true;
  1541.             }
  1542.             house_count++;
  1543.         } while (result->NextRow());
  1544.  
  1545.         return false;
  1546.     }
  1547.  
  1548.     // First package
  1549.     bool SpawnObjectPackage1(Player* player, uint32 selection)
  1550.     {
  1551.         bool SpawnGOB(Player *player, uint32 itemID);
  1552.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=1 and CreatureOrObject=1 and id=%u", selection);
  1553.         if (result)
  1554.             do
  1555.             {
  1556.                 Field *fields = result->Fetch();
  1557.                 uint64 ObjId = fields[0].GetUInt64();
  1558.  
  1559.                 SpawnGOB(player, ObjId);
  1560.             }
  1561.            while (result->NextRow());
  1562.  
  1563.         return false;
  1564.     }
  1565.  
  1566.  
  1567.     bool SpawnCreaturePackage1(Player* player, uint32 selection)
  1568.     {
  1569.         bool SpawnNPC(Player *player, uint32 npcID);
  1570.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=1 and CreatureOrObject=0 and id=%u", selection);
  1571.         if (result)
  1572.             do
  1573.             {
  1574.                 Field *fields = result->Fetch();
  1575.                 uint64 CreaId = fields[0].GetUInt64();
  1576.  
  1577.                 SpawnNPC(player, CreaId);
  1578.             } while (result->NextRow());
  1579.  
  1580.             return false;
  1581.     }
  1582.  
  1583.     // second package
  1584.     bool SpawnObjectPackage2(Player* player, uint32 selection)
  1585.     {
  1586.         bool SpawnGOB(Player *player, uint32 itemID);
  1587.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=2 and CreatureOrObject=1 and id=%u", selection);
  1588.         if (result)
  1589.             do
  1590.             {
  1591.                 Field *fields = result->Fetch();
  1592.                 uint64 ObjId = fields[0].GetUInt64();
  1593.  
  1594.                 SpawnGOB(player, ObjId);
  1595.             } while (result->NextRow());
  1596.  
  1597.             return false;
  1598.     }
  1599.  
  1600.  
  1601.     bool SpawnCreaturePackage2(Player* player, uint32 selection)
  1602.     {
  1603.         bool SpawnNPC(Player *player, uint32 npcID);
  1604.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=2 and CreatureOrObject=0 and id=%u", selection);
  1605.         if (result)
  1606.             do
  1607.             {
  1608.                 Field *fields = result->Fetch();
  1609.                 uint64 CreaId = fields[0].GetUInt64();
  1610.  
  1611.                 SpawnNPC(player, CreaId);
  1612.             } while (result->NextRow());
  1613.  
  1614.             return false;
  1615.     }
  1616.  
  1617.     // third package
  1618.     bool SpawnObjectPackage3(Player* player, uint32 selection)
  1619.     {
  1620.         bool SpawnGOB(Player *player, uint32 itemID);
  1621.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=3 and CreatureOrObject=1 and id=%u", selection);
  1622.         if (result)
  1623.             do
  1624.             {
  1625.                 Field *fields = result->Fetch();
  1626.                 uint64 ObjId = fields[0].GetUInt64();
  1627.  
  1628.                 SpawnGOB(player, ObjId);
  1629.             } while (result->NextRow());
  1630.  
  1631.             return false;
  1632.     }
  1633.  
  1634.  
  1635.     bool SpawnCreaturePackage3(Player* player, uint32 selection)
  1636.     {
  1637.         bool SpawnNPC(Player *player, uint32 npcID);
  1638.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=3 and CreatureOrObject=0 and id=%u", selection);
  1639.         if (result)
  1640.             do
  1641.             {
  1642.                 Field *fields = result->Fetch();
  1643.                 uint64 CreaId = fields[0].GetUInt64();
  1644.  
  1645.                 SpawnNPC(player, CreaId);
  1646.             } while (result->NextRow());
  1647.  
  1648.             return false;
  1649.     }
  1650.  
  1651.     // forth package
  1652.     bool SpawnObjectPackage4(Player* player, uint32 selection)
  1653.     {
  1654.         bool SpawnGOB(Player *player, uint32 itemID);
  1655.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=4 and CreatureOrObject=1 and id=%u", selection);
  1656.         if (result)
  1657.             do
  1658.             {
  1659.                 Field *fields = result->Fetch();
  1660.                 uint64 ObjId = fields[0].GetUInt64();
  1661.  
  1662.                 SpawnGOB(player, ObjId);
  1663.             } while (result->NextRow());
  1664.  
  1665.             return false;
  1666.     }
  1667.  
  1668.  
  1669.     bool SpawnCreaturePackage4(Player* player, uint32 selection)
  1670.     {
  1671.         bool SpawnNPC(Player *player, uint32 npcID);
  1672.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=4 and CreatureOrObject=0 and id=%u", selection);
  1673.         if (result)
  1674.             do
  1675.             {
  1676.                 Field *fields = result->Fetch();
  1677.                 uint64 CreaId = fields[0].GetUInt64();
  1678.  
  1679.                 SpawnNPC(player, CreaId);
  1680.             } while (result->NextRow());
  1681.  
  1682.             return false;
  1683.     }
  1684.  
  1685.     //fith package
  1686.     bool SpawnObjectPackage5(Player* player, uint32 selection)
  1687.     {
  1688.         bool SpawnGOB(Player *player, uint32 itemID);
  1689.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=5 and CreatureOrObject=1 and id=%u", selection);
  1690.         if (result)
  1691.             do
  1692.             {
  1693.                 Field *fields = result->Fetch();
  1694.                 uint64 ObjId = fields[0].GetUInt64();
  1695.  
  1696.                 SpawnGOB(player, ObjId);
  1697.             } while (result->NextRow());
  1698.  
  1699.             return false;
  1700.     }
  1701.  
  1702.  
  1703.     bool SpawnCreaturePackage5(Player* player, uint32 selection)
  1704.     {
  1705.         bool SpawnNPC(Player *player, uint32 npcID);
  1706.         QueryResult result = CharacterDatabase.PQuery("SELECT CreaOrObjId FROM player_house_spawns WHERE package=5 and CreatureOrObject=0 and id=%u", selection);
  1707.         if (result)
  1708.             do
  1709.             {
  1710.                 Field *fields = result->Fetch();
  1711.                 uint64 CreaId = fields[0].GetUInt64();
  1712.  
  1713.                 SpawnNPC(player, CreaId);
  1714.             } while (result->NextRow());
  1715.  
  1716.             return false;
  1717.     }
  1718.  
  1719. };
  1720. bool SummonTarget(Player *player)
  1721. {
  1722.     Player *plrFriend = player->GetSelectedPlayer();
  1723.     if (plrFriend)
  1724.     {
  1725.         if (plrFriend->IsInCombat())
  1726.         {
  1727.             ChatHandler(player->GetSession()).PSendSysMessage("Your friend is in combat!");
  1728.             return false;
  1729.         }
  1730.         if (plrFriend->GetMap()->IsBattlegroundOrArena())
  1731.         {
  1732.             ChatHandler(player->GetSession()).PSendSysMessage("Your friend is in a battleground!");
  1733.             return false;
  1734.         }
  1735.         if (plrFriend->GetMap()->IsDungeon())
  1736.         {
  1737.             ChatHandler(player->GetSession()).PSendSysMessage("Your friend is in a dungeon!");
  1738.             return false;
  1739.         }
  1740.         if (plrFriend->IsBeingTeleported())
  1741.             return false;
  1742.  
  1743.         if (plrFriend->isDead())
  1744.         {
  1745.             ChatHandler(player->GetSession()).PSendSysMessage("Your friend is dead :c");
  1746.             return false;
  1747.         }
  1748.  
  1749.         if (player->IsInPartyWith(plrFriend) || player->IsInRaidWith(plrFriend))
  1750.         {
  1751.             player->CastSpell(plrFriend, 7720, true);
  1752.             ChatHandler(player->GetSession()).PSendSysMessage("Summon request sent!");
  1753.             return true;
  1754.         }
  1755.         else
  1756.             ChatHandler(player->GetSession()).PSendSysMessage("You must invite this person to your party first!");
  1757.     }
  1758.     else
  1759.         ChatHandler(player->GetSession()).PSendSysMessage("Your target must be in party and on the same map as you.");
  1760.  
  1761.     return false;
  1762. }
  1763.  
  1764. bool IsInLand(Player *player)
  1765. {
  1766.     float playerx = player->GetPositionX();
  1767.     float playery = player->GetPositionY();
  1768.     uint32 mapid_multi = player->GetMap()->GetId();
  1769.     float top_x;
  1770.     float bottom_x;
  1771.     float left_y;
  1772.     float right_y;
  1773.     int mapid;
  1774.     bool LandOwner;
  1775.  
  1776.     QueryResult result = CharacterDatabase.PQuery("SELECT map_id, bottom_x, top_x, left_y, right_y FROM player_house_taken WHERE player_guid = %u AND map_id=%u", player->GetSession()->GetGUIDLow(), mapid_multi);
  1777.     if (!result)
  1778.         return false;
  1779.  
  1780.     do
  1781.     {
  1782.         Field *fields = result->Fetch();
  1783.         mapid = fields[0].GetInt32();
  1784.         bottom_x = fields[1].GetFloat();
  1785.         top_x = fields[2].GetFloat();
  1786.         left_y = fields[3].GetFloat();
  1787.         right_y = fields[4].GetFloat();
  1788.         if ((playerx < bottom_x) && (playerx > top_x) && (playery < left_y) && (playery > right_y))
  1789.         {
  1790.             LandOwner = true;
  1791.             return true;
  1792.         }
  1793.     } while (result->NextRow());
  1794.  
  1795.     return false;
  1796. }
  1797.  
  1798. bool KickTargetFromLand(Player *plrTarget, uint32 ownerName)
  1799. {
  1800.     if (plrTarget)
  1801.     {
  1802.         float playerx = plrTarget->GetPositionX();
  1803.         float playery = plrTarget->GetPositionY();
  1804.         uint32 mapid_multi = plrTarget->GetMap()->GetId();
  1805.         float top_x;
  1806.         float bottom_x;
  1807.         float left_y;
  1808.         float right_y;
  1809.         int mapid;
  1810.  
  1811.         QueryResult result = CharacterDatabase.PQuery("SELECT map_id, bottom_x, top_x, left_y, right_y FROM player_house_taken WHERE player_guid = %u AND map_id=%u", ownerName, mapid_multi);
  1812.         do
  1813.         {
  1814.             Field *fields = result->Fetch();
  1815.             mapid = fields[0].GetInt32();
  1816.             bottom_x = fields[1].GetFloat();
  1817.             top_x = fields[2].GetFloat();
  1818.             left_y = fields[3].GetFloat();
  1819.             right_y = fields[4].GetFloat();
  1820.  
  1821.             if (playerx < bottom_x && playerx > top_x && playery < left_y && playery > right_y)
  1822.             {
  1823.                 if (plrTarget)
  1824.                 {
  1825.                     plrTarget->TeleportTo(571, 5807.841309f, 588.128540f, 660.939392f, 1.678679f);
  1826.                 }
  1827.                 return true;
  1828.             }
  1829.             else
  1830.             {
  1831.                 ChatHandler(plrTarget->GetSession()).PSendSysMessage("%s is not located on your land!", plrTarget->GetName());
  1832.             }
  1833.  
  1834.         } while (result->NextRow());
  1835.     }
  1836.     return false;
  1837. }
  1838.  
  1839. bool IsLandOwner(Player *player)
  1840. {
  1841.     bool LandOwner = false;
  1842.     QueryResult result;
  1843.     if (!LandOwner)
  1844.     {
  1845.         result = CharacterDatabase.PQuery("SELECT * FROM player_house_taken WHERE player_guid = %u", player->GetSession()->GetGUIDLow());
  1846.         if (result)
  1847.             LandOwner = true;
  1848.     }
  1849.  
  1850.     return LandOwner;
  1851. }
  1852.  
  1853. bool TeleportToLand(Player *player)
  1854. {
  1855.     if (player->IsInCombat() || player->GetMap()->IsBattlegroundOrArena() || player->GetMap()->IsDungeon())
  1856.     {
  1857.         return false;
  1858.     }
  1859.     QueryResult spawnresult;
  1860.     spawnresult = CharacterDatabase.PQuery("SELECT map_id, spawn_x, spawn_y, spawn_z, spawn_o FROM player_house_taken WHERE player_guid = %u", player->GetSession()->GetGUIDLow());
  1861.     if (spawnresult)
  1862.     {
  1863.         Field *fields = spawnresult->Fetch();
  1864.         player->TeleportTo(fields[0].GetUInt32(), fields[1].GetFloat(), fields[2].GetFloat(), fields[3].GetFloat(), fields[4].GetFloat());
  1865.         ChatHandler(player->GetSession()).SendSysMessage("Welcome Home!");
  1866.         CloseGossipMenuFor(player);
  1867.         return true;
  1868.     }
  1869.     else
  1870.     {
  1871.         ChatHandler(player->GetSession()).PSendSysMessage("Could not locate your spawn! Please contact a GM!");
  1872.     }
  1873.     return false;
  1874. }
  1875.  
  1876. /*
  1877. *****
  1878. GAMEOBJECT METHODS
  1879. *****
  1880. */
  1881.  
  1882. bool IsAllowedGOB(uint32 gobjID)
  1883. {
  1884.     QueryResult result;
  1885.     result = CharacterDatabase.PQuery("SELECT * FROM player_house_objects where gobjID = %u", gobjID);
  1886.     if (result)
  1887.         return true;
  1888.  
  1889.     return false;
  1890. }
  1891.  
  1892. bool DeleteNearestGOB(Player *player)
  1893. {
  1894.     int32 GetGobSpawned(uint32 PlrGUID);
  1895.  
  1896.     if (!IsInLand(player))
  1897.     {
  1898.         TeleportToLand(player);
  1899.         return false;
  1900.     }
  1901.  
  1902.     /*if(!IsAllowedGOB(gameentry))
  1903.     {
  1904.     ChatHandler(player->GetSession()).PSendSysMessage("That object is not able to be deleted. Contact an administrator to get it removed.");
  1905.     return false;
  1906.     }*/
  1907.  
  1908.     GameObject* gObj = GetNearestGob(player);
  1909.     if (!gObj)
  1910.     {
  1911.         ChatHandler(player->GetSession()).PSendSysMessage("Could not find gameobject.");
  1912.         return false;
  1913.     }
  1914.     if (gObj->GetDistance(player) > 10)
  1915.     {
  1916.         ChatHandler(player->GetSession()).PSendSysMessage("No GameObject found within 10 yards. Try moving closer to the object");
  1917.         return true;
  1918.     }
  1919.     ChatHandler(player->GetSession()).PSendSysMessage("%s was deleted!", gObj->GetName());
  1920.     gObj->SetRespawnTime(0);
  1921.     gObj->Delete();
  1922.     gObj->DeleteFromDB();
  1923.     if (GetGobSpawned(player->GetSession()->GetGUIDLow()) > 0)
  1924.         CharacterDatabase.PExecute("UPDATE player_house SET items_spawned = items_spawned - 1 WHERE player_guid = %u", player->GetSession()->GetGUIDLow());
  1925.  
  1926.  
  1927.     return true;
  1928. }
  1929.  
  1930. bool HasPackage(uint32 PlrGUID, uint32 package)
  1931. {
  1932.     QueryResult result = CharacterDatabase.PQuery("SELECT * FROM player_house WHERE package%u = 1 AND player_guid = %u", package, PlrGUID);
  1933.     if (result)
  1934.         return true;
  1935.     return false;
  1936. }
  1937.  
  1938. bool SpawnGOB(Player *player, uint32 itemID)
  1939. {
  1940.     int32 GetGobSpawned(uint32 PlrGUID);
  1941.  
  1942.     if (IsInLand(player))
  1943.     {
  1944.         if (GetGobSpawned(player->GetSession()->GetGUIDLow()) < GAMEOBJECT_SPAWN_LIMIT)
  1945.         {
  1946.             Map *map = player->GetMap();
  1947.  
  1948.             GameObject* object = new GameObject();
  1949.             ObjectGuid::LowType guidLow = map->GenerateLowGuid<HighGuid::GameObject>();
  1950.  
  1951.             G3D::Quat rot = G3D::Matrix3::fromEulerAnglesZYX(player->GetOrientation(), 0.f, 0.f);
  1952.             if (!object->Create(guidLow, itemID, map, player->GetPhaseMaskForSpawn(), *player, rot, 255, GO_STATE_READY))
  1953.             {
  1954.                 delete object;
  1955.                 return false;
  1956.             }
  1957.  
  1958.  
  1959.             // fill the gameobject data and save to the db
  1960.             object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMaskForSpawn());
  1961.             guidLow = object->GetSpawnId();
  1962.  
  1963.             // delete the old object and do a clean load from DB with a fresh new GameObject instance.
  1964.             // this is required to avoid weird behavior and memory leaks
  1965.             delete object;
  1966.  
  1967.             object = new GameObject();
  1968.             // this will generate a new guid if the object is in an instance
  1969.             if (!object->LoadGameObjectFromDB(guidLow, map))
  1970.             {
  1971.                 delete object;
  1972.                 return false;
  1973.             }
  1974.  
  1975.             /// @todo is it really necessary to add both the real and DB table guid here ?
  1976.             sObjectMgr->AddGameobjectToGrid(guidLow, sObjectMgr->GetGOData(guidLow));
  1977.             CharacterDatabase.PExecute("UPDATE player_house SET items_spawned = items_spawned + 1 WHERE player_guid = %u", player->GetSession()->GetGUIDLow());
  1978.         }
  1979.         else
  1980.         {
  1981.             ChatHandler(player->GetSession()).PSendSysMessage("GameObject spawn limit reached!");
  1982.         }
  1983.     }
  1984.     else
  1985.     {
  1986.         TeleportToLand(player);
  1987.     }
  1988.     return true;
  1989. }
  1990.  
  1991. int32 GetGobSpawned(uint32 PlrGUID)
  1992. {
  1993.     int32 SpawnCount = 0;
  1994.     QueryResult result = CharacterDatabase.PQuery("SELECT items_spawned - items_bonus FROM player_house WHERE player_guid = %u", PlrGUID);
  1995.     if (result)
  1996.         SpawnCount = (*result)[0].GetInt32();
  1997.     return SpawnCount;
  1998. }
  1999.  
  2000. /*
  2001. -------
  2002. END GAMEOBJECT METHODS
  2003. -----
  2004. */
  2005.  
  2006.  
  2007. /*
  2008. -----
  2009. ADD NPC METHODS
  2010. ------
  2011. */
  2012.  
  2013. bool IsAllowedCreature(uint32 npcId)
  2014. {
  2015.     QueryResult result;
  2016.     result = CharacterDatabase.PQuery("SELECT * FROM player_house_npcs where npcId = %u", npcId);
  2017.     if (result)
  2018.         return true;
  2019.  
  2020.     return false;
  2021. }
  2022.  
  2023. int32 GetCreatureSpawned(uint32 PlrGUID)
  2024. {
  2025.     int32 NPC_Count = 0;
  2026.     QueryResult result = CharacterDatabase.PQuery("SELECT npcs_spawned - npcs_bonus FROM player_house WHERE player_guid = %u", PlrGUID);
  2027.     if (result)
  2028.         NPC_Count = (*result)[0].GetInt32();
  2029.     return NPC_Count;
  2030. }
  2031.  
  2032.  
  2033. bool SpawnNPC(Player *player, uint32 npcID)
  2034. {
  2035.     uint32 PlrGUID = player->GetSession()->GetGUIDLow();
  2036.     if (IsInLand(player))
  2037.     {
  2038.  
  2039.         if (GetCreatureSpawned(PlrGUID) < NPC_SPAWN_LIMIT)
  2040.         {
  2041.             Map* map = player->GetMap();
  2042.             Creature* creature = new Creature();
  2043.  
  2044.             if (!creature->Create(map->GenerateLowGuid<HighGuid::Unit>(), map, player->GetPhaseMaskForSpawn(), npcID, player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation()))
  2045.             {
  2046.                 delete creature;
  2047.                 return true;
  2048.             }
  2049.             creature->SaveToDB(player->GetMapId(), (1 << map->GetSpawnMode()), player->GetPhaseMaskForSpawn());
  2050.  
  2051.             ObjectGuid::LowType db_guid = creature->GetSpawnId();
  2052.  
  2053.             creature->CleanupsBeforeDelete();
  2054.             delete creature;
  2055.             creature = new Creature();
  2056.  
  2057.             if (!creature->LoadCreatureFromDB(db_guid, map))
  2058.             {
  2059.                 delete creature;
  2060.                 return true;
  2061.             }
  2062.             sObjectMgr->AddCreatureToGrid(db_guid, sObjectMgr->GetCreatureData(db_guid));
  2063.  
  2064.             CharacterDatabase.PExecute("UPDATE player_house SET npcs_spawned = npcs_spawned + 1 WHERE player_guid = %u", PlrGUID);
  2065.         }
  2066.         else
  2067.         {
  2068.             ChatHandler(player->GetSession()).PSendSysMessage("NPC spawn limit reached!");
  2069.         }
  2070.     }
  2071.     else
  2072.     {
  2073.         TeleportToLand(player);
  2074.     }
  2075.     return true;
  2076. }
  2077.  
  2078. bool DeleteNPC(Player *player)
  2079. {
  2080.     // Creature* creep = player->GetSelectedUnit()->ToCreature();
  2081.     Unit* unit = player->GetSelectedUnit();
  2082.     uint32 PlrGUID = player->GetSession()->GetGUIDLow();
  2083.  
  2084.     if (!unit || unit->GetTypeId() != TYPEID_UNIT)
  2085.     {
  2086.         ChatHandler(player->GetSession()).PSendSysMessage("You need to select an NPC.");
  2087.         return false;
  2088.     }
  2089.  
  2090.     Creature* creep = unit->ToCreature();
  2091.     if (!creep)
  2092.         return false;
  2093.     if (creep->IsPet() || creep->IsHunterPet() || creep->IsControlledByPlayer() || creep->IsSpiritHealer() || creep->IsSummon())
  2094.         return false;
  2095.  
  2096.  
  2097.     /*if(!IsAllowedCreature(creep->GetEntry()))
  2098.     {
  2099.     ChatHandler(player->GetSession()).PSendSysMessage("Your not allowed to delete that creature.");
  2100.     return false;
  2101.     }*/
  2102.  
  2103.     float playerx = creep->GetPositionX();
  2104.     float playery = creep->GetPositionY();
  2105.     float top_x;
  2106.     float bottom_x;
  2107.     float left_y;
  2108.     float right_y;
  2109.  
  2110.     QueryResult result = CharacterDatabase.PQuery("SELECT bottom_x, top_x, left_y, right_y FROM player_house_taken WHERE player_guid = %u AND map_id=%u", PlrGUID, player->GetMap()->GetId());
  2111.     do
  2112.     {
  2113.         Field *fields = result->Fetch();
  2114.         bottom_x = fields[0].GetFloat();
  2115.         top_x = fields[1].GetFloat();
  2116.         left_y = fields[2].GetFloat();
  2117.         right_y = fields[3].GetFloat();
  2118.  
  2119.         if (playerx < bottom_x && playerx > top_x && playery < left_y && playery > right_y)
  2120.         {
  2121.             ChatHandler(player->GetSession()).PSendSysMessage("%s has been deleted!", creep->GetName());
  2122.             creep->CombatStop();
  2123.             creep->DeleteFromDB();
  2124.             creep->AddObjectToRemoveList();
  2125.             CharacterDatabase.PExecute("UPDATE player_house SET npcs_spawned = npcs_spawned - 1 WHERE player_guid = %u", PlrGUID);
  2126.  
  2127.             return true;
  2128.         }
  2129.  
  2130.     }
  2131.  
  2132.     while (result->NextRow());
  2133.  
  2134.     ChatHandler(player->GetSession()).PSendSysMessage("%s is not located on your land!", creep->GetName());
  2135.     return false;
  2136. }
  2137.  
  2138. class playerhouse_commandscript : public CommandScript
  2139. {
  2140. public:
  2141.     playerhouse_commandscript() : CommandScript("playerhouse_commandscript") { }
  2142.  
  2143.     std::vector<ChatCommand> GetCommands() const override
  2144.     {
  2145.  
  2146.         static std::vector<ChatCommand> playerhouseCommandTable =
  2147.         {
  2148.             { "add",         rbac::RBAC_PERM_COMMAND_GOBJECT,           false, &HandleAddPlayerHouse,                 "" },
  2149.             { "fix",         rbac::RBAC_PERM_COMMAND_GOBJECT,           false, &HandleFixPlayerHouse,                 "" }
  2150.         };
  2151.  
  2152.         static std::vector<ChatCommand> commandTable =
  2153.         {
  2154.             { "house",       rbac::RBAC_PERM_COMMAND_GOBJECT,           false, NULL,            "", playerhouseCommandTable }
  2155.         };
  2156.         return commandTable;
  2157.     }
  2158.  
  2159.     static bool HandleFixPlayerHouse(ChatHandler* handler, const char* /*args*/)
  2160.     {
  2161.         Player* player = handler->GetSession()->GetPlayer();
  2162.  
  2163.         if (player->GetSession()->GetSecurity() == SEC_ADMINISTRATOR)
  2164.         {
  2165.             CharacterDatabase.PExecute("ALTER TABLE player_house_available DROP id");
  2166.             CharacterDatabase.PExecute("ALTER TABLE player_house_available AUTO_INCREMENT = 1");
  2167.             CharacterDatabase.PExecute("ALTER TABLE player_house_available ADD id int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
  2168.             handler->PSendSysMessage("Houses are now set in order!");
  2169.         }
  2170.         else
  2171.         {
  2172.             handler->PSendSysMessage("Only rank 10 people can use this command.");
  2173.             return false;
  2174.         }
  2175.  
  2176.         return true;
  2177.     }
  2178.  
  2179.     static bool HandleAddPlayerHouse(ChatHandler* handler, char const* args)
  2180.     {
  2181.         if (!*args)
  2182.             return false;
  2183.  
  2184.         char* tailStr = *args != '"' ? strtok(NULL, "") : (char*)args;
  2185.         if (!tailStr)
  2186.             return false;
  2187.  
  2188.         char* nameStr = handler->extractQuotedArg(tailStr);
  2189.         if (!nameStr)
  2190.             return false;
  2191.  
  2192.         std::string HouseName = nameStr;
  2193.  
  2194.         char* _price = strtok(NULL, " ");
  2195.         uint32 price;
  2196.  
  2197.         if (!_price)
  2198.             price = 10;
  2199.         else
  2200.             price = atoi(_price);
  2201.  
  2202.         if (!price || price == NULL || price <= 0)
  2203.             price = 10;
  2204.  
  2205.         //Check to see how many locations are in the DB (10max)
  2206.         QueryResult result = CharacterDatabase.PQuery("SELECT * FROM player_house_available");
  2207.         if (result)
  2208.         {
  2209.             if (result->GetRowCount() >= 20)
  2210.             {
  2211.                 handler->PSendSysMessage("You can only have 20 active locations at a time!");
  2212.                 return true;
  2213.             }
  2214.         }
  2215.  
  2216.         //Cordinates for available house
  2217.         float top_x = 0;
  2218.         float bottom_x = 0;
  2219.         float left_y = 0;
  2220.         float right_y = 0;
  2221.  
  2222.         //Varibles used throughout code
  2223.         Player* player = handler->GetSession()->GetPlayer();
  2224.         float player_x = player->GetPositionX();
  2225.         float player_y = player->GetPositionY();
  2226.         float player_z = player->GetPositionZ();
  2227.         uint32 mapid = player->GetMapId();
  2228.         Map* map = player->GetMap();
  2229.  
  2230.         //Check to see if you are to close to available players land
  2231.         result = CharacterDatabase.PQuery("SELECT bottom_x, top_x, left_y, right_y FROM player_house_available WHERE map_id= '%u'", mapid);
  2232.         if (result)
  2233.         {
  2234.             do
  2235.             {
  2236.                 Field *fields = result->Fetch();
  2237.                 bottom_x = fields[0].GetFloat() - 40.0;
  2238.                 top_x = fields[1].GetFloat() + 40.0;
  2239.                 left_y = fields[2].GetFloat() - 40.0;
  2240.                 right_y = fields[3].GetFloat() + 40.0;
  2241.  
  2242.                 if (player_x > bottom_x && player_x < top_x && player_y > left_y && player_y < right_y)
  2243.                 {
  2244.                     handler->PSendSysMessage("You are to close to another players reserved land! Please move further away and try again.");
  2245.                     return true;
  2246.                 }
  2247.             } while (result->NextRow());
  2248.         }
  2249.  
  2250.         //Check to see if occupied land is close to where youre located.
  2251.         result = CharacterDatabase.PQuery("SELECT bottom_x, top_x, left_y, right_y FROM player_house_taken WHERE map_id= '%u'", mapid);
  2252.         if (result)
  2253.         {
  2254.             do
  2255.             {
  2256.                 Field *fields = result->Fetch();
  2257.                 bottom_x = fields[0].GetFloat() - 40.0;
  2258.                 top_x = fields[1].GetFloat() + 40.0;
  2259.                 left_y = fields[2].GetFloat() - 40.0;
  2260.                 right_y = fields[3].GetFloat() + 40.0;
  2261.                 if (player_x > bottom_x && player_x < top_x && player_y > left_y && player_y < right_y)
  2262.                 {
  2263.                     handler->PSendSysMessage("You are to close to another players land! Please move further away and try again.");
  2264.                     return true;
  2265.                 }
  2266.             } while (result->NextRow());
  2267.         }
  2268.  
  2269.         //Set bottom_x, left_y as highest value
  2270.         if ((player_x - 23) >(player_x + 23))
  2271.         {
  2272.             bottom_x = player_x - 23;
  2273.             top_x = player_x + 23;
  2274.         }
  2275.         else
  2276.         {
  2277.             bottom_x = player_x + 23;
  2278.             top_x = player_x - 23;
  2279.         }
  2280.         if ((player_y + 23) > (player_y - 23))
  2281.         {
  2282.             left_y = player_y + 23;
  2283.             right_y = player_y - 23;
  2284.         }
  2285.         else
  2286.         {
  2287.             left_y = player_y - 23;
  2288.             right_y = player_y + 23;
  2289.         }
  2290.  
  2291.         Creature* creature = new Creature();
  2292.         if (!creature->Create(map->GenerateLowGuid<HighGuid::Unit>(), map, player->GetPhaseMaskForSpawn(), 555555, player_x, player_y, player_z + 3, 0))
  2293.         {
  2294.             delete creature;
  2295.             return false;
  2296.         }
  2297.  
  2298.         creature->SaveToDB(mapid, (1 << map->GetSpawnMode()), player->GetPhaseMaskForSpawn());
  2299.  
  2300.         ObjectGuid::LowType db_guid = creature->GetSpawnId();
  2301.  
  2302.         // To call _LoadGoods(); _LoadQuests(); CreateTrainerSpells()
  2303.         // current "creature" variable is deleted and created fresh new, otherwise old values might trigger asserts or cause undefined behavior
  2304.         creature->CleanupsBeforeDelete();
  2305.         delete creature;
  2306.         creature = new Creature();
  2307.         if (!creature->LoadCreatureFromDB(db_guid, map))
  2308.         {
  2309.             delete creature;
  2310.             return false;
  2311.         }
  2312.  
  2313.         sObjectMgr->AddCreatureToGrid(db_guid, sObjectMgr->GetCreatureData(db_guid));
  2314.  
  2315.  
  2316.         CharacterDatabase.EscapeString(HouseName);
  2317.         //Insert data into available houses
  2318.         CharacterDatabase.PExecute("INSERT INTO player_house_available (zone_name, price, map_id, bottom_x, top_x, left_y, right_y, spawn_x, spawn_y, spawn_z, spawn_o, c_guid) VALUES (\"%s\", %u, %u, %f, %f, %f, %f, %f, %f, %f, %f, %u)",
  2319.             HouseName.c_str(), price, mapid, bottom_x, top_x,
  2320.             left_y, right_y, player_x, player_y,
  2321.             player->GetPositionZ(), player->GetOrientation(), db_guid);
  2322.  
  2323.         handler->PSendSysMessage("Success! %s has been added for %u tokens to the database as possible land!", HouseName, price);
  2324.         return true;
  2325.     }
  2326. };
  2327.  
  2328. /*
  2329. -----
  2330. END NPC METHODS
  2331. ---
  2332. */
  2333.  
  2334. void AddSC_npc_player_house()
  2335. {
  2336.     new npc_player_house();
  2337.     new playerhouse_commandscript();
  2338.  
  2339. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement