• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Introducing Darkwind RPG

Status
Not open for further replies.
Level 11
Joined
Apr 28, 2008
Messages
696
You realy want create about 1k textures, Becose you only armor can create 1year!

The project is planned to be done over 5 years to fill my freetime while I compelte my studies^^. And again, the only difficult part is to create the very first texture. All additional are very simple copy&paste to create the combinations. That takes 30 seconds per texture. And as long as it works perfect and the player doesnt notice HOW it works but THAT it works, it's ok for me. + It will be the only map with this feature out there.

Edit: Möp, first 100 posts in this thread, muha! Keep it going folks.
 
Level 2
Joined
Jun 25, 2009
Messages
15
I think this gonna be great... An epic RPG , you dont find to easy a good RPG in this times. I hope yours will be an exception. And I have a question or two . The principal actors will be the gods avatar ? Or simple humans ? And you say you need a terrainer ?
 
Level 11
Joined
Apr 28, 2008
Messages
696
But you can't rotate the camera for the action bar. How does that work?

The actionbar makes use of higher mathformula. The needed 3d vector is calculated and the position of the actionbar adjusted when the cameraangle/roll/point of view changes. You can find that system I based mine on if you search for DGUI, MATH, CAMERA made by ashujon.
 
Level 8
Joined
May 15, 2008
Messages
492
Browsing through the DGUI code, I couldn't find out, what functions does it make? Could you tell me the functions? Like how to detect when someine clicks, how to make a picture, text, and button? Sorry, I browsed throught the code and I couldn't find the functions that make IButton and IPicture and stuff.
 
Level 11
Joined
Apr 28, 2008
Messages
696
Im not sure if you heard it, but blizzard is planning to let the max size of maps on Bnet increase to 8mb, if that would make enough space for multiplayer.

If that is true, it will allow to add more models etc to the multiplayerversion. But 4mb would be enough for multiplayer. Problem ist simple: You can't use more than 99 texttags in a map at the same time. And the complete GUI for one player consumes at this point allready 63 floating texttags. I could replace them by using splats with text on them, but that would be extra work. Further would the savesystem be too complex. The code you have to enter to reload your hero would be around 375 digits if I want to save all items, and hero data. With only the equipment and all stats it would be still around 190 digits. Without weapon/armour skills still around 75 digits.

AKAIMAX said:
Browsing through the DGUI code, I couldn't find out, what functions does it make? Could you tell me the functions? Like how to detect when someine clicks, how to make a picture, text, and button? Sorry, I browsed throught the code and I couldn't find the functions that make IButton and IPicture and stuff.

Don't take this as flame, but I don't know if you understand vJASS. Cause if not, it makes almost no sense to try to explain the code of DGUI. All needed functions for buttons and windows can be found in the DGUI code. Same for the camera in the CAMERA code and both require MATH to work correct.
 
Level 8
Joined
May 15, 2008
Messages
492
I understand vJass but I can't find the functions that are used in DGUI. All i need is a function list but I can't find the functions that create a button, picture or text.
 
Level 8
Joined
May 15, 2008
Messages
492
Found it. One question:

static method PICTURE takes real minx, real maxy, real W, real H, real z, boolean b, string model returns PICTURE

Real W and Real H are x and y?
 
Level 11
Joined
Apr 28, 2008
Messages
696
I understand vJass but I can't find the functions that are used in DGUI. All i need is a function list but I can't find the functions that create a button, picture or text.

Buttons, Pictures and Texts objects are defined in structs. If you found that structs in the code, your find the methods to create (called new),edit and delete the objects again.

JASS:
library DGUI requires Math, Camera

globals
    private constant integer TypeUnit = 'DGUI'
    private integer TypeSkinChanger = 'A00N'
    private BUTTON TriggerButton
    private location GL4DGUI = Location(0,0)
endglobals

function GetTriggerButton takes nothing returns BUTTON
    return TriggerButton
endfunction

private function GetZ4DGUI takes real X, real Y returns real
    call MoveLocation(GL4DGUI, X, Y)
    return GetLocationZ(GL4DGUI)
endfunction

private function FineIndexAnimModel takes real w, real h, real z returns integer
    local real W = w*WidthScreen*z
    local real H = h*HeightScreen*z
    local real anim
    if (H<W) then
        set anim = 10*(W/H-1)
        return R2I_n(anim)
    else
        set anim = 10*(H/W-1)
        if anim >= 0.5 then
            return 100+R2I_n(anim)
        endif
    endif
    return 0
endfunction

private function FineSizeModel takes real w, real h, real z returns real
    local real W = w*WidthScreen*z
    local real H = h*HeightScreen*z
    if (H<W) then
        return 0.5*H
    else
        return 0.5*W
    endif
endfunction

struct BUTTON
    static BUTTON array AllShow
    static integer CountShow = 0
    private integer index
    private CAMERA Camera
    
    private real centerx
    private real centery
    private real minx
    private real maxx
    private real miny
    private real maxy
    private real width
    private real height
    private real z
    unit picture
    private integer indexanim
    private effect model
    private trigger trigLclick
    private trigger trigRclick
    boolean show
    integer CostumValue
    
    player caster
    string order
 
    static method New takes real minx, real maxy, real W, real H, real z, integer texture , string o , player c returns BUTTON
        local BUTTON this = BUTTON.create()
        local destructable tree
        set .CostumValue = 0
        set .Camera = 0
        set .width = W
        set .height = H
        set .minx = minx
        set .maxx = minx+W
        set .maxy = maxy
        set .miny = maxy-H
        set .z = 100.2+z
        set .centerx = minx+W/2.0
        set .centery = maxy-H/2.0
        set .show = false
        
        set .caster = c
        set .order = o
        
        set .trigLclick = CreateTrigger()
        set .trigRclick = CreateTrigger()
        set .picture = CreateUnit(Player(15), TypeUnit, 0, 0, 0)
        call UnitAddAbility(.picture, TypeSkinChanger)
        if (texture != 0) then
            set tree = CreateDestructable(texture,0,0,0,0,1)
            call IssueTargetOrder(.picture, "grabtree", tree)
            call RemoveDestructable(tree)
            set tree = null
        endif
        set .indexanim = FineIndexAnimModel(W, H, .z)
        call SetUnitAnimationByIndex(.picture, .indexanim)
        call SetUnitScale(.picture, FineSizeModel(W, H, .z), 0, 0)
        call UnitAddAbility(.picture, 'Aave')
        call UnitRemoveAbility(.picture, 'Aave')
        call ShowUnit(.picture, false)
        call SetUnitUserData(.picture, this)
        return this
    endmethod

    method AddActionL takes code func returns triggeraction
        return TriggerAddAction(.trigLclick, func)
    endmethod
    
    method RemoveActionL takes triggeraction action returns nothing
        call TriggerRemoveAction(.trigLclick, action)
    endmethod
    
    method AddActionR takes code func returns triggeraction
        return TriggerAddAction(.trigRclick, func)
    endmethod
    
    method RemoveActionR takes triggeraction action returns nothing
        call TriggerRemoveAction(.trigRclick, action)
    endmethod
    
    method Delete takes nothing returns nothing
        call DestroyTrigger(.trigLclick)
        call DestroyTrigger(.trigRclick)
        call RemoveUnit(.picture)
        if .show then
            set .AllShow[.index] = .AllShow[.CountShow]
            set .AllShow[.index].index = .index
            set .CountShow = .CountShow - 1
        endif
    endmethod
    
    method Update takes nothing returns nothing
        local VECTOR3 Pos = .Camera.Win2World(.centerx, .centery, .z)
        call SetUnitX(.picture, Pos.x)
        call SetUnitY(.picture, Pos.y)
        call MoveLocation(GL4DGUI, Pos.x, Pos.y)
        call SetUnitFlyHeight(.picture, Pos.z-GetLocationZ(GL4DGUI), 0)
        call Pos.destroy()
    endmethod
    
    method Show takes boolean show, CAMERA Cam returns nothing
        if Cam != -1 then
            set .Camera = Cam
        endif
        call ShowUnit(.picture, show)
        if show != .show then
            if show then
                set .AllShow[.CountShow] = this
                set .index = .CountShow
                set .CountShow = .CountShow + 1
                call .Update()
                call SetUnitAnimationByIndex(.picture, .indexanim)
            else
                set .CountShow = .CountShow - 1
                set .AllShow[.index] = .AllShow[.CountShow]
                set .AllShow[.index].index = .index
            endif
        endif
        set .show = show
    endmethod
    
    method IsClick takes unit u returns boolean
        return .picture == u
    endmethod
    
    method IsClickEx takes real x, real y returns boolean
        return .minx < x and x < .maxx and .miny < y  and y < .maxy
    endmethod
    
    method ClickL takes nothing returns nothing
        set TriggerButton = this
        call TriggerExecute(.trigLclick)
    endmethod
    
    method ClickR takes nothing returns nothing
        set TriggerButton = this
        call TriggerExecute(.trigRclick)
    endmethod
    
    method SetPosition takes real minx, real maxy returns nothing
        set .minx = minx
        set .maxx = minx+.width
        set .maxy = maxy
        set .miny = maxy-.height
        set .centerx = minx+.width/2.0
        set .centery = maxy-.height/2.0
        if .show then
            call .Update()
        endif
    endmethod
    
    method SetTexture takes integer texture returns nothing
        local destructable tree = CreateDestructable(texture,0,0,0,0,1)
        call ShowUnit(.picture, true)
        call SetUnitX(.picture, 0)
        call SetUnitY(.picture, 0)
        call IssueTargetOrder(.picture,"grabtree",tree)
        call ShowUnit(.picture, .show)
        call RemoveDestructable(tree)
        if .show then
            call .Update()
        endif
        set tree = null
    endmethod
    
    static method AllUpdate takes nothing returns nothing
        local integer i = .CountShow
        loop
            exitwhen i < 0
            call .AllShow[i].Update()
            set i = i - 1
        endloop
    endmethod
    
    static method Click takes unit u, boolean IsLeft returns boolean
        local BUTTON b
        if GetUnitTypeId(u) == TypeUnit then
            set b = GetUnitUserData(u)
            if b != 0 and b.show then
                if IsLeft then
                    call b.ClickL()
                else
                    call b.ClickR()
                endif
                return true
            endif
        endif
        return false
    endmethod
    
    static method ClickEx takes real x, real y, boolean IsLeft returns boolean
        local integer i = .CountShow
        loop
            exitwhen i < 0
            if .AllShow[i].IsClickEx(x, y) then
                if IsLeft then
                    call .AllShow[i].ClickL()
                else
                    call .AllShow[i].ClickR()
                endif
                return true
            endif
            set i = i - 1
        endloop
        return false
    endmethod
    
    static method ClickPeriodicSelect takes player p, boolean IsLeft returns boolean
        local integer i = .CountShow
        loop
            exitwhen i < 0
            if IsUnitSelected(.AllShow[i].picture, p) then
                if IsLeft then
                    call .AllShow[i].ClickL()
                else
                    call .AllShow[i].ClickR()
                endif
                return true
            endif
            set i = i - 1
        endloop
        return false
    endmethod

endstruct

function DGUIClickEx takes real x, real y, boolean IsLeft returns boolean
    local integer i = BUTTON.CountShow
    loop
        exitwhen i < 0
        if BUTTON.AllShow[i].IsClickEx(x, y) then
            if IsLeft then
                call BUTTON.AllShow[i].ClickL()
            else
                call BUTTON.AllShow[i].ClickR()
            endif
            return true
        endif
        set i = i - 1
    endloop
    return false
endfunction

struct PICTURE
    private static PICTURE array AllShow
    private static integer CountShow = 0
    private integer index
    private CAMERA Camera
    
    private real centerx
    private real centery
    private real width
    private real height
    private real z
    unit picture
    private integer indexanim
    boolean show
    integer CostumValue
    
    static method New takes real minx, real maxy, real W, real H, real z, integer texture returns PICTURE
        local PICTURE this = PICTURE.create()
        local destructable tree
        set .CostumValue = 0
        set .Camera = 0
        set .width = W
        set .height = H
        set .centerx = minx+W/2.0
        set .centery = maxy-H/2.0
        set .z = 100.2+z
        set .show = false
        set .picture = CreateUnit(Player(15), TypeUnit, 0, 0, 0)
        call UnitAddAbility(.picture, TypeSkinChanger)
        if (texture != 0) then
            set tree = CreateDestructable(texture,0,0,0,0,1)
            call IssueTargetOrder(.picture, "grabtree", tree)
            call RemoveDestructable(tree)
            set tree = null
        endif
        set .indexanim = FineIndexAnimModel(W, H, .z)
        call SetUnitAnimationByIndex(.picture, .indexanim)
        call SetUnitScale(.picture, FineSizeModel(W, H, .z), 0, 0)
        call UnitAddAbility(.picture, 'Aave')
        call UnitRemoveAbility(.picture, 'Aave')
        call UnitAddAbility(.picture, 'Aloc')
        call UnitRemoveAbility(.picture, 'Aloc')
        call ShowUnit(.picture, false)
        return this
    endmethod
    
    static method NewCostumModel takes real minx, real maxy, real z, real size, integer typeunit, real WidthModel, real HeightModel, integer texture returns PICTURE
        local PICTURE this = PICTURE.create()
        local destructable tree
        set .CostumValue = 0
        set .Camera = 0
        set .z = 100.2+z
        set .width = (WidthModel*size)/(WidthScreen*.z)
        set .height = (HeightModel*size)/(HeightScreen*.z)
        set .centerx = minx+.width/2.0
        set .centery = maxy-.height/2.0
        set .show = false
        set .picture = CreateUnit(Player(15), typeunit, 0, 0, 0)
        call UnitAddAbility(.picture, TypeSkinChanger)
        if (texture != 0) then
            set tree = CreateDestructable(texture,0,0,0,0,1)
            call IssueTargetOrder(.picture, "grabtree", tree)
            call RemoveDestructable(tree)
            set tree = null
        endif
        call SetUnitScale(.picture, size, 0, 0)
        call UnitAddAbility(.picture, 'Aave')
        call UnitRemoveAbility(.picture, 'Aave')
        call UnitAddAbility(.picture, 'Aloc')
        call UnitRemoveAbility(.picture, 'Aloc')
        call ShowUnit(.picture, false)
        return this
    endmethod
    
    method Delete takes nothing returns nothing
        call RemoveUnit(.picture)
        if .show then
            set .AllShow[.index] = .AllShow[.CountShow]
            set .AllShow[.index].index = .index
            set .CountShow = .CountShow - 1
        endif
    endmethod
    
    method Update takes nothing returns nothing
        local VECTOR3 Pos = .Camera.Win2World(.centerx, .centery, .z)
        call SetUnitX(.picture, Pos.x)
        call SetUnitY(.picture, Pos.y)
        call MoveLocation(GL4DGUI, Pos.x, Pos.y)
        call SetUnitFlyHeight(.picture, Pos.z-GetLocationZ(GL4DGUI), 0)
        call Pos.destroy()
    endmethod
    
    method Show takes boolean show, CAMERA Cam returns nothing
        if Cam != -1 then
            set .Camera = Cam
        endif
        call ShowUnit(.picture, show)
        if show != .show then
            if show then
                set .AllShow[.CountShow] = this
                set .index = .CountShow
                set .CountShow = .CountShow + 1
                call .Update()
                call SetUnitAnimationByIndex(.picture, .indexanim)
                call UnitAddAbility(.picture, 'Aloc')
                call UnitRemoveAbility(.picture, 'Aloc')
            else
                set .CountShow = .CountShow - 1
                set .AllShow[.index] = .AllShow[.CountShow]
                set .AllShow[.index].index = .index
            endif
        endif
        set .show = show
    endmethod
    
    method SetPosition takes real minx, real maxy returns nothing
        set .centerx = minx+.width/2.0
        set .centery = maxy-.height/2.0
        if .show then
            call .Update()
        endif
    endmethod
    
    method SetTexture takes integer texture returns nothing
        local destructable tree = CreateDestructable(texture,0,0,0,0,1)
        call ShowUnit(.picture, true)
        call SetUnitX(.picture, 0)
        call SetUnitY(.picture, 0)
        call IssueTargetOrder(.picture,"grabtree",tree)
        call ShowUnit(.picture, .show)
        call RemoveDestructable(tree)
        if .show then
            call .Update()
        endif
        set tree = null
    endmethod
    
    static method AllUpdate takes nothing returns nothing
        local integer i = .CountShow
        loop
            exitwhen i < 0
            call .AllShow[i].Update()
            set i = i - 1
        endloop
    endmethod

endstruct

struct TEXT
    private static TEXT array AllShow
    private static integer CountShow = 0
    private integer index
    private CAMERA Camera
    
    private real minx
    private real maxy
    private real z
    texttag text
    boolean show
    integer CostumValue
    
    static method New takes real minx, real maxy, real z returns TEXT
        local TEXT this = TEXT.create()
        set .CostumValue = 0
        set .Camera = 0
        set .minx = minx
        set .maxy = maxy
        set .z = 100+z
        set .show = false
        set .text = CreateTextTag()
        call SetTextTagVisibility(.text, false)
        return this
    endmethod
    
    method Delete takes nothing returns nothing
        call DestroyTextTag(.text)
        if .show then
            set .AllShow[.index] = .AllShow[.CountShow]
            set .AllShow[.index].index = .index
            set .CountShow = .CountShow - 1
        endif
    endmethod
    
    method Update takes nothing returns nothing
        local VECTOR3 Pos = .Camera.Win2World(.minx, .maxy, .z)
        call SetTextTagPos(.text, Pos.x, Pos.y, Pos.z-GetZ4DGUI(Pos.x,Pos.y))
        call Pos.destroy()
    endmethod
    
    method SetPosition takes real minx, real maxy returns nothing
        set .minx = minx
        set .maxy = maxy
        if .show then
            call .Update()
        endif
    endmethod
    
    method Show takes boolean show, CAMERA Cam returns nothing
        if Cam != -1 then
            set .Camera = Cam
        endif
        call SetTextTagVisibility(.text, show)
        if show != .show then
            if show then
                set .AllShow[.CountShow] = this
                set .index = .CountShow
                set .CountShow = .CountShow + 1
                call .Update()
            else
                set .CountShow = .CountShow - 1
                set .AllShow[.index] = .AllShow[.CountShow]
                set .AllShow[.index].index = .index
            endif
        endif
        set .show = show
    endmethod
    
    static method AllUpdate takes nothing returns nothing
        local integer i = .CountShow
        loop
            exitwhen i < 0
            call .AllShow[i].Update()
            set i = i - 1
        endloop
    endmethod

endstruct

function DGUIUpdate takes boolean but, boolean pic, boolean tex returns nothing
    if but then
        call BUTTON.AllUpdate()
    endif
    if pic then
        call PICTURE.AllUpdate()
    endif
    if tex then
        call TEXT.AllUpdate()
    endif
endfunction

endlibrary

All credits go to ashujon, I just edited some things to make them fit to my needs.
 
Level 8
Joined
May 15, 2008
Messages
492
DGUI makes my head spin. Its so complicated. Its not just create button. You have to modify the library's code to change the buttons model, then the textures and stuff. Its starts to pile up.
 
Level 11
Joined
Apr 28, 2008
Messages
696
DGUI makes my head spin. Its so complicated. Its not just create button. You have to modify the library's code to change the buttons model, then the textures and stuff. Its starts to pile up.

Don't worry, it took me about 1 hour to look through the code. Yes, you need a custom model.

Here you find a modified version of DGUI that contains all needed models and editor settings.

Bags System
 
Level 8
Joined
May 15, 2008
Messages
492
Thanks, but I already have all the needed models and skins to do this from another inventory system. Thanks anyways.
 
Level 7
Joined
Dec 3, 2006
Messages
339
library DGUI requires Math, Camera
Does that one line of code ring any bells? It tells you exactly what is "required". Anyways this is like your 3rd double post in this thread. Might be a good idea to start a new thread more about just your issues with DGUI n put a link here rather than fill up Thy's whole project thread.

Although this might be more helpful to look at:
http://www.wc3c.net/showthread.php?t=103071
Scroll down to the end of the DGUI trigger and look at his Init func and a few other funcs.

Anyways, interesting project. Lots of work done already.
Only few things i'm concerned about are:
1) You'll have to rely a lot on custom models/skins since your making everything so high quality for the hero that normal wc3 stuff doesn't exactly fit theme.
(I'm sure you know about this though.)

2) DGUI creates units for the spell buttons and that will take forever for wc3 to get to work for multiplayer. Constantly moving them according to multiple players cameras as they move will probably cause tons of lag. This is probably more of a problem for multiplayer than even the text tag problem will be.(Like round when WarSoc gets completely finished + some time.)

Congrats on what's been done so far though, made me pick my idea of using a skill tree back up for my map that i've been working on/off forever.


Also to fix your maximum text limit problem you might want to consider using the multiboard. You can have multiple multiboards and they can have tons of text and even bars.
 
Last edited:
Level 11
Joined
Apr 28, 2008
Messages
696
Manoo said:
Now abaut this inv when you come near the tree, leafs will stab inventory and to avoid this bugg you need create very much system and code.

I don't use that system for my inventory, I just took a look to get the things i need for my actionbar. My inventory doesn't even use DGUI(It'll work with DGUI, but still requires trackables to get mouseover events for the tooltips). There won't be trees or something else between player and inventory, cause it's located to a special area. The cam pans to that location while the game remains running, not paused.

Manoo said:
Thrael now i will talk abaut you spell bar, your spell bar looks very cool, but it's very uncomfortable becose you always need push on spell bar and player ho will play this rpg about 1h will bore.

Simply LOL... or I didn't get, what you trying to tell me...

The only reason to make an actionbar was to give the player the ability to be able to click the skills plugged into it... It simple sucks to be restricted to the wc3 interface or have to use spellbooks. You can freely choose the skills/talents you will grad into the AB and it accepts left and right mouseclicks. Left click will cast the skill on your spelltarget (by clicking on object left it will be stored as spelltarget, by clicking right it will be stored as attacktarget, so you cann hold up to two focus) if the target is in range and matches the skill requirements. Right click will cast on the hero itself, you don't have to reselect the hero, you can hold your focus selected.
 
Last edited:
Level 11
Joined
Apr 28, 2008
Messages
696
will you add hotkeys to the spell bar?
something like "Press 1 for cast firebolt". Do you?
:D

Sadly you can't register other keyevents than arrow and escape keys. Spacebar can be detected but needs massive workarounds. The keys 1-0 are usual used for creating unitsgroups. And right now, I don't know if its possible to create those groups via trigger. IF that is possible the problem would be, that there are 12 buttons, but only 10 groupkeys^^ You see *g*

So I'm pretty sure, that I won't use actionbuttons for the bar.
 
Level 8
Joined
May 15, 2008
Messages
492
Yes you can. Ability hotkeys. You hide the ability and you make the event a unit starts the effect of a ability and you put the code in that trigger.
 
Level 11
Joined
Apr 28, 2008
Messages
696
Yes you can. Ability hotkeys. You hide the ability and you make the event a unit starts the effect of a ability and you put the code in that trigger.

To make that work, you'll have to keep a unit selected all the time. That means if you add those skills to the hero its fine. But if you select a target and keep it selected, the hotkeys won't work anymore => thats not what I want^^

I really think the actionbar is fine enough with detecting left and right mouse clicks. Cause you won't have to click a target skill and drag the targetmarker to the unit you want to cast on. You simple chose by left or right clicking a unit to store it as spelltarget(leftclick) or attacktarget(rightclick). Clicking right on an actionbarbutton will try to cast the stored spell onto your hero. You don't have to select him. In addition that means, you can fight a target in meleecombat and without having to select your spelltarget simple leftclick on the button and the spell will be casted on your spelltarget, if it is a valid one.
 
Level 8
Joined
May 15, 2008
Messages
492
One thing about your action bar. Instead of detecting clicks, add the ability the action bar spells to the unit and when he clicks on the ability, order him to force the UI key of the ability. Then you can target and it will look much better.
 
Level 8
Joined
May 15, 2008
Messages
492
You only do one left click. You don't need right click. It will work just like using a normal ability.
 
Level 11
Joined
Apr 28, 2008
Messages
696
And you need to have your hero selected to cast spells via hotkeys => sucks :)

By using my option you can simple switch your target by selecting another unit. than simple click the button and the spell will land on that target if it is valid. Imagine: You are fighting along with some npcs against mobs. One of the npcs is a tank that takes most of the damage. So you simple mark the tank as your spelltarget. While ighting the mobs using your other skills. Tanks get low on hp, simple left click healbutton => tank gets healed and your still have your last target selected.

I thought about a reduced multiplayer pvpversion. Image how awsome the teamplay wil become by using that feature.
 
Level 11
Joined
Apr 28, 2008
Messages
696
Hey I really like that action bar. Just the bar not the ability add part.
I want to add it to my MP Morpg. Could you let me use it in it? And also can you help me implement it in if you say yes? Thanks!

I'm sorry, but I won't release any system I made to public BEFORE my project is complete. In the posts above you'll find everything you need to create that actionbar yourself. But if you don't understand vJASS its almost pointless.
 
Level 8
Joined
May 15, 2008
Messages
492
Thyrael, I got another question. Did you use the CAMERA library to make the camera? Cause for my project, we already got a camera made that works perfectly and smoothly but we couldn't add the buttons and stuff without the buttons flying across the screen. Could you help me out here?
 
Status
Not open for further replies.
Top