HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

EGUI - Need Ideas

01-05-2008, 07:09 AM#1
Sevion
EGUI - Enhanced GUI


GENERAL

Many of your remember (know of) WEU, world editor unlimited. It can do a lot of cool stuff, including something called Advanced Triggers. These are a series of GUI actions that allow you to do certain things that you couldn't do before, or make doing certain things easier (such as dialouge creation). However, as stated by WEU's author, most of those triggers are leaky and outdated. So, I plan to reinvent GUI, by extending it in all the ways WEU did, and more!



Systems
There are a lot of systems out there that require custom script to use. I will be searching through these systems, and creating GUI's for as many as possible. The ones that I currently thing are suitable are
-Vexorians CSCache
-Handle Vars *really useful!*
-Vexorians Caster System (not all the functions, just some of the simpler ones like mass casting and maaaaaaybe projectile creation)


[EGUI Functions]
Hidden information:

EGUI VARIABLES
Trackable


EGUI EVENTS
EGUI Event - Any Unit takes damage
EGUI Event - A Unit is Double clicked
EGUI Events - Any Unit is issued an order

EGUI CONDITIONS
EGUI Boolean - *Unit* is moving = *Boolean*
custom script:
EGUI Damage - Damagetype of taken damage = *Spell/Attack* (for use with vex's attack detect)


EGUI -Floating Text Simulate *Gold/Lumber/CriticalStrike/Windwalk* Text
EGUI Error message - Display *string* to *player* simulating an error message. Use sound *boolean*?
EGUI Item - Get the cost of *Item*
EGUI Item - An item is moved to inventory slot *Integer 1-6*
EGUI Unit - Add *Ability* to *Unit* and set its level to *Integer*
EGUI Unit - Add Advanced inventory to *unit* (Possibly either InvX or AAA or something else - not sure yet)
EGUI Unit - Order *Unit* to *Order String* *Unit*
EGUI Unit -Order *Unit*to *order string* *Point*
EGUI Unit - Make all units bleed when they have less then *X% life*
EGUI Unit - Make unit bleed with *Undead/NE/Orc/Human* blood.
EGUI Unit- Order *Unit* to *orderstring*
EGUI Unit - Get *Unit*'s armor
EGUI Unit - Clone *unit*
EGUI Unit - Order *Unit* to *OrderID* *Unit*
EGUI Unit -Order *Unit* to *OrderID* *POINT*
EGUI Unit- Order *Unit* to *OrderID*
EGUI Unit - Clone *unit*
EGUI Unt - Remove *Attack/Defend/Patrol/Stop/Hold* from *Unit*
EGUI Unit - Increase Unit's Attack speed by *X%*
EGUI Unit - Change *Unit*'s *Life/Mana/Armor/HpRegen/ManaRegen/MaxHp/MaxMana* to *real*
EGUI Dialouge - Add a quit Button to *Dialouge*
EGUI Unit - Knockback *unit* for *Distance* over *real* seconds at *angle* with *effect* attached to *string* and *effect* attached to *string*. Destroy trees *boolean*?
EGUI Unit -Order *Unit* to Jump to *Point* and cast spell *Ability* at starting point, and *Ability* at ending point
EGUI Unit Pick Every Unit in *Unit Group* and cause *Player* to cast *spell* on them
EGUI Fog - Black out *Region* for all players
EGUI Leaks - Destroy Location
EGUI Leaks - Destroy Group
EGUI Misc. - Exit Warcraft (no error message)
EGUI Misc. - Create a ridicilous amount of lag (for all players)
EGUI Terrain - Create Blight at *region*
EGUI trackable - Create a trackable at *locatoin* using model path *string*
EGUI Spells - Create a special effect (circle/square/stararound location *location* with *Radius* with *X* effects in total using *model path* and lasting *Duratoin* seconds
EGUI Spells - Create *3* floating objects around *Unit* using model path * model*


BurningIcce9 and I have decided to do this and make GUIing easier, faster, more powerful, more versatile, and an all around better environment to use. It will be compatible with NewGen (Once we contact the NewGen makers and agree on something.). You can use it to create many things ranging from Spells to Cinematics. It will make GUIing easier for first timers, or even old timers. If we all join together and make a list of all of these systems and functions to add and implement into this, we can virtually make GUI as powerful as JASS. Not in every way, but very very close. All we have to do is implement it using UI, my tutorial can be found here.
The least we can do is give it a try, right? Even if we fail, we'll have made great progress towards making GUI more powerful. If we can get the communities of TH, WC3Campaigns, and Hive all together, I doubt we'll fail. It will not be an easy road. We'll have to work together and communication will be hard to move along through everyone in the three communities., but we can make due. I look forward to hearing all of your thoughts.
01-05-2008, 07:13 AM#2
Jazradel
You mean your recreating World Edit Unlimited (or extended, or whatever it was called) as NewGen plugin (I presume that's what you meant by support)?

I can guarantee your not going to get the support you want with stuff like this:
Quote:
EGUI Misc. - Exit Warcraft (no error message)
EGUI Misc. - Create a ridicilous amount of lag (for all players)
01-05-2008, 07:16 AM#3
Sevion
We're trying to recreate a more advanced version of WEU and implementing new systems, virtually making GUI exponentially more powerful and we need the community's help.
01-05-2008, 07:47 AM#4
Jazradel
My main problem with this so far is that stuff like this:
Quote:
EGUI Spells - Create *3* floating objects around *Unit* using model path * model*
Don't belong as part of a base GUI.

At most, you should have a plugin that would let you define new lines of GUI so script makers could write something like:
Code:
function CreateNova takes integer x, unit u returns nothing gui "Create ",Integer,"orbs around",Unit,"."
endfunction

And it would load into the GUI when you reopened a map with that saved in it. It would make it very easy for noobs to use systems.

I'm all for a new anti-BJ and anti-Swap plugin though.
01-05-2008, 07:58 AM#5
Sevion
Quote:
Originally Posted by Jazradel
My main problem with this so far is that stuff like this:

Don't belong as part of a base GUI.

At most, you should have a plugin that would let you define new lines of GUI so script makers could write something like:
Code:
function CreateNova takes integer x, unit u returns nothing gui "Create ",Integer,"orbs around",Unit,"."
endfunction

And it would load into the GUI when you reopened a map with that saved in it. It would make it very easy for noobs to distribute systems.

I'm all for a new anti-BJ and anti-Swap plugin though.

Well, the thing is, it's more complicated than writing a JASS script in. You'd have to define new strings for the editor etc. It'd be hard to hardcode that kind of thing into it. Unless you knew a way?
01-06-2008, 02:58 AM#6
Jazradel
Well I presume you'd simply scan that line, generate the TriggerData, etc, and load them into the relevent .txt's on startup.

Your already loading custom .txt's so you basically just need tp autogenerate the Data, which is easy.
01-06-2008, 04:23 AM#7
Sevion
Quote:
Originally Posted by Jazradel
Well I presume you'd simply scan that line, generate the TriggerData, etc, and load them into the relevent .txt's on startup.

Your already loading custom .txt's so you basically just need tp autogenerate the Data, which is easy.

Yes, but you'll get millions of errors if there are typos or wrong syntax. Besides, you need to put it under the correct categories etc.
01-06-2008, 05:08 AM#8
Jazradel
Put in a little syntax checker, that should be relatively easy.
Extra syntax for categories then:
function CreateNova takes integer x, unit u returns nothing gui Special Effects, "Create ",3,"orbs around",Unit,"."
01-06-2008, 06:02 AM#9
Sevion
Well, the functions are found in Common.j (Natives) and Blizzard.j (BJ's and other stuff). Well, in order to add functions, we must edit these, import, then create a UI for them. EGUI will need to come with a Common.j and the UI files. Then all you need to do is import Common.j and save the UI files into the Warcraft directory. And then and ONLY then do you have the GUI functions. So in order to do what you say, we'll need to make a program that edits the Common.j AND UI adding exactly what we need. Plus check its syntax. It'd have to get the function's name, so if you typed

function CreateNova takes integer x, unit u returns nothing;Special Effects;Create Integer orbs around Unit;Create Nova;"Create a Nova with ",~Integer," orbs around ",~Unit;Creates a Nova with a number of orbs around a unit

you'd have to get the text between "function " and " takes". Then write into the UI script file TriggerData.txt

Code:
CreateNova=0,integer,unit
CreateNova_Defaults="3, (GetTriggerUnit())
CreateNova_Category=TC_(Text between first "." and second ".")

Then write

Collapse JASS:
function CreateNova takes integer x, unit u returns nothing
    local location p = (GetUnitLoc(u))
    local integer i
    loop
    set i = i + 1
    exitwhen i > x
    call CreateUnitAtLoc((GetOwningPlayer(u)),'(Dummy With Orb Model)', p, 270)
    endloop
endfunction

Then in the UI script file TriggerStrings.txt

Code:
(Text between "function " and " takes")="(Text between third and fourth semicolon)"
(Text between "function " and " takes")="(Text between fourth and fifth semicolon)"
(Text between "function " and " takes")Hint="(All text after fifth semicolon)"

I'll have to revise my post tomorrow morning. I'm really tired.
01-06-2008, 08:23 AM#10
Jazradel
Which would be easy.
01-06-2008, 04:05 PM#11
Sevion
That's assuming you know exactly how to make every function PLUS they write it right. For example in the one I showed you, you need to type function CreateNova takes integer x,unit u returns nothing... Well, if they typed CreateNovas, you'd have a different function. So what I'm saying is, how are we going to make a dynamic program that will add the correct lines the way they want it. It's impossible. Unless they write the function, too.
01-07-2008, 10:23 PM#12
ShadowDestroyer
It's not a bad idea. Although, making the stuff too specific is a bad thing. Look through the list of WEU additions and make sure you include them (obviously not leaking).

I think template GUI would be neat, if possilbe (kinda like Spell Factory).

Is there an open source WEU?
01-08-2008, 12:07 AM#13
Tide-Arc Ephemera
What does "clone unit" do exactly?

Also, a SetUnitX and SetUnitY would be nice. It'd be ever so slightly better than that Convert Location to Coordinates thing because it wouldn't disrupt orders or "stun" units when dealing with them.

EDIT!
Look for the UMSWE for Mac thing, they have external modifications to GUI.
01-09-2008, 09:21 PM#14
burningice95
@Sevion: I told you i made threads on here and hive ><

http://wc3campaigns.net/showthread.php?t=98477


@Tide-ArcEphemera...
Clone Unit...it clones the unit. like mirror image, but its not classified as an image. I thought it might be useful for some.

And since GUIers work almost exclusively with locations...maybe some sort of function with location parameters that uses SetUnitX/Y

Btw, we are taking out support for
Code:
EGUI Misc. - Exit Warcraft (no error message)
EGUI Misc. - Create a ridicilous amount of lag (for all players)