• 02 Mai 2025, 20:22:16


Auteur Sujet: [Résolu] Systeme de Level perso  (Lu 1245 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
[Résolu] Systeme de Level perso
« le: 30 Avril 2009, 01:32:44 »
Salut

Voila je suis entrain de faire un systeme de Level perso.

Genre Quand un joueur gagne 1000$ il gagne un level.
Enfin à la base ça devais faire ça.
Mais ça ne fait rien. hum

Voila mon code:
Citer
public Level()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
   {
       if (InfoJoueur["i"][aMoney] == 1000)
       {
             InfoJoueur["i"][aLevel]++;
          SendClientMessage(i, WHITE, "Vous êtes monté d'un Level.");
       }
   }
}

En sachant que j'ai aucune erreur ni de warn.
d'ailleur j'ai fait se code vite fait, mais pour moi (en etand pas fortiche) je vois pas d'autre moyen de faire se que j'aimerai faire lol.

Si une personne pourrai m'aidé sa serai cool :P

Marchii

PS: ne faite pas gaffe au "i" c'est normal ^^, sinon sa met tout en italique mdr

++ Franky
« Modifié: 02 Mai 2009, 00:57:09 par Franky™ »


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : Systeme de Level perso
« Réponse #1 le: 30 Avril 2009, 11:57:02 »
Premièrement, vérifie bien que ta fonction Level() est appelée quelque part dans ton script (dans un timer ou une callback par exemple).

Ensuite, la ligne
if (InfoJoueur["i"][aMoney] == 1000)indique qu'il faut que le joueur est exactement 1000 pour monter d'un level.
De plus, si ta fonction est appelé dans un timer, le joueur montera d'un level à chaque appel si son score reste à 1000.

Le mieux serait de faire une fonction de ce genre appelée dans un timer :
public Level()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
   {
       if (InfoJoueur["i"][aMoney] >= 1000)
       {
             InfoJoueur["i"][aLevel]++;
             InfoJoueur["i"][aMoney] = 0; // Pour éviter que le joueur prenne plusieurs levels à la suite
             SendClientMessage(i, WHITE, "Vous êtes monté d'un Level.");
       }
   }
}

Si tu ne veux pas que le joueur perde son argent, il faudra passer par un nouvelle variable (score par exemple) qui sera incrémenter en même temps que son argent mais remise à 0 lorsque le joueur change de level.
Ou alors, faire quelque chose de plus fastidieux du genre :
       if (InfoJoueur["i"][aMoney] >= 1000 && InfoJoueur["i"][aMoney] < 2000)
       {
             InfoJoueur["i"][aLevel] = 1;
             SendClientMessage(i, WHITE, "Vous êtes monté au niveau 1.");
       }
       else if (InfoJoueur["i"][aMoney] >= 2000 && InfoJoueur["i"][aMoney] < 3000)
       {
             InfoJoueur["i"][aLevel] = 2;
             SendClientMessage(i, WHITE, "Vous êtes monté au niveau 2.");
       }
       ...

++
Syg
Courtesy of GtaManiac

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Systeme de Level perso
« Réponse #2 le: 30 Avril 2009, 12:11:30 »
oui Merci, c'est la deuxième solution que j'avais prévu de faire, mais sens perdre l'argent.

Je vais essayé tout ça, je te tien au courant

EDIT:

Merci ça fonctionne, mais mon SendClientMessage arrete pas de flooder quand j'ai passé la barre des 1000.


++ Franky
« Modifié: 30 Avril 2009, 12:24:06 par Franky™ »


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Systeme de Level perso
« Réponse #3 le: 30 Avril 2009, 16:21:22 »
Normal regarde:
       if (InfoJoueur["i"][aMoney] >= 1000 && InfoJoueur["i"][aMoney] < 2000)
       {
             InfoJoueur["i"][aLevel] = 1;
             SendClientMessage(i, WHITE, "Vous êtes monté au niveau 1.");
       }
       else if (InfoJoueur["i"][aMoney] >= 2000 && InfoJoueur["i"][aMoney] < 3000)
       {
             InfoJoueur["i"][aLevel] = 2;
             SendClientMessage(i, WHITE, "Vous êtes monté au niveau 2.");
       }

La, si un joueur est entre 1000 et quelque chose d'autre (nimporte quoi au dessus) ca lui envera un message ...

++
nikko

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Systeme de Level perso
« Réponse #4 le: 30 Avril 2009, 16:44:46 »
Alors je fait comment ?

car si j'eleve ça: && InfoJoueur[aMoney] < 2000   ça ne change rien ça fait pareil j'ai tester

je doit faire quoi pour que sa puisse envoyé qu'une fois le message...

++ Franky


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Systeme de Level perso
« Réponse #5 le: 30 Avril 2009, 16:52:59 »
Pour faire au plus simple, tu met ta variable en test du genre:

if (InfoJoueur["i"][aMoney] >= 1000 && InfoJoueur["i"][aMoney] < 2000)
{
if(InfoJoueur["i"][aLevel] < 1)
{
InfoJoueur["i"][aLevel] = 1;
SendClientMessage(i, WHITE, "Vous êtes monté au niveau 1.");
}
else
{
}
}
else if (InfoJoueur["i"][aMoney] >= 2000 && InfoJoueur["i"][aMoney] < 3000)
{
if(InfoJoueur["i"][aLevel] < 2)
{
InfoJoueur["i"][aLevel] = 2;
SendClientMessage(i, WHITE, "Vous êtes monté au niveau 2.");
}
else
{
}
}

++
nikko
« Modifié: 30 Avril 2009, 16:54:41 par Nikko™ »

Hors ligne Franky™

  • Franky™ est bien la
  • *
  • Gangster
  • Messages: 1058
    • Voir le profil
Re : Systeme de Level perso
« Réponse #6 le: 30 Avril 2009, 18:16:40 »
Super merci, ça fonctionne parfaitement...

Merci a vous deux.

++ Franky


°°((Franky's WebSite
Désolé pour mes fautes d'orthographes

Hors ligne Nikko™

  • *
  • Mafioso
  • Messages: 2393
    • Voir le profil
Re : Systeme de Level perso
« Réponse #7 le: 30 Avril 2009, 18:27:53 »
ya pas de quoi ;)

++
nikko

Hors ligne LePtitClown

  • [M2R]LePtitClown
  • *
  • Bandit
  • Messages: 342
    • Voir le profil
Re : [Résolu] Systeme de Level perso
« Réponse #8 le: 03 Mai 2009, 13:19:38 »
Slt

Franky ton système de level m'a l'air bien
Pourrais tu m'expliquer comment en faire une du même type ( tu seras dans les crédits )??

A++ :)