HELP: Fonction entité

  • Initiateur de la discussion
CMJN

CMJN

Sataniste en herbe
Messages
330
Score réaction
32
Points
130
Bonjour, j'essaye de créer la fonction que quand l'entité "entity1" et "entity2" touchent "entity3", alors une action se passe, je vous donne l'entier code du init.lua de l'entité3

Soit entity1 = "incubateurred" et entity2 = "incubateur" et entity3 = "Incubateurx"

Code:
AddCSLuaFile( "shared.lua" )
include( 'shared.lua' )
function ENT:SpawnFunction( ply, tr ) if !tr.Hit then return end local SpawnPos = tr.HitPos + tr.HitNormal * 1 local ent = ents.Create( "Incubateurx" ) ent:SetPos( SpawnPos ) ent:Spawn() ent:Activate() ent:SetMaterial("models/props_combine/stasisshield_sheet") return ent
end
function ENT:Initialize() self.Entity:SetModel("models/hunter/blocks/cube1x1x1.mdl") self.Entity:PhysicsInit( SOLID_VPHYSICS ) self.Entity:SetMoveType( MOVETYPE_VPHYSICS ) self.Entity:SetSolid( SOLID_VPHYSICS ) self.Index = self.Entity:EntIndex() local phys = self.Entity:GetPhysicsObject() if phys:IsValid() then phys:Wake() end
end
function ENT:StartTouch(a,b) if IsValid(a,b) then if a:GetClass() == "incubateurred" and b:GetClass() == "incubateur" then self.Entity:Remove() end end
end
Le problème, c'est que rien ne se passe quand "incubateurred" et "incubateur" touchent "Incubateurx"

Aidez moi svp j'ai vraiment essayer plein de choses la je suis vraiment coincé...
 
S

Swarzox

Psychopathe
Messages
704
Score réaction
396
Points
325
Hey ! J'ai essayé quelque chose dis moi si ça marche j'ai pas testé, il faut que tu rajoutes la var :
Code:
self.isTouched = {entity={class={}}}
dans ta function ENT:Initialize() sinon ça ne marchera pas du tout. Puis tu remplaces la suite de ton code par :

Code:
local allowedClassEntities = { ["entity1"] = true, ["entity2"] = true
}
function ENT:StartTouch(ent) if not allowedClassEntities[ent:GetClass()] then return end if table.HasValue(self.isTouched.entity.class, ent:GetClass()) then return end table.insert(self.isTouched.entity, ent) table.insert(self.isTouched.entity.class, ent:GetClass()) local nbentites = #self.isTouched.entity if nbentites > 1 then local i = 0 for _, entity in pairs(self.isTouched.entity) do i = i + 1 if i > nbentites then break end --Pour éviter que le système répète plus de fois que nécéssaire (éviter les bugs) entity:Remove() end --la suite de ton code ici end
end
function ENT:EndTouch(ent) table.RemoveByValue(self.isTouched.entity, ent) table.RemoveByValue(self.isTouched.entity.class, ent:GetClass())
end
Puis il te suffit de modifier cette partie :
Code:
local allowedClassEntities = { ["entity1"] = true, ["entity2"] = true
}
en remplacement "entity1" et "entity2" par la class de tes deux entités
 
Dernière édition:
  • J'aime
Réactions: CMJN
  • Initiateur de la discussion
CMJN

CMJN

Sataniste en herbe
Messages
330
Score réaction
32
Points
130
Oh mon dieux... tu me sauve un sale temps, gros merci
 
  • J'aime
Réactions: Swarzox
Discord d'entraide
Rejoignz-nous sur Discord