Komaqtion
You can change this now in User CP.
- Reaction score
- 469
Hello !
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
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
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:
JASS:
if GetPlayerController( p ) == MAP_CONTROL_USER and GetPlayerController( p ) == PLAYER_SLOT_STATE_PLAYING then
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