Bug de duplication

  • Initiateur de la discussion Deadman69330
  • Date de début
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Bonjour,

Dans mon addon de Scierie, les joueurs peuvent prendre un chariot pour stocker le bois et l'acheminer plus facilement près de la machine de transformation.
Cependant, quand j'essaye de faire (mon self.wood_count est définie dans Initialize) :
Code:
function ENT:StartTouch(ent) if ent:GetClass() == "deadman_lumber_wood" then ent:Remove() self.wood_count = self.wood_count + 1 net.Start("wood_number") net.WriteInt( self.wood_count, 8 ) net.Send(self:CPPIGetOwner()) end
end
function ENT:Use(a,c) if IsValid( c ) and c:IsPlayer() and self.wood_count >= 1 then local wood = ents.Create("deadman_lumber_wood") wood:SetPos(self:GetPos() + Vector(0,30,0)) wood:Spawn() wood:Activate() self.wood_count = self.wood_count - 1 net.Start("reset") net.WriteBool(true) net.Send(self:CPPIGetOwner()) end
end
La ligne qui pose problème est la suivante:

Code:
self.wood_count = self.wood_count - 1
Quand je laisse ça, les joueurs peuvent appuyer à l'infini sur E pour sortir une infinité de bois, ce que je ne comprend pas car il est censé enlever 1 à la valeur déjà présente.
Cependant, si je met
Code:
self.wood_count = 0
Tout marche bien mais si le joueur met plus de 1 de bois dans le chariot, il perd tout le reste :/


Merci de votre aide car ça fait un moment que j'ai ce bug et je ne savait pas comment le résoudre :/
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Upppppp
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Deadman69330 à dit:
Bonjour,

Dans mon addon de Scierie, les joueurs peuvent prendre un chariot pour stocker le bois et l'acheminer plus facilement près de la machine de transformation.
Cependant, quand j'essaye de faire (mon self.wood_count est définie dans Initialize) :
Code:
function ENT:StartTouch(ent) if ent:GetClass() == "deadman_lumber_wood" then ent:Remove() self.wood_count = self.wood_count + 1 net.Start("wood_number") net.WriteInt( self.wood_count, 8 ) net.Send(self:CPPIGetOwner()) end
end
function ENT:Use(a,c) if IsValid( c ) and c:IsPlayer() and self.wood_count >= 1 then local wood = ents.Create("deadman_lumber_wood") wood:SetPos(self:GetPos() + Vector(0,30,0)) wood:Spawn() wood:Activate() self.wood_count = self.wood_count - 1 net.Start("reset") net.WriteBool(true) net.Send(self:CPPIGetOwner()) end
end
La ligne qui pose problème est la suivante:

Code:
self.wood_count = self.wood_count - 1
Quand je laisse ça, les joueurs peuvent appuyer à l'infini sur E pour sortir une infinité de bois, ce que je ne comprend pas car il est censé enlever 1 à la valeur déjà présente.
Cependant, si je met
Code:
self.wood_count = 0
Tout marche bien mais si le joueur met plus de 1 de bois dans le chariot, il perd tout le reste :/


Merci de votre aide car ça fait un moment que j'ai ce bug et je ne savait pas comment le résoudre :/
Déjà passe par https://wiki.garrysmod.com/page/Entity/SetNWInt & https://wiki.garrysmod.com/page/Entity/GetNWInt

Aussi ton net.Start("reset") change son nom, si jamais un autre addon l'utilise ça peut mettre un "conflit"

EDIT : Tu as mis dans ta function initialisation simple use ?
 
Dernière édition:
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
thepsyca à dit:
Tu as mis dans ta function initialisation simple use ?
Non kécécé ?

thepsyca à dit:
Déjà passe par https://wiki.garrysmod.com/page/Entity/SetNWInt & https://wiki.garrysmod.com/page/Entity/GetNWInt
Je comprend pas l'intérêt d'utiliser des Network pour le même fichier ^^'
 
Discord d'entraide
Rejoignz-nous sur Discord