Comparing GetPlayerController and PLAYER_SLOT_STATE_PLAYING on Map Init ?

Komaqtion

You can change this now in User CP.
Reaction score
469
Hello ! :D

Ok, so I'm trying to make a "Swap command" system right now, like when you type "-swap 3" you will want to swap your hero for [ljass]Player( 3 )[/ljass]'s hero ;) (From DotA...)

Ok, so to the problem:
I'm trying to check the following on Map Initialization:


Should this work ? :S

Here's the entire code, and the message from the "[ljass]call BJDebugMsg( GetPlayerName( p ) )[/ljass]" line, doesn't show :(

JASS:
library SwapHeroes initializer Init requires SimError, TimerUtils

    globals
        private constant boolean HEROES_ON_INIT = false
    endglobals

    globals
        private group ENUM = CreateGroup()
        
        private integer tempInt = 0
    endglobals

    private struct SwapData extends array
        boolean hasSwapped
        
        unit swapUnit
        unit targetUnit
        
        player swapPlayer
        player targetPlayer
    endstruct
        
    private function SwapActions takes nothing returns boolean
        local player p = GetTriggerPlayer()
        local player pt = Player( S2I( SubString( GetEventPlayerChatString(), 6, StringLength( GetEventPlayerChatString() ) ) ) )
        
        if GetPlayerId( pt ) >= 12 or GetPlayerId( pt ) < 0 or pt == null then
            call SimError( p, "You need to input a valid player-id ! \n Try again, please !" )
            
            return false
        endif
        
        /*if pt != null and p != null and SwapData[ GetPlayerId( p ) ].swapUnit != null and SwapData[ GetPlayerId(  then
            
        endif*/
        
        return false
    endfunction
    
    static if HEROES_ON_INIT then
    
        private function PickInitHeroes takes nothing returns boolean
            local unit u = GetFilterUnit()
            local player p = GetOwningPlayer( u )
            
            if tempint == 0 then
                set SwapHeroes[ GetPlayerId( p ) ].swapUnit = u
                set tempInt = 1
            endif
            
            set u = null
            set p = null
            
            return false
        endfunction
    
        private function OnInitHeroes takes nothing returns nothing
            local integer i = 0
            local player p
            
            loop
                exitwhen i >= 12
                
                set tempInt = 0
                set p = Player( i )
                
                if SwapData[ GetPlayerId( p ) ].swapUnit != null and GetPlayerController( p ) == MAP_CONTROL_USER and GetPlayerController( p ) == PLAYER_SLOT_STATE_PLAYING then
                    call GroupEnumUnitsOfPlayer( ENUM, p, Filter( function PickInitHeroes ) )
                endif
                
                set i = i + 1
            endloop
        
        endfunction
    
    endif
    
    static if DEBUG_MODE then
        private function DebugHero takes nothing returns nothing            
            set SwapData[0].swapUnit = gg_unit_hpea_0001
        endfunction
    endif

    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        local integer i = 0
        local player p = null
        
        loop
            exitwhen i >= 12
            
            set p = Player( i )
            
            if GetPlayerController( p ) == MAP_CONTROL_USER and GetPlayerController( p ) == PLAYER_SLOT_STATE_PLAYING then
                call TriggerRegisterPlayerChatEvent( t, p, "-swap ", true )
                
                call BJDebugMsg( GetPlayerName( p ) )
                
                set SwapData[ GetPlayerId( p ) ].hasSwapped = false
                set SwapData[ GetPlayerId( p ) ].swapPlayer = p
            endif
            
            set i = i + 1
        endloop
        
        call TriggerAddCondition( t, Condition( function SwapActions ) )
        
        static if HEROES_ON_INIT then
            call OnInitHeroes()
        endif
        
        static if DEBUG_MODE then
            call DebugHero()
        endif
        
    endfunction
    
endlibrary


But the thing is, I have also tried to use a great variety of methods using the same trigger, like using a timer and another function for it all, using another trigger, and a periodic event of 0.00, 0.01 and 1.00, simply adding a single action (Though used condition) to a trigger in the init function, but NOTHING of this has worked...

I've also narrowed it down to only being the "[ljass]GetPlayerController( p ) == PLAYER_SLOT_STATE_PLAYING[/ljass]" that's not working, but the VERY wierd part is that I converted a (Originally) GUI trigger with that same condition in it to custom script, and used the event "Map Initialization", and that WORKED ?!?! :S

Is there something I'm missing here, or what ? XD
 

Komaqtion

You can change this now in User CP.
Reaction score
469
OUCH !!!!!!!! XD

Such a silly mistake !!!!!!!!!!! XD

Thanks a bunch, I though the WE flipped on me :p
 
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