GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: Nikko™ le 02 Janvier 2008, 13:10:31
-
Bonjour a tous,
Voila cest difficile a expliquer mais je commence par le plus simple,
Vous savez tres bien que en fesant des stunts, on gagne de l'argent.
Jaimerai que par rapport a cet argent on est un score dans le tableau des scores.
Par exemple: en stuntant je gagne 56$, dans le tableau des score ca indique:
id 0, nikko, score: 56.
Voila jai ésséyé ac score update mais rien a faire. ;D
Si on peu m'aider.
Merci
++ nikko
-
C'est impossible je crois...
-
Sur certains serveurs le scores est en nombre de kills sur d'autre les scores affichent l'argent ...
-
je vais essayer de fair sa att
-
oui justement jaimeré quil affiche l'argent :)
-
Il est très facile d'afficher l'argent du joueur dans le score :
SetPlayerScore (GetPlayerMoney (playerid));
Pour que ce soit un peu plus juste, tu peux aussi enlever la somme de départ (celle que le joueur reçoit quand il se connecte) :
SetPlayerScore (GetPlayerMoney (playerid) - SommeDepart);
Mais cette façon de faire compte aussi l'argent gagné dans les casinos et il n'est pas possible de faire la différence entre l'argent gagné en stunt et celui gagné dans un casino.
++
Syg
-
Merci syg mais je doit placer ce code où ???
++ nikko
-
Je crois qu'il faut le mettre dans un Timer...
-
Salut,
C'est en plein ca, tu place le timer dans ONGAmeModeInit (), (n'oublie pas qu'il faut qu'il recommence apres avoir fini) ;)
Puis pour la fonction, si tu veut un exemple, regarde dans Las VanturasMoneygrud,ou lvmd
Sim :bangin
-
Bonsoir a tous pourvez vous me donner le code pour le faire
car je n'y arive pas et je ne suis pas un boss :'( :king
-
En haut de ton GameMode :
forward Score (playerid);Dans OnGameModeInit :
SetTimer("Score", 1800000, 1);En dessous de OnGameModeInit
public Score (playerid)
{
SetPlayerScore (GetPlayerMoney (playerid) - SommeDepart);
}
Voila j'ai pas testé mais bon...
-
Merci beaucoup lepro :king
++
nikko
EDIT: il y a un warning quand je met le code: C:\Documents and Settings\USER\Bureau\STUNT\gamemodes\stunt2.pwn(1654) : warning 202: number of arguments does not match definition
-
Hum... la ligne 1654 c'est le :
SetPlayerScore (GetPlayerMoney (playerid) - SommeDepart);?
Si oui, je ne sais pas...
Mais ca marche ou pas ?
-
oui c'est le code,
En plus je me suis conecté et .... ca marche pas :wall
++
nikko
-
Vous avez oublié un argument...
Regardez bien entre ça :
SetPlayerScore (GetPlayerMoney(playerid) - SommeDepart);
Et ça (Code correct):
SetPlayerScore (playerid,GetPlayerMoney(playerid) - SommeDepart);
-
Ca ne marche pas nn plus :blink
Soit c'est moi qui ne la pas bien fais,
Soit il y a un pb dans le code...... :dejadehors
++
nikko
-
Je vous ai induits en erreur avec ma ligne SetPlayerScore (GetPlayerMoney(playerid) - SommeDepart); qu'Urban à corrigé avec brio.
Le terme SommeDepart n'est pas une variable, c'était juste une indication, il faut le remplacer par la somme que le joueur à lorsqu'il spawn.
Donc si dans OnPlayerConnect on a :
GivePlayerMoney (playerid, 500000);
La ligne du dessus devient :
SetPlayerScore (playerid, GetPlayerMoney(playerid) - 500000);
Et cette ligne doit être appelé dans un timer permanent comme l'a dit Urban (encore lui !! :P).
Ce qui nous donne :
En haut du script :
forward TimerScore ();
dans OnGameModeInit :
SetTimer ("TimerScore", 1000, 1); // Timer permanent pour le score fixé à 1 seconde
Et quelque par dans le script (en dehors de toute autre fonction ou callback) :
public TimerScore ()
{
for (new j=0 ; j<MAX_PLAYERS ; j++)
{
if (IsPlayerConnected (j))
{
SetPlayerScore (j, GetPlayerMoney(j) - 500000); // 500000 est l'argent de départ
}
}
}
++
Syg
-
Ouai ca marhe comme ca :king
merci
++
nikko