Condition NPC (GLua)

  • Initiateur de la discussion
Barack Obama

Barack Obama

Geek suprême
Messages
248
Score réaction
69
Points
140
Bonjour, j'ai un léger souci au niveau de mon NPC. Mon NPC sera une alternative au Cuisinier, par conséquent, il ne sera fonctionel que lorsqu'il n'y aura pas de cuisinier, et du coup je vous demande votre aide car j'ignore comment on fait pour avoir cette condition.

En resumé :
  • Vérifier si il y'a un cuisinier
  • Il y'en a : Ne pas ouvrir le derma | Il y'en a pas : Ouvrir le derma
Merci à tous.
 
  • Banni
Hoper

Hoper

Geek suprême
Messages
510
Score réaction
233
Points
130
euh alors je ne suis pas dutout codeur mais j'ai un scripts qui fait ce que tu demande. Je te donne le code de lua\entities\npc_shop_base\init.lua

Sachant que AllowedJobList = Nom du métier qui doit avoir/ne pas avoir (dans la config)
et MessageNPCReplaced = Notif lorsque que le shop n'est pas dispo (dans la config)
et NPCRestricted = Si le shop doit etre enable/disable si un métier est prix/non pris


function ENT:AcceptInput( event, a, p )

if( event == "Use" && p:IsPlayer() && self.nextClick < CurTime() ) then

self.nextClick = CurTime() + 0.5

if not self.Attacked then

if self.NPCRestricted then

if self.AllowedJobList[p:Team()] then

if self.ReplacementNPC then

if team.NumPlayers( self.ReplacementTeam ) >= 1 then

DarkRP.notify(p , 4, 3, self.MessageNPCReplaced )


else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

DarkRP.notify(p , 4, 3,self.MessageCantUse)

p:EmitSound(self.SoundCantUse)

end

elseif self.ReplacementNPC then

if team.NumPlayers( self.ReplacementTeam ) >= 1 then

DarkRP.notify(p , 4, 3, self.MessageNPCReplaced )

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)
end

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

if not p:isCP() then

DarkRP.notify(p , 4, 3,self.MessageBuyingInAttack)

self:EmitSound(self.UseAttackSound)

else

self:SetAttacked( false )

self.Attacked = false

self:SetTimeAttack( 0 )

self:SetNextAttackTime( CurTime()+self.TimeAfterAttack )

self.NextAttackTime = CurTime()+self.TimeAfterAttack

self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Hand"), Lerp( 0, angle0, angle1))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Forearm"),Lerp( 0, angle0, angle6))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Clavicle"), Lerp( 0, angle0, angle3))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Hand"), Lerp( 0, angle0, angle4))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Forearm"),Lerp( 0, angle0, angle2))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Clavicle"), Lerp( 0, angle0, angle5))

self.DropNumber = 0

end

end

end

end


En espèrant t'avoir aider x)
 
  • Initiateur de la discussion
Barack Obama

Barack Obama

Geek suprême
Messages
248
Score réaction
69
Points
140
Hoper à dit:
euh alors je ne suis pas dutout codeur mais j'ai un scripts qui fait ce que tu demande. Je te donne le code de lua\entities\npc_shop_base\init.lua

Sachant que AllowedJobList = Nom du métier qui doit avoir/ne pas avoir (dans la config)
et MessageNPCReplaced = Notif lorsque que le shop n'est pas dispo (dans la config)
et NPCRestricted = Si le shop doit etre enable/disable si un métier est prix/non pris


function ENT:AcceptInput( event, a, p )

if( event == "Use" && p:IsPlayer() && self.nextClick < CurTime() ) then

self.nextClick = CurTime() + 0.5

if not self.Attacked then

if self.NPCRestricted then

if self.AllowedJobList[p:Team()] then

if self.ReplacementNPC then

if team.NumPlayers( self.ReplacementTeam ) >= 1 then

DarkRP.notify(p , 4, 3, self.MessageNPCReplaced )


else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

DarkRP.notify(p , 4, 3,self.MessageCantUse)

p:EmitSound(self.SoundCantUse)

end

elseif self.ReplacementNPC then

if team.NumPlayers( self.ReplacementTeam ) >= 1 then

DarkRP.notify(p , 4, 3, self.MessageNPCReplaced )

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)
end

else

net.Start("MenuShop")

net.WriteEntity(self)

net.Send(p)

self:EmitSound(self.SoundMenu)

end

else

if not p:isCP() then

DarkRP.notify(p , 4, 3,self.MessageBuyingInAttack)

self:EmitSound(self.UseAttackSound)

else

self:SetAttacked( false )

self.Attacked = false

self:SetTimeAttack( 0 )

self:SetNextAttackTime( CurTime()+self.TimeAfterAttack )

self.NextAttackTime = CurTime()+self.TimeAfterAttack

self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Hand"), Lerp( 0, angle0, angle1))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Forearm"),Lerp( 0, angle0, angle6))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_R_Clavicle"), Lerp( 0, angle0, angle3))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Hand"), Lerp( 0, angle0, angle4))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Forearm"),Lerp( 0, angle0, angle2))
self:ManipulateBoneAngles(self:LookupBone("ValveBiped.Bip01_L_Clavicle"), Lerp( 0, angle0, angle5))

self.DropNumber = 0

end

end

end

end


En espèrant t'avoir aider x)
Salut, et merci d'avoir répondu mais je ne comprends pas trop le code, bien qu'expliqué, il me semble qu'il va falloir changer quelques valeurs
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Essaie,

Ta fonction()
Code:
for k, v in pairs(player.GetAll()) do
if v:Team() == "TEAM_CUISNIER" then return false end
end)
Je suis pas du tout certains du résultat .
 
  • Initiateur de la discussion
Barack Obama

Barack Obama

Geek suprême
Messages
248
Score réaction
69
Points
140
thepsyca à dit:
Essaie,

Ta fonction()
Code:
for k, v in pairs(player.GetAll()) do
if v:Team() == "TEAM_CUISNIER" then return false end
end)
Je suis pas du tout certains du résultat .
En faite, ce n'est pas la fonction "Si le player a Cuisinier mettre en false" mais "Si le nombre de cuisiniers est supérieur ou égal à 1, return false"
 
AyZenSantos

AyZenSantos

Psychopathe
Messages
3 361
Score réaction
753
Points
300
En gros il veut que un derma avec sûrement de la nourriture que la personne pourra acheter via un derma que si il y a pas de cuisinier ou sinon si il y a un cuisinier le derma marche pas
 
  • J'aime
Réactions: Barack Obama
  • Initiateur de la discussion
Barack Obama

Barack Obama

Geek suprême
Messages
248
Score réaction
69
Points
140
AyZenSantos à dit:
En gros il veut que un derma avec sûrement de la nourriture que la personne pourra acheter via un derma que si il y a pas de cuisinier ou sinon si il y a un cuisinier le derma marche pas
Exactement :)
 
Discord d'entraide
Rejoignz-nous sur Discord