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
-
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
-
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
-
Enfaite j'ai chercher
et j'ai trouver un code
je l'ai adapter est c'est niquel
merci quand même
-
peu tu m'expliquer comment on formule le GetPlayerMoney (un exemple) merci
-
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$ ^^
-
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 ?
-
Le meilleur moyen de savoir si ça fonctionne comme toi tu veut, c'est que tu test ;)
-
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
-
GetPlayerMoney( playerid, 1000);
change par
GivePlayerMoney(playerid,1000); // donne 1000$
SetPlayerMoney(playerid,(GetPlayerMoney, playerid) -1000); // enlève 1000$
-
je prefere ca pour enlever de l argent
GivePlayerMoney(playerid, - 10000);
-
GivePlayerMoney(playerid, - 10000);
Possible aussi ...
++
nikko
-
dans les deux cas c'est fonctionnel ;) utilise la méthode que tu souhaite ^^
-
merci beaucoup de votre aide
-
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
-
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
-
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
-
non elle sert car elle permet de faire la meme chose que getplayermoney
sasu
-
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