Besoin d'aide pour ma création addons !

  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
BONSOIR OU BONJOUR A TOUS

Je voudrais créer une addons pour mon serveur que , je suis entrain de coder mais j'ai un problème.


Idées d'addons : Enfaîte ses une addons qui consiste a avoir une interaction avec un "NPC" qui nous propose des destination.

Problèmes : Je connais pas la commande qui permet de téléporté a un point A et un point B.

Bilan : Je voudrais soit la commande qui permet de téléporté ou un script qui rajoute dans le panel du "NPC".

Merci de votre aide. (PS : Désolé pour les fautes)


 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Player:SetPos( Vector( la posistion ) )
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Je vais tester sa merci a toi :)
Cordialement leza.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Salut slownls , je n'arrive pas a le rajouter sur mon npc, pourrai-tu m'aider ?

Cordialement leza.
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
leza à dit:
Salut slownls , je n'arrive pas a le rajouter sur mon npc, pourrai-tu m'aider ?

Cordialement leza.
Tu n'est pas obligé de tous souligner ...

Peut tu me passer le code de ton NPC ?
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Désolé xdd
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
je te donne shared.lua
?
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
init et cl_init
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
je débute dans le lua.
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Dans une balise
Code:
 si possible ...
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
OK JE TE FAIS SA
CL_init
Code:
include('shared.lua')
net.Receive( "NPCPANEL", function() local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
end )
hook.Add("PostDrawOpaqueRenderables", "NPCPANEL", function() for _, ent in pairs (ents.FindByClass("panel")) do if ent:GetPos():Distance(LocalPlayer():GetPos()) < 500 then local Ang = ent:GetAngles() Ang:RotateAroundAxis( Ang:Forward(), 90) Ang:RotateAroundAxis( Ang:Right(), -90) cam.Start3D2D(ent:GetPos()+ent:GetUp()*76, Ang, 0.10) draw.SimpleTextOutlined( "NPC PANEL", "my_npc", 0, 0, Color(255,255,255,255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER, 0, Color(255,255,255,255) ) cam.End3D2D() end end
end)
-- NOUS ALLONS CRÉER UNE FONT UNIQUEMENT POUR LE NPC AFIN DE POUVOIR MODIFIER LA TAILLE DU TEXTE --
surface.CreateFont( "my_npc", { --< Nom que nous allons placer dans le DRAWSIMPLETEXTOUTLINED juste au dessus. font = "Arial", extended = true, size = 50, weight = 1000
} )
init :
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize() self:SetModel("models/gman_high.mdl") --< Modifier ici le skin de votre person self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER self:SetHullSizeNormal() --< NE PAS TOUCHER self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER self:DropToFloor() --< NE PAS TOUCHER self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage() -- si la valeur "return" est égale à TRUE alors votre NPC prend des dégats. -- si la valeur "return" est égale à FALSE alors votre NPC est invincible . return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT net.Send(caller) --< Envoie l'information au serveur end
end
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
si tu peux vraiment pas m'aider comment je pe reussir seul ? un wiki ou je sais pas
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
leza à dit:
si tu peux vraiment pas m'aider comment je pe reussir seul ? un wiki ou je sais pas
http://wiki.garrysmod.com/page/Category:net, à toi de faire le code ( j'ai la flemme ) ^^'
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
je me perd enfaite
 
Cluff

Cluff

Geek suprême
Messages
851
Score réaction
382
Points
160
Sa part d'une simple erreur jusqu’à faire ton script ? Bah ça alors
 
  • J'aime
Réactions: Makss
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Trois étapes que tu vas faire seul :

1 - Ajouter les arguments à la fonction de réception du message net qui permet d'ouvrir la frame (net.Receive("NPCPANEL", function(len,ply))" -> Comme ça
2 - Créer un bouton (cherche DButton sur le wiki pour apprendre son fonctionnement) et bien vérifier qu'il y a la fonction "nomdetonbouton.DoClick = function(self)"
3 - Dans la fonction DoClick (entre fonction(self) et le end que tu placeras), mettre ply:SetPos(0,0,0) -> remplacer 0,0,0 par la position voulue en cherchant cette position sur la map et en la récupérant en faisant "getpos" dans ta console F10.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Je vais essayer :)
 
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
Feytone à dit:
3 - Dans la fonction DoClick (entre fonction(self) et le end que tu placeras), mettre ply:SetPos(0,0,0) -> remplacer 0,0,0 par la position voulue en cherchant cette position sur la map et en la récupérant en faisant "getpos" dans ta console F10.
Quelque chose d'utilisable uniquement dans du serverside placé dans du clientside? Pas sur que sa marche 4Head
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
WabelGame à dit:
Quelque chose d'utilisable uniquement dans du serverside placé dans du clientside? Pas sur que sa marche 4Head
Yep, faudra faire un net j'avais pas vu que pour les joueurs c'est du serverside only.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
j'ai une error voila se que j'ai fait

Code:
(net.Receive("NPCPANEL", function(len,ply)) local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
end )
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) ply:SetPos(-3978,-1884,314)
end )
Mon pnj disparaît de ma category
 
Dernière édition:
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
leza à dit:
j'ai une error voila se que j'ai fait

Code:
(net.Receive("NPCPANEL", function(len,ply)) local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
end )
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) ply:SetPos(-3978,-1884,314)
end )
Mon pnj disparaît de ma category
WabelGame à dit:
Quelque chose d'utilisable uniquement dans du serverside placé dans du clientside? Pas sur que sa marche 4Head
Utilise un net.Start() et un net.SendToServer() dans le DoClick et dans le serverside, utilise un net.Receive() avec le ply:SetPos(Vector(0,0,0) dedans ;)
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
j'ai une error voila se que j'ai fait

Code:
(net.Receive("NPCPANEL", function(len,ply)) local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
end )
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) ply:SetPos(-3978,-1884,314)
end )
Bon déjà, j'ai juste fait une erreur : le setpos se fait en serverside donc on crééra un petit net mais déjà faut corriger des erreurs qui n'ont pas de logique. Rentre dans une logique informatique :

Ton bouton est lié à ta frame. Donc il sera dans la même fonction que ce dernier. Autrement dit, ton net.Receive crée une fonction qui fait apparaître une frame. A la suite de MakePopup (saute une ligne) place ton code de button.
Ensuite, pour tu as une parenthèse après ton end (celui du bouton) ? La parenthèse du premier end ferme celle qui a été ouverte par le net.Receive mais par ailleurs tu l'as refermé avant, donc tu as fermé ta réception donc rien ne suit. Ainsi :

Code:
(net.Receive("NPCPANEL", function(len,ply) ...
end )
Et les trois petits points vont être remplacés par :
Code:
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
Il est important de comprendre que le code se comprend par la pratique. Donc si tu copies (à la manière d'une rédaction pour un cours de français par ex.) ce qu'il y a dans le wiki, ça ne sert à rien.
Pourquoi je te dis ça ? Ta frame à une taille de 200 unités de large par 200 unités de hauteur.
Ton bouton lui a une taille de 250 unités de large. Donc ta frame n'est pas assez grande pour accueillir la totalité du bouton (sachant qu'en plus tu as créé une marge de 25 unités).
Donc au lieu de copier frame ou DermaButton, écris-les toi-même dans le logiciel. En testant toi-même la position et la taille du bouton qui t'intéresse pour bien comprendre comment ça fonctionne. Par exemple, vu que ton panel parent est frame (pour le bouton), il faut comprendre que la position du bouton (25, 50) fait donc référence à 25 en partant du bord gauche de la frame et 50 en partant du bord haut de la frame.

Bien maintenant, passons au DoClick. Comme dit plus haut, j'ai fait une erreur, on définit la nouvelle position du joueur côté serveur. Donc il va falloir demander au serveur de la faire. Quoi de mieux pour ça qu'un message qui est entre toutes les parties (sides) du code. Le message net (pour network).

On commence côté serveur (dans ce script : init.lua). Il faut savoir que le client est représenté dans les entités par cl_init.lua (le cl_ faisant ref au client et sv_ (quand il est présent) au server. Et aussi sh_, qui représente shared).
Donc dans ton init.lua, tu vas placer en dessous de
Code:
util.AddNetworkString("NPCPANEL")
un nouveau pont. Pour pouvoir envoyer un message entre les différentes sides, il faut un pont.
Donc voici notre nouveau :

util.AddNetworkString("lenomquetusouhaites")

On repasse au côté client (cl_init.lua) et on va s'intéresser à envoyer le message.
Repassons au DoClick et tu vas comprendre dans mon code comment cela fonctionne :

Code:
DermaButton.DoClick = function(self) net.Start("lenomquetusouhaites") -- On démarre la liaison : imagine que c'est un talkie-walkie : ici on appuie sur le bouton pour démarrer le flux en quelque sorte -- net.WriteString("Ici, par exemple, on pourrait écrire un message de toute sorte (en l'occurrence ici un string) mais on n'en a pas l'utilité, c'est simplement un exemple") net.SendToServer() -- On l'envoie donc au côté server. Tu pourrais te dire : ce message est vide ! Mais non.
end
En réalité, le serveur va recevoir 2 choses :
- L'entité du joueur "ply" que tu as déjà vu en argument côté client pour réceptionner le message de frame (A Savoir : ply ne peut pas être utilisé côté client mais uniquement côté serveur.)
- Une liaison/ Un signal -> Tu lui as envoyé un signal et si tu n'as pas besoin de conditions, c'est à dire que si cette liaison ne sert qu'à une seule chose précise (ici téléporter le joueur), un signal suffit pour faire comprendre au serveur qu'il faut qu'il exécute l'action qui lui a été définie au préalable.

Il faut donc définir cette action, en définissant la réception du message :

On utilisera net.Receive() donc côté server (init.lua), en bas du fichier, tu sautes 1 ligne et on crée la réception :

Code:
net.Receive("lenomquetusouhaites",function(ply) -- Rappel, tous les arguments ne sont pas obligés d'être précisés. Len représente la longueur du message mais comme il est vide, on va pas le préciser vu qu'on ne l'utilisera pas.
ply:SetPos(Vector(0,0,0)) -- On placera le joueur ply (reçu par le signal) à une position d'un certain vecteur (notion mathématique que tu connais forcément si tu as dépassé la troisième). Pourquoi trois zéros ? Car on est en 3 dimensions.
end) -- On ferme la fonction et tu remarqueras que j'ai placé une parenthèse pour fermer la réception
Voilà. Il ne reste plus qu'à définir justement ce vecteur car là, Vector(0,0,0) représente le centre de la map.
Tu vas à l'endroit voulu (in game) et tu tapes dans ta console F10 : getpos
Tu prends les 3 premiers nombres décimaux. Tu les arrondis à max 2 chiffres après la virgule car on a pas besoin d'une précision extrême -> c'est du calcul en plus pour l'ordi, c'est donc indispensable de lui rendre la tâche facile.
Et tu remplaces tes trois zéros par les 3 nombres décimaux arrondis.

Pour terminer, tu vas me créer un petit message qui va dire au joueur : "Vous avez été transporté à destination."
Ce seront des sortes de devoir. Tu utiliseras :
http://wiki.garrysmod.com/page/Player/ChatPrint
Place le donc juste après la téléportation. A toi de trouver où exactement.

Voilà, j'ai mal aux doigts, j'ai pas été payé mais je pense que tu as pu comprendre 2-3 choses primordiales.
Je ne vais pas te faire de cours tous les jours. Si seulement quelqu'un en avait créé un... Ne serait-ce pas déjà fait ? Voici le cours sur le lua de Diablos, développeur sur GmodStore : https://openclassrooms.com/courses/4347281?status=waiting-for-publication

Allez, bon développement !
 
  • J'aime
Réactions: Yoh Sambre ♪, Wabel et Makss
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Mon npc n'affiche pas lees changement :s mais que quand sauvegarde ya la fenetre qui s'ouvre mais sa tp :s
 
Dernière édition:
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
leza à dit:
Mon npc n'affiche pas lees changement :s mais que quand sauvegarde ya la fenetre qui s'ouvre mais sa tp :s
Pas compris
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
quand je fais use sur mon npc ya n'a changer la fenetre est pareil sauf quand je redemarre serveur sa m'affiche la popup avec la le button etc mais quand j'appuie sur "arret 1" sa fait rien :(
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
quand je fais use sur mon npc ya n'a changer la fenetre est pareil sauf quand je redemarre serveur sa m'affiche la popup avec la le button etc mais quand j'appuie sur "arret 1" sa fait rien :(
As-tu bien étudié et compris et fait ce que je t'avais marqué.
Montre moi ton code Cl_init.lua et init.lua stp
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
j'ai relu 15 fois j'ai pas fait d'erreur
init :
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize() self:SetModel("models/gman_high.mdl") --< Modifier ici le skin de votre person self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER self:SetHullSizeNormal() --< NE PAS TOUCHER self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER self:DropToFloor() --< NE PAS TOUCHER self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage() -- si la valeur "return" est égale à TRUE alors votre NPC prend des dégats. -- si la valeur "return" est égale à FALSE alors votre NPC est invincible . return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT net.Send(caller) --< Envoie l'information au serveur end
end
net.Receive("lenomquetusouhaites",function(ply) -- Rappel, tous les arguments ne sont pas obligés d'être précisés. Len représente la longueur du message mais comme il est vide, on va pas le préciser vu qu'on ne l'utilisera pas.
ply:SetPos(Vector(1160,85,-79)) -- On placera le joueur ply (reçu par le signal) à une position d'un certain vecteur (notion mathématique que tu connais forcément si tu as dépassé la troisième). Pourquoi trois zéros ? Car on est en 3 dimensions.
end) -- On ferme la fonction et tu remarqueras que j'ai placé une parenthèse pour fermer la réception
cl_init :
Code:
include('shared.lua')
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Ou veut tu aller") --< le titre de votre frame frame:SetSize( 600, 600 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) net.Start("NPCPANEL") -- On démarre la liaison : imagine que c'est un talkie-walkie : ici on appuie sur le bouton pour démarrer le flux en quelque sorte -- net.WriteString("Ici, par exemple, on pourrait écrire un message de toute sorte (en l'occurrence ici un string) mais on n'en a pas l'utilité, c'est simplement un exemple") net.SendToServer() -- On l'envoie donc au côté server. Tu pourrais te dire : ce message est vide ! Mais non.
end
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
leza à dit:
j'ai relu 15 fois j'ai pas fait d'erreur
init :
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize() self:SetModel("models/gman_high.mdl") --< Modifier ici le skin de votre person self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER self:SetHullSizeNormal() --< NE PAS TOUCHER self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER self:DropToFloor() --< NE PAS TOUCHER self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage() -- si la valeur "return" est égale à TRUE alors votre NPC prend des dégats. -- si la valeur "return" est égale à FALSE alors votre NPC est invincible . return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT net.Send(caller) --< Envoie l'information au serveur end
end
net.Receive("lenomquetusouhaites",function(ply) -- Rappel, tous les arguments ne sont pas obligés d'être précisés. Len représente la longueur du message mais comme il est vide, on va pas le préciser vu qu'on ne l'utilisera pas.
ply:SetPos(Vector(1160,85,-79)) -- On placera le joueur ply (reçu par le signal) à une position d'un certain vecteur (notion mathématique que tu connais forcément si tu as dépassé la troisième). Pourquoi trois zéros ? Car on est en 3 dimensions.
end) -- On ferme la fonction et tu remarqueras que j'ai placé une parenthèse pour fermer la réception
cl_init :
Code:
include('shared.lua')
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Ou veut tu aller") --< le titre de votre frame frame:SetSize( 600, 600 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) net.Start("NPCPANEL") -- On démarre la liaison : imagine que c'est un talkie-walkie : ici on appuie sur le bouton pour démarrer le flux en quelque sorte -- net.WriteString("Ici, par exemple, on pourrait écrire un message de toute sorte (en l'occurrence ici un string) mais on n'en a pas l'utilité, c'est simplement un exemple") net.SendToServer() -- On l'envoie donc au côté server. Tu pourrais te dire : ce message est vide ! Mais non.
end
T'es pas arrivé à copier / coller comme il faut
" net.Receive("lenomquetusouhaites",function(ply) "
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
J'ai bien copier/coller nn?
sauf le nom
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
J'ai bien copier/coller nn?
sauf le nom
Non. Tu as simplement copié/collé ce que j'avais mis sans essayer de le comprendre. Lors de l'AcceptInput() côté serveur, il y a un message net qui s'envoie pour ouvrir la frame et tu as supprimé la réception car tu n'as pas bien lu ce que j'avais marqué en explications.
Lis en entier et tu trouveras SEUL tes problèmes.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Code:
(net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
Mais maintenant j'ai une erreur quand je le rajoute , je doit bien rajouter dans cl_init?
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
Code:
(net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
Mais maintenant j'ai une erreur quand je le rajoute , je doit bien rajouter dans cl_init?
Tu n'as pas lu. Ou sinon vraiment tu ne comprends ce que j'écris.
 
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
leza à dit:
Code:
(net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
Mais maintenant j'ai une erreur quand je le rajoute , je doit bien rajouter dans cl_init?
Alors on va tous lister:

Clientside:
  1. Tu t'est trompé dans le nom du net
Serverside:
  1. Ta oublier le util.AddNetworkString( "lenomquetusouhaites" )

Et pour la fin de ce message:

  1. Evite de copier/coller ce que l'on te donne sans essayer de comprendre.
  2. Active l'auto-refresh.
  3. Utilise le wiki de garry's mod.
 
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
leza à dit:
Code:
(net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 200, 200 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 25, 50 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
Mais maintenant j'ai une erreur quand je le rajoute , je doit bien rajouter dans cl_init?
J'avais pas vu sa...
Explique moi pourquoi t'ouvre une parenthèse avant le net.Receive() ?
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Bon j'ai trouve mon problème en lisant un peu mieux mais maintenant le personnage se tp pas , mais je vais cherche en relisant !
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
Bon j'ai trouve mon problème en lisant un peu mieux mais maintenant le personnage se tp pas , mais je vais cherche en relisant !
Lis et applique en même temps. Et essaie de comprendre chaque ligne de ce que je peux écrire.

Rappel : "--" avant quelques mots ça transforme ce qui suit sur la ligne par un commentaire. Je reprécise au cas-où.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
je le savais , je suis peut-être con mais je sais ses quoi ^^
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
la je ne comprend pas du tout mon erreur pourquoi sa tp pas :s
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
la je ne comprend pas du tout mon erreur pourquoi sa tp pas :s
Renvoie encore ton code. J'espère pour une fois y retrouver quelque chose de personnel, sans bêtement recopier. J'ai exprès envoyer seulement des bouts de code vraiment qui étaient essentiels pour un total néophyte en langage informatique.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
cl_init
Code:
net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 400, 400 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 40, 80 ) DermaButton:SetSize( 325, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
init.lua
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize() self:SetModel("models/gman_high.mdl") --< Modifier ici le skin de votre person self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER self:SetHullSizeNormal() --< NE PAS TOUCHER self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER self:DropToFloor() --< NE PAS TOUCHER self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage() -- si la valeur "return" est égale à TRUE alors votre NPC prend des dégats. -- si la valeur "return" est égale à FALSE alors votre NPC est invincible . return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
util.AddNetworkString("lenomquetusouhaites")
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT net.Send(caller) --< Envoie l'information au serveur end
end
net.Receive("lenomquetusouhaites",function(ply)
ply:SetPos(Vector(0,0,0))
end)
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
cl_init
Code:
net.Receive("NPCPANEL", function(len,ply)
local frame = vgui.Create( "DFrame" ) --< "frame" est le nom de notre Frame frame:SetTitle("Le titre de notre fenetre") --< le titre de votre frame frame:SetSize( 400, 400 ) --< Pour modifier la taille de notre fenetre frame:Center() --< Automatiquement centrer (Sinon utiliser la function) SetPos(0,0) frame:MakePopup() --< Obligatoire à toujours ajouter !
local DermaButton = vgui.Create( "DButton", frame ) DermaButton:SetText( "Arret 1" ) DermaButton:SetPos( 40, 80 ) DermaButton:SetSize( 325, 30 ) DermaButton.DoClick = function(self) -- On va voir ce qu'on va mettre là juste après end
end)
init.lua
Code:
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")
include('shared.lua')
function ENT:Initialize() self:SetModel("models/gman_high.mdl") --< Modifier ici le skin de votre person self:SetHullType(HULL_HUMAN) --< NE PAS TOUCHER self:SetHullSizeNormal() --< NE PAS TOUCHER self:SetNPCState(NPC_STATE_SCRIPT) --< NE PAS TOUCHER self:SetSolid(SOLID_BBOX) --< NE PAS TOUCHER self:CapabilitiesAdd(CAP_ANIMATEDFACE) --< NE PAS TOUCHER self:SetUseType(SIMPLE_USE) --< NE PAS TOOUCHER self:DropToFloor() --< NE PAS TOUCHER self:SetMaxYawSpeed(90) --< NE PAS TOUCHER
end
function ENT:OnTakeDamage() -- si la valeur "return" est égale à TRUE alors votre NPC prend des dégats. -- si la valeur "return" est égale à FALSE alors votre NPC est invincible . return false
end
util.AddNetworkString( "NPCPANEL" ) --< Nom de la fonction ce trouvant dans le CL_INIT
util.AddNetworkString("lenomquetusouhaites")
function ENT:AcceptInput( name, activator, caller ) if name == "Use" and caller:IsPlayer() then --< Verifie si USE et ulisier par un joueur net.Start("NPCPANEL") --< Nom de la fonction ce trouvant dans le CL_INIT net.Send(caller) --< Envoie l'information au serveur end
end
net.Receive("lenomquetusouhaites",function(ply)
ply:SetPos(Vector(0,0,0))
end)
C'est bien mieux !
Il reste une erreur !
Regarde au niveau du DoClick de ton bouton : tu n'as pas rempli ce qu'il fallait (revoir la partie où on envoie le message net).
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
j'ai fait ce que j'ai oublier mais ses un probleme avec sa :
Code:
net.Receive("lenomquetusouhaites",function(ply)
ply:SetPos(Vector(1,5,10))
end)
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
leza à dit:
j'ai fait ce que j'ai oublier mais ses un probleme avec sa :
Code:
net.Receive("lenomquetusouhaites",function(ply)
ply:SetPos(Vector(1,5,10))
end)
Si tu as une erreur lua, et bien donnes-la. Je peux pas la deviner ^^'
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Code:
[ERROR] addons/npc/lua/entities/panel/init.lua:45: attempt to index local ply <a number value>
1. func - addons/npc_base/lua/entities/panel/init.lua:45
2. unknown - lua/includes/extensions/net.lua:32
voila
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
leza à dit:
j'ai fait ce que j'ai oublier mais ses un probleme avec sa :
Code:
net.Receive("lenomquetusouhaites",function(ply)
ply:SetPos(Vector(1,5,10))
end)
Code:
net.Receive( "lenomquetusouhaites", function( len, ply) ply:SetPos( Vector( 1, 5, 10 ) )
end)
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Je vous remercie, vous m'avez aider a comprendre le "glua" mais j'ai encore beaucoup chose a apprend MERCI

Cordialement leza.
 
  • Initiateur de la discussion
L

leza

Nouveau né
Messages
69
Score réaction
0
Points
20
Je souhaite vous demander un truc car enfaîte j'ai un problèmes , je n'arrive pas ajoute un autre bouton 3 heure je cherche..
 
Discord d'entraide
Rejoignz-nous sur Discord