GTAOnline.net
San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ShaDowxx™ le 26 Février 2014, 19:39:49
-
Bonsoir !
J'ai un problème avec mon petit code d'anti teamkill. Suivant ce que je voulais faire, un joueur qui tue un autre de son équipe se retrouvé sanctionné de -$2500.
Et, un joueur qui tue un autre joueur se retrouve avec un gain de $2500.
Or, le problème est que l'argent se multiplie, jusque des valeurs phénoménales.
Voici le lien du code. (http://pastebin.com/YYqGQyPW)
Merci pour votre aide.
Cordialement.
-
if(Team[killerid] != Team[playerid])
{
GivePlayerMoney(killerid,GetPlayerMoney(playerid));
ResetPlayerMoney(playerid);
}
if(Team[killerid] == Team[playerid])
{
GivePlayerMoney(killerid,GetPlayerMoney(playerid));
GivePlayerMoney(playerid, 2500);
}
Tu peux remplacer par
if(Team[killerid] != Team[playerid])
{
GivePlayerMoney(killerid,GetPlayerMoney(playerid));
ResetPlayerMoney(playerid);
}
else
{
GivePlayerMoney(killerid,GetPlayerMoney(playerid));
GivePlayerMoney(playerid, 2500);
}
Pour ton code tout est correct, la seule chose qui peut causer un truc de ce type c'est
GivePlayerMoney(killerid,GetPlayerMoney(playerid));
A moins que tu ais modifié la fonction GivePlayerMoney ou GetPlayerMoney, ça ne peut venir que de ça
-
GivePlayerMoney(killerid, GetPlayerMoney(playerid));
En faisant ça, tu donnes au tueur tout l'argent du joueur tué. Il semble que ce n'est pas ce que tu veux. Contentes-toi de ça :
if(Team[killerid] == Team[playerid] && killerid != INVALID_PLAYER_ID)
{
new killer_money = GetPlayerMoney(killerid);
killer_money -= 2500;
ResetPlayerMoney(killerid);
GivePlayerMoney(killerid, killer_money);
}
else if(killerid != INVALID_PLAYER_ID)
{
GivePlayerMoney(killerid, 2500);
}
La première condition peut sembler compliquée pour rien, mais en réalité c'est le plus simple qu'on puisse faire sur SA-MP, puisqu'il n'existe pas de fonction SetPlayerMoney. Il faut donc enregistrer la valeur, remettre l'argent du joueur à zéro, puis appliquer la nouvelle valeur.
Voir les messages suivants
Edit : Correction du code, je prends en compte le fait que le tueur puisse ne pas exister.
-
Et en faisant un GivePlayerMoney avec une valeur négative ...?
-
Effectivement, ça fonctionne. Je n'y ai pas pensé. Voilà donc le code sans cette complication :
if(Team[killerid] == Team[playerid] && killerid != INVALID_PLAYER_ID)
GivePlayerMoney(killerid, -2500);
else if(killerid != INVALID_PLAYER_ID)
GivePlayerMoney(killerid, 2500);
-
Je te remercie de ton aide Gzsume !
Je change pas, j'oublie toujours des codes essentiels.. :dry: