GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: GzupScripter le 31 Juillet 2009, 03:51:29

Titre: [Tuto] Téléportations
Posté par: GzupScripter le 31 Juillet 2009, 03:51:29
Bonjour a vous,

Aujourd'hui je vais vous montrez comment faire un petit script facile et simple d'utilisation.
Ce script permettra de Téléporter votre personnage & sa voiture ou seulement le personnage (Pour les zones DM).


_____________________ Index _________________________
1- Introduction et Explications
2- Créations du Script (1/2 : TP du Personnage seulement)
3- Créations du Script (2/2 : TP du Personnage et Vehicule)
4- Le Script au complet
_____________________________________________________



Première Partie :
Introduction et Explications
______________________
Nous allons commencez par le nom du joueur avec un new et ensuite analyser et sauvegarder le nom du joueur. Nous allons par la suite , définir quelques autre objets ou id. Après nous allons regarder si le joueur est dans un vehicle , si oui , téléporter le joueur et le vehicules ensemble a la position choisi, et si le joueur n'a pas de vehicule , téléporter le joueur seulement. Et en options nous allons envoyer un message au joueur pour lui dire qu'il a bien été téléporter.


Deuxième Partie :
Créations du Script 1/2
______________________
Je vais faire le script en 2 partie , la premiere partie sera de définir les objets et id et de regarder si le joueur est dans un véhicule ou non.

Dans la public OnPlayerCommandText(playerid, cmdtext[])

Citation de:  Code PAWN
if(strcmp(cmdtext, "/commande", true)==0) // /commande représente la commande utiliser pour exécuter le script.
{
new vehicleid = GetPlayerVehicleID(playerid); // vehicleid va équivaloire le ID du Véhicule du Joueur et on sauvegarde le ID du Véhicule(Pas id comme 411=Infernus)
new State = GetPlayerState(playerid); // on définie State comme étant l'état du joueur (si il est ou non dans une voiture)
if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER) // si le joueur est dans un véhicule et si il est conducteur
{




Troisième Partie :
Créations du Script 2/2
______________________
Dans cette partie du script , nous allons téléporter le véhicules et le joueur au coordonées choisi, et nous allons lui envoyer un message de bienvenue.
Citation de:  Code PAWN
   return SetVehiclePos(vehicleid,2027.6072,1008.1482,10.8203),  // Ici seront les coordonnés de l'endroit ou le véhicule se téléportera
    GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5); // message envoyer aux joueur si il s'est belle et bien téléporter
  }
  SetPlayerPos(playerid,2027.6072,1008.1482,10.8203);  // Ici seront les coordonnés de l'endroit ou le joueur se téléportera
  GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5); // message envoyer aux joueur si il s'est belle et bien téléporter
return 1;
}



Quatrième Partie :
Le Script au complet
______________________
Pour les paresseux qui veulent copier/coller le voici ;)
Citer

if(strcmp(cmdtext, "/commande", true)==0) // /commande représente la commande utiliser pour exécuter le script.
{
new vehicleid = GetPlayerVehicleID(playerid); // vehicleid va équivaloire le ID du Véhicule du Joueur et on sauvegarde le ID du Véhicule(Pas id comme 411=Infernus)
new State = GetPlayerState(playerid); // on définie State comme étant l'état du joueur (si il est ou non dans une voiture)
if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER) // si le joueur est dans un véhicule et si il est conducteur
{
 return SetVehiclePos(vehicleid,2027.6072,1008.1482,10.8203),  // Ici seront les coordonnés de l'endroit ou le véhicule se téléportera
    GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5); // message envoyer aux joueur si il s'est belle et bien téléporter
  }
  SetPlayerPos(playerid,2027.6072,1008.1482,10.8203);  // Ici seront les coordonnés de l'endroit ou le joueur se téléportera
  GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5); // message envoyer aux joueur si il s'est belle et bien téléporter
return 1;
}

Cordialement, GzupScripter / Pure'Exode
Pour les questions , dans la section aide & support !
Titre: Re : [Tuto] Téléportations
Posté par: Azz45 le 31 Juillet 2009, 04:03:36
GG, mais explique a ceux qui savent pas ou placer ce code là, quel callback ?

Sinon, +1
Titre: Re : Re : [Tuto] Téléportations
Posté par: GzupScripter le 31 Juillet 2009, 04:49:42
GG, mais explique a ceux qui savent pas ou placer ce code là, quel callback ?

Sinon, +1

Premier post éditer ;)
Titre: Re : [Tuto] Téléportations
Posté par: Syg le 31 Juillet 2009, 11:30:21
Trois petites remarques concernant la présentation :
1) Il serait bien que tu mettes les commentaires au dessus de la ligne qu'ils concernent et non à la suite.
Ceci évite les lignes trop longues et permet de mieux voir le commentaires (surtout dans un script s'adressant à des débutant).
2) Indente ton script correctement, ceci augmentera la lisibilité.
3) Fais attention à l'orthographe.

Concernant le code en lui-même, il y a une faute gênante :
La ligne
GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5)se trouve après
return SetVehiclePos(vehicleid,2027.6072,1008.1482,10.8203)et devrait normalement produire l'erreur disant qu'elle n'est pas accessible.
Par chance, tu as fait l'erreur de mettre une virgule (,) au lieu d'un point-virgule( ; ) à la fin de
return SetVehiclePos(vehicleid,2027.6072,1008.1482,10.8203)ce qui fait que ton GameTextForPlayer est quand même exécuté.

Soit tu n'as pas fait exprès, soit tu n'as trouvé que cette solution pour que ça fonctionne.
Dans les deux cas, ce n'est absolument pas une bonne habitude.

Je me suis donc permis de corriger ton bout de script (sans correction de l'orthographe) :
if(strcmp(cmdtext, "/commande", true)==0) // /commande représente la commande utiliser pour exécuter le script.
{
   // vehicleid va équivaloire le ID du Véhicule du Joueur et on sauvegarde le ID du Véhicule(Pas id comme 411=Infernus)
   new vehicleid = GetPlayerVehicleID(playerid);

   // on définie State comme étant l'état du joueur (si il est ou non dans une voiture)
   new State = GetPlayerState(playerid);

   // si le joueur est dans un véhicule et si il est conducteur
   if(IsPlayerInAnyVehicle(playerid) && State == PLAYER_STATE_DRIVER)
   {
      // message envoyer aux joueur si il s'est belle et bien téléporter
      GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5);

      // Ici seront les coordonnés de l'endroit ou le véhicule se téléportera
      return SetVehiclePos(vehicleid,2027.6072,1008.1482,10.8203);
   }

   // Ici seront les coordonnés de l'endroit ou le joueur se téléportera
   SetPlayerPos(playerid,2027.6072,1008.1482,10.8203);

   // message envoyer aux joueur si il s'est belle et bien téléporter
   GameTextForPlayer(playerid, "~w~Teleporter avec Succes!", 5000, 5);
   return 1;
}

++
Syg
Titre: Re : [Tuto] Téléportations
Posté par: cristab le 31 Juillet 2009, 11:38:55
le mieux est de regarder ce topic et de comprendre pourquoi la factoristion démontrer par Syg sur le topic et plus simple car on peu ajouter des teleportation en 3 ligne seulement il peu egualement etre plus complet en ajoutant les interieures dans la factorisation mais sa je vous laisse chercher


http://www.gtaonline.fr/forums/index.php/topic,6250.0.html (http://www.gtaonline.fr/forums/index.php/topic,6250.0.html)


PS: le code tel quel comporte une erreure se qui je pense est fait expres de la part de syg (il n'aime pas donner des code tout pret :p) afin que vous chercher par vous meme un peu;j'utilise cette methode depuis deja plus de six mois en ayant ajouter les interieures et il me faut 25 secondes pour ajouter une teleportation a vos pawn
Titre: Re : [Tuto] Téléportations
Posté par: GzupScripter le 31 Juillet 2009, 13:42:51
Merci a toi Syg ;)

Je suis pas de ton niveau x) et je ne savais pas que mon truc avait un erreur car il y avais 0 warnings et 0 erreurs quand je compilais ^^