Problème HUD

  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Yoo !

J'ai récemment créé un HUD basique et donc j'ai une erreur :


Code:
[ERROR] addons/redzhud_v2/lua/autorun/client/redz_hud_v1.lua:45: attempt to call method 'Clip1' (a nil value) 1. fn - addons/redzhud_v2/lua/autorun/client/redz_hud_v1.lua:45 2. unknown - addons/ulib/lua/ulib/shared/hook.lua:109

Cette erreur apparaît quand on est mort ig.


Je comprends l'erreur et je sais ce que c'est mais aucune idée comment la résoudre.

Code où se trouve l'erreur :


Code:
-- Munitions
if ammo1 > 0 then
draw.RoundedBox(0, ScrH()/1+550, ScrW()/1.9, 205 +2 , 28,Color(40,40,40)) -- Fond gris
draw.SimpleText("Munitions : "..ammo1.." ", "font_name", ScrW()/1.13, ScrH()/1.065, Color(255,255,255))
draw.SimpleText("("..ammo2..")", "font_name", ScrW()/1.055, ScrH()/1.065, Color(255,255,255))
Si quelqu'un sait m'aider ..

Merci,
Sam.
 
Frite's Corp.

Frite's Corp.

Geek suprême
Messages
204
Score réaction
34
Points
105
Essaie de rajouter avant :
Code:
if !ply:IsAlive()
TON CODE
end
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Malo Ghost à dit:
Essaie de rajouter avant :
Code:
if !ply:IsAlive()
TON CODE
end
what ? Donc si le joueur n'est pas en vie, (alors?) on affiche le hud. Y'a un problème la
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Inj3 à dit:
Tu fait un truc comme ca
if !ply:IsAlive() then
Ta "Draw"
end

Enfaite ply:isAlive vérifie si ton joueurs et encore en vie, après tu peux rajouter un "and" ou un "or" à coté de ply:IsAlive pour poser plus de conditions.
Aucun problème avec le code cité par Malo.
Mais si y'a un problème :
Valfunde à dit:
si le joueur n'est pas en vie, (alors?) on affiche le hud
Valfunde à dit:
gros
Valfunde à dit:
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Inj3 à dit:
J'ai même pas lu le post mais seulement la réponse de Malo :)
Bah lis aussi ma réponse --"
 
  • Banni
ᒪᑌᑕIᗩᑎ

ᒪᑌᑕIᗩᑎ

Geek suprême
Messages
577
Score réaction
289
Points
120
Tu met un truc de ce genre avant d'afficher ton code d'arme / munition

Code:
 if IsValid(LocalPlayer():GetActiveWeapon()) then ... end
 
  • Banni
ᒪᑌᑕIᗩᑎ

ᒪᑌᑕIᗩᑎ

Geek suprême
Messages
577
Score réaction
289
Points
120
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Inj3 à dit:
j'ai fait comme ça
table.HasValue() FailFish

edit : http://wiki.garrysmod.com/page/Tables:_Bad_Habits
 
  • J'aime
Réactions: Inj3
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Ducoup une reponse complète et fonctionnelle ? x)
 
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Inj3 à dit:
Perso j'ai fait comme ça pour mon HUD
Code:
ply = LocalPlayer()
if (ply:GetActiveWeapon():IsValid()) and ply:Alive() then
if !(table.HasValue(central.armes_cachée, ply:GetActiveWeapon():GetClass())) then
end
Si le joueur à une arme, on retourne si elle est valide ou pas, + on vérifie si le joueur et toujours en vie + on vérifie dans la table de mon fichier config + sa classe, si elle doit être affichée ou pas, alors on affiche le reste.
Le code n'est pas complet.
RedTroz à dit:
Ducoup une reponse complète et fonctionnelle ? x)
? :S
 
  • Banni
ᒪᑌᑕIᗩᑎ

ᒪᑌᑕIᗩᑎ

Geek suprême
Messages
577
Score réaction
289
Points
120
RedTroz à dit:
Si tu sais pas où placer le code sa ne sert vraiment à rien de chercher plus loin.
 
Inj3

Inj3

Messages
327
Score réaction
201
Points
160
RedTroz à dit:
Ne place pas mon code, il ne fonctionnera pas.
J'ai bien précisé, il n'est pas complet, et pas très opti !
En plus, je l'ai corrigé.

Code:
-- Munitions
if ammo1 > 0 then
draw.RoundedBox(0, ScrH()/1+550, ScrW()/1.9, 205 +2 , 28,Color(40,40,40)) -- Fond gris
draw.SimpleText("Munitions : "..ammo1.." ", "font_name", ScrW()/1.13, ScrH()/1.065, Color(255,255,255))
draw.SimpleText("("..ammo2..")", "font_name", ScrW()/1.055, ScrH()/1.065, Color(255,255,255))
Dans ton code,
tu as bien déclarée "ammo1", et appelé la fonction clip1() + GetActiveWeapon() ?

Code:
 if ammo1 > 0 then
Parce que tu compare, si ammo est supérieur à 0 alors on affiche les draw, mais si tu ne retourne pas la quantité de munition,
l'erreur "nil value" te donne un peu la réponse.

J'aurais plutôt fait comme ça :
Code:
local self = LocalPlayer()
if (self:GetActiveWeapon():IsValid()) and self:Alive() then
local ammo1 = self:GetActiveWeapon():Clip1() < 0 and 0 or self:GetActiveWeapon():Clip1()
"Madraw"( self:GetActiveWeapon():GetPrintName(), "mafont", "ect")
"Madraw"(""..ammo1.."", "mafont", "ect..")
end
--- self:GetActiveWeapon():GetPrintName() > Retourne le nom de l'arme ;)
--- ammo1 > Retourne la quantité de munition primaire restante (chargeur)
https://wiki.garrysmod.com/page/Player/GetActiveWeapon
https://wiki.garrysmod.com/page/Weapon/Clip1
https://wiki.garrysmod.com/page/Weapon/GetPrintName

Tu peux aussi retourner la quantité de munition en réserve, à toi de finir le reste du code, j'ai déjà tout pré-mâché.
local ammo2 : self:GetAmmoCount( self:GetActiveWeapon():GetPrimaryAmmoType())
https://wiki.garrysmod.com/page/Weapon/GetPrimaryAmmoType
 
Dernière édition:
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Inj3 à dit:
tu as bien déclarée "ammo1", et appelé la fonction clip1() + GetActiveWeapon() ?
Oui

Merci de m'avoir aidé !
 
Barack Obama

Barack Obama

Geek suprême
Messages
248
Score réaction
69
Points
140
L'erreur viens du fait que lorsque tu es mort, le joueur n'a pas d'arme valide sur lui, du coup ça crée l'erreur, mets un if LocalPlayer():Alive() à ton HUD
 
  • Initiateur de la discussion
RedTroz

RedTroz

Geek suprême
Messages
825
Score réaction
233
Points
195
Barack Obama à dit:
L'erreur viens du fait que lorsque tu es mort, le joueur n'a pas d'arme valide sur lui, du coup ça crée l'erreur, mets un if LocalPlayer():Alive() à ton HUD
Exacttt !
 
  • J'aime
Réactions: Erwann Fox
Discord d'entraide
Rejoignz-nous sur Discord