GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: scott1 le 25 Avril 2010, 12:26:10
-
Bonjour a toutes et a tous,
j'ai besoin de votre aide, j'ai un soucis, j'aimerai bloquer un joueur a une position, au dessus du sol, mais il tompe, j'aiessayé
SetPlayerPos(i, 1228.5,-1265.1,140.8);
TogglePlayerControllable(i, 0);
Mais ça ne fonctionne pas, le joueur tombe a chaque fois.
Merci de votre aide
-
Petetre faire un timer je pense :-[
SetTimer("Freeze",1000,true);
Freeze()
{
for(new i=0;i<MAX_PLAYERS;i++)
{
if(TACONDITION[i] > 0)
{
SetPlayerPos(i, 1228.5,-1265.1,140.8);
TogglePlayerControllable(i, 0);
}
}
}
Voila après je ne sait pas si ces vraiment sa mais bon moi ces comme sa que j'aurais fait :-[
EDIT : Je me posait la question si en mettant de cette maniere sa ne marcherais pas
TogglePlayerControllable(i, 0);
SetPlayerPos(i, 1228.5,-1265.1,140.8);
-
Salut,
Le timer est inutile, ce pendant faut mettre d'abord comme quoi il est freeze, et ensuite la position ^^
( Comme ce qu'il à dit master-bru )
-
ça ne fonctionne pas :s
-
Peu être que ... essaie voir TogglePlayerControllable(i, 1);
Je sais que ca unfreeze normalement, mais ont sais jamais...
-
1 = Qu'il peut bouger ;)
-
si je met un s'est sur il vont tomber comme des piece xD
-
Moi j'ai le contraire sur mon systeme de course xD je voudrais que le gars tombe mais j'y arrive pas xD
-
Quelqu'un à une solution?
-
Comme la dit Master bru, j'aurais mit TogglePlayerControllable(playa, 0); et ensuite le teleport, c'est le seul moyen a ma connaissance
-
Tien j'ai codé un petit FS qui doit normalement le faire ( enfin je crois j'ai pas testé )
#include <a_samp>
new IsFreezed[MAX_PLAYERS];
new Float:FreezedAt[MAX_PLAYERS][4];
public OnPlayerConnect(playerid)
{
IsFreezed[playerid] = 0;
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
IsFreezed[playerid] = 0;
return 1;
}
public OnPlayerUpdate(playerid)
{
if(IsFreezed[playerid] == 1)
{
SetPlayerPos(playerid,FreezedAt[playerid][0],FreezedAt[playerid][1],FreezedAt[playerid][2]);
SetPlayerFacingAngle(playerid,FreezedAt[playerid][3]);
SetPlayerVelocity(playerid,0,0,0.02);
}
}
forward FreezePlayerAt(playerid,Float:x,Float:y,Float:z,Float:angle);
public FreezePlayerAt(playerid,Float:x,Float:y,Float:z,Float:angle)
{
FreezedAt[playerid][0] = x,FreezedAt[playerid][1] = y,FreezedAt[playerid][2] = z,FreezedAt[playerid][3] = angle;
IsFreezed[playerid] = 1;
}
forward Unfreeze(playerid);
public Unfreeze(playerid)
{
IsFreezed[playerid] = 0;
}
Tu a juste a faire
FreezePlayerAt(playerid,avec ici les coordones x,y,z et l'angle);
et pour defreeze le joueur tu fait
Unfreeze(playerid);
l'avantage ici est que le joueur peut bougé sa caméra =)
-
justement c'est fait exprès =)
Mais sinon tu peut te débrouillé pour le mettre en timer ( sinon elle est appelé des que le joueur est a nouveau sync etc ... donc pas des milliers de fois en quelque secondes x))
-
Pour un bête tuto s'est gros xD
Double post
Beug résolut, j'avais un toggle...1 un peux plus loin que je n'avais aps vu.
Aaaaah les belges xD :boulet :jesors :dejadehors