Calculer un ratio
#1

Salut tout le monde, зa fait longtemps que j'ai pas codй..
Et pour vous le prouver j'ai un problиme assez.. con je trouve >.<

Je me dit que c'est un code simple mais, j'suis bloquй :l

Voici le code:
Code:
forward CalculRatio(playerid, killerid);
Code:
public CalculRatio(playerid, killerid)
{
	new resultat[10], ratio;
	ratio = format(resultat, 10, "%0.2f", pListe[playerid][Kill]/pListe[playerid][Death]);
	pListe[playerid][Ratio] = ratio;
	
	new resultatkillerid[10], ratiokillerid;
	ratiokillerid = format(resultatkillerid, 10, "%0.2f", pListe[killerid][Kill]/pListe[killerid][Death]);
	pListe[killerid][Ratio] = ratiokillerid;
	return 1;
}
Appelй ici:
Code:
public OnPlayerDeath(playerid, killerid, reason)
{
	pListe[playerid][Death] ++;
	pListe[killerid][Kill] ++;
	
	CalculRatio(playerid, killerid);
	return 1;
}
Les stats:
Code:
format(stats1, 128, "_ Cash: %d, Score: %d, Kills: %d, Deaths: %d, Ratio: %f", GetPlayerMoney(playerid), GetPlayerScore(playerid), pListe[playerid][Kill], pListe[playerid][Death], pListe[playerid][Ratio]);

Mais quand je fais /stats le ratio reste а 1.00000

Voilа, peut-кtre que le calcul n'est pas bon.. Je n'ai pas d'erreur mais juste le ratio qui reste а 1.00 (oui reste, car quand le joueur s'enregistre il est par dйfaut а 1.000000)

Merci d'avance de votre aide!
Reply
#2

Je suis crevй mais je vais tenter de te rйpondre:

Je ne comprends pas trop ta technique en fait... Un ratio s'est une division, or lа avec "public CalculRatio(playerid, killerid)" tu cibles playerid & killerid, le killerid vient faire quoi dans l'йquation? (Si on ne regarde pas le code dans la callback).

J'aurais plutфt fait un truc du genre
Code:
public CalculRatio(playerid) {
    new resultat[10], ratio;
    ratio = format(resultat, 10, "%0.2f", pListe[playerid][Kill]/pListe[playerid][Death]);
    pListe[playerid][Ratio] = ratio;
    return 1;
}
Et quand tu veux afficher son ratio tu utilises CalculRatio(playerid), c'est un peu le but d'une callback en fait.

Au passage, vйrifie bien que tu load bien les donnйes Kills / Deaths et les insиres bien dans les variables.
Reply
#3

Bah j'utilise les deux pour que les ratios soit calculer pour le tuer, et le tueur, car quand tu tue quelqu'un sont ratio doit changer aussi..

Je vais essayer de les charger correctement.
Reply
#4

Dis-moi quel est l'intйrкt de stocker le ratio dans une variable?
Tu peux pas tout simplement afficher le rйsultat du calcul kills/deaths dans la commande /stats, sans utiliser de variable "ratio" ni callback?

Exemple tout con:
Code:
CMD:stats(playerid,params[])
{
    new string[128];
    format(string,128,"Kills: %d I Deaths: %d I Ratio: %.2f",pListe[playerid][Kill],pListe[playerid][Death],float(pListe[playerid][Kill])/float(pListe[playerid][Death]));
    SendClientMessage(playerid,0xFFFFFFAA,string);
    return 1;
}
Si tu te limites а зa, зa suffit AMPLEMENT.
Reply
#5

Je voulais que le ratio soit enregistrй sur le compte du joueur pour qu'il soit le mкme quand il se reconnecte.
J'ai personne pour tester le serveur pour l'instant, je te redis зa Sreadon quand mon pote aura quittй gta iv ^^
Reply
#6

La solution de decondelite est plus optimisйe et corrige une faute а laquelle je n'avais pas fait gaffe niveau float, et mкme avec la sienne tu peux save tes variables pour les charger plus tard...
Reply
#7

C'est .2f et pas 0.2f ?
Reply
#8

Si je ne dis pas de conneries, .2f revient а йcrire 0.2f, dйjа testй sur ma calculette.
Reply
#9

Ouai donc зa revient au mкme..
(Dйsolй je peux pas test seul le ratio il faut faire des kills sinon le ratio reste а 0 si je meurt >.< 'fin normalement)
Reply
#10

Bah si tu charges les stats via fichiers/SQL, tu modifies directement dans ces derniers et tu auras un rйsultat diffйrent de 1.00...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)