[LUA] Problème avec vérification d'une entité

  • Initiateur de la discussion Membre supprimé 98332
  • Date de début
  • Initiateur de la discussion
M

Membre supprimé 98332

Anonyme
Yop :)

Je souhaitai développer un addon pour m'entraîner avec Lua sauf que je fais fasse à un petit problème...

Je fais actuellement une SWEP et j'aimerai vérifier si l'entité que le joueur vise est bien un joueur valide et en vie.

J'ai donc fait ça :

PHP:
 local ply = LocalPlayer() local target = Entity(1):GetEyeTrace().Entity if IsValid(ply) and ply:Alive() and IsValid(target) and target:Alive() then // Joueur valide ? + target est un joueur valide ? end
J'ai d'ailleurs plusieurs questions par rapport à ce code : est-ce réellement utile de vérifier si ply est un joueur valide et en vie ? Car si c'est un LocalPlayer() il est obligatoire que ce soit un joueur valide ? Et si il utilise la SWEP il est obligatoire qu'il soit en vie ? Est-ce donc réellement nécessaire ?

Aussi, avec ce code, j'ai l'impression qu'il ne vérifie pas que le target ( donc : Entity(1):GetEyeTrace().Entity ) soit un joueur valide car, lorsque j'utilise ma SWEP sur une entité comme un NPC, voici ce qu'il me retourne :
PHP:
[ERROR] addons/medt/lua/weapons/med/cl_init.lua:24: attempt to call method 'Alive' (a nil value) 1. func - addons/med/lua/weapons/med/cl_init.lua:24 2. unknown - lua/includes/extensions/net.lua:32
Je me dis donc que l'interpréteur ne vérifie pas que le target soit un joueur valide. Ai-je fais quelque chose de mal ?

Merci par avance,

Gaby

PS : @AyZenSantos, @slownls, @Z3k4, @Diablos26, @Valfunde
 
Dernière modification par un modérateur:
Fuze59

Fuze59

Geek suprême
Messages
109
Score réaction
26
Points
130
C'est pas le alive qui pose problème ? Alive est en coté serveur je pense.
 
  • Initiateur de la discussion
M

Membre supprimé 98332

Anonyme
Fuze59 à dit:
C'est pas le alive qui pose problème ? Alive est en coté serveur je pense.
Mhummmm...

Alive est shared :


Mais du coup @Fuze59, si je le mets en client uniquement, c'est bon ou il faut réellement qu'il soit dans le shared ??

Je viens de tester en enlevant le :Alive() mais du coup, lorsque je clique sur un NPC, il me print bien sont nom et toutes ces infos, alors qu'il ne devrait pas le faire puisque j'ai mis la condition !?

Voici ce qu'il m'affiche lorsque je vise un NPC
PHP:
Entity [124][npc_medic]
Et lorsque je vise un joueur :
PHP:
Player [2][Bot01]
Normalement, il ne devrait pas m'afficher quelque chose pour l'entité :/
Et voici mon code :

PHP:
 local ply = LocalPlayer() local target = Entity(1):GetEyeTrace().Entity if IsValid(ply) and IsValid(target) then // Joueur valide ? + target est un joueur valide ? print(Entity(1):GetEyeTrace().Entity) end
Topic résolu, il fallait rajouter un target:IsPlayer()
 
Dernière modification par un modérateur:
Discord d'entraide
Rejoignz-nous sur Discord