The Impossible Problem: Trigger Gives Critical Error

Lightstalker

New Member
Reaction score
55
Solution here: http://www.thehelper.net/forums/showpost.php?p=1091597&postcount=5

JASS:
scope SetTeams initializer Init

globals
    private constant integer HEROSELECTORID = 'n00R'
    private constant integer STARTGOLD = 750
    //private constant real CENTERSHOPX = GetUnitX(gg_unit_n01E_0006)
    //private constant real CENTERSHOPY = GetUnitY(gg_unit_n01E_0006)
    //private constant real RECTX = GetRectCenterX(gg_rct_Select_Hero_Center)
    //private constant real RECTY = GetRectCenterY(gg_rct_Select_Hero_Center)
endglobals

private function SharedVision takes nothing returns boolean
    local unit u = GetFilterUnit()
    call UnitShareVision(u, Player(0), true)
    set u = null
    return false
endfunction

private function Init takes nothing returns nothing
    local integer i = 0
    local fogmodifier fog = null

    loop
        if GetPlayerSlotState(Player(i)) == PLAYER_SLOT_STATE_PLAYING then
        
            //TEAM 1
            if i < 5 and Player(i) != Player(i) then
                //PLAYER >> CONTROLLER
                call SetPlayerAllianceStateAllyBJ(Player(i), Player(5), true)
                call SetPlayerAllianceStateVisionBJ(Player(i), Player(5), false)
                call SetPlayerAllianceStateControlBJ(Player(i), Player(5), false)
                call SetPlayerAllianceStateFullControlBJ(Player(i), Player(5), false)
                //CONTROLLER >> PLAYER
                call SetPlayerAllianceStateAllyBJ(Player(5), Player(i), true)
                call SetPlayerAllianceStateVisionBJ(Player(5), Player(i), false)
                call SetPlayerAllianceStateControlBJ(Player(5), Player(i), true)
                call SetPlayerAllianceStateFullControlBJ(Player(5), Player(i), true)
                call GroupEnumUnitsOfPlayer(TEMPGROUP, Player(5), Condition(function SharedVision))
                
            //TEAM 2
            elseif Player(i) != Player(i) then
                //PLAYER >> CONTROLLER
                call SetPlayerAllianceStateAllyBJ(Player(i), Player(11), true)
                call SetPlayerAllianceStateVisionBJ(Player(i), Player(11), false)
                call SetPlayerAllianceStateControlBJ(Player(i), Player(11), false)
                call SetPlayerAllianceStateFullControlBJ(Player(i), Player(11), false)
                //CONTROLLER >> PLAYER
                call SetPlayerAllianceStateAllyBJ(Player(11), Player(i), true)
                call SetPlayerAllianceStateVisionBJ(Player(11), Player(i), false)
                call SetPlayerAllianceStateControlBJ(Player(11), Player(i), true)
                call SetPlayerAllianceStateFullControlBJ(Player(11), Player(i), true)
                call GroupEnumUnitsOfPlayer(TEMPGROUP, Player(11), Condition(function SharedVision))
            endif
            
            //ALL PLAYERS
            set HEROSELECTOR<i> = CreateUnit(Player(i), HEROSELECTORID, GetUnitX(gg_unit_n01E_0006), GetUnitY(gg_unit_n01E_0006), 0.0)
            set fog = CreateFogModifierRect(Player(i), FOG_OF_WAR_VISIBLE, MAPENTIRE, false, false)
            set CAMDIST<i> = 2500.00
            
            call SetCameraField(CAMERA_FIELD_TARGET_DISTANCE, CAMDIST<i>, 0.0)
            call PanCameraToTimed(GetRectCenterX(gg_rct_Select_Hero_Center), GetRectCenterY(gg_rct_Select_Hero_Center), 0.0)
            call SetPlayerState(Player(i), PLAYER_STATE_RESOURCE_GOLD, STARTGOLD)
            //call SetPlayerAllianceStateBJ( ConvertedPlayer(GetForLoopIndexA()), Player(bj_PLAYER_NEUTRAL_EXTRA), bj_ALLIANCE_NEUTRAL )
            call SetPlayerTechMaxAllowed(Player(i), &#039;HERO&#039;, 2)
            call SetPlayerState(Player(i),  PLAYER_STATE_GIVES_BOUNTY, IntegerTertiaryOp(true, 1, 0))
            
            //DISABLE ABILITIES
            call SetPlayerAbilityAvailable(Player(i), &#039;Aatk&#039;, false) //ATTACK
            call SetPlayerAbilityAvailable(Player(i), &#039;A00N&#039;, false) //HERO STATS
            call SetPlayerAbilityAvailable(Player(i), &#039;A00W&#039;, false) //HERO STATS (DISABLED)
            call SetPlayerAbilityAvailable(Player(i), &#039;A00L&#039;, false) //WAR VETERAN
            call SetPlayerAbilityAvailable(Player(i), &#039;ASS1&#039;, false) //SKILL SLOT 1
            call SetPlayerAbilityAvailable(Player(i), &#039;ASS2&#039;, false) //SKILL SLOT 2
            call SetPlayerAbilityAvailable(Player(i), &#039;ASS3&#039;, false) //SKILL SLOT 3
            call SetPlayerAbilityAvailable(Player(i), &#039;ASS4&#039;, false) //SKILL SLOT 4
            
            //HINT
            call DisplayTimedTextToPlayer(Player(i), 0.0, 0.0, 20.0, &quot;|cff1FBF00HINT: If you&#039;ve never played before, I recommand you read the|r |cffFFCC00Help &amp; Info Dialog|r |cff1FBF00(|r|cffFFCC00F9|r|cff1FBF00) to learn how to play.|r&quot;)
            
            call DestroyFogModifier(fog)
            set fog = null
        endif
    set i = i + 1
    exitwhen i == bj_MAX_PLAYER_SLOTS
    endloop
endfunction
endscope</i></i></i>
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Can you tell what happens before it crashes? Anything at all before it does?
 

Lightstalker

New Member
Reaction score
55
No. Once the bar finishes loading, then it instantly crashes before I get a chance to look at the terrain. :(
 

Lightstalker

New Member
Reaction score
55
Well I just fixed it...

JASS:
//CONTROLLER &gt;&gt; PLAYER
                call SetPlayerAllianceStateAllyBJ(Player(5), Player(i), true)
                call SetPlayerAllianceStateVisionBJ(Player(5), Player(i), false)
                call SetPlayerAllianceStateControlBJ(Player(5), Player(i), true)
                call SetPlayerAllianceStateFullControlBJ(Player(5), Player(i), true)


I am denying giving shared vision to a player but granting full unit control. This is what causes it. Anyway, I did it in GUI so I'll find a way to do it in vJASS. :)

Any comment on improving my trigger's efficiency are welcome. :)

EDIT: This can be fixed by replacing the BJ with the native.

 

GetTriggerUnit-

DogEntrepreneur
Reaction score
129
Well, always better to use natives out of BJs.

I would also use a library, since this is Init settings. And I'd use scopes for spells.
 

GetTriggerUnit-

DogEntrepreneur
Reaction score
129
I'm pretty sure you can, since you can build a system using timers in a library. It's a question of perception, in my head, libraries are for systems, scopes for spells.
 

Lightstalker

New Member
Reaction score
55
I'm pretty sure you can, since you can build a system using timers in a library. It's a question of perception, in my head, libraries are for systems, scopes for spells.

Nah I think I remember now: libraries are compiled before anything else, and can have requirements and stuff.

Really, this does not need to be a library. I think it uses some variables in some of my libraries, actually, so if I made it into a library, I'd need to give it requirements so that it doesn't give me errors.
 

Lightstalker

New Member
Reaction score
55
Scope, library, they both do what you want (Except I don't think scopes can have requirements, I think they can, someone confirm :|)

- Messages on init don't tend to stay as long as they are meant to I think, 20 seconds wont be 20 seconds.
- Do you really need a variable for that >.> If you wanted to, you could use a global variable.
JASS:
private function SharedVision takes nothing returns boolean
    local unit u = GetFilterUnit()
    call UnitShareVision(u, Player(0), true)
    set u = null
    return false
endfunction

Why do you think I made it 20 seconds. :p

A variable for what???
 

Gwypaas

hook DoNothing MakeGUIUsersCrash
Reaction score
50
Comment out the whole code and add it back like 5 lines at a time and see when it start to crash and then single it down to 1 single line which broken, then rinse and repeat for the whole script.
 
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