• 24 Avril 2025, 06:13:21


Auteur Sujet: Commande Spawn Vehicule par ID  (Lu 8080 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Commande Spawn Vehicule par ID
« le: 20 Octobre 2008, 19:08:26 »
Bonjour, je souhaite créer une commande permettant de spawner un vehicule en fonction de son id, comme dans le debug. Pour cela, je me suis inspiré du R@f Admin Script, qui spawn une id précise :

   if (!strcmp(cmd, "/car", true))
    {
new Float:X,Float:Y,Float:Z,Float:Angle;
new carid;
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
carid = CreateVehicle(471,X,Y,Z,Angle,-1,-1,86400000);
PutPlayerInVehicle(playerid,carid,0);
TogglePlayerControllable(playerid,1);
if(GetPlayerInterior(playerid)) LinkVehicleToInterior(carid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(carid,GetPlayerVirtualWorld(playerid));
return 1;
}

Je voudrais savoir comment remplacer l'id (ici 471) par une id choisie en la tapant après /car.
Merci de vos réponses.

PS : Je voudrais aussi savoir s'il est possible de faire des exceptions pour les ID, afin qu'un joueur ne puisse pas spawner un Hydra même avec son ID, par exemple...
« Modifié: 20 Octobre 2008, 19:56:43 par Jens84 »
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne [StAfF]MaN

  • [StAfF] forever ^^
  • *
  • Gangster
  • [StAfF] un jour, [StAfF] toujours ^^ !!!
  • Messages: 1040
    • Voir le profil
    • SITE [StAfF]
Re : Commande Spawn Vehicule par ID
« Réponse #1 le: 20 Octobre 2008, 19:29:04 »
Pour ce que tu veut tu dois utiliser la fonction STRTOK que je te file :

strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}

new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}

Maintenant tu te débrouille ;) Je suis sur que tu a déjà du croiser une commande qui utilise le strtok donc tu a tous ce dont tu a besoin ;) Si vraiment ta un prob on pourra te filer la structure de ta commande en strtok mais on ira pas plus loin ^^

Bonne chance ;)
^v^v^v^v|
   StAfF  |                              IP: gtaunderground.No-Ip.org

^v^v^v^v|

Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : Commande Spawn Vehicule par ID
« Réponse #2 le: 20 Octobre 2008, 19:39:23 »
Ok merci beaucoup. De plus, la fonction que tu m'as donné était déja présent à la fin de mon script, j'ai donc déja dû l'avoir utilisé.
Si j'ai besoin d'aide, je demanderais ^^
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : Commande Spawn Vehicule par ID
« Réponse #3 le: 20 Octobre 2008, 19:53:18 »
J'ai adapté comme je pouvais en m'appuyant sur la commande /givecash mais j'obtiens quand même quelques erreurs (undefined symbol "vehiculeid" et "local variable "tmp" shadows a variable at a preceding level").
Est-ce que je m'approche tout de même ?


       if (!strcmp(cmd, "/car", true))
        {
new tmp[256];
tmp = strtok(cmdtext, idx);

if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_WHITE, "UTILISATION: /car [ID Véhicule]");
return 1;
}
vehiculeid = strval(tmp);

if (vehiculeid >= 400 && vehiculeid <= 611) {
new Float:X,Float:Y,Float:Z,Float:Angle;
new carid;
new tmp[256];
tmp = strtok(cmdtext, idx);
GetPlayerPos(playerid,X,Y,Z);
GetPlayerFacingAngle(playerid,Angle);
carid = CreateVehicle(vehiculeid,X,Y,Z,Angle,-1,-1,86400000);
PutPlayerInVehicle(playerid,carid,0);
TogglePlayerControllable(playerid,1);
if(GetPlayerInterior(playerid)) LinkVehicleToInterior(carid,GetPlayerInterior(playerid));
SetVehicleVirtualWorld(carid,GetPlayerVirtualWorld(playerid));
}
else
{
SendClientMessage(playerid, COLOR_YELLOW, "ID Invalide.");
}
return 1;
}

EDIT : C'est bon, j'ai trouvé, ma commande fonctionne.
          Merci beaucoup. (j'ai supprimé "new tmp[256];" et ajouté "new vehiculeid;" à la place)
« Modifié: 20 Octobre 2008, 20:07:02 par Jens84 »
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne latinos95190

  • *
  • Tueur
  • Messages: 56
    • Voir le profil
Re : Commande Spawn Vehicule par ID
« Réponse #4 le: 20 Octobre 2008, 23:37:31 »
Sa serais possible de faire respawn tous les véhicules en même temps ? ?

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Commande Spawn Vehicule par ID
« Réponse #5 le: 21 Octobre 2008, 01:08:26 »
Salut,

éffectivement, c'est d'ailleur ce que je faisais.... jusqu'à la semaine passée sur mon serveur,

il te suffi de faire une boucle dans laquelle je te recommande de vérifier qu'il n'y a aucun joueur dans le véhicule avant de le respawner.....


++Sim++





Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : Commande Spawn Vehicule par ID
« Réponse #6 le: 21 Octobre 2008, 07:27:41 »
Bonjour, j'ai un petit problème, je savais qu'il existerait mais je demande quand même.
En ayant fait CreateVehicule et utilisant un Timer CarRespawn dans mon serveur, les vehicules spawnés avec la commande /car, se respawnent à leur emplacement d'origine (là où on les a spawnés) à cause du Timer.
Je veux faire un Timer DestroyVehicule mais comment faire pour qu'il ne s'active que lorsqu'on sort d'un véhicule Spawné avec une commande.

Merci d'avance
Jens84
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : Commande Spawn Vehicule par ID
« Réponse #7 le: 21 Octobre 2008, 20:03:18 »
Up svp, pourrais-je avoir une réponse svp, c'est ma dernière question sur ce sujet ^^

Merci d'avance
Serveur non-terminé  (MAJ Quotidiennes)


Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Commande Spawn Vehicule par ID
« Réponse #8 le: 22 Octobre 2008, 02:25:42 »
salut,

alors pour ça, le mieu c,est d,assigner un id de véhicule par joueur....

new vehicleidspawned[MAX_PLAYERS];
puis dans ta commande...


vehicleidspawned[playerid] = CreateVehicle(....)

puis dans OnPlayerExitVehicle tu fais un timer qui détruira le véhicule..

++Sim++





Hors ligne Jens84

  • *
  • Tueur
  • Pawn un jour, Pawn toujours
  • Messages: 71
    • Voir le profil
    • Mon Site Web
Re : Commande Spawn Vehicule par ID
« Réponse #9 le: 22 Octobre 2008, 17:10:08 »
Ok merci beaucoup, je vais tester ça tout de suite !
Serveur non-terminé  (MAJ Quotidiennes)