| 03-05-2005, 09:49 AM | #1 |
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 |
Please put it in code tags. Nobody want's to read that. |
| 03-05-2005, 08:07 PM | #3 |
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 |
What is it supposed to do anyway? |
| 03-06-2005, 04:56 PM | #5 |
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 |
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 |
Thanks although I don't see what the difference is really. |
| 03-08-2005, 06:31 AM | #8 |
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 |
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 |
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 |
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 |
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 |
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? |
