Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=1882e3252fd5a8415f3124cb7584c1e5Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Désynchronisation

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 jk2pach
Invité








MessagePosté le: 08/03/10 18:37    Sujet du message: Désynchronisation Citer

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?
_________________
Revenir en haut
 Troll-Brain
Ri1kamoua


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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 08/03/10 20:51    Sujet du message: Citer

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.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 08/03/10 21:50    Sujet du message: Citer

Je vais devoir vérifier :/
_________________
Revenir en haut
 Troll-Brain
Ri1kamoua


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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 08/03/10 22:13    Sujet du message: Citer

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.
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 08/03/10 22:40    Sujet du message: Citer

Oui, j'ai trouvé ça: http://www.wc3jass.com/viewtopic.php?t=86
_________________
Revenir en haut
 Troll-Brain
Ri1kamoua


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...)
Grand mage créateur de sort (Quantité : 1) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 15/03/10 20:53    Sujet du message: Citer

résolu ?
_________________
Le violet, c'est moche.
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 15/03/10 21:03    Sujet du message: Citer

A priori oui, je regarde les autres sujets dans la soirée.
_________________
Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Aide sur les déclencheurs Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1
La question posée dans ce topic a été résolue !

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com