Advertisement
Guest User

Untitled

a guest
Mar 14th, 2010
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.41 KB | None | 0 0
  1. --[[
  2.  
  3.     Guild zone system.
  4.     Scripted by Grandelf.
  5.    
  6.         This system is using area id's not zone ids. Reason behind this is because zones are way to big.
  7.         You have to run this query into your char DB:
  8.        
  9.             DROP TABLE IF EXISTS `guild`;
  10.             CREATE TABLE `guild` (
  11.               `GuildId` int(19) default NULL,
  12.               `Zone1` int(19) default NULL,
  13.               `Zone2` int(19) default NULL,
  14.               `Zone3` int(19) default NULL,
  15.               `Zone4` int(19) default NULL,
  16.               `Zone5` int(19) default NULL,
  17.               `Map` int(8) default NULL,
  18.               `PosX` float default NULL,
  19.               `PosY` float default NULL,
  20.               `PosZ` float default NULL
  21.             ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  22.        
  23.         Also make sure you have added this line in your optional.conf:
  24.            
  25.             <LuaHypArc AllowCharDBQueries="1">
  26.  
  27. ]]--
  28.  
  29. GUILD = {}
  30.  
  31. local BuyZone = "#buy zone"
  32. local SellZone = "#sell zone"
  33. local AddTele = "#add tele"
  34. local TeleMsg = "#area tele"
  35. local ZoneInfo = "#zone info"
  36. local OwnedZones = "#owned zones"
  37. local Buff = "#buff"
  38. local Commands = "#guild commands"
  39.  
  40. local BUYPRICE = 50000          -- Money needed to buy a zone, in copper.
  41. local SELLPRICE = 50000         -- Money player gets when he sells a zone.
  42.  
  43. -- Add AREA ID's here players can't buy. So not the zone id, but the area id. You dont have to added instances, they are all blocked.
  44. local NotBuyableAreas = {
  45.     1741, -- Gurubashi Tribune
  46.     2177, -- Gurubashi Ring
  47. }
  48.    
  49.  
  50. function GUILD.ZoneCommands(event, player, message, type, language)
  51.     local msg = message:lower(player)
  52.     if (msg == BuyZone) and (player:IsInGuild() == true) and (player:GetGuildLeader() == player:GetName()) then
  53.         if (GuildAreaCheck(player) == true) then
  54.             if (AreaCheck(player) == true) then
  55.                 if (RestrictedArea(player) == true) and (player:GetInstanceID() == nil) then
  56.                     if (player:GetCoinage() >= BUYPRICE) then
  57.                         AddArea(player)
  58.                         player:DealGoldCost(BUYPRICE)
  59.                         player:SendBroadcastMessage("You succesfully bought this zone!")
  60.                     else
  61.                         player:SendBroadcastMessage("You dont have enough gold to buy this zone.")
  62.                     end
  63.                 else
  64.                     player:SendBroadcastMessage("This zone is not for sale.")
  65.                 end
  66.             else
  67.                 player:SendBroadcastMessage("This zone is already bought by a guild.")
  68.             end
  69.         else
  70.             player:SendBroadcastMessage("Your guild already owns the maximum of allowed zones.")
  71.         end
  72.         return 0   
  73.     end
  74.     if (msg:find(SellZone.." ") == 1) and (player:IsInGuild() == true) and (player:GetGuildLeader() == player:GetName()) then
  75.         local AreaId = msg:gsub(SellZone.." ", "")
  76.         if (OwnsArea(player, AreaId) == 1) then
  77.             CharDBQuery("UPDATE guild SET Zone1 = '0' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  78.             player:SendBroadcastMessage("You succesfully sold zone "..AreaId..".")
  79.             player:DealGoldMerit(SELLPRICE)
  80.         elseif (OwnsArea(player, AreaId) == 2) then
  81.             CharDBQuery("UPDATE guild SET Zone2 = '0' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  82.             player:DealGoldMerit(SELLPRICE)
  83.             player:SendBroadcastMessage("You succesfully sold zone "..AreaId..".")
  84.         elseif (OwnsArea(player, AreaId) == 3) then
  85.             CharDBQuery("UPDATE guild SET Zone3 = '0' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  86.             player:SendBroadcastMessage("You succesfully sold zone "..AreaId..".")
  87.             player:DealGoldMerit(SELLPRICE)
  88.         elseif (OwnsArea(player, AreaId) == 4) then
  89.             CharDBQuery("UPDATE guild SET Zone4 = '0' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  90.             player:SendBroadcastMessage("You succesfully sold zone "..AreaId..".")
  91.             player:DealGoldMerit(SELLPRICE)
  92.         elseif (OwnsArea(player, AreaId) == 5) then
  93.             CharDBQuery("UPDATE guild SET Zone5 = '0' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  94.             player:SendBroadcastMessage("You succesfully sold zone "..AreaId..".")
  95.             player:DealGoldMerit(SELLPRICE)
  96.         else
  97.             player:SendBroadcastMessage("This zone is not yours!")
  98.         end
  99.         return 0
  100.     end
  101.     if (msg == AddTele) and (player:IsInGuild() == true) and (player:GetGuildLeader() == player:GetName()) then
  102.         local AreaId = tostring(player:GetAreaId())
  103.         if (OwnsArea(player, AreaId) == 1) or (OwnsArea(player, AreaId) == 2) or (OwnsArea(player, AreaId) == 3) or (OwnsArea(player, AreaId) == 4) or (OwnsArea(player, AreaId) == 5) then
  104.             CharDBQuery("UPDATE guild SET Map = '"..player:GetMapId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  105.             CharDBQuery("UPDATE guild SET PosX = '"..player:GetX().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  106.             CharDBQuery("UPDATE guild SET PosY = '"..player:GetY().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  107.             CharDBQuery("UPDATE guild SET PosZ = '"..player:GetZ().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  108.             player:SendBroadcastMessage("You and your guildmembers can now teleport here by using "..TeleMsg..".")
  109.         else
  110.             player:SendBroadcastMessage("This zone is not yours!")
  111.         end
  112.         return 0
  113.     end
  114.     if (msg == TeleMsg) then
  115.         if (player:IsInGuild() == true) then
  116.             if (CharDBQuery("SELECT PosX FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  117.                 player:Teleport(CharDBQuery("SELECT Map FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0), CharDBQuery("SELECT PosX FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0), CharDBQuery("SELECT PosY FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0), CharDBQuery("SELECT PosZ FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0))
  118.             else
  119.                 player:SendBroadcastMessage("Your guild does not have a zone or the guildmaster did not set a teleport position.")
  120.             end
  121.         else
  122.             player:SendBroadcastMessage("You have to be in a guild in order to use this command.")
  123.         end
  124.         return 0
  125.     end
  126.     if (msg == ZoneInfo) then
  127.         if (RestrictedArea(player) == false) or (player:GetInstanceID() ~= nil) then
  128.             player:SendBroadcastMessage("AreaId: "..player:GetAreaId()..".")
  129.             player:SendBroadcastMessage("Status: Cannot be bought.")
  130.         elseif (AreaCheck(player) == false) then   
  131.             player:SendBroadcastMessage("AreaId: "..player:GetAreaId()..".")
  132.             player:SendBroadcastMessage("Status: Currently not for sale.")
  133.         else
  134.             player:SendBroadcastMessage("AreaId: "..player:GetAreaId()..".")
  135.             player:SendBroadcastMessage("Status: For sale.")
  136.         end
  137.         return 0
  138.     end
  139.     if (msg == OwnedZones) then
  140.         if (CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") or (CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") or (CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") or (CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") or (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  141.             player:SendBroadcastMessage("Area's your guild currently owns are:")
  142.             if (CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  143.                 player:SendBroadcastMessage(""..CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0).."")
  144.             end
  145.             if (CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  146.                 player:SendBroadcastMessage(""..CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0).."")
  147.             end
  148.             if (CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  149.                 player:SendBroadcastMessage(""..CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0).."")
  150.             end
  151.             if (CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  152.                 player:SendBroadcastMessage(""..CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0).."")
  153.             end
  154.             if (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) ~= "0") then
  155.                 player:SendBroadcastMessage(""..CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0).."")
  156.             end
  157.         else
  158.             player:SendBroadcastMessage("Your guild does not own any zones.")
  159.         end
  160.         return 0
  161.     end
  162.     if (msg == Buff) then
  163.         local AreaId = tostring(player:GetAreaId())
  164.         if (OwnsArea(player, AreaId) == 1) or (OwnsArea(player, AreaId) == 2) or (OwnsArea(player, AreaId) == 3) or (OwnsArea(player, AreaId) == 4) or (OwnsArea(player, AreaId) == 5) then
  165.             player:CastSpell(56525) -- Blessing of Kings
  166.             player:CastSpell(48162) -- Prayer of Fortitude
  167.             player:CastSpell(48074) -- Prayer of Spirit
  168.             player:CastSpell(48470) -- Gift of the Wild
  169.             player:CastSpell(53307) -- Thorns
  170.         else
  171.             player:SendBroadcastMessage("You can only use this in the areas your guild owns.")
  172.         end
  173.         return 0
  174.     end
  175.     if (msg == Commands) then
  176.         if (player:IsInGuild() == true) and (player:GetGuildLeader() == player:GetName()) then
  177.             player:SendBroadcastMessage("Commands available for you:")
  178.             player:SendBroadcastMessage(""..BuyZone.." - To buy a zone.")
  179.             player:SendBroadcastMessage(""..SellZone.." AreaId - To sell a zone.")
  180.             player:SendBroadcastMessage(""..AddTele.." - To add a teleport you and your guild members can use.")
  181.             player:SendBroadcastMessage(""..TeleMsg.." - Teleport to the place your guildmaster set.")
  182.             player:SendBroadcastMessage(""..ZoneInfo.." - Displays the status + area id of the area you are at.")
  183.             player:SendBroadcastMessage(""..OwnedZones.." - Displays the zones your guild currently owns.")
  184.             player:SendBroadcastMessage(""..Buff.." - Buffs you while in an area your guild owns.")
  185.         elseif (player:IsInGuild() == true) then
  186.             player:SendBroadcastMessage("Commands available for you:")
  187.             player:SendBroadcastMessage(""..TeleMsg.." - Teleport to the place your guildmaster set.")
  188.             player:SendBroadcastMessage(""..ZoneInfo.." - Displays the status + area id of the area you are at.")
  189.             player:SendBroadcastMessage(""..OwnedZones.." - Displays the zones your guild currently owns.")
  190.             player:SendBroadcastMessage(""..Buff.." - Buffs you while in an area your guild owns.")
  191.         end
  192.         return 0
  193.     end    
  194. end
  195.                
  196. function GuildAreaCheck(player)
  197.     if (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == false) then
  198.         CharDBQuery("INSERT INTO guild(GuildId, Zone1, Zone2, Zone3, Zone4, Zone5, Map, PosX, PosY, PosZ) VALUES ('"..player:GetGuildId().."', '0', '0', '0', '0', '0', '0', '0', '0', '0')", 0)
  199.         return true
  200.     elseif (CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") or (CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") or (CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") or (CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") or (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then
  201.         return true
  202.     else
  203.         return false
  204.     end
  205. end
  206.  
  207. function AreaCheck(player)
  208.     if (CharDBQuery("SELECT Zone1 FROM guild WHERE Zone1 = '"..player:GetAreaId().."'", 0) == false) and (CharDBQuery("SELECT Zone2 FROM guild WHERE Zone2 = '"..player:GetAreaId().."'", 0) == false) and (CharDBQuery("SELECT Zone3 FROM guild WHERE Zone3 = '"..player:GetAreaId().."'", 0) == false) and (CharDBQuery("SELECT Zone4 FROM guild WHERE Zone4 = '"..player:GetAreaId().."'", 0) == false) and (CharDBQuery("SELECT Zone5 FROM guild WHERE Zone5 = '"..player:GetAreaId().."'", 0) == false) then
  209.         return true
  210.     else
  211.         return false
  212.     end
  213. end
  214.  
  215. function AddArea(player)
  216.     if (CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then
  217.         CharDBQuery("UPDATE guild SET Zone1 = '"..player:GetAreaId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  218.     elseif (CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then 
  219.         CharDBQuery("UPDATE guild SET Zone2 = '"..player:GetAreaId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  220.     elseif (CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then 
  221.         CharDBQuery("UPDATE guild SET Zone3 = '"..player:GetAreaId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  222.     elseif (CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then 
  223.         CharDBQuery("UPDATE guild SET Zone4 = '"..player:GetAreaId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  224.     elseif (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == "0") then 
  225.         CharDBQuery("UPDATE guild SET Zone5 = '"..player:GetAreaId().."' WHERE GuildId = '"..player:GetGuildId().."'", 0)
  226.     end
  227. end
  228.  
  229. function RestrictedArea(player)
  230.     for k, v in pairs(NotBuyableAreas) do
  231.         if (player:GetAreaId() ~= v) then
  232.             return true
  233.         else
  234.             return false
  235.         end
  236.     end
  237. end
  238.            
  239. function OwnsArea(player, AreaId)
  240.     if (CharDBQuery("SELECT Zone1 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == AreaId) then
  241.         return 1
  242.     elseif (CharDBQuery("SELECT Zone2 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == AreaId) then
  243.         return 2
  244.     elseif (CharDBQuery("SELECT Zone3 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == AreaId) then
  245.         return 3
  246.     elseif (CharDBQuery("SELECT Zone4 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == AreaId) then
  247.         return 4
  248.     elseif (CharDBQuery("SELECT Zone5 FROM guild WHERE GuildId = '"..player:GetGuildId().."'", 0) == AreaId) then
  249.         return 5
  250.     else
  251.         return false
  252.     end
  253. end
  254.  
  255. RegisterServerHook(16, "GUILD.ZoneCommands")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement