• 20 Avril 2024, 01:30:24


Auteur Sujet: Crée véhicule + mettre le joueur dedans  (Lu 5632 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Crée véhicule + mettre le joueur dedans
« le: 21 Juillet 2014, 06:42:03 »
Salut,

J'essaye de crée une petite commande qui crée un véhicule et qui mets le joueur dedans:

new gPlayerVehicle[MAX_PLAYERS];
new Float:px, Float:py, Float:pz;

public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/nrg", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid, px, py, pz);
gPlayerVehicle[playerid] = CreateVehicle(522, px, py, pz, 82.2873, 0, 1, 60);
PutPlayerInVehicle(playerid, gPlayerVehicle[playerid], 0);
return 1;
}
return 0;
}

Et pourtant ça ne marche pas (Unknow command) ! Je pense que je vais devenir fou .

Merci de votre aide,
Cordialement,
« Modifié: 02 Août 2014, 05:27:13 par maxya »

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #1 le: 21 Juillet 2014, 09:45:35 »
Bonjour,

Pour commencer, tu n'es pas obligé d'utiliser des variables globales pour ce que tu souhaites faire. Les variables créées dans une callback sont locales et ne sont pas réutilisées (à moins d'être statiques).

Ensuite, le quatrième paramètre de la fonction strcmp() est la taille de la chaîne à comparer. Tu utilises une taille de 10, or 4 semble plus adéquat pour cette commande (car /nrg est composée de quatre caractères, en comptant le /).

Voici donc une version corrigée de la callback. Je code ça directement sur le forum, il se peut donc que ça ne compile pas du premier coup (ne m'en veux pas !).


Code: (pawn) [Sélectionner]
// Lorsqu'un joueur utilise une commande
public OnPlayerCommandText(playerid, cmdtext[])
{
        // Si la commande utilisée correspond à "/nrg"
if (strcmp("/nrg", cmdtext, true, 4) == 0)
{
                // On crée les variables locales nécessaires à la commande
                new fPosX = 0.0, fPosY = 0.0, fPosZ = 0.0, fPosAngle = 0.0;
                new iVehicleID = 0;

                // On récupère les informations nécessaires (positions X, Y et Z, puis l'angle)
GetPlayerPos(playerid, fPosX, fPosY, fPosZ);
                GetPlayerFacingAngle(playerid, fPosAngle);

                // On crée le véhicule et on récupère son ID, puis on place le joueur dedans
iVehicleID = CreateVehicle(522, fPosX, fPosY, fPosZ, fPosAngle, 0, 1, 60);
PutPlayerInVehicle(playerid, iVehicleID, 0);

                // On retourne "true" (1) pour indiquer que les instructions sont terminées
return 1;
}

        // On retourne "false" (0) si la commande est différente de "/nrg" ou des autres commandes proposées
return 0;
}

En espérant t'avoir aidé,
Bonne journée.

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #2 le: 21 Juillet 2014, 18:47:57 »
Merci de ton aide, j'ai utilisé ton code mais j'ai toujours cette Unknow Command je suis vraiment perdu là et je suis sur que le problème ne viens pas du code:
mon server.cfg

echo Executing Server Config...
lanmode 0
rcon_password test2
maxplayers 50
port 7777
hostname SA-MP 0.3 Server
gamemode0 test 1
filterscripts gl_actions gl_realtime gl_property gl_mapicon ls_mall ls_elevator attachments skinchanger vspawner
plugins sscanf
announce 0
query 1
chatlogging 0
weburl [url=http://www.sa-mp.com]www.sa-mp.com[/url]
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat [%H:%M:%S]

J'utilise aussi zcmd et sscanf donc cela pourrais t-il avoir un impact sur la commande ?

Merci de votre aide,
Cordialement,

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #3 le: 21 Juillet 2014, 19:15:44 »
Oui, tu ne peux pas utiliser la méthode ZCMD + la méthode "traditionnelle" ça engendre des conflits ;)


Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Re : Crée véhicule + mettre le joueur dedans
« Réponse #4 le: 21 Juillet 2014, 22:06:03 »
Oui, tu ne peux pas utiliser la méthode ZCMD + la méthode "traditionnelle" ça engendre des conflits ;)

Où tu vois qu'il utilise zCMD ?
maxya, vérifies que tu n'as pas d'autres callbacks dans ton gamemode qui font la même chose que OnPlayerCommandText. Dans la mesure du possible, montres-nous tout ton code.

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #5 le: 21 Juillet 2014, 23:49:34 »
Gzsume dans mon GM j'utilise zcmd donc je pense que c'est ca qui crée un conflit, donc je vais crée la commande avec zcmd puis je vous dit si sa marche ou pas ;) .

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #6 le: 22 Juillet 2014, 04:50:20 »
Voila j'ai enlever zcmd + sscanf, mais maintenant sa me fais le truc de stay within the world boundaries et le jeu bug .

PS: désolé du DP .

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #7 le: 22 Juillet 2014, 06:10:48 »
Remplaces

Code: (pawn) [Sélectionner]
new fPosX = 0.0, fPosY = 0.0, fPosZ = 0.0, fPosAngle = 0.0;
Par

Code: (pawn) [Sélectionner]
new float:fPosX = 0.0, float:fPosY = 0.0, float:fPosZ = 0.0, float:fPosAngle = 0.0;
Dans mon code. Petit oubli de ma part.

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #8 le: 22 Juillet 2014, 07:00:58 »
Cool merci maintenant sa marche :) . mais en quoi ajouter un tag va modifier le fonctionnement de toute cette commande ? Je pensais que les tags c'est facultatif .
« Modifié: 22 Juillet 2014, 08:51:15 par maxya »

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Re : Crée véhicule + mettre le joueur dedans
« Réponse #9 le: 22 Juillet 2014, 14:01:13 »
Où tu vois qu'il utilise zCMD ?

J'utilise aussi zcmd et sscanf donc cela pourrais t-il avoir un impact sur la commande ?

Merci de votre aide,
Cordialement,



Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #10 le: 23 Juillet 2014, 00:02:58 »
Au temps pour moi. :wink:
Les tags ne sont pas facultatifs. Ne pas indiquer que la donnée reçue est un nombre à virgule peut, de manière logique, compromettre la précision de la téléportation sur ces valeurs.
« Modifié: 23 Juillet 2014, 00:31:49 par Gzsume »

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Crée véhicule + mettre le joueur dedans
« Réponse #11 le: 23 Juillet 2014, 00:23:03 »
Dans ce cas, les variables ne sont pas du même type.

Hors ligne maxya

  • *
  • Tueur en série
  • Messages: 158
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #12 le: 23 Juillet 2014, 04:40:09 »
Merci j'ai vraiment beaucoup appris avec le problème de cette simple commande maintenant je vais toujours mettre les tags .

Sujet résolu !

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #13 le: 23 Juillet 2014, 14:22:30 »
Juste comme ça, mais ça vous donne pas de warning quand vous ne mettez pas le tag ??


Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Crée véhicule + mettre le joueur dedans
« Réponse #14 le: 23 Juillet 2014, 14:36:48 »
Si, mais ça n'empêche pas la compilation.