• 05 Juin 2026, 22:08:48


Auteur Sujet: Problème Freeze  (Lu 2554 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne dydy5910

  • *
  • Tueur
  • Messages: 56
    • Voir le profil
Problème Freeze
« 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 ...

Hors ligne D4MI3N

  • Directeur 4pple Helper
  • *
  • Tueur en série
  • Directeur 4pple Helper
  • Messages: 169
    • Voir le profil
    • Directeur 4pple Helper
Re : Problème Freeze
« Réponse #1 le: 09 Juin 2011, 20:35:45 »
As tu ajouté le le Forward ?
forward busroutestoptimer(playerid);
public busroutestoptimer(playerid)
{
          // Ton CODE
    return 1;
}
« Modifié: 09 Juin 2011, 20:44:50 par D4MI3N »

Hors ligne dydy5910

  • *
  • Tueur
  • Messages: 56
    • Voir le profil
Re : Problème Freeze
« Réponse #2 le: 09 Juin 2011, 20:42:55 »
Oui mais je pense que c'est le 10 seconde qui fonctionne pas :s

Hors ligne D4MI3N

  • Directeur 4pple Helper
  • *
  • Tueur en série
  • Directeur 4pple Helper
  • Messages: 169
    • Voir le profil
    • Directeur 4pple Helper
Re : Problème Freeze
« Réponse #3 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;
}

Hors ligne dydy5910

  • *
  • Tueur
  • Messages: 56
    • Voir le profil
Re : Problème Freeze
« Réponse #4 le: 09 Juin 2011, 20:58:56 »
je vais tester sa tout de suite je te dit sa dans 10 min !

Hors ligne D4MI3N

  • Directeur 4pple Helper
  • *
  • Tueur en série
  • Directeur 4pple Helper
  • Messages: 169
    • Voir le profil
    • Directeur 4pple Helper
Re : Problème Freeze
« Réponse #5 le: 09 Juin 2011, 21:13:57 »
D'accord j'attend :D

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Problème Freeze
« Réponse #6 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
Courtesy of GtaManiac

Hors ligne D4MI3N

  • Directeur 4pple Helper
  • *
  • Tueur en série
  • Directeur 4pple Helper
  • Messages: 169
    • Voir le profil
    • Directeur 4pple Helper
Re : Problème Freeze
« Réponse #7 le: 10 Juin 2011, 17:03:56 »
@Syg Mon code est faux ?

Hors ligne dydy5910

  • *
  • Tueur
  • Messages: 56
    • Voir le profil
Re : Problème Freeze
« Réponse #8 le: 10 Juin 2011, 21:11:38 »
Merci a vous 2 mon problème vous l'avez résolu :p

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Problème Freeze
« Réponse #9 le: 11 Juin 2011, 17:31:20 »
Salut,

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

++Sim++





Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Problème Freeze
« Réponse #10 le: 11 Juin 2011, 17:38:40 »
@D4MI3N: 8000 millisecondes ne sont pas 8000 secondes mais 8 secondes ;).

Hors ligne D4MI3N

  • Directeur 4pple Helper
  • *
  • Tueur en série
  • Directeur 4pple Helper
  • Messages: 169
    • Voir le profil
    • Directeur 4pple Helper
Re : Problème Freeze
« Réponse #11 le: 11 Juin 2011, 17:43:38 »
@Xartrick  Oui désoler je me suis tromper :)