Xorifelse
I'd love to elaborate about discussions...........
- Reaction score
- 87
I'm trying to fix this issue for hours now and I can't seem to find it.
It all works fine, but when a player presses the escape button it just desyncs when its in a cinematic.
Could someone enlighten me of where the desync can be caused?
This starts the cinematic.
It all works fine, but when a player presses the escape button it just desyncs when its in a cinematic.
Could someone enlighten me of where the desync can be caused?
JASS:
library Cinematic requires UserData, Forces
struct scene
static scene array i
static trigger t = CreateTrigger()
static fogmodifier array v
private force f
method Fade takes boolean fadeOut, real duration returns nothing
if IsPlayerInForce( GetLocalPlayer(), .f ) then
call SetCineFilterTexture( "ReplaceableTextures\\CameraMasks\\Black_mask.blp" )
call SetCineFilterBlendMode( BLEND_MODE_BLEND )
call SetCineFilterTexMapFlags( TEXMAP_FLAG_NONE )
call SetCineFilterStartUV( 0, 0, 1, 1 )
call SetCineFilterEndUV( 0, 0, 1, 1 )
call SetCineFilterDuration( duration )
if fadeOut then
if duration == 0 then
call SetCineFilterStartColor( 0, 0, 0, 255 )
else
call SetCineFilterStartColor( 0, 0, 0, 0 )
endif
call SetCineFilterEndColor( 0, 0, 0, 255 )
else
if duration == 0 then
call SetCineFilterStartColor( 0, 0, 0, 0 )
else
call SetCineFilterStartColor( 0, 0, 0, 255 )
endif
call SetCineFilterEndColor(0, 0, 0, 0)
endif
call DisplayCineFilter( true )
call TriggerSleepAction( duration )
endif
endmethod
method Fog takes boolean enable returns nothing
local player p = GetLocalPlayer()
if IsPlayerInForce( p, .f ) then
if ( enable ) then
call FogModifierStart( .v[GetPlayerId( p )] )
else
call FogModifierStop( .v[GetPlayerId( p )] )
endif
endif
set p = null
endmethod
method ApplyCamera takes camerasetup camera, real duration returns nothing
if ( IsPlayerInForce( GetLocalPlayer(), .f ) ) then
call CameraSetupApplyForceDuration( camera, true, duration )
endif
endmethod
method PanCamera takes real x, real y returns nothing
if ( IsPlayerInForce( GetLocalPlayer(), .f ) ) then
call PanCameraTo( x, y )
endif
endmethod
method ResetCamera takes real duration returns nothing
if ( IsPlayerInForce( GetLocalPlayer(), .f ) ) then
call ResetToGameCamera( duration )
endif
endmethod
method Transmission takes unit u, string title, string message, real sleep returns nothing
if IsPlayerInForce( GetLocalPlayer(), .f ) then
call SetCinematicScene( GetUnitTypeId( u ), GetPlayerColor( GetOwningPlayer( u ) ), title, message, 30, 0 )
call UnitAddIndicator( u, 255, 255, 255, 255 )
call TriggerSleepAction( sleep )
endif
endmethod
method ShakeCamera takes boolean shake, real minsleep, real maxsleep returns nothing
local force f = .f
local player p
loop
set p = FirstOfForce( f )
call ForceRemovePlayer( f, p )
exitwhen p == null
endloop
endmethod
method Cinematic takes boolean mode, real duration returns nothing
if IsPlayerInForce( GetLocalPlayer(), .f ) then
call ShowInterface( not mode, duration )
call EnableUserControl( not mode )
call ClearTextMessages()
endif
if mode then
call .Fade( mode, duration )
call .Fog( mode )
else
call .Fog( mode )
call .Fade( mode, duration )
endif
endmethod
method Sleep takes real duration returns nothing
if IsPlayerInForce( GetLocalPlayer(), .f ) then
call TriggerSleepAction( duration )
endif
endmethod
method PlayerAdd takes player p, integer structId returns nothing
if .f == null then
set .f = CreateForce()
endif
set .i[GetPlayerId( p )] = structId
call ForceAddPlayer( .f, p )
endmethod
method PlayerRemove takes player p returns nothing
if IsPlayerInForce( p, .f ) then
call ForceRemovePlayer( .f, p )
endif
endmethod
static method PlayerLeavesCinematic takes nothing returns nothing
local player p = GetTriggerPlayer()
local integer i = GetPlayerId( p )
call DisplayTimedTextToPlayer( p, 0, 0, 4, "Leaving cinematic.." )
call .i<i>.PlayerRemove( p )
if GetLocalPlayer() == p then
call ShowInterface( true, 5 )
call EnableUserControl( true )
call ClearTextMessages()
endif
call .i<i>.Fade( true, 5 )
call .i<i>.Fog( false )
call .i<i>.Fade( false, 5 )
set p = null
endmethod
static method onInit takes nothing returns nothing
local integer i = 0
loop
exitwhen i > 11
call TriggerRegisterPlayerEvent( .t, user<i>.p, EVENT_PLAYER_END_CINEMATIC )
call TriggerRegisterPlayerEvent( .t, user<i>.p, EVENT_PLAYER_LEAVE )
set .v<i> = CreateFogModifierRect( user<i>.p, FOG_OF_WAR_VISIBLE, GetWorldBounds(), false, true )
set i = i + 1
endloop
call TriggerAddAction( .t, function scene.PlayerLeavesCinematic )
endmethod
endstruct
endlibrary</i></i></i></i></i></i></i></i>
This starts the cinematic.
JASS:
function TestB takes nothing returns nothing
local scene a = scene.create()
call a.PlayerAdd( user[0].p, a )
call a.PlayerAdd( user[1].p, a )
call a.PlayerAdd( user[2].p, a )
call a.Cinematic( true, 0 )
call a.ApplyCamera( gg_cam_Camera_1, 0 )
call a.ApplyCamera( gg_cam_Camera_2, 10 )
call a.Fade( false, 5 )
call a.Fade( true, 5 )
call a.Cinematic( false, 5 )
call a.PlayerRemove( user[0].p )
call a.PlayerRemove( user[1].p )
call a.PlayerRemove( user[2].p )
endfunction