• 08 Juillet 2025, 22:19:29


Auteur Sujet: Créer un Ratio de kills/morts  (Lu 2486 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Créer un Ratio de kills/morts
« le: 09 Février 2013, 14:45:44 »
Bonjour,

C'est peut-être tout simple, mais je souhaiterai savoir comment calculer un ratio.

Voilà comment je m'y prend:

Code: (pawn) [Sélectionner]
enum pInfo
{
    pPass,
    pCash,
    pAdmin,
    pKills,
    pRatio,
    pDeaths
}

pRatio = pKills/pDeaths; // c'est ici que ça bloque

J'aimerai savoir où inclure la ligne qui ferait le calcul ... :<
J'utilise un système de register/login avec YSI\y_ini (si ça peut aider).

++


Adju ♥
(-_-)



Hors ligne chneubeul

  • *
  • Gangster
  • GTA Online Addict :)
  • Messages: 1132
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #1 le: 09 Février 2013, 15:35:37 »
Salut, quand le joueur meurs serait la meilleur solution non ?

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #2 le: 09 Février 2013, 17:18:17 »
Oui mais quoi qu'il en soit, il faut calculer le ratio et ça je sais pas comment m'y prendre... :/


Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #3 le: 09 Février 2013, 23:36:13 »
Tu dois utiliser des valeurs numériques flottantes pour avoir les virgules. En informatique, la division de deux entiers donne toujours un entier. Par exemple, pour ce code

Code: (pawn) [Sélectionner]
new a = 5, b = 2;
new resultat = a / b;

5 que divise 2 fait 2. Et il reste un. Pour obtenir le reste, tu utilises ce qu'on appelle le modulo. C'est pas très connu mais très simple en fait, regardes :

Code: (pawn) [Sélectionner]
new var = 0;
var = 5 % 2; // 5 que divise 2 = 2, reste 1, donc var = 1
var = 10 % 3; // 10 par 3 vaut 3 reste un, donc var = 1
var = 10 % 5; // 10 par 5 vaut 2, reste zéro donc var = 0

Mais dans ton cas, le mieux est d'utiliser les valeurs flottantes comme je t'ai dit. C'est tout bête : 5.0 et 5 ce n'est pas la même chose pour le compilateur. En gros,

Code: (pawn) [Sélectionner]
new Float:a = 5.0, Float:b = 2.0;
new Float:resultat = a / b;

Dans cet exemple la variable finale va valoir 2.50000. Les zéros en trop, tu t'en débarrasses lors de l'affichage avec la technique dont je t'avais parlé sur Skype, à savoir

Code: (pawn) [Sélectionner]
printf("%0.2f", resultat); // % pour l'indicateur, 0.2 pour dire "deux chiffres après la virgule", et f pour afficher un Float
Voilà voilà. Dans ton cas précis donc, tu as juste à faire ça.

Code: (pawn) [Sélectionner]
enum pInfo
{
    pPass,
    pCash,
    pAdmin,
    Float:pKills,
    Float:pRatio,
    Float:pDeaths
}
 
pRatio = pKills/pDeaths;

Et n'oublie pas de modifier tes initialisations et enregistrements de valeurs en conséquence (ajouter un .0 après chaque nombre).

;)

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Créer un Ratio de kills/morts
« Réponse #4 le: 11 Février 2013, 18:15:05 »
num pInfo {
    pPass,
    pCash,
    pAdmin,
    pKills,
    Float:pRatio,
    pDeaths
}

new playerInfos[MAX_PLAYERS][pInfo];

public OnPlayerDeath(playerid, killerid, reason) {
    playerInfos[playerid][pDeaths]++;
    playerInfos[killerid][pKills]++;
   
    playerInfos[playerid][pRatio] = playerInfos[playerid][pKills] / playerInfos[playerid][pDeaths];
   
    if (playerInfos[killerid][pDeaths] != 0) {
        playerInfos[killerid][pRatio] = playerInfos[killerid][pKills] / playerInfos[killerid][pDeaths];
    }
   
    return 1;
}

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #5 le: 11 Février 2013, 18:39:58 »
Faut faire attention à la division par 0 les amis ;)



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #6 le: 13 Février 2013, 03:37:35 »
Salut,

pourquoi ne pas faire une fonction qui donne le ratio en sorti.

Float:CalculerRatio(playerid)
{
    new Float:ratio = 0.0000;
    if(playerInfos[playerid][pDeaths] > 0.1)// pour être sûr vu les approximations...
    {
        ratio = playerInfos[playerid][pKills]/playerInfos[playerid][pDeaths];
    }
    return ratio;
}

Bonne chance

++Sim++





Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #7 le: 13 Février 2013, 12:34:59 »
Merci je vais regarder à ça ce soir


Adju ♥
(-_-)



Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Créer un Ratio de kills/morts
« Réponse #8 le: 13 Février 2013, 13:06:20 »
Le nombre de mort est un entier, on ne peut pas mourir 1.333..3 fois ?

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #9 le: 13 Février 2013, 13:58:30 »
C'est le ratio qui est comme ça.

3 kills divisé par 2 morts, c'est un chiffre décimal.

:)


Adju ♥
(-_-)



Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #10 le: 14 Février 2013, 02:44:40 »
Salut,

mais, si mes souvenirs sont bons, lorsque l'on divise simplement un entier par un autre entier, on obtient un entier, on perd donc de l'information. Il faut faire croire à la machine que l'on travailler avec des nombres à virgule. on peut prendre des entier que l'on converti en float avant de faire le calcul.

++Sim++





Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #11 le: 14 Février 2013, 08:41:01 »
Au pire on peut les garder en tant qu'entiers et au moment du calcul on les convertit en float avec la fonction float()
« Modifié: 14 Février 2013, 08:50:20 par Ssk »



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Re : Créer un Ratio de kills/morts
« Réponse #12 le: 14 Février 2013, 15:54:51 »
num pInfo {
    pPass,
    pCash,
    pAdmin,
    pKills,
    Float:pRatio,
    pDeaths
}

new playerInfos[MAX_PLAYERS][pInfo];

public OnPlayerDeath(playerid, killerid, reason) {
    playerInfos[playerid][pDeaths]++;
    playerInfos[killerid][pKills]++;
   
    playerInfos[playerid][pRatio] = playerInfos[playerid][pKills] / playerInfos[playerid][pDeaths];
   
    if (playerInfos[killerid][pDeaths] != 0) {
        playerInfos[killerid][pRatio] = playerInfos[killerid][pKills] / playerInfos[killerid][pDeaths];
    }
   
    return 1;
}

En utilisant cette solution, on me dit Tag Mismatch à cette ligne là qui permet de charger/sauvegarder les infos du joueur.

Code: (pawn) [Sélectionner]
INI_Int("Ratio",PlayerInfo[playerid][pRatio]);


Adju ♥
(-_-)



Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : Re : Re : Créer un Ratio de kills/morts
« Réponse #13 le: 14 Février 2013, 19:54:57 »
num pInfo {
    pPass,
    pCash,
    pAdmin,
    pKills,
    Float:pRatio,
    pDeaths
}

new playerInfos[MAX_PLAYERS][pInfo];

public OnPlayerDeath(playerid, killerid, reason) {
    playerInfos[playerid][pDeaths]++;
    playerInfos[killerid][pKills]++;
   
    playerInfos[playerid][pRatio] = playerInfos[playerid][pKills] / playerInfos[playerid][pDeaths];
   
    if (playerInfos[killerid][pDeaths] != 0) {
        playerInfos[killerid][pRatio] = playerInfos[killerid][pKills] / playerInfos[killerid][pDeaths];
    }
   
    return 1;
}

En utilisant cette solution, on me dit Tag Mismatch à cette ligne là qui permet de charger/sauvegarder les infos du joueur.

Code: (pawn) [Sélectionner]
INI_Int("Ratio",PlayerInfo[playerid][pRatio]);

Tu utilise INI_Int à la place de INI_Float !

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Créer un Ratio de kills/morts
« Réponse #14 le: 14 Février 2013, 22:14:32 »
Ah d'accords, je connaissais pas...


Adju ♥
(-_-)