Besoins d'aide en GLUA

  • Initiateur de la discussion
K

killian26

Nouveau né
Messages
10
Score réaction
2
Points
25
Bonjour / Bonsoir !

Alors je vous explique je suis tout nouveau dans le Lua et je voudrais créer un four ou quand on click dessus ca ouvre une frame ou dedans c'est écris les ingrédients qu'il faut donc par exemple
- 1 pate de pizza tant/1
- 1 pot de sauce tomate tant /1
- 4 fromages tant/4
pour mettre les ingrédients a l'intérieur il faudrait prendre l'entité pate a pizza et que quand on la col au four le four l'aspire et que sa fasse dedans - 1 pate a pizza : 1/1 et ensuite quand on click sur un bouton sa prenne tant de temps et que sa utilise nos ingrédients a l'intérieur et que sa nous fasse spawn une pizza a coté ...

Mais le hic c'est que je n'arrive pas a faire deux choses (pour l'instant ...)! :

La première c'est une erreur que je ne comprend pas ... En faite quand je fais E sur le four bah sa fais une erreur !!!!

ERREUR :

" [ERROR] addons/cuisineaddons/lua/entities/cuisiniere/cl_init.lua:190: attempt to index global 'self' (a nil value)
1. DoClick - addons/cuisineaddons/lua/entities/cuisiniere/cl_init.lua:190
2. OnMouseReleased - lua/vgui/dlabel.lua:232
3. unknown - lua/vgui/dimagebutton.lua:91 "

voila mon cl_init :



Voila mon init :



Voila donc si vous pouvez m'aidez pour la première MERCI BEAUCOUP !

Sinon la deuxième c'est que je ne sais pas comment faire pour que quand par exemple on prenne l'entité pate a pizza et que on touche le four avec le four au lieu d'afficher 0/1 affiche 1/1 et que l'entité pate a pizza s'enlève du coup ..

Voila donc si vous pouvez m'aidez pour tout ca je vous en remercie beaucoup je suis vraiment tout nouveau en lua .....

Cordialement Killian
 
H

Hovers

Nouveau né
Messages
7
Score réaction
0
Points
15
Bonjour,

Si la partie de ton cl_init que tu nous a envoyé s’exécute via un net.Receive() c'est normal, il ne reconnais pas self.
Il faut que tu lui envois 'self' depuis ton init.

Puis dans ton init sa sert à rien de mettre sa : If SERVER

Le init s’exécute déjà du coter serveur ta pas besoin de vérifier.
 
edouard292

edouard292

Geek suprême
Messages
423
Score réaction
108
Points
150
Ben c'est facile du n'a qua mettre un ENT:StartTouch avec ton four et faire un set:NWint
 
  • Initiateur de la discussion
K

killian26

Nouveau né
Messages
10
Score réaction
2
Points
25
Hovers à dit:
Bonjour,

Si la partie de ton cl_init que tu nous a envoyé s’exécute via un net.Receive() c'est normal, il ne reconnais pas self.
Il faut que tu lui envois 'self' depuis ton init.

Puis dans ton init sa sert à rien de mettre sa : If SERVER

Le init s’exécute déjà du coter serveur ta pas besoin de vérifier.
Ok mais comment faire ?? dsl je suis réellement tout nouveau en GLUA ...
 
  • Initiateur de la discussion
K

killian26

Nouveau né
Messages
10
Score réaction
2
Points
25
edouard292 à dit:
Ben c'est facile du n'a qua mettre un ENT:StartTouch avec ton four et faire un set:NWint
Okay merci beaucoup
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
killian26 à dit:
Ok mais comment faire ?? dsl je suis réellement tout nouveau en GLUA ...
En gros : self correspond à ENT dans une fonction qui contient ENT. Par exemple ENT:Initialize()
Le hic, c'est que et bien self ne fait référence à rien comme le dit l'erreur :/ : attempt to index global 'self' (a nil value) -> Une valeur nulle (qui ne correspond à rien).

Donc il faut que tu trouves un moyen de récupérer ce self et de l'envoyer au côté client. Hors on sait que tu fais ENT:Use() pour envoyer le derma côté client ! Donc tu vas dans ton net:

Code:
net.Start("frame_base")
net.WriteEntity(self) -- Donc tu vas écrire dans ton message network (entre les différents côtés) ton entité. Tu vas inscrire l'information dans le message
net.Send(ply) -- Tu l'envois au joueur concerné par le USE (ici E)
Ensuite, dans le net.Receive(), côté client, tu vas pouvoir lire l'information contenu et la faire correspondre à quelque chose.

Code:
net.Receive("frame_base", function(len,ply) -- ici on démarre la fonction quand on reçoit le message (donc quand le ply a fait E dessus (rappel : ply étant déterminé quand un player fait USE sur notre entité)
local entite = net.ReadEntity() -- Ici on lit donc l'information de la catégorie des entités contenue dans le message. s'il y'en avait deux, tu aurais donc défini deux variables locales à la suite en lisant deux fois à la suite l'information.
-- En revanche, si tu as vraiment besoin que ta variable soit globale, il vaut mieux qu'elle ait un nom donc totalement unique. Car elle pourra être utilisé dans tout ton script
pateapizzaa = entite:GetNWInt("pateapizzaa")
-- Et ici la suite de ton code
end)
Sans oublier que tu n'es pas obligé d'intégrer la fonction à la réception de ton message net. Tu peux aussi la créer avant et placer la réception après :

Code:
function nomunique(len,ply)
local entite = net.ReadEntity()
pateapizzaa = entite:GetNWInt("pateapizzaa")
-- Et la suite de ton code
end
net.Receive("frame_base",nomunique)
Il est possible que j'ai fait une erreur mais bon normalement, je pense que tout est bon.
 
  • Initiateur de la discussion
K

killian26

Nouveau né
Messages
10
Score réaction
2
Points
25
MERCIIIIII BEAUCOUP !!!!!!!!!!!
 
  • J'aime
Réactions: edouard292
A!ex

A!ex

Geek suprême
Messages
521
Score réaction
87
Points
140
N'oublie pas de passer le poste en Résolut .
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
killian26 à dit:
MERCIIIIII BEAUCOUP !!!!!!!!!!!
alex74140 à dit:
N'oublie pas de passer le poste en Résolut .
Déjà, faut tester. Mais si t'as compris (j'ai détaillé le plus possible), déjà tu pourras comprendre les futurs problèmes plus tard tout seul, et c'est le principal !
 
Discord d'entraide
Rejoignz-nous sur Discord