GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: MK le 08 Avril 2010, 14:43:43

Titre: Petit problème
Posté par: MK le 08 Avril 2010, 14:43:43
Voila, j'ai créer une nouvelle fonction Teleporter_joueur: (venant de syg)
TeleporterJoueur (playerid, Float:X, Float:Y, Float:Z, Float:Angle)
{
   new vehicleid;
   if (IsPlayerInAnyVehicle (playerid))
   {
      vehicleid = GetPlayerVehicleID(playerid);
      SetPlayerPos (playerid, X, Y, Z);
      SetVehiclePos (vehicleid, X, Y, Z);
      SetVehicleZAngle (vehicleid, Angle);
      PutPlayerInVehicle (playerid, vehicleid, 0);
      SetCameraBehindPlayer (playerid);
   }
   else
   {
      SetPlayerPos (playerid, X, Y, Z);
      SetCameraBehindPlayer (playerid);
   }
}

pour ensuite créer une commande de téléportation a un interior:
if (strcmp("/hotring", cmdtext, true, 10) == 0)
{
   SetPlayerInterior(playerid, 15);
   msg(playerid, server, "* Server: Bienvenu aux hotrings!");
   TeleporterJoueur (playerid, -1394.20, 987.62, 1032.96, 4.0);
   
           return 1;
}

Et, voyant que cela marche impeccablement,
je voudrais, quand j'effectue la téléportation, être directement dans un véhicule.
mais je ne sais comment m'y prendre :/

merci de m'éclaircir!
Titre: Re : Petit problème
Posté par: Syg le 08 Avril 2010, 17:34:49
Non pas vraiment Dizzy, ça n'a rien à voir.

Ton problème MK c'est que tu changes l'intérieur pour le joueur mais pas pour le véhicule.
Le mieux c'est de modifier ta fonction de téléport pour prendre en compte l'intérieur :

TeleporterJoueur (playerid, Float:X, Float:Y, Float:Z, Float:Angle, Interieur=0)
{
   new vehicleid;
   if (IsPlayerInAnyVehicle (playerid))
   {
      /* Si l'intérieur a changé */
      if (Interior != GetPlayerInterior (playerid))
      {
            SetPlayerInterior (playerid, Interior);
            LinkVehicleToInterior (playerVehicle, Interior);
      }
      vehicleid = GetPlayerVehicleID(playerid);
      SetPlayerPos (playerid, X, Y, Z);
      SetVehiclePos (vehicleid, X, Y, Z);
      SetVehicleZAngle (vehicleid, Angle);
      PutPlayerInVehicle (playerid, vehicleid, 0);
      SetCameraBehindPlayer (playerid);
   }
   else
   {
      /* Si l'intérieur a changé */
      if (Interior != GetPlayerInterior (playerid))
      {
            SetPlayerInterior (playerid, Interior);
            LinkVehicleToInterior (playerVehicle, Interior);
      }
      SetPlayerPos (playerid, X, Y, Z);
      SetCameraBehindPlayer (playerid);
   }
}
Avec cette fonction, si tu donnes pas l'intérieur, il sera mis à 0 par défaut. Tu n'as donc pas à retoucher ton script pour modifier tous les appels à cette fonction.

if (strcmp("/hotring", cmdtext, true, 10) == 0)
{
   msg(playerid, server, "* Server: Bienvenu aux hotrings!");
   TeleporterJoueur (playerid, -1394.20, 987.62, 1032.96, 4.0, 15);
   
           return 1;
}

++
Syg
Titre: Re : Petit problème
Posté par: MK le 08 Avril 2010, 18:14:29
Merci  8)
Titre: Re : Re : Petit problème
Posté par: scott1 le 08 Avril 2010, 23:02:00
Han , faut pas se fier à moi j'pense  :(

J'suis qu'un débutant ><

On est tous passé par la.

Sauf Syg il a la science infuse xD
/me s'incline et dit " Ohhh Grand Syg maitre de pawno, fait que notre année de pawn soit bonne ^^
Titre: Re : Re : Re : Petit problème
Posté par: Syg le 09 Avril 2010, 09:33:50
Han , faut pas se fier à moi j'pense  :(

J'suis qu'un débutant ><

On est tous passé par la.

Sauf Syg il a la science infuse xD
/me s'incline et dit " Ohhh Grand Syg maitre de pawno, fait que notre année de pawn soit bonne ^^
Non, Syg il est passé par là aussi, sauf que c'était il y plus de 25 ans.

++
Syg
Titre: Re : Re : Petit problème
Posté par: Syg le 09 Avril 2010, 14:37:27
C'qui qui t'as appris ?
Le temps, la persévérance et la passion ensuite, j'en ai fait mon métier.

++
Syg
Titre: Re : Petit problème
Posté par: Syg le 09 Avril 2010, 16:19:01
Pose moi ces questions en PM, on n'est pas dans ce topic pour parler de moi.

++
Syg