• 16 Avril 2024, 09:32:02


Auteur Sujet: Commande /attacher, /accepter attacher, /detacher  (Lu 3677 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Lord Hawk

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Commande /attacher, /accepter attacher, /detacher
« le: 15 Avril 2015, 13:33:05 »
Salut,

J'ai quelque problème avec mon code, je suis débutant en PAWN et pour m'entrainer j'ai voulu créer la commande /attacher, j'ai du avoir beaucoup d'aide du forum de SAMP, mais je reste bloqué encore. Voici mon code, que j'ai eu grave a des gens qui m'ont aidé sur le forum SAMP. J'ai pas copié/collé exactement leurs codes, j'm'en suis aidé pour faire le mien de code, mais j'ai toujours des problèmes.

Voici le code : http://pastebin.com/Zq6KLxZV

Donc, la commande /attacher je n'ai pas de réel problème, mais je ne comprend pas ce que ca veut dire ça :

attacheur[targetid] = playerid;
Ensuite, la commande /accepterattacher ne fonctionne qu'a moitié, une fois que j'ai fais /attacher, je peut faire /accepterattacher, mais la seul chose qui se passe c'est que mon pesronnage est attaché, je n'ai aucun texte, aucun chatlog qui est envoyé à la personne qui a fait /attacher et a la personne qui a fait /accpeterattacher, le script l'ignore.

ET, la commande /detacher ne fonctionne tout simplement pas, le serveur persiste à me renvoyer que le joueurs n'existe pas.

Enfin bref, de l'aide please ?

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #1 le: 15 Avril 2015, 18:54:31 »
Salut,

"Attacheur" est en fait un tableau. Tu stock l'id du joueur attacheur à l'adresse du joueur attaché ?! kezako ?

exemple : Si tu m'attache, que ton id est 1 et le mien 2.

             On aura alors Attacheur[2] = 1;


Ensuite pour ton problème de message regarde à la ligne 40.
format(string, sizeof(string), "Vous avez était détaché par %s, attacheur[playerid]");
Tu veux afficher l'id via %s (%s est utilisé pour les strings) récupéré le nom du joueur.
Aussi, tu n'envoie pas le message au joueur qui se fait détaché.

ci dessous une fonction qui peut te servir :
GetName(playerid)
{
    new PlayerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
    return PlayerName;
}




A+, Sam.
:cheers:

Hors ligne Lord Hawk

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #2 le: 16 Avril 2015, 13:24:28 »
Salut,

Déjà, merci d'être passé !

Mais Hum, houla je ne suis pas sur d'avoir compris tout c'que tu me racontes. Je veut afficher le nom du joueurs du genre : "Vous avez était détaché par Lord Hawk", Lord Hawk étant l'attacheur, donc la personne ayant fait /attacher, qui est stocké dans la variable attacheur[playerid]. Mais j'ai énormément de mal à gérer les variables. Enfin, du coup j'ai modifier un peut le script, et j'ai testé un truc comme ça :

http://pastebin.com/eycrLUcj (fait pas gaffe au fouilli dans le code, y'en a un ou y'a des accolades, d'autre non, mais j'essayais différent truc)

Sauf que cette fois ci lorsque je fais /attacher, c'est l'attacheur qui est attaché (du moins soit c'est le joueurs soit c'est l'attacheur, je ne sais pas car je teste le script sur moi même). Enfin bon, ca fait presque une semaine que je galère à faire cette commande et je ne comprend toujours pas, j'ai énormément de mal a comprendre l'utilisation d'une variable.
De plus, ma condition ci dessous, n'est t'elle pas censé faire en sorte que SI le joueurs ciblé et cuffed, alors L'ATTACHEUR recoit le message que l'ID du mec attaché s'est laissé faire ? Je recois bien un message une fois avoir fait /attacher, mais y'a même pas le nom de l'attaché. Je comprend même plus, j'ai plus de solution :( !

Code: (pawn) [Sélectionner]
if(SetPlayerSpecialAction(targetid, SPECIAL_ACTION_CUFFED))
        {
            format(string, sizeof(string),"%s s'est laissé attacher les poignets", targetid);
            SendClientMessage(playerid, -1, string);
            return 1;
        }

ensuite, la fonction je n'suis pas sur de bien avoir compris, créer une fonction je sais qu'on peut le faire, mais je ne comprend pas comment. Et je l'utilise comment la fonction après ?

Bon, autant dire que j'ai encore énormément a apprendre, peut tu m'expliquer en détaille l'utilisation d'une variable ? J'ai compris a quoi sert la variable mais j'arrive pas à les gérer, surtout quand elles s’accumulent partout dans le script !!!
« Modifié: 16 Avril 2015, 13:32:49 par Lord Hawk »

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #3 le: 16 Avril 2015, 22:09:18 »
Salut,

Enfaite tout est question de logique, si tu donnes les mauvaises instruction ton code ne peux pas marcher.
L'utilisation des variables je ne peux pas vraiment te l'apprendre, si tu as compris le principe c'est juste un "tableau" qui porte un nom ou tu stock quelques chose. Ensuite le nom de la variable peut changer, j'ai mes habitudes, tu en aura aussi quant au nom.

Ta commande pour demander d'attacher semble être correcte c'est dans la commande pour attacher que tu ne comprend plus :p essaie de renommé la variable Attacheur par quelques choses d'autre qui ne te perturbera pas.

Pour récupérer le nom de l'attacheur utilises la fonction que je t'ai donné comme ceci :

format(string, sizeof(string),"%s vous a attaché les poignets", GetName(attacheur[playerid]));

rappelle toi dans ton tableau tu as stocké l'id du joueur qui souhaite attaché l'autre à l'adresse de la "victime".

Ce qui donnerais si tu envoie un message

SendClientMessage(playerid, 0xFF00FFFF, "Vous avez accepté d'être attaché");
SendClientMessage(attacheur[playerid], 0x00FF00FF, "Le joueur a accepté d'être attaché");


A+, Sam.
:cheers:

Hors ligne Lord Hawk

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #4 le: 17 Avril 2015, 13:18:29 »
.

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #5 le: 18 Avril 2015, 11:54:20 »
Salut,

tu as envoyé un message vide :p

A+, Sam.
:cheers:

Hors ligne Lord Hawk

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #6 le: 19 Avril 2015, 11:54:03 »
Oui, enfaite j'ai voulu envoyer un message, et j'ai voulu le supprimer juste après, donc j'ai éditer avec un point. Enfin bref, j'ai une bonne nouvelle, j'ai réussit à faire ma commande grace à tes indications, je un tout dernier problème, avec ma commande /detacher.

Code: (pawn) [Sélectionner]
CMD:detacher(playerid, params[])
{
new cibleid, string[145];

if(sscanf(params, "u", cibleid)) return SendClientMessage(playerid, -1, "USAGE: /detacher [ID/Pseudo]");
if(attacheur[playerid] == -1) return SendClientMessage(playerid, -1, "Ce joueurs n'est pas attaché.");
if(!IsPlayerConnected(dibleid)) return SendClientMessage(playerid, -1, "Ce joueurs n'est pas connecté.");
attacheur[cibleid] = playerid;
format(string, sizeof(string), "Vous avez détaché %s", GetName(cibleid));
SendClientMessage(playerid, -1, string);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
format(string, sizeof(string), "Vous avez était détaché par %s", GetName(playerid));
SendClientMessage(cibleid, -1, string);
attacheur[playerid] = false;

return 1;
}

Ce qui est bien, c'est que ton aide m'a permis de re-réfléchir à la logique dans mon code, et il y avait beaucoup de chose illogique qui ne risquait forcément pas de fonctionner.... Mais, pour ma commande /detacher donc, lorsque je fais cette commande, je revois bien les deux messages et mon joueurs est bien détacher, tout marche parfaitement bien, SAUF que même si le joueurs n'est pas attaché il envoie tout d même le message et fait la fonction de détachement, même si il n'est pas attaché. Avant c'étais l'inverse, on me renvoyait toujours que le joueurs n'étais pas attaché. Et pourtant, le attacheur[playerid] == -1 faut en sorte que si l'attacheur n'a pas fait la commande sur l'ID ciblé, alors ce qui renvoie dans ma cmd /detacher que la personne n'est forcément pas attaché.

Au cas ou, voici ma commande fonctionnel + le /detacher : http://pastebin.com/ekEVWb79

Fin bref, merci, a plus !

Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #7 le: 19 Avril 2015, 15:55:34 »
Salut,

C'est bien alors que tu es compris tes erreurs :p

J'ai regarder un peu ton code, je n'ai pas compris pourquoi tu as mis cet ligne :

attacheur[cibleid] = playerid;

Hors ligne Lord Hawk

  • *
  • Nouveau
  • Messages: 5
    • Voir le profil
Re : Commande /attacher, /accepter attacher, /detacher
« Réponse #8 le: 19 Avril 2015, 17:41:34 »
Bien car je trouvais ça logique, car pour mon /attacher j'ai du faire ça... Mais bon, je pense que plus je scripterais, et mieux je comprendrais comment utiliser le tout !

Bon, en attendant tout fonctionne parfaitement ! Merci beaucoup !