GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: madinina972 le 05 Décembre 2010, 18:24:13

Titre: Timer Freeze ..[RESOLUE]
Posté par: madinina972 le 05 Décembre 2010, 18:24:13
Salut a tous.

Alors voilà , j'ai fais une petite téléportation pour allez dans une prison , J'ai mis un Timer qui freeze le joueur le temps que tout les Object se charge (CreateDynamicObject)

Mais le soucis c'est que sa ne unfreeze pas le joueurs.. Comment faire ?

Voici le Code :
Code: (pawn) [Sélectionner]
else if(PlayerToPointStripped(1, playerid,2808.1201,2726.3457,11.0793, cx,cy,cz))
{ //Prison Sortit Court
GameTextForPlayer(playerid, "~w~Prison", 5000, 1);
SetPlayerInterior(playerid, 0);
TogglePlayerControllable(playerid,0);
  SetTimer("EnterPrisonTimer",2200,true);
GameTextForPlayer(playerid, "~y~Patientez. . .      ~r~ Chargements des objets...", 2000, 6);
SetPlayerPos(playerid,305.1666,204.8985,889.5491);
PlayerInfo[playerid][pInt] = 0;
}

Titre: Re : Timer Freeze ..
Posté par: Pixect le 05 Décembre 2010, 18:36:10
Salut,

Insère ces lignes dans ton script :

Avant le OnGameModeInit:

Code: (PAWN) [Sélectionner]
<?php

forward EnterPrisonTimer
();

Puis insère, peu importe où dans le script, ceci:
Code: (PAWN) [Sélectionner]
<?php

public EnterPrisonTimer()
{
for(new 0MAX_PLAYERSi++)
{
TogglePlayerControllable(i1);
}
return 1;
}
Je me suis surement trompé.

++
Lloyd
Titre: Re : Timer Freeze ..
Posté par: madinina972 le 05 Décembre 2010, 18:37:30
Je n'ai pas tout compris ...   ;D
Titre: Re : Timer Freeze ..
Posté par: Pixect le 05 Décembre 2010, 18:40:53
Salut,

Quand tu dis "Je n'ai pas tout compris", tu parles de placer le script ou son fonctionnement ? ^^
PS : le "<?php" sert juste à colorer le texte ^^"

++
Lloyd
Titre: Re : Timer Freeze ..
Posté par: madinina972 le 05 Décembre 2010, 18:44:01
J'avais déjà mis le Forward EntrerPrisonTimer(playerid);

Ensuite je ne sais pas ou placé le 2e bout de script que tu as mis ..
Titre: Re : Timer Freeze ..
Posté par: Pixect le 05 Décembre 2010, 18:47:02
Salut,

Le public, tu peux le placer n'importe où dans le script.
Exemple :

Code: (PAWN) [Sélectionner]
<?php

public OnPlayerEnterVehicle(playeridvehicleidispassenger)
{
return 1;
}

public 
EnterPrisonTimer()
{
// ...
}
Bien sur, tu n'es pas obligé de le placer après ce public, tu peux le placer après n'importe lequel.

++
Lloyd
Titre: Re : Timer Freeze ..
Posté par: Xartrick le 05 Décembre 2010, 18:54:06
Lloyd B., ton code va s'appliquer à tous les joueurs si madinina972 utilise ton code !
Titre: Re : Timer Freeze ..
Posté par: madinina972 le 05 Décembre 2010, 18:54:24
Voilà Comment j'ai fais :

Code: (pawn) [Sélectionner]
else if(PlayerToPointStripped(1, playerid,2808.1201,2726.3457,11.0793, cx,cy,cz))
{ //Prison Sortit Court
GameTextForPlayer(playerid, "~w~Prison", 5000, 1);
SetPlayerInterior(playerid, 0);
TogglePlayerControllable(playerid,0);
  SetTimer("EnterPrisonTimer",2200,true);
GameTextForPlayer(playerid, "~y~Patientez. . .      ~r~ Chargements des objets...", 2000, 6);
SetPlayerPos(playerid,305.1666,204.8985,889.5491);
PlayerInfo[playerid][pInt] = 0;

public EnterPrisonTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
TogglePlayerControllable(i, 1);
}
return 1;
}

Puis au début de mon script avec les autres forward :
Code: (pawn) [Sélectionner]
forward EnterPrisonTimer();
 Je compile puis ça me sort 2 erreurs:

Code: (pawn) [Sélectionner]
C:\Users\Clément\Desktop\samp\gamemodes\larp.pwn(46401) : error 029: invalid expression, assumed zero
C:\Users\Clément\Desktop\samp\gamemodes\larp.pwn(46401) : error 004: function "EnterPrisonTimer" is not implemented

Donc je vais voir a la ligne 46401
et sa m'amène au public EnterPrisonTimer()
Titre: Re : Timer Freeze ..
Posté par: D0os-Nox le 05 Décembre 2010, 19:21:07
Bonjour, Juste pour dire au niveau de la déclaration de ton timer, les forward ne doit pas être obligatoirement mit en tête du script elle peut être mise sous cet forme :

forward EnterPrisonTimer(playerid);
public EnterPrisonTimer(playerid)
{

TogglePlayerControllable(playerid, 1);
return 1;
}

Sinon, reprend mes changement pour le timer ci-dessus !

EDIT : Tu pourrais nous montrer le reste de la commande :
else if(PlayerToPointStripped(1, playerid,2808.1201,2726.3457,11.0793, cx,cy,cz))
{ //Prison Sortit Court
GameTextForPlayer(playerid, "~w~Prison", 5000, 1);
SetPlayerInterior(playerid, 0);
TogglePlayerControllable(playerid,0);
  SetTimer("EnterPrisonTimer",2200,true);
GameTextForPlayer(playerid, "~y~Patientez. . .      ~r~ Chargements des objets...", 2000, 6);
SetPlayerPos(playerid,305.1666,204.8985,889.5491);
PlayerInfo[playerid][pInt] = 0;
}
:-X D0os-Nox  :closedeyes
Titre: Re : Timer Freeze ..
Posté par: madinina972 le 05 Décembre 2010, 19:22:15
Ok je vais essayer . Merci

EDIT : Sa marche parfaitement , Merci de votre aide :D

EDIT 2 : Enfaite ce n'est pas une commande , juste une téléportation.

Code: (pawn) [Sélectionner]
else if(PlayerToPointStripped(1, playerid,2808.1201,2726.3457,11.0793, cx,cy,cz))
{ //Prison Sortit Court
GameTextForPlayer(playerid, "~w~Prison", 5000, 1);
SetPlayerInterior(playerid, 0);
TogglePlayerControllable(playerid,0);
  SetTimer("EnterPrisonTimer",2200,true);
GameTextForPlayer(playerid, "~y~Patientez. . .      ~r~ Chargements des objets...", 2000, 6);
SetPlayerPos(playerid,305.1666,204.8985,889.5491);
PlayerInfo[playerid][pInt] = 0;

}

A la fin du Script :

Code: (pawn) [Sélectionner]
forward EnterPrisonTimer(playerid);
public EnterPrisonTimer(playerid)
{
TogglePlayerControllable(playerid,1);
}

Double post
Il y a un petit soucis.

Quand je me connecte sur mon serveur , je commence a joué et la sa me freeze en 1fraction de seconde , puis sa m'unfreeze , D'où cela peut-ils venir

PS : c'est quand j'ai mis ton bout de code dOos-Nox que ça me la fais ..

Peut être que le timer se répète et ne s'arrête jamais ..
Titre: Re : Timer Freeze ..
Posté par: D0os-Nox le 05 Décembre 2010, 20:11:55
RE: Dans ce cas, retourne le :

forward EnterPrisonTimer(playerid);
public EnterPrisonTimer(playerid)
{
TogglePlayerControllable(playerid,1);
         return 1;
}
Titre: Re : Timer Freeze ..
Posté par: madinina972 le 05 Décembre 2010, 20:21:59
Toujours pareil :( ...
Titre: Re : Re : Timer Freeze ..
Posté par: S!m le 05 Décembre 2010, 20:53:02
Salut,

RE: Dans ce cas, retourne le :

forward EnterPrisonTimer(playerid);
public EnterPrisonTimer(playerid)
{
TogglePlayerControllable(playerid,1);
         return 1;
}

j'aimerais bien qu'on m'explique en quoi ce return sevrait changer quelque chose à ce problème?

Regarde quand tu lance ton timer, s'il se répète, tu utilise bien SetTimerEX, ...?

++Sim++
Titre: Re : Timer Freeze ..[RESOLUE]
Posté par: madinina972 le 05 Décembre 2010, 20:56:25
Merci Sim , mais DOos ma donné la solution

Il fallait que je règle mon Timer comme ceci:

       SetTimer("EnterPrisonTimer",2200,0);
      
Titre: Re : Timer Freeze ..[RESOLUE]
Posté par: Ssk le 05 Décembre 2010, 21:01:47
Sim a raison tu doit utiliser SetTimerEx, en passant comme paramètre l'id de ton joueur ^^