Un problème avec le GetPos()

  • 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,

J'aurais besoin d'aide car pour mon addon de bûcheron je voudrais faire en sorte de stocker la valeur GetPos()
donc j'ai fait ça:
Code:
function ENT:Use(c) if IsValid( c ) and c:IsPlayer() and c:IsAdmin() then if file.Exists( "deadman/", "DATA" ) == true then self.wood_pos = self:GetPos() + Vector(0,30,0) print("Vous avez bien sauvegarder l'arbre en position "..self.wood_pos) elseif file.Exists( "deadman", "DATA" ) == false then file.CreateDir( "deadman" ) end end
end
Mais le serveur me renvoie l'erreur suivante (sur la ligne du print) :
[ERROR] addons/deadman_lumberjack/lua/entities/deadman_lumber_tree/init.lua:33: attempt to concatenate field 'wood_pos' (a userdata value)
Merci de votre aide :)
 
Jean-Louii-Carrot

Jean-Louii-Carrot

Geek suprême
Messages
198
Score réaction
50
Points
140
Je pense que tu peut pas print une position
(utilise PrintTable)
 
Jean-Louii-Carrot

Jean-Louii-Carrot

Geek suprême
Messages
198
Score réaction
50
Points
140
Pour la stocker tu peut sans doute utiliser util.TableToJSON et util.JSONToTable
 
Z3k4

Z3k4

Helpeur Divin
Messages
4 495
Score réaction
1 513
Points
580
Une position est un vecteur et non une table et ensuite, met juste world_pos = self:GetPos()
Tu met pas de self avant le world pos
 
ehtr_sky

ehtr_sky

Geek suprême
Messages
271
Score réaction
87
Points
100
Code:
function ENT:Use(c) if IsValid( c ) and c:IsPlayer() and c:IsAdmin() then if file.Exists( "deadman/", "DATA" ) == true then self.wood_pos = self:GetPos() + Vector(0,30,0) print("Vous avez bien sauvegarder l'arbre en position "..self.wood_pos) elseif file.Exists( "deadman", "DATA" ) == false then file.CreateDir( "deadman" ) end end
end
Code:
function ENT:Use(c)
--On regarde si tout est valid, si un n'est pas valid alors on arrete la fonction if not IsValid( c ) and not c:IsPlayer() and not c:IsAdmin() then return end;
-- On regarde si le fichier deadman dans data n'existe pas alors on en créer un (c'est comme un == false) if not file.IsDir("deadman", "DATA") then file.CreateDir( "deadman" ) end
--Si le fichier exite alors on ajoute la position de l'arbre dans le fichier if file.Exists( "deadman/tree_pos.txt", "DATA" ) then
--on li le fichier et on transforme le texte dedans en table lua local _f = util.JSONToTable(file.Read("deadman/tree_pos.txt", "DATA"))
--on créer une variable qui stock la position de l'entitiy
-- quand tu as utiliser ça: self.wood_pos = self:GetPos() c'est con car enfaite tu stock la donné dans l'entité (moins opti) local pos = self:GetPos()
--on l'ajoute dans la table table.insert(_f, pos)
-- on écrit le fichier en transformant la table en texte file.Write("deadman/tree_pos.txt", util.TableToJSON(_f), "DATA")
--sinon on créer un table en local et on ajoute l'arbre dedans puis on la sauvegarde else local tbl = {} table.insert(tbl, pos)
--on utilise le util.TableToJSON pour mettre une table en texte file.Write("deadman/tree_pos.txt", util.TableToJSON(_f), "DATA") end print("Vous avez bien sauvegarder l'arbre en position")
end
Quand tu compare un boolean n'utilise pas x == false ou bien x == true, c'est inutile
utilise les ! ou not

J'espere que tu as compris sinon dit le moi

PAS ESSAYER
 
Discord d'entraide
Rejoignz-nous sur Discord