Lua help (oui, encore)

  • Initiateur de la discussion anthonin lahterman
  • Date de début
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Salut, je suis entrain de faire un pnj médecin pour acheter des soins (oui je sais, sa a deja été fait mais je m'entraine) je veut donc faire un ENT:Use() puis mettre les frame, le problem étant que, je suis aller sur le wiki (ta vu je suis un bon élève hein? ;p) http://wiki.garrysmod.com/page/ENTITY/Use et je sais que dans les parenthèse, il y a une connerie du genre activator, caller comme le dis le wiki mais comment peut on savoir lequel mettre et si il y en a besoin d'un?
 
Joe Leroi

Joe Leroi

Chuck Norris
Messages
4 368
Score réaction
933
Points
605
Voila :)

Code:
function ENT:AcceptInput( it, act, cal )
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("TA FONCTION ICI") --< Nom de la fonction ce trouvant dans le CL_INIT self:EmitSound("vo/coast/odessa/nlo_cub_hello.wav") -- Emettre un sons quand tu fait E dessus :) net.Send(caller) --< Envoie l'information au serveur end
 
  • J'aime
Réactions: anthonin lahterman
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Joe Leroi à dit:
Voila :)

Code:
function ENT:AcceptInput( it, act, cal )
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("TA FONCTION ICI") --< Nom de la fonction ce trouvant dans le CL_INIT self:EmitSound("vo/coast/odessa/nlo_cub_hello.wav") -- Emettre un sons quand tu fait E dessus :) net.Send(caller) --< Envoie l'information au serveur end
d'acord, je vais tester mais mon but est d'apprendre pour avoir a de moins en moins poster des demande d'aide sur ce forum, comment as-tu su que c'etait c'est mots la?
 
Joe Leroi

Joe Leroi

Chuck Norris
Messages
4 368
Score réaction
933
Points
605
anthonin lahterman à dit:
d'acord, je vais tester mais mon but est d'apprendre pour avoir a de moins en moins poster des demande d'aide sur ce forum, comment as-tu su que c'etait c'est mots la?
L'habitude. Mais aussi sur un scripts déjà fait par moi.
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Joe Leroi à dit:
Voila :)

Code:
function ENT:AcceptInput( it, act, cal )
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("TA FONCTION ICI") --< Nom de la fonction ce trouvant dans le CL_INIT self:EmitSound("vo/coast/odessa/nlo_cub_hello.wav") -- Emettre un sons quand tu fait E dessus :) net.Send(caller) --< Envoie l'information au serveur end
Pourquoi 2 fois ENT:AcceptInput ?

"Nom de la fonction ce trouvant dans le CL_INIT" Ce n'est pas une fonction mais un net :)
"Envoie l'information au serveur" Sa envoie pas l'information au serveur mais au joueur x)

Et tu a oublié un end ;)
 
  • J'aime
Réactions: Diablos26
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
slownls à dit:
Pourquoi 2 fois ENT:AcceptInput ?

"Nom de la fonction ce trouvant dans le CL_INIT" Ce n'est pas une fonction mais un net :)
"Envoie l'information au serveur" Sa envoie pas l'information au serveur mais au joueur x)

Et tu a oublié un end ;)
C'est ce que je m'etais dit, il y a deux function mais qu'un end
 
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Joe Leroi à dit:
L'habitude. Mais aussi sur un scripts déjà fait par moi.
D'acord mais quand ta pas l'habitude?
 
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
Joe Leroi à dit:
Verifie si USE et ulisier par un joueur
Je rajoute aussi:
-> Vérifie si l'événement est bien l'événement d'utilisation et si l'entité appelant l'événement est bien un joueur.

De plus, il est préférable d'utiliser la fonction ENT:Use() au lieu de ENT:AcceptInput() si on s'intéresse à la touche d'utilisation.

anthonin lahterman à dit:
C'est ce que je m'etais dit, il y a deux function mais qu'un end
Mettre deux fonctions n'a pas de sens, il a dû faire une erreur de manipulation. Lorsque slownls parle d'avoir oublié un end, il parlait à propos du end qui termine la condition if mais la fonction n'est jamais terminée.

PS: Je suis pas là pour aider de base mais ça me tentait de le dire. J'ai cette "erreur" d'utilisation non-adéquate de fonctions également sur mes scripts mais je vais tous les patcher dans quelques jours, bref.
 
  • J'aime
Réactions: slownls et anthonin lahterman
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Diablos26 à dit:
Je rajoute aussi:
-> Vérifie si l'événement est bien l'événement d'utilisation et si l'entité appelant l'événement est bien un joueur.

De plus, il est préférable d'utiliser la fonction ENT:Use() au lieu de ENT:AcceptInput() si on s'intéresse à la touche d'utilisation.


Mettre deux fonctions n'a pas de sens, il a dû faire une erreur de manipulation. Lorsque slownls parle d'avoir oublié un end, il parlait à propos du end qui termine la condition if mais la fonction n'est jamais terminée.

PS: Je suis pas là pour aider de base mais ça me tentait de le dire. J'ai cette "erreur" d'utilisation non-adéquate de fonctions également sur mes scripts mais je vais tous les patcher dans quelques jours, bref.
D'acord d'acord, c'est plus clair, merci!
 
Joe Leroi

Joe Leroi

Chuck Norris
Messages
4 368
Score réaction
933
Points
605
slownls à dit:
Pourquoi 2 fois ENT:AcceptInput ?

"Nom de la fonction ce trouvant dans le CL_INIT" Ce n'est pas une fonction mais un net :)
"Envoie l'information au serveur" Sa envoie pas l'information au serveur mais au joueur x)

Et tu a oublié un end ;)
Oué mais avant j'avais des choses différentes... Et l'écriture, j'avais la flemme Dr la retiré.

Et faille pour les deux fois Accept...
 
A

Amane

Geek
Messages
216
Score réaction
51
Points
75
Vous lui passez la solution pour sont prob,ok mais vous lui expliquez pas pourquoi :
" y a une connerie du genre activator, caller "
http://wiki.garrysmod.com/page/ENTITY/Use
https://prntscr.com/f4q44e
C'estl es deux arguments qui sont dans la fonction,tu peut en foutre que ceux que t'utilise.
 
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Ok, mais si j'en mets uin en trop, il y aura une lua erreur?
 
A

Amane

Geek
Messages
216
Score réaction
51
Points
75
anthonin lahterman à dit:
Ok, mais si j'en mets uin en trop, il y aura une lua erreur?
non,mais il sera useless quoi
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
anthonin lahterman à dit:
Ok, mais si j'en mets uin en trop, il y aura une lua erreur?
Non mais on nome ce phénomène :
Donc a ne pas faire
 
  • J'aime
Réactions: anthonin lahterman
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
EglyKozz à dit:
Non mais on nome ce phénomène :
Donc a ne pas faire
Oui mais sa on s'en fiche, personne ne le saura ducoup, autrant mettre tous les mots (activator; caller) a chaque fois, au moins au seras sure de ne pas vavoir d'erreur.
 
A

Amane

Geek
Messages
216
Score réaction
51
Points
75
anthonin lahterman à dit:
Oui mais sa on s'en fiche, personne ne le saura ducoup, autrant mettre tous les mots (activator; caller) a chaque fois, au moins au seras sure de ne pas vavoir d'erreur.
Avec cette mentalité tu fera toujours du code.. beh de merde,désolé de te le dire
 
Alain LeThug

Alain LeThug

Psychopathe
Messages
1 012
Score réaction
211
Points
280
Joe Leroi à dit:
Voila :)

Code:
function ENT:AcceptInput( it, act, cal )
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("TA FONCTION ICI") --< Nom de la fonction ce trouvant dans le CL_INIT self:EmitSound("vo/coast/odessa/nlo_cub_hello.wav") -- Emettre un sons quand tu fait E dessus :) net.Send(caller) --< Envoie l'information au serveur end
Vous essayez toujours d'implanter le Net dans les codes pour débutants, vous croyez qu'ils vont savoir ce que c'est ou le maîtriser ? Faut chercher à donner un truc simple .....
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Alain LeThug à dit:
Vous essayez toujours d'implanter le Net dans les codes pour débutants, vous croyez qu'ils vont savoir ce que c'est ou le maîtriser ? Faut chercher à donner un truc simple .....
Les Net est le truc le plus simple Oo...
 
Alain LeThug

Alain LeThug

Psychopathe
Messages
1 012
Score réaction
211
Points
280
Code:
function ENT:AcceptInput( Name, Activator, Caller ) local money = Activator:getDarkRPVar("money") -- La local sert à définir une sorte de fonction qui est remplacée par le nom qu'on mets, money est remplacé par Activator:getDarkRPVar("money") local Price = 250 -- Meme chose, Price remplace 250 (Tu peux modifier) if Price > money then -- (Si le prix est supérieur que le money, donc 250 est supérieur à Activator:getDarkRPVar("money") qui est l'argent qu'a le joueur sur lui) Activator:DarkRP.notify(ply,0,7,"Vous n'avez pas assez d'argent.") -- Créer une notification qui dit "Vous n'avez pas assez d'argent." return false (L'utilisation du NPC est annulé dans ce cas là, si l'argent est supérieur au prix Price, le NPC s'execute) end -- (Fin) if Name == "Use" and Caller:IsPlayer() then -- (Si la touche est USE, utiliser du joueur, pas principalement E mais globalement, celon ses paramètres, et l'appelant ou l'utilisateur est un joueur) umsg.Start("SightNPCMedic", Caller) -- Vous pouvez modifier le nom du "SightNPCMedic" par un nom de votre chois. umsg.End() -- Il ne faut tout de meme pas oublier de mettre ce code dans votre init.lua, et de mettre "usermessage.Hook("SightNPCMedic", SightNPCMedecin )" dans votre cl_init.lua.) end
end
 
Alain LeThug

Alain LeThug

Psychopathe
Messages
1 012
Score réaction
211
Points
280
slownls à dit:
Les Net est le truc le plus simple Oo...
Je sait mais ce sera un peu difficile du premier coup
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Alain LeThug à dit:
Code:
function ENT:AcceptInput( Name, Activator, Caller ) local money = Activator:getDarkRPVar("money") -- La local sert à définir une sorte de fonction qui est remplacée par le nom qu'on mets, money est remplacé par Activator:getDarkRPVar("money") local Price = 250 -- Meme chose, Price remplace 250 (Tu peux modifier) if Price > money then -- (Si le prix est supérieur que le money, donc 250 est supérieur à Activator:getDarkRPVar("money") qui est l'argent qu'a le joueur sur lui) Activator:DarkRP.notify(ply,0,7,"Vous n'avez pas assez d'argent.") -- Créer une notification qui dit "Vous n'avez pas assez d'argent." return false (L'utilisation du NPC est annulé dans ce cas là, si l'argent est supérieur au prix Price, le NPC s'execute) end -- (Fin) if Name == "Use" and Caller:IsPlayer() then -- (Si la touche est USE, utiliser du joueur, pas principalement E mais globalement, celon ses paramètres, et l'appelant ou l'utilisateur est un joueur) umsg.Start("SightNPCMedic", Caller) -- Vous pouvez modifier le nom du "SightNPCMedic" par un nom de votre chois. umsg.End() -- Il ne faut tout de meme pas oublier de mettre ce code dans votre init.lua, et de mettre "usermessage.Hook("SightNPCMedic", SightNPCMedecin )" dans votre cl_init.lua.) end
end
Alors quelques petites erreurs :
  • "local" x = y est une variable qui sert à déterminer une valeur booléenne (true ou false), string ou même couleur ect ... (Qui permet aussi d'optimiser un peux)
  • Les nets sont plus récent et optimisé, il vaux mieux les apprendre dès le début, de plus les usermessage sont deprecated et les nets contiennent plus de capacité de transferts
  • Au lieux de faire une deuxième conditions, tu peux simplement faire : (Dans ce cas le return false n'est pas nécessaire)
Code:
if Price > money then Activator:DarkRP.notify(ply,0,7,"Vous n'avez pas assez d'argent.")
else net.Start("msg") net.Send(Caller)
end
 
  • J'aime
Réactions: Alain LeThug
  • Initiateur de la discussion
anthonin lahterman

anthonin lahterman

Geek suprême
Messages
589
Score réaction
124
Points
150
Je suis en apprentissage certe, mais je sait quand même maitriser les net.send ^^
 
  • J'aime
Réactions: Alain LeThug et slownls
Diablos26

Diablos26

Psychopathe
Messages
951
Score réaction
326
Points
315
EglyKozz à dit:
"local" x = y est une variable qui sert à déterminer une valeur booléenne (true ou false), string ou même couleur ect ... (Qui permet aussi d'optimiser un peux)
1
EglyKozz à dit:
Les nets sont plus récent et optimisé, il vaux mieux les apprendre dès le début, de plus les usermessage sont deprecated et les nets contiennent plus de capacité de transferts
2

Maintenant je fais plus de phrases, je donne des liens car ce que tu dis est à peu près vrai :p
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Diablos26 à dit:
1

2

Maintenant je fais plus de phrases, je donne des liens car ce que tu dis est à peu près vrai :p
Oh jme sens fort en gLua d'un coup x)
 
  • J'aime
Réactions: Diablos26
Discord d'entraide
Rejoignz-nous sur Discord