HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Hero portrait trigger

03-05-2005, 09:49 AM#1
The_AwaKening
I have this trigger to change the order of heros. It used to work, but stopped since patch 1.17. I can't see what the trbl is, can someone help?

function Trig_Order_Up_Actions takes nothing returns nothing
local integer i = 1
local player heroOwner = GetTriggerPlayer()
local integer playerIndex = GetConvertedPlayerId(heroOwner)
local integer heroIndex = 0
local integer heroIndexIndex = 0
local integer tempIndex = 0
local integer k = 1
if ( SubStringBJ(GetEventPlayerChatString(), 1, 4) == "-up " ) then
loop
exitwhen i > udg_heroTotalHeros
if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then
if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 5, 6)) ) then
set heroIndexIndex = i
set i = udg_heroTotalHeros + 1
else
set k = k + 1
endif
endif
set i = i + 1
endloop
if ( heroIndexIndex == 0 ) then
return
endif
set i = heroIndexIndex - 1
loop
exitwhen i < 1
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then
set tempIndex = i
set i = 0
else
set i = i - 1
endif
endloop
if( tempIndex == 0 ) then
return
endif
set heroIndex = udg_heroOrder[tempIndex]
set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex]
set udg_heroOrder[heroIndexIndex] = heroIndex
set i = 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false )
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false )
endif
set i = i + 1
endloop
elseif ( SubStringBJ(GetEventPlayerChatString(), 1, 6) == "-down " ) then
loop
exitwhen i > udg_heroTotalHeros
if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then
if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 7, 8)) ) then
set heroIndexIndex = i
set i = udg_heroTotalHeros + 1
else
set k = k + 1
endif
endif
set i = i + 1
endloop
if ( heroIndexIndex == 0 ) then
return
endif
set i = heroIndexIndex + 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then
set tempIndex = i
set i = udg_heroTotalHeros + 1
else
set i = i + 1
endif
endloop
if( tempIndex == 0 ) then
return
endif
set heroIndex = udg_heroOrder[tempIndex]
set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex]
set udg_heroOrder[heroIndexIndex] = heroIndex
set i = 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false )
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false )
endif
set i = i + 1
endloop
endif
endfunction
function InitTrig_Order_Up_or_Down takes nothing returns nothing
set gg_trg_Order_Up_or_Down = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-down", false )
call TriggerAddAction( gg_trg_Order_Up_or_Down, function Trig_Order_Up_Actions )
endfunction
03-05-2005, 10:52 AM#2
PitzerMike
Please put it in code tags.
Nobody want's to read that.
03-05-2005, 08:07 PM#3
The_AwaKening
Sorry wish I could, but it's all I have. Lost everything and had to unprotect it and that is all I have now.
03-06-2005, 03:58 AM#4
SentryIII
What is it supposed to do anyway?
03-06-2005, 04:56 PM#5
The_AwaKening
It moves the order of your heros at the upper left of your screen, basically changing what function key they are assigned to. I'm really sorry that I don't know more about jass and can't make it easier, but that's why I thought I would post it here to see if someone could figure it out.
03-07-2005, 02:52 PM#6
logik
this is what he means by code tags, i will do it for you, but remember it for future posts of any code you are using.

Code:
function Trig_Order_Up_Actions takes nothing returns nothing
local integer i = 1
local player heroOwner = GetTriggerPlayer()
local integer playerIndex = GetConvertedPlayerId(heroOwner)
local integer heroIndex = 0
local integer heroIndexIndex = 0
local integer tempIndex = 0
local integer k = 1
if ( SubStringBJ(GetEventPlayerChatString(), 1, 4) == "-up " ) then
loop
exitwhen i > udg_heroTotalHeros
if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then
if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 5, 6)) ) then
set heroIndexIndex = i
set i = udg_heroTotalHeros + 1
else
set k = k + 1
endif
endif
set i = i + 1
endloop
if ( heroIndexIndex == 0 ) then
return
endif
set i = heroIndexIndex - 1
loop
exitwhen i < 1
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then
set tempIndex = i
set i = 0
else
set i = i - 1
endif
endloop
if( tempIndex == 0 ) then
return
endif
set heroIndex = udg_heroOrder[tempIndex]
set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex]
set udg_heroOrder[heroIndexIndex] = heroIndex
set i = 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false )
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false )
endif
set i = i + 1
endloop
elseif ( SubStringBJ(GetEventPlayerChatString(), 1, 6) == "-down " ) then
loop
exitwhen i > udg_heroTotalHeros
if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then
if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 7, 8)) ) then
set heroIndexIndex = i
set i = udg_heroTotalHeros + 1
else
set k = k + 1
endif
endif
set i = i + 1
endloop
if ( heroIndexIndex == 0 ) then
return
endif
set i = heroIndexIndex + 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then
set tempIndex = i
set i = udg_heroTotalHeros + 1
else
set i = i + 1
endif
endloop
if( tempIndex == 0 ) then
return
endif
set heroIndex = udg_heroOrder[tempIndex]
set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex]
set udg_heroOrder[heroIndexIndex] = heroIndex
set i = 1
loop
exitwhen i > udg_heroTotalHeros
if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false )
call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false )
endif
set i = i + 1
endloop
endif
endfunction
function InitTrig_Order_Up_or_Down takes nothing returns nothing
set gg_trg_Order_Up_or_Down = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-up", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-down", false )
call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-down", false )
call TriggerAddAction( gg_trg_Order_Up_or_Down, function Trig_Order_Up_Actions )
endfunction
03-08-2005, 03:33 AM#7
The_AwaKening
Thanks although I don't see what the difference is really.
03-08-2005, 06:31 AM#8
aaero
This is going to make this post super long, but here's what he really wanted.

Code:
function Trig_Order_Up_Actions takes nothing returns nothing 
	local integer i = 1 
	local player heroOwner = GetTriggerPlayer() 
	local integer playerIndex = GetConvertedPlayerId(heroOwner) 
	local integer heroIndex = 0 
	local integer heroIndexIndex = 0 
	local integer tempIndex = 0 
	local integer k = 1 
	if ( SubStringBJ(GetEventPlayerChatString(), 1, 4) == "-up " ) then 
		loop 
			exitwhen i > udg_heroTotalHeros 
			if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then 
				if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 5, 6)) ) then 
					set heroIndexIndex = i 
					set i = udg_heroTotalHeros + 1 
					else 
					set k = k + 1 
				endif 
			endif 
			set i = i + 1 
		endloop 
		if ( heroIndexIndex == 0 ) then 
			return 
		endif 
		set i = heroIndexIndex - 1 
		loop 
			exitwhen i < 1 
			if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then 
				set tempIndex = i 
				set i = 0 
				else 
				set i = i - 1 
			endif 
		endloop 
		if( tempIndex == 0 ) then 
			return 
		endif 
		set heroIndex = udg_heroOrder[tempIndex] 
		set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex] 
		set udg_heroOrder[heroIndexIndex] = heroIndex 
		set i = 1 
		loop 
			exitwhen i > udg_heroTotalHeros 
			if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then 
				call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false ) 
				call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false ) 
				endif 
			set i = i + 1 
		endloop 
		elseif ( SubStringBJ(GetEventPlayerChatString(), 1, 6) == "-down " ) then 
		loop 
			exitwhen i > udg_heroTotalHeros 
			if( GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) == heroOwner ) then 
				if ( k == S2I(SubStringBJ(GetEventPlayerChatString(), 7, 8)) ) then 
					set heroIndexIndex = i 
					set i = udg_heroTotalHeros + 1 
					else 
					set k = k + 1 
					endif 
				endif 
			set i = i + 1 
		endloop 
		if ( heroIndexIndex == 0 ) then 
			return 
		endif 
		set i = heroIndexIndex + 1 
		loop 
			exitwhen i > udg_heroTotalHeros 
			if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) )then 
				set tempIndex = i 
				set i = udg_heroTotalHeros + 1 
				else 
				set i = i + 1 
			endif 
		endloop 
		if( tempIndex == 0 ) then 
			return 
		endif 
		set heroIndex = udg_heroOrder[tempIndex] 
		set udg_heroOrder[tempIndex] = udg_heroOrder[heroIndexIndex] 
		set udg_heroOrder[heroIndexIndex] = heroIndex 
		set i = 1 
		loop 
			exitwhen i > udg_heroTotalHeros 
			if ( heroOwner == GetOwningPlayer(udg_heroList[udg_heroOrder[i]]) ) then 
				call SetUnitOwner( udg_heroList[udg_heroOrder[i]], Player(PLAYER_NEUTRAL_PASSIVE), false ) 
 			       call SetUnitOwner( udg_heroList[udg_heroOrder[i]], heroOwner, false ) 
			endif 
			set i = i + 1 
		endloop 
	endif 
endfunction 
	
function InitTrig_Order_Up_or_Down takes nothing returns nothing 
	set gg_trg_Order_Up_or_Down = CreateTrigger( ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-up", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(0), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(1), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(2), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(3), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(4), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(5), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(6), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(7), "-down", false ) 
	call TriggerRegisterPlayerChatEvent( gg_trg_Order_Up_or_Down, Player(8), "-down", false ) 
	call TriggerAddAction( gg_trg_Order_Up_or_Down, function Trig_Order_Up_Actions ) 
endfunction

I autoformatted it using JohnFNs JEdit tool, making it a lot easier to read.

I have to say, I don't know why it wouldn't work (if it used to) but I didn't ever run it through WorldEditor to see what it's doing. Basically, it loops through a players heroes and gives them all to Neutral Extra, then gives control of them back to the player in a slightly modified order. Does it do anything right now?
03-08-2005, 09:45 AM#9
PitzerMike
Yeah, I also couldn't find any suspicious function that "should" be affected by the patch.
Maybe you can explain what the problem is?
03-08-2005, 09:28 PM#10
The_AwaKening
To use the function, you highlight one of your heros and type -up 2 or -down 3 and so on to change their position. When I try doing it now, it just deselects your hero but doesn't move them. Thanks for all your help guys, I've been struggling with this for a long time now.
03-09-2005, 09:20 PM#11
masda70
Maybe other triggers that set those udg_herolist, udg_hero0rder, udg_heroTotalHeros... were messed up with the new patch.
03-11-2005, 07:22 AM#12
The_AwaKening
Well, this one is over my head, can't find the problem. If someone would be willing to look it over, I could send the map with all triggers associated to it. Or maybe you know how to make a gui trigger that would accomplish what I need.
03-21-2005, 04:01 AM#13
The_AwaKening
Ok, here is a thought. I have some custom rules in my map also to take unused player slot heros if the game didn't fill, along with their farms. I also have an option to go all random heros. If I choose both options, then I start with 3 heros rather than 1 and for some reason (bug maybe) another player shows up on my leaderboard that shouldn't be there. But then my up down trigger works.

It shows like this on the board.
1]The_AwaKening
0]Player 2

The player 0 that is empty somehow allows the hero to temporary go to that spot maybe then reassign it? Maybe that could point the direction to my problem, or is there even a way that I could add that player 0 empty to my map on startup?