GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: kikite02 le 30 Juin 2008, 17:17:32

Titre: GetplayerMoney
Posté par: kikite02 le 30 Juin 2008, 17:17:32
BOnjour ,

J'ai creer un include mais le probléme

c'est que quand quelqu'un fait une commands qui lui prend de l'argent virtuel

sa lui met -100

si il a 0 ( par exemple )

qui pourait maider ?

Ps : Reponse inutile non merci svp
Titre: Re : GetplayerMoney
Posté par: Bayshore le 30 Juin 2008, 17:35:56
Salut.

Considérons X comme l'argent que tu va prendre à la personne.

Quand tu veut lui prendre de l'argent, tu vérifies si l'argent de la personne est égale ou supérieur à X.
Si c'est le cas tu fais ce qu'il se passe lors de ce retrait; sinon tu affiches un message d'erreur comme quoi il lui faut tel somme d'argent. :)


++
Alexandre
Titre: Re : GetplayerMoney
Posté par: kikite02 le 30 Juin 2008, 19:05:36
Enfaite j'ai chercher

et j'ai trouver un code
je l'ai adapter est c'est niquel

merci quand même
Titre: Re : GetplayerMoney
Posté par: terry_weed le 28 Septembre 2008, 11:12:37
peu tu m'expliquer comment on formule le GetPlayerMoney (un exemple) merci
Titre: Re : GetplayerMoney
Posté par: [StAfF]MaN le 28 Septembre 2008, 11:40:44
Bah dans une commande ou dans une action ( le player meurt, ou tue quelqu'un) ??

dans une commande :

le joueur tape /money (exemple)

tu met un GetPlayerMoney(playerid, la somme);

ou alors, un SetPlayerMoney(playerid,(GetPlayerMoney, playerid) SOMME);

Dans une action :

Le joueur a tué un autre joueur :

Tu va dans le public OnPlayerDeath(playerid, killerid, reason)

{
   
new name[MAX_PLAYER_NAME];
new texte[256];
new deathreason[20];
GetPlayerName(playerid, name, sizeof(name));
GetWeaponName(reason, deathreason, 20);
    format(texte, sizeof(texte), "*** %s est mort ***", name);
    SendClientMessageToAll(COLOR_BLEUTROUBLE, texte);
    format(texte, sizeof(texte), " ", name);
    GameTextForPlayer(playerid, texte, 7000, 3);
    SetPlayerMoney(killerid,(GetPlayerMoney, killerid) SOMME); // tu met 100 par exemple a la place de SOMME
   
    return 1;
}

Et voila ;) Quand le joueur tuera quelqu'un il gagnera 100$ ^^
Titre: Re : GetplayerMoney
Posté par: terry_weed le 29 Septembre 2008, 10:06:02
O la je veux pas d'un truck aussi compliquer moi je veux c'est ca

GetPlayerMoney( playerid, 1000);


if(strcmp(cmd, "/permi", true, 2) == 0) {
GetPlayerMoney( playerid, 1000);
return 1;
}

éce que je lé bien formuler ?
Titre: Re : GetplayerMoney
Posté par: [StAfF]MaN le 29 Septembre 2008, 21:14:06
Le meilleur moyen de savoir si ça fonctionne comme toi tu veut, c'est que tu test ;)
Titre: Re : GetplayerMoney
Posté par: terry_weed le 29 Septembre 2008, 21:21:19
C:\Game\GTA-SanAndreas\gamemodes\1.0.pwn(9553) : warning 202: number of arguments does not match definition
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


1 Warning.
j'ai mal formuler pouvez vous me donner un éxemple
Titre: Re : GetplayerMoney
Posté par: [StAfF]MaN le 29 Septembre 2008, 23:07:45
GetPlayerMoney( playerid, 1000);

change par

GivePlayerMoney(playerid,1000); // donne 1000$

SetPlayerMoney(playerid,(GetPlayerMoney, playerid) -1000); // enlève 1000$

Titre: Re : GetplayerMoney
Posté par: Ssk le 30 Septembre 2008, 12:56:52
je prefere ca pour enlever de l argent

GivePlayerMoney(playerid, - 10000);
Titre: Re : Re : GetplayerMoney
Posté par: Nikko™ le 30 Septembre 2008, 19:00:02
GivePlayerMoney(playerid, - 10000);

Possible aussi ...

++
nikko
Titre: Re : GetplayerMoney
Posté par: [StAfF]MaN le 30 Septembre 2008, 21:08:23
dans les deux cas c'est fonctionnel ;) utilise la méthode que tu souhaite ^^
Titre: Re : GetplayerMoney
Posté par: terry_weed le 30 Septembre 2008, 21:54:13
merci beaucoup de votre aide
Titre: Re : GetplayerMoney
Posté par: Syg le 01 Octobre 2008, 14:19:55
Je tiens à préciser que SetPlayerMoney n'ajoute ou n'enlève pas d'argent mais fixe l'argent d'un joueur.

Par exemple, si un joueur à 10 000 $ et que l'on fait GivePlayerMoney (playerid, -1000); le joueur se retrouveras avec 10 000-1 000=9 000 $.
Par contre, si on fait SetPlayerMoney (playerid, -1000); le joueur se retrouvera avec -1 000 $

Give (donner) permet d'ajouter (valeur positive) ou d'enlever (valeur négative) de l'argent.
Set (fixer) permet de fixer l'argent qu'a le joueur.

Ce ne sont donc pas deux fonctions équivalentes car elles ne font pas du tout le même chose.

++
Syg
Titre: Re : GetplayerMoney
Posté par: [StAfF]MaN le 01 Octobre 2008, 14:44:07
Mais le résultat entre

GivePlayerMoney(playerid, -10000);

et

SetPlayerMoney(playerid,(GetPlayerMoney, playerid)-10000);

est la même chose, le give donne du - (moins)  donc ça enlève 10000

et le SetPlayerMoney(playerid,(GetPlayerMoney, playerid)-10000); fixe la somme a partir du Get, donc de la somme que le joueur avait, ce qui fait que ça lui enlève aussi 10000

Titre: Re : GetplayerMoney
Posté par: Nikko™ le 01 Octobre 2008, 14:53:33
SetPlayerMoney(playerid,(GetPlayerMoney, playerid)-10000);

la parti que jai mit en gras ne ser a rien .. car dans le set, ca récupére automatiquement l'argent du joueur ..

++
nikko
Titre: Re : GetplayerMoney
Posté par: Ssk le 01 Octobre 2008, 16:59:06
non elle sert car elle permet de faire la meme chose que getplayermoney


sasu
Titre: Re : GetplayerMoney
Posté par: Syg le 01 Octobre 2008, 17:00:39
Je trouve choquant qu'on puisse préférer la solution compliquée à la solution simple ...

Regardez bien la différence entre ces deux lignes :
SetPlayerMoney(playerid, GetPlayerMoney (playerid) - 10000);
et
GivePlayerMoney (playerid, -10000);

Dans la première on a 2 appels de fonction et un calcul (une soustration) sans compter l'usage de la pile pour stocker le résultat intermédiaire.
Dans la deuxième on a 1 appel de fonction.

Laquelle de ces lignes est la plus efficace en terme de temps d'exécution ?
Je vous laisse trouver la réponse.

Et pour ceux qui ne sont pas convaincu, je peux leur assurer que GivePlayerMoney fonctionne parfaitement bien.

++
Syg