Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ************************************************
- -- ********** Grumbo'z Guild Warz System **********
- -- ** Brought to you by slp13at420 of xx-xxx.org **
- -- ************************************************
- print("\nGrumbo'z Guild Warz System Loading:\n")
- if(GetLuaEngine()~="ALE")then
- print("err: "..GetLuaEngine().." Detected.\n")
- print("LOAD HALTED...idiot")
- return false;
- end
- if(GetLuaEngine()=="ALE")then
- print("Approved: ALE Detected.\n")
- end
- local table_version = 1.00
- local core_version = 5.20
- local pigpayz_version = 1.75
- local tele_version = 1.75
- local pvp_version = 3.75
- GWARZ = {
- Entry = {},
- Mapid = {},
- Areaid = {},
- Zoneid = {},
- Guildname = {},
- Team = {},
- X = {},
- Y = {},
- Z = {},
- Buildingcnt = {},
- Pigcnt = {},
- Guardcnt = {},
- Flagid = {}
- }
- local function LoadGWtable()
- local Gwsql = WorldDBQuery("SELECT entry, map_id, area_id, zone_id, guild_name, team, x, y, z, building_count, pig_count, guard_count, flag_id FROM guild_warz.zones;");
- if(Gwsql)then
- repeat
- GWARZ[Gwsql:GetColumn(0):GetULong()] = {
- Entryid = Gwsql:GetColumn(0):GetULong(),
- Mapid = Gwsql:GetColumn(1):GetULong(),
- Areaid = Gwsql:GetColumn(2):GetULong(),
- Zoneid = Gwsql:GetColumn(3):GetULong(),
- Guildname = Gwsql:GetColumn(4):GetString(),
- Team = Gwsql:GetColumn(5):GetULong(),
- X = Gwsql:GetColumn(6):GetFloat(),
- Y = Gwsql:GetColumn(7):GetFloat(),
- Z = Gwsql:GetColumn(8):GetFloat(),
- Buildingcnt = Gwsql:GetColumn(9):GetULong(),
- Pigcnt = Gwsql:GetColumn(10):GetULong(),
- Guardcnt = Gwsql:GetColumn(11):GetULong(),
- Flagid = Gwsql:GetColumn(12):GetULong()
- }
- until not Gwsql:NextRow()
- end
- end
- LoadGWtable()
- print("Guild Warz tables version:"..table_version.."")
- local Server = "SERVER"
- local commands = ".gcommands"
- local info = ".ginfo"
- local list = ".glist"
- local version = ".gver"
- local zcost = 10
- local hcost = 5
- local pcost = 1
- local gcost = 1
- local hlimit = 1
- local plimit = 20
- local glimit = 10
- local buyloc = ".gbuy area"
- local buyhouse = ".gbuy house"
- local buypig = ".gbuy pig"
- local buyguard = ".gbuy guard"
- local sellloc = ".gsell area"
- local sellhouse = ".gsell house"
- local sellpig = ".gsell pig"
- local sellguard = ".gremove guard"
- local reset = ".greset"
- local reseth = ".greset house"
- local resetp = ".greset pig"
- local resetg = ".greset guard"
- local returnf = ".gspawn flag"
- local details = ".gloc"
- local reload = ".greload table"
- local GW_version = ((table_version+core_version+pigpayz_version+tele_version+pvp_version)/4)
- local Currency = 62006 -- item id for guild coin . can be changed to what item id you want
- local Currencynamedb = WorldDBQuery("SELECT `name1` FROM `items` WHERE `entry` = '"..Currency.."';"); -- did it this way to make broadcasts a little more proffesional lol
- local Currencyname = Currencynamedb:GetColumn(0):GetString()
- -- ******************************************************
- -- CORE : Guild Master/Member Commands/custom functions
- -- ******************************************************
- local function GetLocationId(player, unit)
- local Locdb=WorldDBQuery("SELECT `entry` FROM guild_warz.zones WHERE `map_id`='"..player:GetMapId().."' AND `area_id`='"..player:GetAreaId().."' and `zone_id`='"..player:GetZoneId().."';");
- return Locdb:GetColumn(0):GetULong() or 0;
- end
- local function CreateLocation(map, area, zone)
- local CLentrydb = WorldDBQuery("SELECT `entry` FROM guild_warz.zones;");
- repeat
- CLentry = CLentrydb:GetColumn(0):GetLong()
- until(CLentrydb:NextRow()~=true)
- CLentry=(CLentry+1)
- WorldDBQuery("INSERT INTO guild_warz.zones SET `entry` = '"..CLentry.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `map_id` = '"..map.."' WHERE `entry` = '"..CLentry.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `area_id` = '"..area.."' WHERE `entry` = '"..CLentry.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `zone_id` = '"..zone.."' WHERE `entry` = '"..CLentry.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `guild_name` = '"..Server.."' WHERE `entry` = '"..CLentry.."';");
- GWARZ[CLentry] = {}
- GWARZ[CLentry].Entryid = CLentry
- GWARZ[CLentry].Mapid = map
- GWARZ[CLentry].Areaid = area
- GWARZ[CLentry].Zoneid = zone
- GWARZ[CLentry].Guildname = Server
- GWARZ[CLentry].Team = 2
- GWARZ[CLentry].Buildingcnt = 0
- GWARZ[CLentry].Pigcnt = 0
- GWARZ[CLentry].Guardcnt = 0
- GWARZ[CLentry].Flagid = 0
- print(""..CLentry..": created")
- end
- function GWcommands(event, pPlayer, msg, type, language)
- local Xentrydb = WorldDBQuery("SELECT `entry` FROM guild_warz.zones WHERE `map_id` = '"..pPlayer:GetMapId().."' AND `area_id` = '"..pPlayer:GetAreaId().."' AND `zone_id` = '"..pPlayer:GetZoneId().."';");
- if(Xentrydb==nil)then
- CreateLocation(pPlayer:GetMapId(), pPlayer:GetAreaId(), pPlayer:GetZoneId())
- end
- local LocId = GetLocationId(pPlayer)
- local Zoneprice=(zcost)+(hcost*GWARZ[LocId].Buildingcnt)+(pcost*GWARZ[LocId].Pigcnt)-- 10 coins for basic zone, 5 coins for building, 1 coin per boar
- local yentry = 0
- local ypigcnt = 0
- local yvalue = 0
- local GW_version = ((table_version+core_version+pigpayz_version+tele_version+pvp_version)/4)
- -- **** CORE : Guild Member Commands ********** --
- -- ******************************************** --
- if(pPlayer:IsInGuild()==true)then
- if(msg==commands)then
- if(pPlayer:IsInGuild()==true)then
- pPlayer:SendBroadcastMessage("*************************************")
- pPlayer:SendBroadcastMessage("Guild Member Commands:")
- pPlayer:SendBroadcastMessage("|cff00cc00"..commands.." list guild commands.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..info.." lists area info.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..list.." lists areas owned.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 by your guild.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00.gtele `location` teleport to area|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 by location id.|r")
- pPlayer:SendBroadcastMessage("*************************************")
- end
- if(pPlayer:GetGuildLeader()==pPlayer:GetName())then
- pPlayer:SendBroadcastMessage("Guild Master Commands:")
- pPlayer:SendBroadcastMessage("|cff00cc00"..buyloc.." -purchase area.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 for 10 "..Currencyname.."'s.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 base price is 10 "..Currencyname..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 a house and pigs will change the value.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..sellloc.." -sell area for its current value.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..buyhouse.." -purchase a guild house.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 for 5 "..Currencyname.."'s.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..sellhouse.." -sell guild house.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..buypig.." -purchase a pig.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 for 1 "..Currencyname..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..sellpig.." -sell a pig to market.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..buyguard.." -purchase guard.")
- pPlayer:SendBroadcastMessage("|cff00cc00 for 1 "..Currencyname..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..sellguard.." -removes a selected guard.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 guards are disposable.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 no chash back.|r")
- pPlayer:SendBroadcastMessage("*************************************")
- pPlayer:SendBroadcastMessage("Prices")
- pPlayer:SendBroadcastMessage("|cff00cc00Zone price: "..zcost..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00House price: "..hcost..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Pig price: "..pcost..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Guard price: "..gcost..".|r")
- pPlayer:SendBroadcastMessage("*************************************")
- pPlayer:SendBroadcastMessage("Limits")
- pPlayer:SendBroadcastMessage("|cff00cc00House limit: "..hlimit..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Pig limit: "..plimit..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Guard limit: "..glimit..".|r")
- pPlayer:SendBroadcastMessage("*************************************")
- end
- if(pPlayer:GetGmRank()=="cghij")or(pPlayer:GetGmRank()=="az")then
- pPlayer:SendBroadcastMessage("Game Master Commands:")
- pPlayer:SendBroadcastMessage("|cff00cc00"..details.." -location info.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..reset.." -Resets location to server.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..reload.." -Reloads GW tables.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..reseth.." -Resets location house count to 0.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..resetp.." -Resets location pig count to 0.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..resetg.." -Resets location guard count to 0.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..returnf.." -Spawns new flag if current|r")
- pPlayer:SendBroadcastMessage("|cff00cc00 flag is missing.|r")
- pPlayer:SendBroadcastMessage("*************************************")
- end
- return false;
- end
- if(msg==info)then
- pPlayer:SendBroadcastMessage("**********************************")
- pPlayer:SendBroadcastMessage("|cff00cc00Loc ID: "..GWARZ[LocId].Entryid..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Owner: "..GWARZ[LocId].Guildname..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Building: "..GWARZ[LocId].Buildingcnt.."|r")
- pPlayer:SendBroadcastMessage("|cff00cc00pigs: "..GWARZ[LocId].Pigcnt.."|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Value: "..Zoneprice.." "..Currencyname.."'s.|r")
- if(GWARZ[LocId].Team==0)then
- pPlayer:SendBroadcastMessage("|cff00cc00Faction: Alliance.|r")
- pPlayer:SendBroadcastMessage("**********************************")
- return false;
- end
- if(GWARZ[LocId].Team==1)then
- pPlayer:SendBroadcastMessage("|cff00cc00Faction: Horde.|r")
- pPlayer:SendBroadcastMessage("**********************************")
- return false;
- end
- if(GWARZ[LocId].Team==2)then
- pPlayer:SendBroadcastMessage("|cff00cc00Faction: None|r")
- pPlayer:SendBroadcastMessage("**********************************")
- return false;
- end
- end
- if(msg==list)then
- local Glocdb = WorldDBQuery("SELECT `entry` FROM guild_warz.zones WHERE `guild_name` = '"..pPlayer:GetGuildName().."';");
- if(Glocdb==nil)then
- pPlayer:SendBroadcastMessage("Your guild does not own any land")
- return false;
- end
- if(Glocdb~=nil)then
- pPlayer:SendBroadcastMessage("**********************************************************************")
- pPlayer:SendBroadcastMessage("|cff00cc00Entry: Building: Guards: Pigs: Zone value:|r")
- repeat
- local Gloc = Glocdb:GetColumn(0):GetULong()
- local Xzoneprice=(zcost)+(hcost*GWARZ[Gloc].Buildingcnt)+(pcost*GWARZ[Gloc].Pigcnt)
- pPlayer:SendBroadcastMessage("|cff00cc00"..Gloc.." "..GWARZ[Gloc].Buildingcnt.." "..GWARZ[Gloc].Guardcnt.." "..GWARZ[Gloc].Pigcnt.." "..Xzoneprice.."|r")
- yentry = yentry+1
- ypigcnt = ypigcnt+GWARZ[Gloc].Pigcnt
- yvalue = yvalue+Xzoneprice
- until Glocdb:NextRow()~=true;
- pPlayer:SendBroadcastMessage("**********************************************************************")
- pPlayer:SendBroadcastMessage("|cff00cc00total locations: "..yentry.." total pigs: "..ypigcnt.." Total value: "..yvalue.." "..Currencyname.."'s.|r")
- pPlayer:SendBroadcastMessage("**********************************************************************")
- return false;
- end
- end
- if(msg==version)then
- pPlayer:SendBroadcastMessage("*******************************")
- pPlayer:SendBroadcastMessage("|cff00cc00Grumbo'z Guild Warz.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Core :: "..core_version..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00PigPayz :: "..pigpayz_version..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Teleport :: "..tele_version..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00PvP :: "..pvp_version..".|r")
- pPlayer:SendBroadcastMessage("*******************************")
- return false;
- end
- end
- -- ***** CORE: Guild Master Commands ***** --
- -- *************************************** --
- if(pPlayer:GetGuildLeader()==pPlayer:GetName())then
- -- ******** Buy commands ********* --
- if(msg==buyloc)then
- if(GWARZ[LocId].Guildname~=Server)then
- pPlayer:SendBroadcastMessage("You cannot purchase this area.")
- pPlayer:SendBroadcastMessage(""..GWARZ[LocId].Guildname.." owns this area.")
- return false;
- end
- if(GWARZ[LocId].Guildname==Server)then
- if(pPlayer:GetItemCount(Currency)<Zoneprice)then
- pPlayer:SendBroadcastMessage("You do not have enough "..Currencyname.."'s.")
- return false;
- end
- if(pPlayer:GetItemCount(Currency)>=Zoneprice)then
- Gflag = pPlayer:SpawnGameObject(187432+(pPlayer:GetTeam()), pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), pPlayer:GetO(), 0, 300, 1, 1):GetSpawnId()
- WorldDBQuery("UPDATE guild_warz.zones SET `guild_name` = '"..pPlayer:GetGuildName().."' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `team` = '"..pPlayer:GetTeam().."' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `x` = '"..pPlayer:GetX().."' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `y` = '"..pPlayer:GetY().."' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `z` = '"..pPlayer:GetZ().."' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '"..Gflag.."' WHERE `entry` = '"..LocId.."';");
- GWARZ[LocId].Guildname = pPlayer:GetGuildName()
- GWARZ[LocId].Team = pPlayer:GetTeam()
- GWARZ[LocId].X = pPlayer:GetX()
- GWARZ[LocId].Y = pPlayer:GetY()
- GWARZ[LocId].Z = pPlayer:GetZ()
- GWARZ[LocId].Flagid = Gflag
- pPlayer:RemoveItem(Currency, Zoneprice)
- if(pPlayer:GetGender()==0)then
- pPlayer:SendBroadcastMessage("|cff00cc00Congratulations King "..pPlayer:GetName()..". you have expanded "..pPlayer:GetGuildName().."'s land.|r")
- return false;
- end
- if(pPlayer:GetGender()==1)then
- pPlayer:SendBroadcastMessage("|cff00cc00Congratulations Queen "..pPlayer:GetName()..". you have expanded "..pPlayer:GetGuildName().."'s land.|r")
- return false;
- end
- return false;
- end
- end
- end
- if(msg==buyhouse)then
- if(GWARZ[LocId].Guildname~=pPlayer:GetGuildName())then
- pPlayer:SendBroadcastMessage("Your Guild does not own this land.")
- return false;
- end
- if(GWARZ[LocId].Guildname==pPlayer:GetGuildName())then
- if(pPlayer:GetItemCount(Currency) < hcost)then
- pPlayer:SendBroadcastMessage("You require more "..Currencyname.."'s.")
- return false;
- end
- if(pPlayer:GetItemCount(Currency)>=hcost)then
- if(GWARZ[LocId].Buildingcnt>=hlimit)then
- pPlayer:SendBroadcastMessage("You have "..GWARZ[LocId].Buildingcnt.." house\'s at this location.")
- pPlayer:SendBroadcastMessage("You can only purchase "..hlimit.." house per location.")
- return false;
- end
- if(GWARZ[LocId].Buildingcnt < hlimit)then
- pPlayer:RemoveItem(Currency, hcost)
- WorldDBQuery("UPDATE guild_warz.zones SET `building_count`=`building_count`+'1' WHERE `entry`='"..LocId.."';");
- GWARZ[LocId].Buildingcnt = (GWARZ[LocId].Buildingcnt+1)
- pPlayer:SpawnGameObject(191172, pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), pPlayer:GetO(), 0, 25, 1, 1)
- pPlayer:SendBroadcastMessage("|cff00cc00Congratulations Woodcutter "..pPlayer:GetName()..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00"..pPlayer:GetGuildName().." has added a Guild house at location: "..LocId..".|r")
- return false;
- end
- end
- end
- end
- if(msg==buypig)then
- if(GWARZ[LocId].Guildname~=pPlayer:GetGuildName())then
- pPlayer:SendBroadcastMessage("Your Guild does not own this land.")
- return false;
- end
- if(GWARZ[LocId].Guildname==pPlayer:GetGuildName())then
- if(pPlayer:GetItemCount(Currency) < pcost)then
- pPlayer:SendBroadcastMessage("Each pig costs "..pcost.." "..Currencyname..".")
- return false;
- end
- if(pPlayer:GetItemCount(Currency)>=pcost)then
- if(GWARZ[LocId].Pigcnt>=plimit)then
- pPlayer:SendBroadcastMessage("You have "..GWARZ[LocId].Pigcnt.." pigs at this location.")
- pPlayer:SendBroadcastMessage("You can only have "..plimit.." pigs per area.")
- return false;
- end
- if(GWARZ[LocId].Pigcnt < plimit)then
- pPlayer:RemoveItem(Currency, pcost)
- pPlayer:SpawnCreature(49000, pPlayer:GetX(), pPlayer:GetY(),pPlayer:GetZ(), pPlayer:GetO(), 35, 0, 0, 0, 0, 1, 1)
- WorldDBQuery("UPDATE guild_warz.zones SET `pig_count` = `pig_count`+'1' Where `entry`='"..LocId.."';");
- GWARZ[LocId].Pigcnt = (GWARZ[LocId].Pigcnt+1)
- pPlayer:SendBroadcastMessage("|cff00cc00Congradulations!.|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Farmer "..pPlayer:GetName()..".|r")
- return false;
- end
- end
- end
- end
- if(msg==buyguard)then
- if(GWARZ[LocId].Guildname~=pPlayer:GetGuildName())then
- pPlayer:SendBroadcastMessage("Your Guild does not own this land.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[LocId].Guildname)then
- if(pPlayer:GetItemCount(Currency) < gcost)then
- pPlayer:SendBroadcastMessage("Each guard costs "..gcost.." "..Currencyname..".")
- return false;
- end
- if(pPlayer:GetItemCount(Currency)>=gcost)then
- if(GWARZ[LocId].Guardcnt>=glimit)then
- pPlayer:SendBroadcastMessage("You have "..GWARZ[LocId].Guardcnt.." guards at this location.")
- pPlayer:SendBroadcastMessage("You can only have 10 per location.")
- return false;
- end
- if(GWARZ[LocId].Guardcnt < glimit)then
- WorldDBQuery("UPDATE guild_warz.zones SET `guard_count` = `guard_count`+'1' Where `entry` = '"..LocId.."';");
- pPlayer:SpawnCreature(49001, pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), pPlayer:GetO(), 84-pPlayer:GetTeam(), 0, 0, 0, 0, 1, 1)
- GWARZ[LocId].Guardcnt = (GWARZ[LocId].Guardcnt+1)
- pPlayer:RemoveItem(Currency, gcost)
- pPlayer:SendBroadcastMessage("|cff00cc00Guard added by Commander "..pPlayer:GetName()..".|r")
- return false;
- end
- end
- end
- end
- -- ********** Sell commands ********** --
- if(msg==sellloc)then
- if(GWARZ[LocId].Guildname~=pPlayer:GetGuildName())then
- pPlayer:SendBroadcastMessage("Your guild does not own this land.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[LocId].Guildname)then
- if(pPlayer:GetGameObjectNearestCoords(GWARZ[LocId].X, GWARZ[LocId].Y, GWARZ[LocId].Z, 187432+(pPlayer:GetTeam()))==nil)then
- pPlayer:SendBroadcastMessage("You must be next to your guild flag.")
- pPlayer:SendBroadcastMessage("move closer and try again.")
- return false;
- end
- if(pPlayer:GetGameObjectNearestCoords(GWARZ[LocId].X, GWARZ[LocId].Y, GWARZ[LocId].Z, 187432+(pPlayer:GetTeam()))~=nil)then
- pPlayer:GetGameObjectNearestCoords(GWARZ[LocId].X, GWARZ[LocId].Y, GWARZ[LocId].Z, 187432+(pPlayer:GetTeam())):Despawn(0, 0)
- WorldDBQuery("delete from `gameobject_spawns` where `id`='"..GWARZ[LocId].Flagid.."';") -- use this to avoid ghost respawns
- WorldDBQuery("UPDATE guild_warz.zones SET `team` = '2' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `guild_name` = 'SERVER' WHERE `entry` = '"..LocId.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '0' WHERE `entry` = '"..LocId.."';");
- GWARZ[LocId].Guildname = Server
- GWARZ[LocId].Team = 2
- GWARZ[LocId].Flagid = 0
- pPlayer:AddItem(Currency, Zoneprice)
- pPlayer:SendBroadcastMessage("|cff00cc00!Congratulations! Realtor "..pPlayer:GetGuildName().." has sold this land. For "..Zoneprice.." "..Currencyname.."'s.|r")
- return false;
- end
- end
- end
- if(msg==sellhouse)then
- if(pPlayer:GetGuildName()~=GWARZ[LocId].Guildname)then
- pPlayer:SendBroadcastMessage("Your guild does not own this land.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[LocId].Guildname)then
- if(GWARZ[LocId].Buildingcnt==0)then
- pPlayer:SendBroadcastMessage("Your guild does not own a house at this location.")
- return false;
- end
- if(GWARZ[LocId].Buildingcnt > 0)then
- if(pPlayer:GetGameObjectNearestCoords(pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), 191172)==nil)then
- pPlayer:SendBroadcastMessage("You must be closer.")
- return false;
- end
- if(pPlayer:GetGameObjectNearestCoords(pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), 191172)~=nil)then
- local housespawnid = pPlayer:GetGameObjectNearestCoords(pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), 191172):GetSpawnId() -- use this to avoid ghost respawns
- WorldDBQuery("delete from `gameobject_spawns` where `id`='"..housespawnid.."';")
- pPlayer:GetGameObjectNearestCoords(pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), 191172):Despawn(0, 0)
- WorldDBQuery("UPDATE guild_warz.zones SET `building_count` = `building_count`-'1' WHERE `entry` = '"..LocId.."';");
- GWARZ[LocId].Buildingcnt = (GWARZ[LocId].Buildingcnt-1)
- pPlayer:AddItem(Currency, hcost)
- pPlayer:SendBroadcastMessage("|cff00cc00!Congratulations! Builder "..pPlayer:GetGuildName().." has sold a guild house. For 5 "..Currencyname.."'s.|r")
- return false;
- end
- end
- end
- end
- if(msg==sellpig)then
- if(pPlayer:GetGuildName()~=GWARZ[LocId].Guildname)then
- pPlayer:SendBroadcastMessage("Your guild does not own this land.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[LocId].Guildname)then
- if(GWARZ[LocId].Pigcnt==0)then
- pPlayer:SendBroadcastMessage("You DONT have any pigs in this area.")
- return false;
- end
- if(GWARZ[LocId].Pigcnt > 0)then
- if(pPlayer:GetSelection()==nil)then
- pPlayer:SendBroadcastMessage("You must select a pig.")
- return false;
- end
- if(pPlayer:GetSelection():GetEntry()~=49000)then
- pPlayer:SendBroadcastMessage("you must select a guild pig.")
- return false;
- end
- if(pPlayer:GetSelection():GetEntry()==49000)then
- local pigspawnid = pPlayer:GetSelection():GetSpawnId()
- pPlayer:GetSelection():RemoveFromWorld()
- WorldDBQuery("delete from `creature_spawns` where `id`='"..pigspawnid.."';") -- use this to avoid ghost respawns
- GWARZ[LocId].Pigcnt = (GWARZ[LocId].Pigcnt-1)
- pPlayer:AddItem(Currency, pcost)
- WorldDBQuery("UPDATE guild_warz.zones SET `pig_count` = `pig_count`-'1' Where `entry` = '"..LocId.."';");
- pPlayer:SendBroadcastMessage("|cff00cc00Butcher "..pPlayer:GetName().." sold 1 pig to the market.|r")
- return false;
- end
- end
- end
- end
- if(msg==sellguard)then
- if(pPlayer:GetGuildName()~=GWARZ[LocId].Guildname)then
- pPlayer:SendBroadcastMessage("Your guild does not own this land.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[LocId].Guildname)then
- if(GWARZ[LocId].Guardcnt==0)then
- pPlayer:SendBroadcastMessage("You DONT have any guards in this area.")
- return false;
- end
- if(GWARZ[LocId].Guardcnt > 0)then
- if(pPlayer:GetSelection()==nil)then
- pPlayer:SendBroadcastMessage("You must select a guard.")
- return false;
- end
- if(pPlayer:GetSelection():GetEntry()~=49001)then
- pPlayer:SendBroadcastMessage("You must select a guild guard.")
- return false;
- end
- if(pPlayer:GetSelection():GetEntry()==49001)then
- WorldDBQuery("UPDATE guild_warz.zones SET `guard_count` = `guard_count`-'1' Where `entry` = '"..LocId.."';");
- local guardspawnid = pPlayer:GetSelection():GetSpawnId()
- WorldDBQuery("delete from `creature_spawns` where `id`='"..guardspawnid.."';")
- pPlayer:GetSelection():RemoveFromWorld()
- GWARZ[LocId].Guardcnt = (GWARZ[LocId].Guardcnt-1)
- pPlayer:SendBroadcastMessage("|cff00cc00Guard removed.|r")
- return false;
- end
- end
- end
- end
- end
- --[[ ********** Game Master Commands ********** ]]--
- --[[ ****************************************** ]]--
- if(pPlayer:IsGm()==true)then
- if(msg==reset)then
- WorldDBQuery("UPDATE guild_warz.zones SET `guild_name` = 'SERVER' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `team` = '2' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '0' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- WorldDBQuery("delete from `gameobject_spawns` where `id`='"..GWARZ[LocId].Flagid.."';")
- GWARZ[LocId].Guildname = Server
- GWARZ[LocId].Team = 2
- GWARZ[LocId].Flagid = 0
- pPlayer:SendBroadcastMessage("|cff00cc00Area: "..GWARZ[LocId].Entryid.." succesfully reset.|r")
- return false;
- end
- if(msg==reseth)then
- WorldDBQuery("UPDATE guild_warz.zones SET `building_count` = '0' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- GWARZ[LocId].Buildingcnt = 0
- pPlayer:SendBroadcastMessage("|cff00cc00Area: "..GWARZ[LocId].Entryid.." house count reset.|r")
- return false;
- end
- if(msg==resetp)then
- WorldDBQuery("UPDATE guild_warz.zones SET `pig_count` = '0' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- GWARZ[LocId].Pigcnt = 0
- pPlayer:SendBroadcastMessage("|cff00cc00Area: "..GWARZ[LocId].Entryid.." pig count reset.|r")
- return false;
- end
- if(msg==resetg)then
- WorldDBQuery("UPDATE guild_warz.zones SET `guard_count` = '0' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- GWARZ[LocId].Guardcnt = 0
- pPlayer:SendBroadcastMessage("|cff00cc00Area: "..GWARZ[LocId].Entryid.." guard count reset.|r")
- return false;
- end
- if(msg==resetf)then
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '0' Where `entry` = '"..GWARZ[LocId].Entryid.."';");
- GWARZ[LocId].Flagid = 0
- pPlayer:SendBroadcastMessage("|cff00cc00Area: "..GWARZ[LocId].Entryid.." flag id reset to 0.|r")
- return false;
- end
- if(msg==returnf)then
- returnflag = pPlayer:SpawnGameObject(187432+GWARZ[LocId].Team, pPlayer:GetX(), pPlayer:GetY(), pPlayer:GetZ(), pPlayer:GetO(), 0, 300, 1, 1):GetSpawnId()
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '"..returnflag.."' WHERE `entry` = '"..LocId.."';");
- GWARZ[LocId].Flagid = returnflag
- pPlayer:SendBroadcastMessage("|cff00cc00New flag spawned for Guild Warz location: "..GWARZ[LocId].Entryid.."|r")
- return false;
- end
- if(msg==details)then
- pPlayer:SendBroadcastMessage("|cff00cc00Location ID: "..GWARZ[LocId].Entryid..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Guild Name: "..GWARZ[LocId].Guildname..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Team: "..GWARZ[LocId].Team..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00House count: "..GWARZ[LocId].Buildingcnt..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00Pig count: "..GWARZ[LocId].Pigcnt..".")
- pPlayer:SendBroadcastMessage("|cff00cc00guard count: "..GWARZ[LocId].Guardcnt..".|r")
- pPlayer:SendBroadcastMessage("|cff00cc00flag spawn id: "..GWARZ[LocId].Flagid..".|r")
- return false;
- end
- if(msg==reload)then
- GWtable = {}
- LoadGWtable()
- pPlayer:SendBroadcastMessage("|cff00cc00Grumbo\'z Guild Warz Tables Reloaded.|r")
- return false;
- end
- end
- end
- RegisterServerHook(16, "GWcommands")
- print ("Guild Warz core version: "..core_version.."")
- -- ******************************************************
- -- Pig Payz System
- -- ******************************************************
- local function Payout(player)
- local pig = 0
- local Glocdb = WorldDBQuery("SELECT `entry` FROM guild_warz.zones WHERE `guild_name` = '"..player:GetGuildName().."';");
- if(Glocdb==nil)then
- player:SendGuildChatMessage("PigPayz: 0 gold.", 0)
- player:SendGuildChatMessage("Your guild does not own any pigs.", 0)
- player:SendGuildChatMessage("Inform Your guild master to start some farms.", 0)
- return false;
- end
- if(Glocdb~=nil)then
- repeat
- local Gloc = Glocdb:GetColumn(0):GetLong()
- local Pigcnt = GWARZ[LocId].Pigcnt
- pig = (pig+Pigcnt)
- until Glocdb:NextRow()~=true;
- Pigpayz=(100000*pig)-- pays 10 gold per pig
- player:DealGoldMerit(Pigpayz)
- player:SendBroadcastMessage("PigPayz: "..Pigpayz / '10000'.." gold.")
- return false;
- end
- end
- function Pigpay(event, player)
- for _,v in ipairs(GetPlayersInWorld()) do
- if(v:IsInWorld()==true)and(v:IsInGuild()==true)then
- Payout(v)
- end
- if(v:IsInWorld()==true)and(v:IsInGuild()==true)then
- v:SendBroadcastMessage("|cff00cc00Join a guild to earn hourly rewards from Grumbo\'z Guild Warz.|r")
- end
- end
- end
- RegisterTimedEvent("Pigpay", 1800000, 0) -- fires every 30 mins.
- print ("Pig Payz version: "..pigpayz_version.."")
- -- ******************************************************
- -- Guild Warz teleporter system
- -- ******************************************************
- function Guildteleport(event, pPlayer, message, type, language)
- local ChatMsg = ".gtele"
- local startpos, endpos = string.find(message, ChatMsg)
- if(startpos == 1) then
- local text = message:gsub(ChatMsg, "")
- if(pPlayer:IsInGuild()==true)then
- local Loc = tonumber(text)
- if(GWARZ[Loc]==nil)then
- pPlayer:SendBroadcastMessage("|cffcc0000error.... teleport entry doesn't exsist.|r")
- return false;
- end
- if(GWARZ[Loc]~=nil)then
- if(GWARZ[Loc].Guildname~=pPlayer:GetGuildName())then
- pPlayer:SendBroadcastMessage("Your guild doesn't own that area.")
- pPlayer:SendBroadcastMessage("You cannot teleport there.")
- return false;
- end
- if(pPlayer:GetGuildName()==GWARZ[Loc].Guildname)then
- pPlayer:Teleport(GWARZ[Loc].Mapid, GWARZ[Loc].X, GWARZ[Loc].Y, GWARZ[Loc].Z, 1.0)
- pPlayer:SendBroadcastMessage("|cff00cc00Teleport complete.|r")
- return false;
- end
- return false;
- end
- return false;
- end
- end
- end
- RegisterServerHook(16, "Guildteleport")
- print("Teleporter version: "..tele_version.."")
- -- ****************************************************
- -- GUILD WARZ Action System
- -- ****************************************************
- -- ********** Guild Warz Flag actions ********** --
- function TransferFlag(player, locid, go)
- if(go:GetSpawnId()~=GWARZ[locid].Flagid)then
- player:SendBroadcastMessage("|cffcc0000error.... Phantom flag removed.|r")
- WorldDBQuery("DELETE FROM world.gameobject_spawns WHERE `Entry` = '"..go:GetEntry().."';");
- go:RemoveFromWorld()
- return false;
- end
- if(player:IsInGuild()==false)then
- player:SendBroadcastMessage("|cff00cc00"..GWARZ[locid].Guildname.." own\'s this location "..player:GetName()..".|r")
- player:SendBroadcastMessage("|cff00cc00Join a Guild to participate in Grumbo\'z Guild Warz System.|r")
- player:SendBroadcastMessage("|cff00cc00Brought to you by Grumbo of BloodyWow.com .|r")
- return false;
- end
- if(player:GetTeam()==GWARZ[locid].Team)then
- player:SendBroadcastMessage("|cff00cc00"..GWARZ[locid].Guildname.." own\'s this location.|r")
- player:SendBroadcastMessage("|cff00cc00Grumbo\'z Guild Warz System.|r")
- player:SendBroadcastMessage("|cff00cc00Brought to you by Grumbo of BloodyWow.com .|r")
- return false;
- end
- if(player:GetTeam()~=GWARZ[locid].Team)and(player:IsInGuild()==true)then
- WorldDBQuery("DELETE FROM world.gameobject_spawns WHERE `Entry` = '"..go:GetEntry().."';");
- go:RemoveFromWorld()
- SendWorldMessage("!!-"..player:GetGuildName().." takes location:"..GWARZ[locid].Entryid.." from "..GWARZ[locid].Guildname.."-!!", 1)
- Nflag = player:SpawnGameObject(187432+player:GetTeam(), player:GetX(), player:GetY(), player:GetZ(), player:GetO(), 0, 300, 1, 1):GetSpawnId()
- WorldDBQuery("UPDATE guild_warz.zones SET `guild_name` = '"..player:GetGuildName().."' WHERE `entry` = '"..locid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `team` = '"..player:GetTeam().."' WHERE `entry` = '"..locid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `x` = '"..player:GetX().."' WHERE `entry` = '"..locid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `y` = '"..player:GetY().."' WHERE `entry` = '"..locid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `z` = '"..player:GetZ().."' WHERE `entry` = '"..locid.."';");
- WorldDBQuery("UPDATE guild_warz.zones SET `flag_id` = '"..Nflag.."' WHERE `entry` = '"..locid.."';");
- GWARZ[locid].X =player:GetX()
- GWARZ[locid].Y = player:GetY()
- GWARZ[locid].Z = player:GetZ()
- GWARZ[locid].Guildname = player:GetGuildName()
- GWARZ[locid].Team = player:GetTeam()
- GWARZ[locid].Flagid = Nflag
- return false;
- end
- end
- function Allyflag(go,_,pPlayer)
- local LocId = GetLocationId(pPlayer)
- TransferFlag(pPlayer, LocId, go)
- end
- RegisterGameObjectEvent(187432,4, "Allyflag")
- function Hordeflag(go,_,pPlayer)
- local LocId = GetLocationId(pPlayer)
- TransferFlag(pPlayer, LocId, go)
- end
- RegisterGameObjectEvent(187433,4, "Hordeflag")
- -- ********** Guild Guard combat actions ********** --
- function Guardcombat(pUnit, event, pAttacker)
- local LocId = GetLocationId(pAttacker, pUnit)
- pUnit:CastSpellOnTarget(69155, pUnit:GetMainTank())-- forceful smash
- for _, v in pairs(GetPlayersInWorld()) do
- if(v and v:GetGuildName()==GWARZ[LocId].Guildname) then
- v:SendBroadcastMessage("|cffff0000!!LOCATION "..GWARZ[LocId].Entryid.." IS UNDER ATTACK BY "..pAttacker:GetGuildName().."!!|r")
- end
- end
- end
- RegisterUnitEvent(49001, 1, "Guardcombat")
- function Guarddied(pUnit, event, pAttacker)
- local LocId = GetLocationId(pAttacker, pUnit)
- WorldDBQuery("DELETE FROM world.creature_spawns WHERE `id` = '"..pUnit:GetSpawnId().."';")
- pUnit:Despawn(1,0)
- WorldDBQuery("UPDATE guild_warz.zones SET `guard_count` = `guard_count`-'1' Where `entry`='"..LocId.."';");
- GWARZ[LocId].Guardcnt =(GWARZ[LocId].Guardcnt-1)
- local Drop=(math.random(1, 4))
- for _, v in pairs(GetPlayersInWorld()) do
- if(v and v:GetGuildName()==GWARZ[LocId].Guildname) then
- v:SendBroadcastMessage("|cffcc0000!! I HAVE FAILED AT DEFENDING LOCATION "..LocId.." !!|r")
- end
- end
- if(Drop==4)then
- pAttacker:AddItem(20558, math.random(1, 4))
- end
- end
- RegisterUnitEvent(49001, 4, "Guarddied")
- function Guardhit(pUnit, event, pTarget, pAmount)
- local LocId = GetLocationId(pAttacker, pUnit)
- pUnit:CastSpellOnTarget(69155, pUnit:GetMainTank())
- for _, v in pairs(GetPlayersInWorld()) do
- if(v and v:GetGuildName()==GWARZ[LocId].Guildname) then
- v:SendBroadcastMessage("cffff0000!!HURRY!! I NEED ASSISTANCE AT LOCATION "..GWARZ[LocId].Guildname.."...!!HURRY!!|r")
- end
- end
- end
- RegisterUnitEvent(49001, 12, "Guardhit")
- function Guardkill(pUnit, event, pAttacker)
- local LocId = GetLocationId(pAttacker, pUnit)
- for _, v in pairs(GetPlayersInWorld()) do
- if(v and v:GetGuildName()==GWARZ[LocId].Guildname) then
- v:SendBroadcastMessage("|cff00cc00!! I HAVE KILLED AN INTRUDER AT LOCATION "..GWARZ[LocId].Entryid.." !!|r")
- v:SendBroadcastMessage("|cff00cc00I found some gold on him.|r")
- v:DealGoldMerit(math.random(100000, 1000000))
- end
- end
- end
- RegisterUnitEvent(49001, 3, "Guardkill")
- print ("PVP core: "..pvp_version.."\n")
- print ("GUILD WARZ ver: "..GW_version.." LOADED\n")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement