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
-
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 :
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;
}
-
Salut,
Insère ces lignes dans ton script :
Avant le OnGameModeInit:
<?php
forward EnterPrisonTimer();
Puis insère, peu importe où dans le script, ceci:
<?php
public EnterPrisonTimer()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
TogglePlayerControllable(i, 1);
}
return 1;
}Je me suis surement trompé.
++
Lloyd
-
Je n'ai pas tout compris ... ;D
-
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
-
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 ..
-
Salut,
Le public, tu peux le placer n'importe où dans le script.
Exemple :
<?php
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
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
-
Lloyd B., ton code va s'appliquer à tous les joueurs si madinina972 utilise ton code !
-
Voilà Comment j'ai fais :
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 :
forward EnterPrisonTimer();
Je compile puis ça me sort 2 erreurs:
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()
-
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
-
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.
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 :
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 ..
-
RE: Dans ce cas, retourne le :
forward EnterPrisonTimer(playerid);
public EnterPrisonTimer(playerid)
{
TogglePlayerControllable(playerid,1);
return 1;
}
-
Toujours pareil :( ...
-
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++
-
Merci Sim , mais DOos ma donné la solution
Il fallait que je règle mon Timer comme ceci:
SetTimer("EnterPrisonTimer",2200,0);
-
Sim a raison tu doit utiliser SetTimerEx, en passant comme paramètre l'id de ton joueur ^^