• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Command! (Give the selected unit to a player)

Level 10
Joined
Jun 20, 2017
Messages
337
I want a system where you can type a command, it allows you to take a selected unit from other players with a voting system!
There are two units in two teams (the unit belongs to your ally (computer) but you can select it), each team can take its own allied unit.
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,595
I assume you want it so that only one vote can be going on at a time per team?

So if I type -take, no other player on my team can type -take until the yes/no voting process for me has finished.

I also assume you want some kind of timer to prevent abuse and to speed up the process. If I type -take then there's 15 seconds of voting before the timer expires and automatically counts the votes. A non-voter counts as -no.

You probably also want a cooldown period so that the same player can't type -take again for a little while after typing it. A simple Boolean array and a Wait would suffice.
 
Level 10
Joined
Jun 20, 2017
Messages
337
Yes, something like this!
Surrendering
I assume you want it so that only one vote can be going on at a time per team?
Yeah.
I also assume you want some kind of timer to prevent abuse and to speed up the process. If I type -take then there's 15 seconds of voting before the timer expires and automatically counts the votes. A non-voter counts as -no.
Yes, 15 seconds is enough!
You probably also want a cooldown period so that the same player can't type -take again for a little while after typing it. A simple Boolean array and a Wait would suffice.
I think 60 seconds is enough! but if I changed my mind, I could easily increase the number!


It would be very cool if the dialog buttons were like this image! (because wc3 db takes the whole screen and you can't do anything until you press a button!)
There should be 6 players instead of 5.
 

Attachments

  • Untitled.jpg
    Untitled.jpg
    13.5 KB · Views: 10
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,595
Here's two maps I made that provide a voting system like you described.

The Small version has less ui text and a slightly smaller design overall.

I'd be surprised if there wasn't any bugs but it seems to work fine in singleplayer and my 2 player LAN tests.

Also, importing it into your own map will require you to bring all of the custom Assets over as well and give them the proper paths.
 

Attachments

  • Simple Voting System 3 Small.w3m
    232 KB · Views: 4
  • Simple Voting System 3.w3m
    232.2 KB · Views: 9
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,595
You can get rid of the thumbs up and thumbs down icons completely and instead rely on the buttons that already exist.

Here's updated code for the non-Small version:
vJASS:
library SimpleVotingSystem initializer SVS_Init
    globals
        framehandle SVS_Window
        framehandle SVS_Description
        framehandle SVS_Label
        framehandle SVS_Yes_Button
        framehandle SVS_No_Button
        framehandle array SVS_Voted_Icon
        trigger SVS_Yes_Trigger
        trigger SVS_No_Trigger
        real array SVS_Slot_Offsets
    endglobals
    function SVS_Show_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()
        if GetLocalPlayer() == p then
            call BlzFrameSetVisible(SVS_Window, true)
            call BlzFrameSetText(SVS_Description, udg_SVS_Description)
            call BlzFrameSetText(SVS_Label, udg_SVS_Label)
            call BlzFrameSetTexture(SVS_Voted_Icon[1], "GreenBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[2], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[3], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[4], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[5], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[6], "GreyBar.blp", 0, true)
            call BlzFrameSetEnable(SVS_Yes_Button, true)
            call BlzFrameSetEnable(SVS_No_Button, true)
        endif
        set p = null
    endfunction
    function SVS_Show takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Show_Callback)
     
        // Disable voting for the player
        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif
    endfunction
    function SVS_Hide_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()
        if GetLocalPlayer() == p then
            call BlzFrameSetVisible(SVS_Window, false)
        endif
        set p = null
    endfunction
    function SVS_Hide takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Hide_Callback)
    endfunction
    function SVS_Yes_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()
        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif
        call TriggerExecute(udg_SVS_Yes_Trigger)
    endfunction
    function SVS_No_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()
        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif
        call TriggerExecute(udg_SVS_No_Trigger)
    endfunction
    function SVS_Update_Text_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()
        if GetLocalPlayer() == p then
            call BlzFrameSetText(SVS_Description, udg_SVS_Description)
            call BlzFrameSetText(SVS_Label, udg_SVS_Label)
        endif
        set p = null
    endfunction
    function SVS_Update_Text takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Update_Text_Callback)
    endfunction
    function SVS_Update_Slot_Color_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()
        if udg_SVS_Color == "green" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "GreenBar.blp", 0, true)
            endif
        elseif udg_SVS_Color == "red" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "RedBar.blp", 0, true)
            endif
        elseif udg_SVS_Color == "grey" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "GreyBar.blp", 0, true)
            endif
        endif
        set p = null
    endfunction
    function SVS_Update_Slot_Color takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Update_Slot_Color_Callback)
    endfunction
    function SVS_Update_Position takes nothing returns nothing
        local real xPos = udg_SVS_X_Position
        local real yPos = udg_SVS_Y_Position
        call BlzFrameSetAbsPoint(SVS_Window, FRAMEPOINT_CENTER, xPos, yPos)
        call BlzFrameSetAbsPoint(SVS_Description, FRAMEPOINT_CENTER, xPos, yPos + 0.035)
        call BlzFrameSetAbsPoint(SVS_Label, FRAMEPOINT_CENTER, xPos - 0.025, yPos)
        call BlzFrameSetAbsPoint(SVS_Yes_Button, FRAMEPOINT_CENTER, xPos + 0.06, yPos)
        call BlzFrameSetAbsPoint(SVS_No_Button, FRAMEPOINT_CENTER, xPos + 0.10, yPos)
    endfunction
 
    function SVS_Create_Frames takes nothing returns nothing
        local real xPos = udg_SVS_X_Position
        local real yPos = udg_SVS_Y_Position
        local integer i = 0
        // Window background
        set SVS_Window = BlzCreateFrame("EscMenuTextAreaTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
        call BlzFrameSetSize(SVS_Window, 0.26, 0.1)
        call BlzFrameSetAbsPoint(SVS_Window, FRAMEPOINT_CENTER, xPos, yPos)
        call BlzFrameSetVisible(SVS_Window, false)
        call BlzFrameSetEnable(SVS_Window, false)
        call BlzFrameSetLevel(SVS_Window, 1) // higher Level has priority
         // Description text telling the users what they're voting for
        set SVS_Description = BlzCreateFrameByType("TEXT", "", SVS_Window,"",0)
        call BlzFrameSetAbsPoint(SVS_Description, FRAMEPOINT_CENTER, xPos, yPos + 0.035)
        call BlzFrameSetText(SVS_Description, udg_SVS_Description)
        //call BlzFrameSetScale(SVS_Description, 1.75)
        call BlzFrameSetVisible(SVS_Description, true)
        call BlzFrameSetEnable(SVS_Description, false)
        call BlzFrameSetLevel(SVS_Description, 4)
        // Label text that sits to the left of the yes/no buttons
        set SVS_Label = BlzCreateFrameByType("TEXT", "", SVS_Window,"",0)
        call BlzFrameSetAbsPoint(SVS_Label, FRAMEPOINT_CENTER, xPos - 0.025, yPos)
        call BlzFrameSetText(SVS_Label, "Label")
        call BlzFrameSetSize(SVS_Label, 0.18, 0.02)
        //call BlzFrameSetScale(SVS_Label, 1.75)
        call BlzFrameSetVisible(SVS_Label, true)
        call BlzFrameSetEnable(SVS_Label, false)
        call BlzFrameSetLevel(SVS_Label, 4)
        call BlzFrameSetTextAlignment(SVS_Label, TEXT_JUSTIFY_MIDDLE, TEXT_JUSTIFY_LEFT)
        // Vote yes button
        set SVS_Yes_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Yes_Button, 0.04, 0.03)
        call BlzFrameSetAbsPoint(SVS_Yes_Button, FRAMEPOINT_CENTER, xPos + 0.06, yPos)
        call BlzFrameSetLevel(SVS_Yes_Button, 2)
        call BlzFrameSetText(SVS_Yes_Button, "Yes")
        call BlzTriggerRegisterFrameEvent(SVS_Yes_Trigger, SVS_Yes_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(SVS_Yes_Trigger, function SVS_Yes_Clicked)
        // Vote no button
        set SVS_No_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_No_Button, 0.04, 0.03)
        call BlzFrameSetAbsPoint(SVS_No_Button, FRAMEPOINT_CENTER, xPos + 0.10, yPos)
        call BlzFrameSetLevel(SVS_No_Button, 2)
        call BlzFrameSetText(SVS_No_Button, "No")
        call BlzTriggerRegisterFrameEvent(SVS_No_Trigger, SVS_No_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(SVS_No_Trigger, function SVS_No_Clicked)
        // Voted indicator icons
        loop
            set i = i + 1
            set SVS_Voted_Icon[i] = BlzCreateFrameByType("BACKDROP", "Icon", SVS_Window, "", 0)
            call BlzFrameSetSize(SVS_Voted_Icon[i], 0.03, 0.02)
            call BlzFrameSetAbsPoint(SVS_Voted_Icon[i], FRAMEPOINT_CENTER, xPos + SVS_Slot_Offsets[i], yPos - 0.03)
            call BlzFrameSetTexture(SVS_Voted_Icon[i], "GreenBar.blp", 0, true)
            call BlzFrameSetEnable(SVS_Voted_Icon[i], false)
            call BlzFrameSetLevel(SVS_Voted_Icon[i], 3)
            exitwhen i == 6
        endloop
    endfunction
   function SVS_Init takes nothing returns nothing
       // Load ui files
       call BlzLoadTOCFile("war3mapImported\\Templates.toc")
       call BlzLoadTOCFile("war3mapimported\\SaveLoadUI.toc")
       // Create triggers
       set SVS_Yes_Trigger = CreateTrigger()
       set SVS_No_Trigger = CreateTrigger()
       // Define the position of the vote bars (green/red/grey bars)
       set SVS_Slot_Offsets[1] = -0.10
       set SVS_Slot_Offsets[2] = -0.06
       set SVS_Slot_Offsets[3] = -0.02
       set SVS_Slot_Offsets[4] = 0.02
       set SVS_Slot_Offsets[5] = 0.06
       set SVS_Slot_Offsets[6] = 0.10
   endfunction
endlibrary
 
Last edited:
Level 10
Joined
Jun 20, 2017
Messages
337
Thanks.
I ran into a small problem, the yes and no (disabled) button appears for whoever typed the command!

Also I want to import this system Votekick! [Solved] into your system!
I want there to be 6 buttons when someone types -kick, but one of them needs to be disabled because you can't kick yourself!
If team 1 types the command, the buttons should be from 1 - 6 and team 2 from 7 - 12!
I tried to edit it but I ran into a lot of problems!
When I type kick the buttons appear from 7 to 12! with green icons! and the Yes and No buttons!
In this system, we don't need to check the voting results! because we see the icons belonging to the voting players from left to right!
JASS:
library VoteKick initializer SVS_Init

    globals
        framehandle SVS_Window
        framehandle SVS_Description
        framehandle SVS_Label
        framehandle SVS_Player1_Button
        framehandle SVS_Player2_Button
        framehandle SVS_Player3_Button
        framehandle SVS_Player4_Button
        framehandle SVS_Player5_Button
        framehandle SVS_Player6_Button
        framehandle SVS_Player7_Button
        framehandle SVS_Player8_Button
        framehandle SVS_Player9_Button
        framehandle SVS_Player10_Button
        framehandle SVS_Player11_Button
        framehandle SVS_Player12_Button
        framehandle SVS_Yes_Button
        framehandle SVS_No_Button
        framehandle array SVS_Voted_Icon
        trigger SVS_Yes_Trigger
        trigger SVS_No_Trigger
        real array SVS_Slot_Offsets
    endglobals

    function SVS_Show_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()

        if GetLocalPlayer() == p then
            call BlzFrameSetVisible(SVS_Window, true)
            call BlzFrameSetText(SVS_Description, udg_SVS_Description)
            call BlzFrameSetText(SVS_Label, udg_SVS_Label)
            call BlzFrameSetTexture(SVS_Voted_Icon[1], "GreenBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[2], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[3], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[4], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[5], "GreyBar.blp", 0, true)
            call BlzFrameSetTexture(SVS_Voted_Icon[6], "GreyBar.blp", 0, true)
            call BlzFrameSetEnable(SVS_Player1_Button, true)
            call BlzFrameSetEnable(SVS_Player2_Button, true)
            call BlzFrameSetEnable(SVS_Player3_Button, true)
            call BlzFrameSetEnable(SVS_Player4_Button, true)
            call BlzFrameSetEnable(SVS_Player5_Button, true)
            call BlzFrameSetEnable(SVS_Player6_Button, true)
            call BlzFrameSetEnable(SVS_Player7_Button, true)
            call BlzFrameSetEnable(SVS_Player8_Button, true)
            call BlzFrameSetEnable(SVS_Player9_Button, true)
            call BlzFrameSetEnable(SVS_Player10_Button, true)
            call BlzFrameSetEnable(SVS_Player11_Button, true)
            call BlzFrameSetEnable(SVS_Player12_Button, true)
            call BlzFrameSetEnable(SVS_Yes_Button, true)
            call BlzFrameSetEnable(SVS_No_Button, true)
        endif

        set p = null
    endfunction

    function SVS_Show takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Show_Callback)
       
        // Disable voting for the player
        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif

    endfunction

    function SVS_Hide_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()

        if GetLocalPlayer() == p then
            call BlzFrameSetVisible(SVS_Window, false)
        endif

        set p = null
    endfunction

    function SVS_Hide takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Hide_Callback)
    endfunction

    function SVS_Player1_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player1_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player1_Trigger)
    endfunction

    function SVS_Player2_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player2_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player2_Trigger)
    endfunction

    function SVS_Player3_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player3_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player3_Trigger)
    endfunction

    function SVS_Player4_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player4_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player4_Trigger)
    endfunction

    function SVS_Player5_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player5_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player5_Trigger)
    endfunction

    function SVS_Player6_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player6_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player6_Trigger)
    endfunction

    function SVS_Player7_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player7_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player7_Trigger)
    endfunction

    function SVS_Player8_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player8_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player8_Trigger)
    endfunction

    function SVS_Player9_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player9_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player9_Trigger)
    endfunction

    function SVS_Player10_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player10_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player10_Trigger)
    endfunction

    function SVS_Player11_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player11_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player11_Trigger)
    endfunction

    function SVS_Player12_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Player12_Button, false)
        endif

        call TriggerExecute(udg_SVS_Player12_Trigger)
    endfunction

    function SVS_Yes_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif

        call TriggerExecute(udg_SVS_Yes_Trigger)
    endfunction

    function SVS_No_Clicked takes nothing returns nothing
        set udg_SVS_Player = GetTriggerPlayer()

        if GetLocalPlayer() == udg_SVS_Player then
            call BlzFrameSetEnable(SVS_Yes_Button, false)
            call BlzFrameSetEnable(SVS_No_Button, false)
        endif

        call TriggerExecute(udg_SVS_No_Trigger)
    endfunction

    function SVS_Update_Text_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()

        if GetLocalPlayer() == p then
            call BlzFrameSetText(SVS_Description, udg_SVS_Description)
            call BlzFrameSetText(SVS_Label, udg_SVS_Label)
        endif

        set p = null
    endfunction

    function SVS_Update_Text takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Update_Text_Callback)
    endfunction

    function SVS_Update_Slot_Color_Callback takes nothing returns nothing
        local player p = GetEnumPlayer()

        if udg_SVS_Color == "green" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "GreenBar.blp", 0, true)
            endif

        elseif udg_SVS_Color == "red" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "RedBar.blp", 0, true)
            endif

        elseif udg_SVS_Color == "grey" then
            if GetLocalPlayer() == p then
                call BlzFrameSetTexture(SVS_Voted_Icon[udg_SVS_Slot], "GreyBar.blp", 0, true)
            endif
        endif

        set p = null
    endfunction

    function SVS_Update_Slot_Color takes nothing returns nothing
        call ForForce(udg_SVS_Player_Group, function SVS_Update_Slot_Color_Callback)
    endfunction

    function SVS_Update_Position takes nothing returns nothing
        local real xPos = udg_SVS_X_Position
        local real yPos = udg_SVS_Y_Position
        call BlzFrameSetAbsPoint(SVS_Window, FRAMEPOINT_CENTER, xPos, yPos)
        call BlzFrameSetAbsPoint(SVS_Description, FRAMEPOINT_CENTER, xPos, yPos + 0.035)
        call BlzFrameSetAbsPoint(SVS_Label, FRAMEPOINT_CENTER, xPos - 0.025, yPos)
        call BlzFrameSetAbsPoint(SVS_Yes_Button, FRAMEPOINT_CENTER, xPos + 0.06, yPos + 0.005)
        call BlzFrameSetAbsPoint(SVS_No_Button, FRAMEPOINT_CENTER, xPos + 0.10, yPos + 0.005)
    endfunction
   
    function SVS_Create_Frames takes nothing returns nothing
        local real xPos = udg_SVS_X_Position
        local real yPos = udg_SVS_Y_Position
        local integer i = 0

        // Window background
        set SVS_Window = BlzCreateFrame("EscMenuTextAreaTemplate", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0, 0)
        call BlzFrameSetSize(SVS_Window, 0.50, 0.12)
        call BlzFrameSetAbsPoint(SVS_Window, FRAMEPOINT_CENTER, xPos, yPos)
        call BlzFrameSetVisible(SVS_Window, false)
        call BlzFrameSetEnable(SVS_Window, false)
        call BlzFrameSetLevel(SVS_Window, 1) // higher Level has priority

         // Description text telling the users what they're voting for
        set SVS_Description = BlzCreateFrameByType("TEXT", "", SVS_Window,"",0)
        call BlzFrameSetAbsPoint(SVS_Description, FRAMEPOINT_CENTER, xPos, yPos + 0.040)
        call BlzFrameSetText(SVS_Description, udg_SVS_Description)
        //call BlzFrameSetScale(SVS_Description, 1.75)
        call BlzFrameSetVisible(SVS_Description, true)
        call BlzFrameSetEnable(SVS_Description, false)
        call BlzFrameSetLevel(SVS_Description, 4)

        // Vote player 1 button
        set SVS_Player1_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player1_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player1_Button, FRAMEPOINT_CENTER, xPos - 0.20, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player1_Button, 2)
        call BlzFrameSetText(SVS_Player1_Button, "Player 1")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player1_Trigger, SVS_Player1_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player1_Trigger, function SVS_Player1_Clicked)

        // Vote player 2 button
        set SVS_Player2_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player2_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player2_Button, FRAMEPOINT_CENTER, xPos - 0.12, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player2_Button, 2)
        call BlzFrameSetText(SVS_Player2_Button, "Player 2")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player2_Trigger, SVS_Player2_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player2_Trigger, function SVS_Player2_Clicked)

        // Vote player 3 button
        set SVS_Player3_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player3_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player3_Button, FRAMEPOINT_CENTER, xPos - 0.04, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player3_Button, 2)
        call BlzFrameSetText(SVS_Player3_Button, "Player 3")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player3_Trigger, SVS_Player3_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player3_Trigger, function SVS_Player3_Clicked)

        // Vote player 4 button
        set SVS_Player4_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player4_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player4_Button, FRAMEPOINT_CENTER, xPos + 0.04, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player4_Button, 2)
        call BlzFrameSetText(SVS_Player4_Button, "Player 4")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player4_Trigger, SVS_Player4_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player4_Trigger, function SVS_Player4_Clicked)

        // Vote player 5 button
        set SVS_Player5_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player5_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player5_Button, FRAMEPOINT_CENTER, xPos + 0.12, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player5_Button, 2)
        call BlzFrameSetText(SVS_Player5_Button, "Player 5")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player5_Trigger, SVS_Player5_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player5_Trigger, function SVS_Player5_Clicked)

        // Vote player 6 button
        set SVS_Player6_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player6_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player6_Button, FRAMEPOINT_CENTER, xPos + 0.20, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player6_Button, 2)
        call BlzFrameSetText(SVS_Player6_Button, "Player 6")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player6_Trigger, SVS_Player6_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player6_Trigger, function SVS_Player6_Clicked)

        // Vote player 7 button
        set SVS_Player7_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player7_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player7_Button, FRAMEPOINT_CENTER, xPos - 0.20, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player7_Button, 2)
        call BlzFrameSetText(SVS_Player7_Button, "Player 7")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player7_Trigger, SVS_Player7_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player7_Trigger, function SVS_Player7_Clicked)

        // Vote player 8 button
        set SVS_Player8_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player8_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player8_Button, FRAMEPOINT_CENTER, xPos - 0.12, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player8_Button, 2)
        call BlzFrameSetText(SVS_Player8_Button, "Player 8")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player8_Trigger, SVS_Player8_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player8_Trigger, function SVS_Player8_Clicked)

        // Vote player 9 button
        set SVS_Player9_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player9_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player9_Button, FRAMEPOINT_CENTER, xPos - 0.04, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player9_Button, 2)
        call BlzFrameSetText(SVS_Player9_Button, "Player 9")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player9_Trigger, SVS_Player9_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player9_Trigger, function SVS_Player9_Clicked)

        // Vote player 10 button
        set SVS_Player10_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player10_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player10_Button, FRAMEPOINT_CENTER, xPos + 0.04, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player10_Button, 2)
        call BlzFrameSetText(SVS_Player10_Button, "Player 10")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player10_Trigger, SVS_Player10_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player10_Trigger, function SVS_Player10_Clicked)

        // Vote player 11 button
        set SVS_Player11_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player11_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player11_Button, FRAMEPOINT_CENTER, xPos + 0.12, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player11_Button, 2)
        call BlzFrameSetText(SVS_Player11_Button, "Player 11")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player11_Trigger, SVS_Player11_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player11_Trigger, function SVS_Player11_Clicked)

        // Vote player 12 button
        set SVS_Player12_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        call BlzFrameSetSize(SVS_Player12_Button, 0.08, 0.03)
        call BlzFrameSetAbsPoint(SVS_Player12_Button, FRAMEPOINT_CENTER, xPos + 0.20, yPos + 0.011)
        call BlzFrameSetLevel(SVS_Player12_Button, 2)
        call BlzFrameSetText(SVS_Player12_Button, "Player 12")
        call BlzTriggerRegisterFrameEvent(udg_SVS_Player12_Trigger, SVS_Player12_Button, FRAMEEVENT_CONTROL_CLICK)
        call TriggerAddAction(udg_SVS_Player12_Trigger, function SVS_Player12_Clicked)

        // Vote yes button
        //set SVS_Yes_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        //call BlzFrameSetSize(SVS_Yes_Button, 0.05, 0.03)
        //call BlzFrameSetAbsPoint(SVS_Yes_Button, FRAMEPOINT_CENTER, xPos - 0.025, yPos)
        //call BlzFrameSetLevel(SVS_Yes_Button, 2)
        //call BlzFrameSetText(SVS_Yes_Button, "YES")
        //call BlzTriggerRegisterFrameEvent(SVS_Yes_Trigger, SVS_Yes_Button, FRAMEEVENT_CONTROL_CLICK)
        //call TriggerAddAction(SVS_Yes_Trigger, function SVS_Yes_Clicked)

        // Vote no button
        //set SVS_No_Button = BlzCreateFrame("ScriptDialogButton", SVS_Window, 0, 0)
        //call BlzFrameSetSize(SVS_No_Button, 0.05, 0.03)
        //call BlzFrameSetAbsPoint(SVS_No_Button, FRAMEPOINT_CENTER, xPos + 0.025, yPos)
        //call BlzFrameSetLevel(SVS_No_Button, 2)
        //call BlzFrameSetText(SVS_No_Button, "NO")
        //call BlzTriggerRegisterFrameEvent(SVS_No_Trigger, SVS_No_Button, FRAMEEVENT_CONTROL_CLICK)
        //call TriggerAddAction(SVS_No_Trigger, function SVS_No_Clicked)

        // Voted indicator icons
        loop
            set i = i + 1
            set SVS_Voted_Icon[i] = BlzCreateFrameByType("BACKDROP", "Icon", SVS_Window, "", 0)
            call BlzFrameSetSize(SVS_Voted_Icon[i], 0.07, 0.03)
            call BlzFrameSetAbsPoint(SVS_Voted_Icon[i], FRAMEPOINT_CENTER, xPos + SVS_Slot_Offsets[i], yPos - 0.030)
            call BlzFrameSetTexture(SVS_Voted_Icon[i], "GreenBar.blp", 0, true)
            call BlzFrameSetEnable(SVS_Voted_Icon[i], false)
            call BlzFrameSetLevel(SVS_Voted_Icon[i], 3)
            exitwhen i == 6
        endloop

    endfunction

   function SVS_Init takes nothing returns nothing
       // Load ui files
       call BlzLoadTOCFile("war3mapImported\\Templates.toc")
       call BlzLoadTOCFile("war3mapimported\\SaveLoadUI.toc")

       // Create triggers
       set SVS_Yes_Trigger = CreateTrigger()
       set SVS_No_Trigger = CreateTrigger()

       // Define the position of the vote bars (green/red/grey)
       set SVS_Slot_Offsets[1] = -0.20
       set SVS_Slot_Offsets[2] = -0.12
       set SVS_Slot_Offsets[3] = -0.04
       set SVS_Slot_Offsets[4] = 0.04
       set SVS_Slot_Offsets[5] = 0.12
       set SVS_Slot_Offsets[6] = 0.20
   endfunction

endlibrary
 

Attachments

  • Screenshot_1.png
    Screenshot_1.png
    864.4 KB · Views: 6
  • Screenshot_2.png
    Screenshot_2.png
    845.9 KB · Views: 6
  • Screenshot_3.png
    Screenshot_3.png
    821.9 KB · Views: 6
  • Simple Voting System 1.w3m
    204.4 KB · Views: 0
Top