GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: dydy5910 le 09 Juin 2011, 20:27:51

Titre: Problème Freeze
Posté par: dydy5910 le 09 Juin 2011, 20:27:51
Bonjour j'ai eu un code pour freez un joueur le voici :
{
    SetPlayerCheckpoint(playerid, 1689.4838,-1954.1206,13.5469, 10.0);
    TrainRoute[playerid] = 6;
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    SetTimerEx("busroutestoptimer", 10000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
SetVehicleVelocity(GetPlayerVehicleID(playerid), 0.0, 0.0, 0.0);
SetPlayerVelocity(playerid,0.0,0.0,0.0);
new Float:X,Float:Y,Float:Z,Float:VX,Float:VY,Float:VZ ;
        new Veh=GetPlayerVehicleID(playerid);
        GetVehicleVelocity(Veh,VX,VY,VZ);
        GetVehiclePos(Veh,X,Y,Z);
        SetVehicleVelocity(Veh,0,0,0);
        SetVehiclePos(Veh,X+VX,Y+VY,Z+VZ);
SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "Vous devez attendre 10 secondes.");
    return 1;
    }

public busroutestoptimer(playerid)
{
if(IsPlayerConnected(playerid))
{
    new newcar = GetPlayerVehicleID(playerid);
    if(IsABus(newcar))
    {
        TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "Vous pouvez y allez!");
    }
    if(IsAJobPlane(newcar))
    {
        TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "Vous pouvez y allez!");
    }
        if(IsATrain(newcar))
    {
        TogglePlayerControllable(playerid, 1);
        SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "Vous pouvez y allez!");
    }
}
}

Le seul problème c'est que quand j'arrive sur mon chekpoint sa me freez mais sa me defreez pas :s au bout de 10 seconde si quelqu'un connait l'erreur merci ...
Titre: Re : Problème Freeze
Posté par: D4MI3N le 09 Juin 2011, 20:35:45
As tu ajouté le le Forward ?
forward busroutestoptimer(playerid);
public busroutestoptimer(playerid)
{
          // Ton CODE
    return 1;
}
Titre: Re : Problème Freeze
Posté par: dydy5910 le 09 Juin 2011, 20:42:55
Oui mais je pense que c'est le 10 seconde qui fonctionne pas :s
Titre: Re : Problème Freeze
Posté par: D4MI3N le 09 Juin 2011, 20:47:51
As tu ajouté le le Forward ?

forward busroutestoptimer(playerid);
Dans Ta commande tu met sa

SetTimerEx("busroutestoptimer", 8000, 0, "i", playerid);
Après tu rajoute :

public busroutestoptimer(playerid)
{
          // Et Après les 8000 sec Voila se qui se passe , tu peut défreeze a se moment "TogglePlayerControllable(playerid, 1);"
    return 1;
}
Titre: Re : Problème Freeze
Posté par: dydy5910 le 09 Juin 2011, 20:58:56
je vais tester sa tout de suite je te dit sa dans 10 min !
Titre: Re : Problème Freeze
Posté par: D4MI3N le 09 Juin 2011, 21:13:57
D'accord j'attend :D
Titre: Re : Problème Freeze
Posté par: Syg le 10 Juin 2011, 11:08:17
Pour être sûr que c'est le timer qui ne fonctionne pas, rajoute des printf avant l'appel du timer et au début de la fonction du timer :
printf ("----> Avant l'appel au timer");
SetTimerEx("busroutestoptimer", 10000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
...

public busroutestoptimer(playerid)
{
printf ("----> Début fonction timer");
...

Si, au bout de 10 s,  tu n'a que le premier printf dans la fenêtre noire du serveur c'est qu'effectivement le timer n'est pas appelé (ce qui m’étonnerais fortement)
Par contre, si tu as bien les deux affichages, c'est qu'aucun des tests qui se trouvent dans busroutestoptimer n'est vérifié et qu'aucun code n'est exécuté.

D'ailleurs, dans ton cas, je ne vois pas à quoi servent ces tests dans cette fonction, ils devraient plutôt se trouver dans l'autre partie de script.
On ne freeze le joueur que si il est en bus, en avion ou en train. Ensuite, si la fonction de timer est appelée c'est que le joueur est forcément freeze donc on le défreeze sans condition :
public busroutestoptimer(playerid)
{
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid, TEAM_AZTECAS_COLOR, "Vous pouvez y aller!");
}

NB : Au passage : "Vous pouvez y aller !

++
Syg
Titre: Re : Problème Freeze
Posté par: D4MI3N le 10 Juin 2011, 17:03:56
@Syg Mon code est faux ?
Titre: Re : Problème Freeze
Posté par: dydy5910 le 10 Juin 2011, 21:11:38
Merci a vous 2 mon problème vous l'avez résolu :p
Titre: Re : Problème Freeze
Posté par: S!m le 11 Juin 2011, 17:31:20
Salut,

ça devrait être dans la section Scripting center ça, pas problèmes et bug...

++Sim++
Titre: Re : Problème Freeze
Posté par: Xartrick le 11 Juin 2011, 17:38:40
@D4MI3N: 8000 millisecondes ne sont pas 8000 secondes mais 8 secondes ;).
Titre: Re : Problème Freeze
Posté par: D4MI3N le 11 Juin 2011, 17:43:38
@Xartrick  Oui désoler je me suis tromper :)