• 07 Juillet 2025, 14:54:20


Auteur Sujet: Script localisation  (Lu 1509 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne yah00078

  • *
  • Tueur en série
  • Messages: 163
    • Voir le profil
    • Radio locale F2xradio
Script localisation
« le: 16 Août 2009, 14:20:20 »
Voila mon script , qui permet de localiser un véhicule avec son ID , Mais le probleme c'est que lorsque je tape la commande le serveur me répond qu'elle est inconnue :s

public OnPlayerCommandText(playerid, cmdtext[])

{
    dcmd(localiser,5,cmdtext);
   return 0;
}

dcmd_localiser(playerid,params[])
{
    if(!strlen(params)) return SendClientMessage(playerid, 0xFF0000AA, "Usage: /Localiser ID");
    new idx;
    new tmp[256];
    new str[128];
    tmp = strtok(params, idx);
   if(IsPlayerInVehicle(playerid, 420))
  {
     if(IsVehicleConnected(strval(tmp)))
    {
       if(alarmed[strval(tmp)] == 1)
       {
           new Float:vehx, Float:vehy, Float:vehz;
            GetVehiclePos(idx, vehx, vehy, vehz);
            SetPlayerMapIcon(playerid, 1, vehx, vehy, vehz, 55, 0);
         SendClientMessage(playerid,COLOR_SUCCESS,"Vehicule localisé , Une Icone a été ajoutée sur ta carte ! , /stoploca pour terminer");
      }
    }
    else
   {
        format(str, sizeof(str), "Le Vehicule %d N'a pas pu etre localisé , Contacter SAV",strval(tmp));
        SendClientMessage(playerid,COLOR_FAIL,str);
   }
  }
   else
   {
     SendClientMessage(playerid,COLOR_FAIL,"Tu n'est pas chauffeur de taxi !");
  }
   return 1;
}


Merci de votre préciseuse aide
Quand on veux , on peut !

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Script localisation
« Réponse #1 le: 16 Août 2009, 14:27:50 »
if(IsVehicleConnected(strval(tmp)))
C' est une fonction ?? ou bien tu l as mis comme ca ??


pck si tu la s mis comme ca je te dit GG pour la faute lol
 ( un vehicule connecter j ai jamais vu ca xD)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : Script localisation
« Réponse #2 le: 16 Août 2009, 14:52:28 »
puis tu confond les dcmd des strcmp donc non sa va pas


dcmd_localiser(playerid,params[])
{
   new vehicle;
   if (sscanf(params, "d", vehicle)) SendClientMessage(playerid, Jaune, "Usage: \"/localiser[vehicleid]\"");
   else if (!ICI TON CODE SI LA VOITURE EST INNEXISTANTE);
          if(alarmed[vehicle] == 1)
       {
           new Float:vehx, Float:vehy, Float:vehz;
            GetVehiclePos(vehicle, vehx, vehy, vehz);
            SetPlayerMapIcon(playerid, 1, vehx, vehy, vehz, 55, 0);
         SendClientMessage(playerid,COLOR_SUCCESS,"Vehicule localisé , Une Icone a été ajoutée sur ta carte ! , /stoploca pour terminer");
      }
    }
    else
   {
        format(str, sizeof(str), "Le Vehicule %d N'a pas pu etre localisé , Contacter SAV",vehicle);
        SendClientMessage(playerid,COLOR_FAIL,str);
   }
  }
   else
   {
     SendClientMessage(playerid,COLOR_FAIL,"Tu n'est pas chauffeur de taxi !");
  }
   return 1;
}

enfin voila a peu pret

PS scripter sur le forum et pas tester a toi de voir mais dans toute mes commande dcmd je ne met pas de strotck il y a le params qui est deja la puis tu te sert du sscanf

if(IsVehicleConnected(strval(tmp)))
je pense que ceci est une fonction dans sont GM que le créateur a mis pour voir si le vehicule existe (du moin j'espere ^^) si c'est le cas if(IsVehicleConnected(vehicle))


Le code si dessus de fait juste montrer un appercu de la difference des dcmd et strcmp il ne semble pas valide dans l'etat
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne yah00078

  • *
  • Tueur en série
  • Messages: 163
    • Voir le profil
    • Radio locale F2xradio
Re : Script localisation
« Réponse #3 le: 16 Août 2009, 14:55:07 »
Merci a vous deux =) je vais regarder et pour vous rassurr , je dis que le véhicule est connecté si il est spawn , donc si il existe sur le serveur  :lock


EDIT: que dois je metttre en define?
« Modifié: 16 Août 2009, 15:02:18 par yah00078 »
Quand on veux , on peut !

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Script localisation
« Réponse #4 le: 16 Août 2009, 15:01:17 »
essaye ma methode c' est un peu mieu, elle verifie si le vehicule existe grace au model ( aider par sim ;) )


new mdl = GetVehicleModel(vehicleid); //recuperer le model du vehicule d un joueur
if(mdl <= 400 || mdl >= 611) // verifie si le vehicule a pas un model inferieur a 400 et superieur a 611



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne yah00078

  • *
  • Tueur en série
  • Messages: 163
    • Voir le profil
    • Radio locale F2xradio
Re : Script localisation
« Réponse #5 le: 16 Août 2009, 15:04:35 »
Je le metterai, merci a toi  , mais pour le moment je m'enmele les pinceau avec les define et tous ce truc x)
Quelq'un peux m'eclairer? :-[
Quand on veux , on peut !

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Script localisation
« Réponse #6 le: 16 Août 2009, 15:07:26 »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Script localisation
« Réponse #7 le: 17 Août 2009, 11:21:39 »
Voila mon script , qui permet de localiser un véhicule avec son ID , Mais le probleme c'est que lorsque je tape la commande le serveur me répond qu'elle est inconnue :s

Le problème ne vient pas du tout de la fonction dcmd_localiser qui est correcte du point de vue de son utilisation (le contenu est peut-être bugué mais c'est une autre histoire).

C'est la taille de ta commande dans l'utilisation dcmd qui n'est pas bonne.

Donc reprend le script de ton premier post et remplace la ligne :
dcmd(localiser,5,cmdtext);
par
dcmd(localiser,9,cmdtext);

Attention : dcmd n'est pas une fonction mais une macro. La compilateur va donc remplacer les lignes où l'on s'en sert pas des lignes de scripts.

Voici la macro que la plupart d'entre vous utilise :
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
Les %1, %2 et %3 correspondent aux paramètres de la macro, ils seront remplacés tels quels par la compilateur.

Exemple :
dcmd(localiser,[color=green][b]9[/b][/color],cmdtext);
deviendra :
if ((strcmp((cmdtext)[1], "localiser", true, (9)) == 0) && ((((cmdtext)[(9) + 1] == 0) && (dcmd_localiser(playerid, "")))||(((cmdtext)[(9) + 1] == 32) && (dcmd_localiser(playerid, (cmdtext)[(9) + 2]))))) return 1
Je vous laisse essayer de décortiquer la ligne si dessus :)

++
Syg
Courtesy of GtaManiac

Hors ligne yah00078

  • *
  • Tueur en série
  • Messages: 163
    • Voir le profil
    • Radio locale F2xradio
Re : Script localisation
« Réponse #8 le: 18 Août 2009, 16:20:28 »
Merci Syg =) , la commande est maintenant accepter  , mais il ne se passe rien quand je tape /localsier 78 par exemple.
Ps: j'ai changer mon  if(IsPlayerInVehicle(playerid, 420))  par un GetPlayerVehicle . puis je l'ai enelver ,
cela ne fonctionne toujours pas ? =S pourquoi?

Merci =)
Quand on veux , on peut !

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Re : Script localisation
« Réponse #9 le: 19 Août 2009, 09:05:27 »
Le problème ne vient pas du tout de la fonction dcmd_localiser qui est correcte du point de vue de son utilisation (le contenu est peut-être bugué mais c'est une autre histoire).
Donc maintenant on passe à "l'autre histoire" ...

Quand je regarde ta fonction, je vois que le test sur alarmed[strval(tmp)] n'a pas de else, rajoute le, je pense que ton problème vient de ce test :
            if(alarmed[strval(tmp)] == 1)
            {
                new Float:vehx, Float:vehy, Float:vehz;
                GetVehiclePos(idx, vehx, vehy, vehz);
                SetPlayerMapIcon(playerid, 1, vehx, vehy, vehz, 55, 0);
                SendClientMessage(playerid,COLOR_SUCCESS,"Vehicule localisé , Une Icone a été ajoutée sur ta carte ! , /stoploca pour terminer");
            }
            else
            {
                SendClientMessage(playerid,COLOR_FAIL,"<MESSAGE D'ERREUR>");
            }


Dans tous les cas, tu peux toujours ajouter des traces (printf) aux endroits judicieux pour suivre le comportement de ta fonction, notamment en traçant les valeurs des variables utilisées pour les tests.

++
Syg
Courtesy of GtaManiac