I think I made a boo-boo (Netsplit Cinematic problem)

Terrabull

Veteran Member (Done that)
Reaction score
38
Okay, lets get down to business:

JASS:
function Trig_Tutorial_Cinematic_Actions takes nothing returns nothing
    if udg_Skip_Cin[GetPlayerId(GetLocalPlayer())] == false then
        call ForceCinematicSubtitles(true)
        call ClearTextMessages()
        call ShowInterface(false,0.30)
        call EnableUserControl(false)
        call EnableOcclusion(false)
        call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUTIN, 1.00, "ReplaceableTextures\\CameraMasks\\Black_mask.blp", 0, 0, 0, 0 )
        call PanCameraToTimed(GetStartLocationX(GetPlayerStartLocation(GetLocalPlayer())),GetStartLocationY(GetPlayerStartLocation(GetLocalPlayer())),0)
        call TransmissionFromUnitTypeWithNameBJ(GetPlayersAll(), GetLocalPlayer(), 'n013', "TRIGSTR_4729", GetPlayerStartLocationLoc(GetLocalPlayer()), gg_snd_VillagerM3, "TRIGSTR_4730", bj_TIMETYPE_ADD, 5.00, true )
    endif
    if udg_Skip_Cin[GetPlayerId(GetLocalPlayer())] == false then
        call PanCameraToTimedLocForPlayer( GetLocalPlayer(), Location(( GetLocationX(GetPlayerStartLocationLoc(GetLocalPlayer())) - 983.00 ), ( GetLocationY(GetPlayerStartLocationLoc(GetLocalPlayer())) + 1713.00 )), 0 )
        call TransmissionFromUnitTypeWithNameBJ(GetPlayersAll(), GetLocalPlayer(), 'n013', "TRIGSTR_4731", GetCameraTargetPositionLoc(), null, "TRIGSTR_4732", bj_TIMETYPE_ADD, 3.00, true )
    endif
    if udg_Skip_Cin[GetPlayerId(GetLocalPlayer())] == false then
        call PanCameraToTimedLocForPlayer( GetLocalPlayer(), Location(( GetCameraTargetPositionX() + 1191.00 ), GetCameraTargetPositionY()), 7.00 )
        call TransmissionFromUnitTypeWithNameBJ(GetPlayersAll(), GetLocalPlayer(), 'n013', "TRIGSTR_4733", GetCameraTargetPositionLoc(), null, "TRIGSTR_4734", bj_TIMETYPE_ADD, 4.30, true )
    endif
    if udg_Skip_Cin[GetPlayerId(GetLocalPlayer())] == false then
        call PanCameraToTimedLocForPlayer( GetLocalPlayer(), GetPlayerStartLocationLoc(GetLocalPlayer()), 3.00 )
        call TransmissionFromUnitTypeWithNameBJ(GetPlayersAll(), GetLocalPlayer(), 'n013', "TRIGSTR_4735", GetCameraTargetPositionLoc(), null, "TRIGSTR_4736", bj_TIMETYPE_ADD, 5.30, true )
    endif
    if udg_Skip_Cin[GetPlayerId(GetLocalPlayer())] == false then
        call ShowInterface(true,2)
        call EnableUserControl(true)
        call EnableOcclusion(true)
        call VolumeGroupReset()
        call CameraSetSmoothingFactor(0)
    endif
    call DisplayTextToPlayer(Player(0),0,0,"You have 30 seconds to enter options. Choices are:
-bosstop -income -nomorale")
endfunction

//===========================================================================
function InitTrig_Tutorial_Cinematic takes nothing returns nothing
    set gg_trg_Tutorial_Cinematic = CreateTrigger(  )
    call TriggerRegisterTimerEvent(gg_trg_Tutorial_Cinematic,0.30,false)
    call TriggerAddAction(gg_trg_Tutorial_Cinematic,function Trig_Tutorial_Cinematic_Actions)
endfunction


JASS:
function Trig_Turn_off_Cinematic_Conditions takes nothing returns boolean
    return udg_Skip_Cin[GetPlayerId(GetTriggerPlayer())] == false
endfunction

function Trig_Turn_off_Cinematic_Actions takes nothing returns nothing
    set udg_Skip_Cin[GetPlayerId(GetTriggerPlayer())] = true
    if GetLocalPlayer() == GetTriggerPlayer() then
        call PanCameraToTimed(GetStartLocationX(GetPlayerStartLocation(GetTriggerPlayer())),GetStartLocationY(GetPlayerStartLocation(GetTriggerPlayer())),0)
        call ShowInterface(true,0.30)
        call EnableUserControl(true)
        call EnableOcclusion(true)
        call VolumeGroupReset()
        call CameraSetSmoothingFactor(0)
    endif
endfunction

//===========================================================================
function InitTrig_Turn_off_Cinematic takes nothing returns nothing
    local integer i = 0
    set gg_trg_Turn_off_Cinematic = CreateTrigger()
    loop
    exitwhen i > 7
        call TriggerRegisterPlayerEvent(gg_trg_Turn_off_Cinematic,Player(i),EVENT_PLAYER_END_CINEMATIC)
        set i = i + 1
    endloop
    call TriggerAddCondition(gg_trg_Turn_off_Cinematic,Condition(function Trig_Turn_off_Cinematic_Conditions))
    call TriggerAddAction(gg_trg_Turn_off_Cinematic,function Trig_Turn_off_Cinematic_Actions)
endfunction


Basically, this trigger causes Netsplits. Whenever someone skips the cinematic, they are separated from the people who don't. If I exchange GetPlayersAll() with bj_FORCE_PLAYER[GetPlayerId(GetLocalPlayer())] in the Transmission call, will it fix things?
 

Joker(Div)

Always Here..
Reaction score
86
I'm sure you're breaking the GetLocalPlayer() rules on youe 2nd trigger. Dunno which one(s) though.
 

Terrabull

Veteran Member (Done that)
Reaction score
38
Everything that happens in the "GetLocalPlayer" chunck in the second trigger is from a BJ that does the same thing. All of those calls are local, so it shouldn't cause a net-split.
 

Terrabull

Veteran Member (Done that)
Reaction score
38
Location, yup, you're right.
AND it leaks. I didn't spend enough time on this trigger.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top