• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

[Eluna] Grumbo`z Guild Warz 'Tides of Desolation'

slp13at420

Mad Scientist
Grumbo'z Guild War'z
'Tides of Desolation'​

WoW's Bloodiest
Guild House/Plot System

This is NOT your Grandpa's Guild House System.

--Built-Tested and Approved for TC2 3.3.5a Eluna--
--Built-tested and Approved for TC2 4.3.4 Eluna--
--Rumored to be compatible with Eluna for Mangos--


desolation

  • /ˌdɛsəˈleɪʃən/
    noun
    • 1. The act of desolating or the state of being desolated; ruin or devastation .
    • 2. solitary misery; wretchedness.
    • 3. a desolate region; barren waste.


This System allows Guild Masters to purchase multiple Guild Plot locations for xx guild coins. when a location is purchased a flag will spawn based on team ally/horde.
Guild members can invade other guild plot locations from an apposing team or if Anarchy is enabled then A same team Guild can attempt to take there flag. if a guildmember tags the flag of an apposing Guild , that location will transfer ownership (including all GO's/NPC's that belong to that location), to the guild that tagged the flag.


What's new in version 4.9e?
------------------------------------
`Eluna` - Converted the system from ALE for ArcEmu to Eluna for TrinityCore.
`Anarchy` - same team invasions allowed now. Horde[SUB]vs[/SUB]Horde[SUB]vs[/SUB]Ally[SUB]vs[/SUB]Ally
`guild invite` - players can now use a guild flag to join a guild.
`Guild Cannons and Vendors` - require a hall to support them.
------------------------------------


  • "PERK" "Guild Commands" Guild Access to Buy/Sell commands is adjustable by each GuildMaster.
    • Guild members with access to the `sell` commands can sell off the individual team based npc's and buildings of any Guild controlled location or a guild location.
    • Guild members with access to the `buy` commands can buy areas, buildings and npc's for any Guild controlled location.
  • "FEATURE" "Anarchy System." Allows Flags to be captured by same team guilds thru FFAGvGPvP Chaotic Anarchy. May be turned on/off live in game by the Admin.
  • "FEATURE" "No-Tag-Flag Timer." A cooldown timer so Flags cant be captured until the timer expires. May be turned on/off and time adjusted live in game by the Admin.
  • "FEATURE" "Guild Invite" Allows Non-guild players to interact with the guild flags. the flags will open a gossip menu so players can choose to join the flag's guild. May be turned on/off live in game for individual guilds by there GuildMaster.
  • "FEATURE" "Flag Require" Invaders MUST clear ALL guards to be able to claim flag. May be turned on/off live in-game.
  • "FEATURE" "Guild Teleporter" Guild members can easily teleport to any of there guild's locations using the location's id.
    • Guild members can list all the areas owned by there guild by location id.
    • Guild members can display information about the location they are at.
  • "PERK" "Farms" Guild masters can now buy farms to support buying pigs. Guild masters can place up to xx guild pigs. (to have pigs you must have a farm)
    • "PERK" "Pig's" Pigs are support for guards and other npc's.
      • Pigs are faction based and display id's can be changed in the DB.(NPC ID's 49000 Ally, 49001 Horde)
      • Amount of pigs per farm can be adjusted live in game by the Admin.
    • "PERK" "Pig Payz" Each pig will pay xx gold to all guild members online per half hour.
      • Farms are faction based and display id's can be changed in the DB.(GOB ID's 500000 Ally, 500001 Horde)
  • "PERK" "Barracks" Guild masters can now buy barracks to support guards. barracks require a pig farm to support them.
    • Barracks are faction based and display id's can be changed in the DB.(GOB ID's 500002 Ally, 500003 Horde)
    • "PERK" "Guards" Guild masters can place guards at each location to protect there flag for xx guild coin each. Guards require a barrack.
      • guards will announce location id when in combat so guild members can tele to location.
      • guards are disposable and wont respawn when killed.
      • guards are faction based and id's can be changed in the DB.(NPC ID's 49002 Ally, 49003 Horde)
  • "PERK" "Guild Hall" Guild masters can place a BIG ol' Guild Hall at each location for xx Guild coins.
    • To have Hall's you must have a barracks.
    • Halls are faction based and id's can be changed in the DB.(GOB ID's 500004 Ally, 500005 Horde)
    • "PERK" "Guild Vendors" Vendors Require a Guild Hall.
      • "Guild Buff vendor" Guild masters can place a Guild Buff vendor at each location for xx Guild coins. .(NPC ID's 49004 Ally, 49005 Horde).
      • "Guild Fun items vendor" Guild masters can place a Guild Fun items vendor at each location for xx Guild coins. .(NPC ID's 49006 Ally, 49007 Horde).
      • "Guild Gear vendor" Guild masters can place a Guild Gear vendor at each location for xx Guild coins.(NPC ID's 49008 Ally, 49009 Horde).
      • You can create your own custom team vendor's for guilds and add there id's live in-game.
    • "PERK" "Guild Cannons" Cannon's Require a Guild Hall.
      • Guild masters can place Guild cannon's at each location for xx Guild coins.(NPC ID's 49010 Ally, 49011 Horde)
  • "PERK" "New Guild Gift" Newly formed Guilds will be gifted xx amount of Guild Coins to the Guild Master to get started with.
  • "PERK" "Adjustable color layout" Now GuildMasters can change the color layout for the chatbox menus/data.
  • "CMD" Guild master can customize most guild accessible commands in-game.
  • "CMD" Guild master can change access level for buy commands in-game.
  • "CMD" Guild masters can change access level for sell commands in-game.
  • "CMD" GuildMasters can change the color layout for menus for there guild menus.
  • "CMD" Admin can customize most GM commands and SYSTEM settings in-game.
  • "CMD" Admin can change access level for GM commands in-game and the sql.

NOW Supports multi-realm servers. now you can run this on multiple realms . just add the DB table and re-name it then edit the DB name variable `guild_warz_DB` in the start of the script so each realms script matches there individual DB table.

NOW with an adjustable Guild Menu color layout

All variables "xx" , (item, npc, gob)ID's, GM access levels, Guild Member access levels, prices, limits and commands

can easily be changed LIVE in-game, or the sql.


Ally Location:


Horde Location:


Instructional video's of basic command's usage.

Invasion:
>> More Instructional Videos <<

Lua for Eluna:

latest version 4.93e/10-03-2016

--Modified-Tested and Approved for TC2 3.3.5a Eluna--
--Modified-Tested and Approved for TC2 4.3.4 Eluna--

>> Requires the latest Eluna Release : da3b1486661f+ 2016-09-21
or newer.
<<



>> The Wiki <<

all commands can be altered easily in-game and the Sql table.
:eek: all limits and costs can be altered easily in-game and the Sql table.
:eek:
:eek: Commands function only while using Guild Chat. :eek:

ArcEmu/ALE
Project


latest version: 3.65 - 2-12-2014
>> Grumbo'z Guild Warz <<

[SUP]:fencing: "Welcome to :yield: my nightmare" :fencing:[/SUP]​
[SUP]

"I think your gonna like it"
"I think your gonna feel"
"right at home"
"here"
[/SUP]

here you go Trinity .....:bounce::eyebrows:

[SUB]`...and so his Guildmates roared and cheared as he mounted the bloody head of another fallen Guild leader in there Great Hall.`[/SUB]



"!!KING SPADE!!"​
!! Raid !! Plunder !! Pilage !!​
!! it's bloody frak'n Anarchy !!​
[SUB][SUP]
"covered with dren."​
[/SUP][/SUB]
[SUP]
"cuz PvP'z better with a bag 'o' weed"
[/SUP]
special thanks to these guyz:

[MENTION=6]Rochet2[/MENTION] -- lotta guideance n redo's of my stuff.
[MENTION=7]Foereaper[/MENTION] -- huge re-write of major parts for efficiency and speed.
[MENTION=1456]Grandelf[/MENTION] -- for that teleporter that inspired this whole idea !BUMP!.
[MENTION=773]Greone[/MENTION] -- un-ending testing and all that video footage.
@Freedom -- testing,testing,testing and more testing, and all round great help.

things like these cannot be done alone . thank you guyz. :high5:


Additional thanks to:
[MENTION=782]Creativextent[/MENTION] -- for the Newly formed guilds perk idea - adjustable guild command access idea.
[MENTION=948]foxthecrash[/MENTION] -- for the No-Tag-Flag Timer idea.

without these guys assistance, testing, guidance and ideas it would never have been possible to create this high-tech slick responsive power house system it is now. thank you every one. :first: :clap2: :rockon:


[SUB]
My twisted idea of a Guild Plot System​
[/SUB]


3.3.5a, Eluna, TrinityCore, Trinity Core, Grumbo, Grumbo'z Guild Warz, Guild, Guild House, Guild Plot, Guild Warz, gvg, lua script, slp13at420, wotlk
 
Last edited:

Foereaper

Founder
Some repetitive code, other parts could definitely be rewritten. Other than that, the functionality part is very neat :) whenever I have time I'll most likely shoot some ideas your way for things you could change
 

slp13at420

Mad Scientist
Some repetitive code, other parts could definitely be rewritten. Other than that, the functionality part is very neat :) whenever I have time I'll most likely shoot some ideas your way for things you could change

ty :D any ideas or pointers to make this better would be awesome.
 

slp13at420

Mad Scientist
I did not vigorously test this . just a quick once over .. so there may be issues with ghost respawns of npc's. I still have a couple ideas to add to this.
1. I want guild masters to be able to spawn grunts/peons that have random generated waypoints on spawn. they will move around digging and (pull randomly from a table of misc items) "Find something" then deposit it into the guilds bank....
2. change commands, limits and prices to an sql table . allowing all that info to be loaded into a table and allowing the admin to change those in-game.... but that a lil above my head right now..
 

Foereaper

Founder
I had an idea to rewrite most of your queries to be handled in a separate function. Would this be a good idea? Heck if I know, was just something I tossed together real quick :p

To call the function you'd use

Code:
PreparedStatements(key, query vars)

For this example you could use

Code:
PreparedStatements(1, "x", player:GetX(), "entry", LocId)

R0evVPJ.png


Code:
function PreparedStatements(key, ...)
	local Query = {
		"UPDATE guild_warz.zones SET `%s` = '%i' WHERE `%s` = '%i';",
	}
	
	local qs = string.format(Query[key], select(1, ...))
	print(qs)
end

PreparedStatements(1, "x", 1, "entry", 2)

-- Key = the query selected from query table.
-- All other arguments = which table and what variable it is pointed to in the query statement.
 
Last edited:

slp13at420

Mad Scientist
you talking about making a single function that will do all updating to table and sql ? then just pass the values to the fuction when updating is needed?
 
Last edited by a moderator:

Foereaper

Founder
Another thing I noticed you do a lot is this

GWARZ[locid].X = player:GetX()
GWARZ[locid].Y = player:GetY()
GWARZ[locid].Z = player:GetZ()

What you can do to cut down on line amt. is

GWARZ[locid].X, GWARZ[locid].Y, GWARZ[locid].Z = player:GetLocation()

This can also be done in a lot of the spawning you're doing:

Nflag = PerformIngameSpawn(2, flagdispid+(player:GetTeam()), player:GetMapId(), 0, player:GetX(), player:GetY(), player:GetZ(), player:GetO(), 1, 0, 1):GetGUIDLow()

Instead of that, you can do

Nflag = PerformIngameSpawn(2, flagdispid+(player:GetTeam()), player:GetMapId(), 0, player:GetLocation(), 1, 0, 1):GetGUIDLow()

as GetLocation returns X, Y Z and O, and even separates these already with a , :)

- - - Updated - - -

you talking about making a single function that will do all updating to table and sql ? then just pass the values to the fuction when updating is needed?

Yes :)
 

slp13at420

Mad Scientist
ok changed it over so there is 1 function that handles all the sql/table updates. its errrm ... rather primitive tho lol but works. having issues with player:GetLocation() in a couple instances .. I just rem'd them out .
 

slp13at420

Mad Scientist
there are areas that I know could use some major refining of how it works.
biggest and #1 is the fact that to get a players location id the script has to still query the sql causing a 1/4sec pause till response. there has to be some way to scan the table entries to find were a players map,area and zone match the entries ...
if I can do that then I can also check if the location is even in the table/sql . that would eliminate the last to spots that still query the sql. then everything will only be updateing or initial table creation.
 

Foereaper

Founder
You can cache values in a table, then whenever you run an update, just update the cache as well :) that way you only have to load the table once into memory at server start up
 

slp13at420

Mad Scientist
It does create a table "GWARZ" when Eluna/Lua loads. but I don't know how to make it search the table to match the players MapId(),AreaId(), and zoneId() to the entries (map, area, zone) in the table to gain the LocId. so it still currently searches the sql.
 

slp13at420

Mad Scientist
I have also updated my links for Eluna version . this version I have placed all variables into a new sql table `commands`(i.e. command names, values/costs, id's) allowing them to be loaded into a table when Eluna starts. allowing for easy edit via HeidiSql or later down the road the admin can change them in game :D.
 

DarkAngel

Wiki Author
You could store the player in the table GWARZ and then make the player a table in which you store values, for the specific player.
Table in a table <3
Code:
GWARZ.plrs = {}
GWARZ.plrs[tostring(player)] = {player:GetMapId(), player:GetAreaId(), player:GetZoneId()}

Access a key and value:
Code:
GWARZ.plrs[tostring(player)][1]

Or wait for Foe to post a proper way of doing it.

Regards, DarkAngel
 

Foereaper

Founder
You could store the player in the table GWARZ and then make the player a table in which you store values, for the specific player.
Table in a table <3
Code:
GWARZ.plrs = {}
GWARZ.plrs[tostring(player)] = {player:GetMapId(), player:GetAreaId(), player:GetZoneId()}

Access a key and value:
Code:
GWARZ.plrs[tostring(player)][1]

Or wait for Foe to post a proper way of doing it.

Regards, DarkAngel

Code:
local function GetLocationId(player, unit)
	for i = 1, #GWARZ do
		if(GWARZ[i].map_id == player:GetMapId() and GWARZ[i].area_id == player:GetAreaId() and GWARZ[i].zone_id == player:GetZoneId()) then
			return i;
		end
	end
end

This is how I did it :) Gave him an updated version of mine earlier
 

slp13at420

Mad Scientist
also I may have implemented the random seed wrong so I just rem'd it with a error response
-- math.randomseed(tonumber(tostring(os.time()*os.time()):reverse():sub(1,6))); -- err. bad argument #1 to randomseed (number expected, got nil)
 
Last edited:
Top