Library does not work

cleeezzz

The Undead Ranger.
Reaction score
268
SOLVED
JASS:
library GMI requires CSSafety

globals
    private playercolor pc
endglobals

private function Change takes nothing returns nothing
    call SetUnitColor(GetEnumUnit(), pc)
endfunction

private function Color takes nothing returns nothing // changes player color, then picks all units and changes unit color as well
    local group g = NewGroup()
    call SetPlayerColor(GetEnumPlayer(), pc) 
    call GroupEnumUnitsOfPlayer(g,GetEnumPlayer(),null)
    call ForGroup(g, function Change)
    call ReleaseGroup(g)
    set g = null
endfunction

public function 6TEAMSTART takes nothing returns nothing  
    local integer i = 0
    local integer a = 0
    local integer b = 0
    set Mode = 5
        loop
            exitwhen i > 5  //add player 1 - 6
                if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
                    call ForceAddPlayer(Teams[1], Player(i))
                endif
            set i = i + 1
        endloop
        loop
            exitwhen i > 11 // add player 7 - 12
                if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
                    call ForceAddPlayer(Teams[2], Player(i))
                endif
            set i = i + 1
        endloop
    set b = 1
    loop  //this loop to loop through the each Team
        exitwhen b > 2     
        set i = 0
        loop //this loop to go through each player in the force and ally each other
            if IsPlayerInForce(Player(i), Teams<b>) then
                set a = 0
                loop
                    if IsPlayerInForce(Player(a), Teams<b>) then  //allies players within the force
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_PASSIVE, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_HELP_REQUEST,  true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_HELP_RESPONSE, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_XP,     true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_SPELLS, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_CONTROL, false)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_VISION, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_ADVANCED_CONTROL, false)
                    endif
                    set a = a + 1
                    exitwhen a == bj_MAX_PLAYER_SLOTS
                endloop
            endif

            set i = i + 1
            exitwhen i == bj_MAX_PLAYER_SLOTS
        endloop
        set b = b + 1
    endloop
    set pc = PLAYER_COLOR_RED  //changes player colors and units
    call ForForce(Teams[1], function Color)
    set pc = PLAYER_COLOR_BLUE
    call ForForce(Teams[2], function Color)
endfunction  

endlibrary</b></b>


this trigger just makes players 1-6 on team 1 and players 7-12 on team 2. supposed to change colors and ally the players but when i call it using "call GMI_6TEAMSTART()" it does nothing.

edit: added comments in code for clarifying

Array Teams is a Force global variable

also clarification, Nothing happens.
 

AdamGriffith

You can change this now in User CP.
Reaction score
69
Also, if there inside another scope/library dont you have to use the library name infront just like functions?
 

cleeezzz

The Undead Ranger.
Reaction score
268
SOLVED

JASS:
library GMI requires CSSafety

globals
    private playercolor pc
endglobals

private function Change takes nothing returns nothing
    call SetUnitColor(GetEnumUnit(), pc)
endfunction

private function Color takes nothing returns nothing
    local group g = NewGroup()
    call SetPlayerColor(GetEnumPlayer(), pc) 
    call GroupEnumUnitsOfPlayer(g,GetEnumPlayer(),null)
    call ForGroup(g, function Change)
    call ReleaseGroup(g)
    set g = null
endfunction
   
public function 6TEAMSTART takes nothing returns nothing    
    local integer i = 1
    local integer a = 0
    local integer b = 0
    
    loop
        exitwhen i &gt; 2
        set Teams<i> = CreateForce()
        set i = i + 1
    endloop
    
    set i = 0
    set Mode = 5
        loop
            exitwhen i &gt; 5
                if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
                    call ForceAddPlayer(Teams[1], Player(i))
                endif
            set i = i + 1
        endloop
        loop
            exitwhen i &gt; 11
                if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
                    call ForceAddPlayer(Teams[2], Player(i))
                endif
            set i = i + 1
        endloop
    set b = 1
    loop
        exitwhen b &gt; 2    
        set i = 0
        loop
            if IsPlayerInForce(Player(i), Teams<b>) then
                set a = 0
                loop
                    if IsPlayerInForce(Player(a), Teams<b>) then
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_PASSIVE, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_HELP_REQUEST,  true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_HELP_RESPONSE, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_XP,     true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_SPELLS, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_CONTROL, false)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_VISION, true)
                        call SetPlayerAlliance(Player(i), Player(a), ALLIANCE_SHARED_ADVANCED_CONTROL, false)
                    endif
                    set a = a + 1
                    exitwhen a == bj_MAX_PLAYER_SLOTS
                endloop
            endif

            set i = i + 1
            exitwhen i == bj_MAX_PLAYER_SLOTS
        endloop
        set b = b + 1
    endloop
    set pc = PLAYER_COLOR_RED
    call ForForce(Teams[1], function Color)
    set pc = PLAYER_COLOR_BLUE
    call ForForce(Teams[2], function Color)
endfunction  

endlibrary
</b></b></i>


yea i forgot to initialize team. but i did it now, its still not working

>>Also, if there inside another scope/library dont you have to use the library name infront just like functions?

didnt i do that?

i call it using "call GMI_6TEAMSTART()" it does nothing.

shit.. i forgot, im playing with bots. the condition "Player is playing" was returning false. omfg.... thanks +rep
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top