(Gmod Lua) Fonction Diminution De Vie.

  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Bonjour à tous, j'ai créée une petite entité c'est un barbelé, pour le moment il y a juste du sang qui éclate au moment ou je touches l'entité.

- Je souhaiterais obtenir la fonction pour diminuer de 5 de vie une fois l'avoir touché avec un délai d'attente d'1seconde pour permettre de se retirer.
- Et une fonction ou par exemple si je rapproche les deux ils se soudent entre eux, pour former un long barbelé.

Merci à vous^^
 
Dernière édition:
Dayster

Dayster

Geek suprême
Messages
455
Score réaction
82
Points
130
Sur Hammer c'est 500 fois plus simple et rapide si c'est pour ta map
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Salut, non c'est un script pas un objet de map :/
 
Dayster

Dayster

Geek suprême
Messages
455
Score réaction
82
Points
130
Ah ba je ne saurais t'aider, désolé
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Pas de soucis ^^
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
ply:SetHealth( ply:Health () - 5 )
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
"[ERROR] lua/entities/grillage/init.lua:24: attempt to index global 'ply' (a nil value)
1. unknown - lua/entities/grillage/init.lua:24"
:/ ?
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Fleodon à dit:
"[ERROR] lua/entities/grillage/init.lua:24: attempt to index global 'ply' (a nil value)
1. unknown - lua/entities/grillage/init.lua:24"
:/ ?
ply doit être le joueur, est-tu sûr qu'il est défini ? ( tu dois sûrement utiliser Caller )
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Code :

function ENT:Touch( ent )
if ent:IsPlayer() then
local effectdata = EffectData()
effectdata:SetOrigin( self:GetPos() )
effectdata:SetScale(1)
util.Effect( "BloodImpact", effectdata )
ply:SetHealth( ply:Health () - 5 )
end
end
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Fleodon à dit:
Code :

function ENT:Touch( ent )
if ent:IsPlayer() then
local effectdata = EffectData()
effectdata:SetOrigin( self:GetPos() )
effectdata:SetScale(1)
util.Effect( "BloodImpact", effectdata )
ply:SetHealth( ply:Health () - 5 )
end
end
Bah remplace ply par ent
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Ok, merci^^
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Merci, ça marche mais je ne meurs pas quand j'ai 0% de life.
 
Venatuss

Venatuss

Geek suprême
Messages
76
Score réaction
64
Points
130
Pour effectuer des dommages, utilise plutôt http://wiki.garrysmod.com/page/Global/DamageInfo et http://wiki.garrysmod.com/page/Entity/TakeDamageInfo

Suis l'exemple donné sur le wiki.

Pour bloquer le joueur, utilise http://wiki.garrysmod.com/page/Player/Freeze et débloque après une seconde avec http://wiki.garrysmod.com/page/timer/Simple
 
  • J'aime
Réactions: kayxy et slownls
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Venatuss à dit:
Pour bloquer le joueur, utilise http://wiki.garrysmod.com/page/Player/Freeze et débloque après une seconde avec http://wiki.garrysmod.com/page/timer/Simple
Non je crois qu'il veut juste laisser une seconde entre chaque dommage pour permettre au joueur d'avoir une chance de se débloquer ;)
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Feytone à dit:
Non je crois qu'il veut juste laisser une seconde entre chaque dommage pour permettre au joueur d'avoir une chance de se débloquer ;)
Oui voila^^
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Fleodon à dit:
Mais déjà utilise Damage comme t'a dit Vena et puis essaie d'intégrer le timer.Simple, y'a rien de compliqué normalement, uniquement de la logique
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
"[ERROR] lua/entities/grillage/init.lua:24: attempt to index global 'CTakeDamageInfo' (a nil value)
1. unknown - lua/entities/grillage/init.lua:24"

J'ai pourtant essayé :/
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Fleodon à dit:
"[ERROR] lua/entities/grillage/init.lua:24: attempt to index global 'CTakeDamageInfo' (a nil value)
1. unknown - lua/entities/grillage/init.lua:24"

J'ai pourtant essayé :/
C'est quoi ton code ?
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Fleodon à dit:
"[ERROR] lua/entities/grillage/init.lua:24: attempt to index global 'CTakeDamageInfo' (a nil value)
1. unknown - lua/entities/grillage/init.lua:24"

J'ai pourtant essayé :/
Il faut pas bêtement recopier CTakeDamageInfo : penses bien que c'est un argument donc c'est comme un titre dans Prénom = votre prénom sur un formulaire en ligne, tu vas mettre ton prénom et pas copier votre prénom.
Donc c'est la même chose : regarde l'exemple déjà qui est donné et clique sur CTakeDamageInfo et tu auras tous les réglages (donc ce sont les fonctions qui commencent par setblabla) que tu pourras utiliser !
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Fleodon à dit:
"https://pastebin.com/mCrT1b0e"
La fonction :AddDamage est pour une variable de type ' CTakeDamageInfo ' , alors que t'utilises une variable de type ' EffectData ',
Comme l'a dit Venatuss :
Venatuss à dit:
Pour effectuer des dommages, utilise plutôt http://wiki.garrysmod.com/page/Global/DamageInfo et http://wiki.garrysmod.com/page/Entity/TakeDamageInfo

Suis l'exemple donné sur le wiki.
Code:
function DissolveIt( ent )	local d = DamageInfo() -- Initialisation DamageInfo	d:SetDamage( ent:Health() ) -- Dommage causé	d:SetAttacker( ent ) -- Qui a attaqué	d:SetDamageType( DMG_DISSOLVE ) -- Le type de dommage ( http://wiki.garrysmod.com/page/Enums/DMG )	ent:TakeDamageInfo( d ) -- applique les dommages
end
DissolveIt( Entity( 1 ) )
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Makss à dit:
La fonction :AddDamage est pour une variable de type ' CTakeDamageInfo ' , alors que t'utilises une variable de type ' EffectData ',
Comme l'a dit Venatuss :
Code:
function DissolveIt( ent ) local d = DamageInfo() -- Initialisation DamageInfo d:SetDamage( ent:Health() ) -- Dommage causé d:SetAttacker( ent ) -- Qui a attaqué d:SetDamageType( DMG_DISSOLVE ) -- Le type de dommage ( http://wiki.garrysmod.com/page/Enums/DMG ) ent:TakeDamageInfo( d ) -- applique les dommages
end
DissolveIt( Entity( 1 ) )
Alors, merci makss, mais le soucis étant qu'une fois touché je meurs, il faudrait simplement diminuer la vie de 10
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Fleodon à dit:
Alors, merci makss, mais le soucis étant qu'une fois touché je meurs, il faudrait simplement diminuer la vie de 10
Modifie la valeur de SetDamage, dans l'exemple du wiki c'est la totalité des PV du joueurs
 
Discord d'entraide
Rejoignz-nous sur Discord