GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: HeyC le 29 Octobre 2008, 20:59:04
-
Salut, j'ai eu l'idée de créer un script pour que les membres du staff (se qui ont fait /rcon login ...) se fase téléporté par un chekpoint & les autres personnes (non-staff) qui vont dans le chekpoint meurt.
Script : #include <a_samp>
#include <core>
#include <float>
new Check;
#if defined FILTERSCRIPT
#endif
public OnPlayerSpawn(playerid)
{
Check = SetPlayerCheckpoint(playerid, -2007.09,219.86,100, 3);
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(Check)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, -750.80, 491.00, 1371.70);
GameTextForPlayer(playerid,"Bienvenue a l'endroit secret du staff",2000,5);
}
else
{
SetPlayerHealth(playerid, 0);
GameTextForPlayer(playerid,"Tu n'as pas droit de venir ici.",2000,5);
}
}
return 1;
}Il n'y a pas d'erreur. Mais quand je me met dans le checkpoint, ça fait rien.
Pouvez vous m'aidez ?
PS : La téléportation s'est pour allez A Liberty City, Au bar.
-
Un checkpoint n'a pas d'ID - se serait en effet inutile puisqu'il ne peut y en avoir qu'un sur la map - donc oublie ta condition if(Check), car elle retourne false (valeur de base d'une variable) et ça devrait être bon. :)
-
Je ne comprend pas :-\
J'ai tirer :
-new Check;
-Check =
-If(Check)
Et toujours rien
-
new Check;La variable faut false (ou 0 si tu préfères).
Check = SetPlayerCheckpoint(playerid, -2007.09,219.86,100, 3);La variable vaut toujours false, car la fonction SetPlayerCheckpoint() ne retourne rien.
Tu ne peut avoir qu'un seul checkpoint sur la carte, ta condition qui vérifie de quel checkpoint il s'agit (dans OnPlayerEnterCheckpoint()) est donc inutile et te conduit à l'erreur.
-
Vu que j'ai que un checkpoint, alors je peut tirer tout les "Check" ...
Mais toujours rien
Comment je vais faire sans le OnPlayerEnterCheckpoint ?
-
Ne retires pas le OnPlayerEnterCheckpoint() en entier, juste la condition if(Check). :)
-
Je vais voir ça.
EDIT : J'ai que tiré le if(Check), mais sa ne marche toujour pas. Et il me mette un Warning (symbol is assigned a value that is never used: "Check")
-
salut,
es-ce que tu utilise un autre checkpoint sur ta map, si oui, tu ferais mais de faire un test IsPlayerInArea pour savoir dans quel checkpoint le joueur est entré (ce qui est la technique la plus simple)
good luck ;)
++Sim++
-
non que un checkpoint
-
#include <a_samp>
#include <core>
#include <float>
new check[MAX_PLAYERS];
#if defined FILTERSCRIPT
#endif
public OnPlayerSpawn(playerid)
{
SetPlayerCheckpoint(playerid, -2007.09,219.86,100, 3);
check[playerid] = 1;
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(check[playerid] == 1)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, -750.80, 491.00, 1371.70);
GameTextForPlayer(playerid,"Bienvenue a l'endroit secret du staff",2000,5);
check[playierid] = 0;
}
else
{
SetPlayerHealth(playerid, 0);
GameTextForPlayer(playerid,"Tu n'as pas droit de venir ici.",2000,5);
check[playierid] = 0;
}
}
return 1;
}
Cadeau je suis de bonne humeur :)
-
Ok. Je vais tester & j'éditerai mon post.
EDIT : Marche toujours pas :-X
-
Ok, voici la solution :
public OnPlayerSpawn(playerid)
{
SetPlayerCheckpoint(playerid, -2007.09,219.86,27.0, 3.0);
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
if(IsPlayerAdmin(playerid))
{
SetPlayerPos(playerid, -750.80, 491.00, 1371.70);
GameTextForPlayer(playerid,"Bienvenue a l'endroit secret du staff",2000,5);
}
else
{
SetPlayerHealth(playerid, 0);
GameTextForPlayer(playerid,"Tu n'as pas droit de venir ici.",2000,5);
}
return 1;
}
L'altitude à laquelle tu créais ton checkpoint n'était pas correcte (100.0 m). J'ai mis 27.0 à la place.
Et je n'ai pas trouvé ce 27.0 par hasard. Il suffit de faire un /save à l'endroit où l'on veut mettre le CP et de récupérer TOUTES les coordonnées.
Par contre, le SetPlayerPos à 1371 m d'altitude je ne pense pas que ce soit un endroit secret (c'est au dessus de la mer mais bon).
Et le SetPlayerHealth à 0 sur le checkpoint pour les autres joueurs est un peu violent à mon goût.
++
Syg
-
uep c'est vrai c'est un mechant se devrait le teleporter a son spawn moin violant je pense ^^
-
MErci beaucoup, sa marche.