• 19 Avril 2024, 06:42:23


Auteur Sujet: Dégâts des armes  (Lu 2695 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne #TUPPY.

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Dégâts des armes
« le: 31 Décembre 2013, 01:00:34 »
Bonsoir, pour commencé, bonne année 2014 à vous.. !

Donc j'ai un petit problème avec mon game mode, je souhaite augmenté les dégâts des armes, par exemple, pour le d'eagle j'ai mis ça :

public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    new Float:hp;
    GetPlayerHealth(damagedid,hp);
    if(weaponid == 24) SetPlayerHealth(damagedid,hp-80);
    return 1;
}

Tout fonctionne bien, à part que quand la personne a un gilet, cela lui retire -80hp (les dégâts augmenté) ET -46 de gilet en même temps. Je voudrais plus tôt que cela retire -80 de gilet si la personne a son gilet, ainsi de suite.. Donc -180 en deux balles.

Quelqu'un a une solution s'il vous plaît ? :wacko:

 :bye:

Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Dégâts des armes
« Réponse #1 le: 31 Décembre 2013, 01:24:24 »

Tu récupères la valeur, tu appliques la soustraction et le tour est joué. ;)

Hors ligne #TUPPY.

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Dégâts des armes
« Réponse #2 le: 31 Décembre 2013, 04:06:15 »
Merci à toi, je vais essayer ça.

Hors ligne #TUPPY.

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Dégâts des armes
« Réponse #3 le: 31 Décembre 2013, 13:42:00 »
Me revoilà, alors j'ai ça maintenant :

public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid)
{
    new Float:GILET;
    GetPlayerArmour(playerid,GILET);
if(GILET<= 1)
{
    new Float:HP;
    GetPlayerHealth(playerid, HP);
if(weaponid == 24) SetPlayerHealth(playerid, HP-60);//DesertEagle
if(weaponid == 22) SetPlayerHealth(playerid, HP-15);//Colt45
if(weaponid == 32) SetPlayerHealth(playerid, HP-10);//Tec9
if(weaponid == 28) SetPlayerHealth(playerid, HP-10);//Uzi
if(weaponid == 23) SetPlayerHealth(playerid, HP-30);//SilencedColt
if(weaponid == 31) SetPlayerHealth(playerid, HP-20);//M4
if(weaponid == 30) SetPlayerHealth(playerid, HP-15);//AK
if(weaponid == 29) SetPlayerHealth(playerid, HP-10);//MP5
if(weaponid == 34) SetPlayerHealth(playerid, HP-90);//SniperRifle
if(weaponid == 5) SetPlayerHealth(playerid, HP-10);//Batte
}
else
{
if(weaponid == 24) SetPlayerArmour(playerid, GILET-60);//DesertEagle
if(weaponid == 22) SetPlayerArmour(playerid, GILET-15);//Colt45
if(weaponid == 32) SetPlayerArmour(playerid, GILET-10);//Tec9
if(weaponid == 28) SetPlayerArmour(playerid, GILET-10);//Uzi
if(weaponid == 23) SetPlayerArmour(playerid, GILET-30);//SilencedColt
if(weaponid == 31) SetPlayerArmour(playerid, GILET-20);//M4
if(weaponid == 30) SetPlayerArmour(playerid, GILET-15);//AK
if(weaponid == 29) SetPlayerArmour(playerid, GILET-10);//MP5
if(weaponid == 34) SetPlayerArmour(playerid, GILET-90);//SniperRifle
if(weaponid == 5) SetPlayerArmour(playerid, GILET-10);//Batte
}
return 1;
}

Le seul soucis dès à présent c'est que ça ne marche qu'avec certaines armes.. Comme la batte, l'MP5, le sniper (il me semble).

Pouvez-vous encore une fois m'aider s'il vous plaît ? :x

Merci.

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Dégâts des armes
« Réponse #4 le: 31 Décembre 2013, 15:30:59 »
Bonjour

Déjà, quand tu déclares une variable avec
Float, le résultat est forcément sous ce format: 0.0 . Vois déjà ce que tu peux corriger :)


Adju ♥
(-_-)



Hors ligne Gzsume

  • *
  • Compétent dans l'inutile
  • Messages: 2236
    • Voir le profil
Re : Dégâts des armes
« Réponse #5 le: 31 Décembre 2013, 15:39:26 »
En plus du message d'Infu posté juste avant le miens, j'ajoute qu'il serait plus simple d'utiliser une structure conditionnelle de la forme switch plutôt que des dizaines de if, mais c'est à ta libre appréciation puisque les deux fonctionnent (ma solution visant uniquement à rendre ça plus rapide et plus lisible).

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3550
    • Voir le profil
Re : Dégâts des armes
« Réponse #6 le: 31 Décembre 2013, 15:47:28 »
Si ça peut aider sur la méthode que Citron te conseil:

Code: (pawn) [Sélectionner]
switch(weaponid)
{
     case 38: print("arme 38");
     case 24: print("arme 24");
}

Et si ton code se passe sur plusieurs lignes, tu peux faire comme ça:

Code: (pawn) [Sélectionner]
switch(weaponid)
{
     case 38:
     {
           print("Machin");
           print("Machin");
     }
     case 24:
     {
           print("Machin");
           print("Machin");
     }
}

Si je ne me trompe pas j'ai pas fait d'erreur  :smile:


Adju ♥
(-_-)



Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : Dégâts des armes
« Réponse #7 le: 31 Décembre 2013, 16:14:10 »
J'aimerais préciser que la, tu oublies de vérifier si la valeur du gilet est plus grande que les dégats affectés au dit gilet
En quoi c'est une erreur ? Bah si le mec a un gilet de 2 (2/100) et qu'une arme fait 30 de dégat, les 28 dégats restants ne seront pas appliqués

PS: Comme à mon habitude je traduit les fonctions citées dans les topics, ça peut servir je pense :
« Modifié: 31 Décembre 2013, 18:49:58 par Kiloutre »

[/url]

Hors ligne #TUPPY.

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Dégâts des armes
« Réponse #8 le: 31 Décembre 2013, 16:45:21 »
Merci beaucoup, je vais voir tous ça.

Je vous tiens au courant.

Hors ligne #TUPPY.

  • *
  • Nouveau
  • Messages: 12
    • Voir le profil
Re : Dégâts des armes
« Réponse #9 le: 04 Janvier 2014, 02:34:31 »
A lock..

Merci comme même.