Posté le: 08/03/10 18:37 Sujet du message: Désynchronisation
Tain de desync.
J'utilise CameraSetupApplyForceDuration et je n'ai trouvé à aucun endroit que ça désynchronisait les joueurs si utilisé correctement.
Pourtant sur 300 Bt ça désync systématiquement au début, et c'est, d'après le moment ou ça arrive, lié à mes caméras :O
Exemple 1:
Jass:
private struct str
player whichPlayer
integer whichPlayerId
endstruct
private function Update takes nothing returns nothing
local timer t = GetExpiredTimer()
local str dat = GetTimerData(t)
if HeroPicked[dat.whichPlayerId]==false then
if GetLocalPlayer() == dat.whichPlayer then
call CameraSetupApplyForceDuration(gg_cam_HeroPick,true,0.)
endif
else
call ReleaseTimer(t)
call dat.destroy()
endif
endfunction
private function IniCamera takes player whichPlayer returns nothing
local timer t = NewTimer()
local str dat = str.create()
set dat.whichPlayer = whichPlayer
set dat.whichPlayerId = GetPlayerId(dat.whichPlayer)
call SetTimerData(t, dat)
call TimerStart (t,TIMEOUT,true, function Update )
endfunction
Exemple 2
Jass:
private struct str
player whichPlayer
integer whichPlayerId
endstruct
private function Update takes nothing returns nothing
local timer t = GetExpiredTimer()
local str dat = GetTimerData(t)
if HeroValidated[dat.whichPlayerId]==false then
if GetLocalPlayer() == dat.whichPlayer then
call CameraSetupApplyForceDuration(HeroCam[dat.whichPlayerId],true,0.)
endif
else
if GetLocalPlayer() == dat.whichPlayer then
call CinematicFadeBJ( bj_CINEFADETYPE_FADEIN, 0., MASK, 0, 0, 0, 25 )
endif
call ReleaseTimer(t)
call dat.destroy()
endif
endfunction
private function IniCamera takes player whichPlayer returns nothing
local timer t = NewTimer()
local str dat = str.create()
set dat.whichPlayer = whichPlayer
set dat.whichPlayerId = GetPlayerId(dat.whichPlayer)
if GetLocalPlayer() == dat.whichPlayer then
call CinematicFadeBJ( bj_CINEFADETYPE_FADEOUT, 0., MASK, 0, 0, 0, 25 )
endif
call SetTimerData(t, dat)
call TimerStart (t,TIMEOUT,true, function Update )
endfunction
Tu y vois une raison de désynch? _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 08/03/10 20:51 Sujet du message:
Faut voir comment se décompose exactement la fonction CinematicFadeBJ, mais y'a au moins cette fonction :
Jass:
function AbortCinematicFadeBJ takes nothing returns nothing
if (bj_cineFadeContinueTimer != null) then
call DestroyTimer(bj_cineFadeContinueTimer)
endif
if (bj_cineFadeFinishTimer != null) then
call DestroyTimer(bj_cineFadeFinishTimer)
endif
endfunction
Si ca détruit un timer (et probablement créer un timer en local dans une autre fonction) en local voilà ta desync, et il peut en avoir d'autres évidemment. _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 08/03/10 22:13 Sujet du message:
Je crois que le mieux serait tout simplement de recréer la fonction CinematicFadeBJ, afin d'éviter la création/destruction d'handle.
Création/destruction d'handles en local == desync.
Excepté les textags car se sont des pseudo handles (et probablement de quelques autres types tel que sound), qui peuvent être créés localement sur chaque pc. _________________
Page 1 sur 1 La question posée dans ce topic a été résolue !
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum