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

Titre: Problème sur mon script
Posté 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 :
Code: (pawn) [Sélectionner]
#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.
Titre: Re : Problème sur mon script
Posté par: Bayshore le 29 Octobre 2008, 21:34:50
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. :)
Titre: Re : Problème sur mon script
Posté par: HeyC le 29 Octobre 2008, 21:52:47
Je ne comprend pas  :-\
J'ai tirer :
-new Check;
-Check =
-If(Check)
Et toujours rien
Titre: Re : Problème sur mon script
Posté par: Bayshore le 29 Octobre 2008, 21:58:02
Code: (pawn) [Sélectionner]
new Check;La variable faut false (ou 0 si tu préfères).

Code: (pawn) [Sélectionner]
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.
Titre: Re : Problème sur mon script
Posté par: HeyC le 29 Octobre 2008, 22:00:29
Vu que j'ai que un checkpoint, alors je peut tirer tout les "Check" ...
Mais toujours rien

Comment je vais faire sans le OnPlayerEnterCheckpoint ?
Titre: Re : Problème sur mon script
Posté par: Bayshore le 29 Octobre 2008, 22:03:07
Ne retires pas le OnPlayerEnterCheckpoint() en entier, juste la condition if(Check). :)
Titre: Re : Re : Problème sur mon script
Posté par: HeyC le 29 Octobre 2008, 22:04:18
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")
Titre: Re : Problème sur mon script
Posté par: S!m le 30 Octobre 2008, 03:17:50
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++
Titre: Re : Problème sur mon script
Posté par: HeyC le 30 Octobre 2008, 06:43:04
non que un checkpoint
Titre: Re : Problème sur mon script
Posté par: Ssk le 30 Octobre 2008, 09:40:52
      #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 :)
Titre: Re : Problème sur mon script
Posté par: HeyC le 30 Octobre 2008, 09:49:50
Ok. Je vais tester & j'éditerai mon post.

EDIT : Marche toujours pas  :-X
Titre: Re : Problème sur mon script
Posté par: Syg le 31 Octobre 2008, 09:49:05
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
Titre: Re : Problème sur mon script
Posté par: cristab le 31 Octobre 2008, 10:11:55
uep c'est  vrai c'est un mechant se devrait le teleporter a son spawn moin violant je pense ^^
Titre: Re : Problème sur mon script
Posté par: HeyC le 31 Octobre 2008, 10:42:22
MErci beaucoup, sa marche.