Créer une commande dans le tchat ?

  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Salut, je voudrais savoir comment faire pour créer une commande dans le tchat, je pense que c'est simple mais je sais pas comment faire. Et éventuellement faire un effet de blur :D

Merci beaucoup a celui qui va m'aider
 
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
16 288
Score réaction
9 687
Points
1 845
Wiki gmod
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Oué mais faut que je recherche quoi exactement parce que j'en ai aucune idée
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Tout dépend de ce que doit faire ta commande...
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Ouvrir un derma :)
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
merci
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Euh dans le Wiki je trouve pas de "DmPanel" si on peut m'aider ?
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
ça n'existe pas... Pour créer une fonction la manière que je connais perso c'est un hook. Si un texte est mis dans le chat alors cela va effectuer une action mais c'est un peu compliqué pour ouvrir un DPanel vu qu'il faut récupérer l'entity du joueur donc... je le fais pas là mais bonne chance.
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Feytone à dit:
ça n'existe pas... Pour créer une fonction la manière que je connais perso c'est un hook. Si un texte est mis dans le chat alors cela va effectuer une action mais c'est un peu compliqué pour ouvrir un DPanel vu qu'il faut récupérer l'entity du joueur donc... je le fais pas là mais bonne chance.
ah ouké sa ma l'air compliqué, merci et ++
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
ah ouké sa ma l'air compliqué, merci et ++
Hook pour utiliser le chat :

http://wiki.garrysmod.com/page/GM/PlayerSay

Et pour ouvrir le derma il faut utiliser la net library ( surtout pas les usermessages c'est deprecated ) :

http://wiki.garrysmod.com/page/Category:net

Et donc en gros il faudrait faire un truc comme ça :

Dans le serveur :

Code:
util.AddNetworkString("OpenTheDerma") -- Ne pas oublier de "precache" le net message
local function OpenDerma(ply, text, team) if text == "/open" then net.Start("OpenTheDerma") net.Send(ply) else return end
end
hook.Add("PlayerSay","OpenTheDerma",OpenDerma)
Dans le client :

Code:
net.Receive("OpenTheDerma",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400,400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup() -- Et vous faites votre derma
end)
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Zozo147 à dit:
Hook pour utiliser le chat :

http://wiki.garrysmod.com/page/GM/PlayerSay

Et pour ouvrir le derma il faut utiliser la net library ( surtout pas les usermessages c'est deprecated ) :

http://wiki.garrysmod.com/page/Category:net

Et donc en gros il faudrait faire un truc comme ça :

Dans le serveur :

Code:
util.AddNetworkString("OpenTheDerma") -- Ne pas oublier de "precache" le net message
local function OpenDerma(ply, text, team) if text == "/open" then net.Start("OpenTheDerma") net.Send(ply) else return end
end
hook.Add("PlayerSay","OpenTheDerma",OpenDerma)
Dans le client :

Code:
net.Receive("OpenTheDerma",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400,400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup() -- Et vous faites votre derma
end)
Merci BEAUCOUP, et quelque petite question, c'est quoi un precache ?
 
Dernière édition:
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Euh pour que je fasse le dossier dans addons je met bien /nom/lua/autorun/server/ et /nom/lua/entities/nom encore/ et c bon ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
c'est quoi un precache
En gros tout ce qu'il faut savoir c'est que dès que vous utilisez net.Start("nomdumsg") il faut utiliser util.AddNetworkString("")

EglyKozz à dit:
je fasse le dossier dans addons je met bien /nom/lua/autorun/server/ et /nom/lua/entities/nom encore/
Et là j'ai pas compris, vous voulez faire un PNJ ou une commande ?
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Zozo147 à dit:
En gros tout ce qu'il faut savoir c'est que dès que vous utilisez net.Start("nomdumsg") il faut utiliser util.AddNetworkString("")
Sa je sais déjà :)
Zozo147 à dit:
Et là j'ai pas compris, vous voulez faire un PNJ ou une commande ?
Enft une commande pour ouvrir un derma mais c comme a la base je le faisait juste en solo et que la il faut utiliser des net, donc côté server je voulais faire un dossier dans addons donc je sais que je dois mettre /nomdel'addon/lua/autorun/ mais pour le fichier du code ou ya que le derma bah je l'appelle entities ou je dois mettre un autre truc ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
Sa je sais déjà :)

Enft une commande pour ouvrir un derma mais c comme a la base je le faisait juste en solo et que la il faut utiliser des net, donc côté server je voulais faire un dossier dans addons donc je sais que je dois mettre /nomdel'addon/lua/autorun/ mais pour le fichier du code ou ya que le derma bah je l'appelle entities ou je dois mettre un autre truc ?
Euuh je vais expliquer comment moi je fais parce que sinon ça va être compliqué x) , donc moi je fais un dossier lua puis autorun dans le dossier autorun je fais un fichier que j'appelle loadernomaddon.lua puis avant de le commencer je reviens dans le dossier "lua" et je fais un dossier l'addon genre "exempleaddon" dedans je fais un dossier client et server, dans le dossier client je fais un fichier donc par exemple "cl_exemple.lua" et dans server aussi je fais un fichier donc "sv_exemple.lua", donc on revient à notre "loadernomaddon.lua" dedans je met ça :

Code:
if SERVER then include("exempleaddon/server/sv_exemple.lua") AddCSLuaFile("exempleaddon/client/cl_exemple.lua")
end
if CLIENT then include("exempleaddon/client/cl_exemple.lua")
end
Et donc dans le fichier sv_exemple.lua dans le dossier exempleaddon/server/ vous mettez par exemple :

Code:
util.AddNetworkString("OpenTheDerma")
local function OpenPanel(ply, text, team) if text == "/open" then net.Start("OpenTheDerma") net.Send(ply) end
end
hook.Add("PlayerSay", "WhenThePlayerSay", OpenPanel)
Et dans le fichier client cl_exemple.lua dans exempleaddon/client/ vous mettez par exemple :

Code:
net.Receive("OpenTheDerma",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400,400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup()
end)
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Zozo147 à dit:
Euuh je vais expliquer comment moi je fais parce que sinon ça va être compliqué x) , donc moi je fais un dossier lua puis autorun dans le dossier autorun je fais un fichier que j'appelle loadernomaddon.lua puis avant de le commencer je reviens dans le dossier "lua" et je fais un dossier l'addon genre "exempleaddon" dedans je fais un dossier client et server, dans le dossier client je fais un fichier donc par exemple "cl_exemple.lua" et dans server aussi je fais un fichier donc "sv_exemple.lua", donc on revient à notre "loadernomaddon.lua" dedans je met ça :

Code:
if SERVER then include("exempleaddon/server/sv_exemple.lua") AddCSLuaFile("exempleaddon/client/cl_exemple.lua")
end
if CLIENT then include("exempleaddon/client/cl_exemple.lua")
end
Et donc dans le fichier sv_exemple.lua dans le dossier exempleaddon/server/ vous mettez par exemple :

Code:
util.AddNetworkString("OpenTheDerma")
local function OpenPanel(ply, text, team) if text == "/open" then net.Start("OpenTheDerma") net.Send(ply) end
end
hook.Add("PlayerSay", "WhenThePlayerSay", OpenPanel)
Et dans le fichier client cl_exemple.lua dans exempleaddon/client/ vous mettez par exemple :

Code:
net.Receive("OpenTheDerma",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400,400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup()
end)
Et si je fait pas sa, sa marche pas ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
Et si je fait pas sa, sa marche pas ?
techniquement si mais perso je préfère cette méthode, si vous avez pas bien compris j'ai un exemple visuel :

https://github.com/Zozo832/Useless-Pop-UPs-Addon
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Zozo147 à dit:
techniquement si mais perso je préfère cette méthode, si vous avez pas bien compris j'ai un exemple visuel :

https://github.com/Zozo832/Useless-Pop-UPs-Addon
Ahh ok et donc le sv_nomdel'addon je le met pas dans autorun, parce que pour mon premier addon behh c'était un npc donc voilà,
Donc je dois faire /nomdel'addon/lua/autorun/ avec le loaderexemple.lua et /lua/exemple/client et server/ et dans server je met le fichier sv_blablabla.lua et dans client le cl.truc ?
Désolé je suis un peu paumée, et c'est la configuration principale pour un des addons ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
Ahh ok et donc le sv_nomdel'addon je le met pas dans autorun, parce que pour mon premier addon behh c'était un npc donc voilà,
Donc je dois faire /nomdel'addon/lua/autorun/ avec le loader.lua et /lua/exemple/client et server/ et dans server je met le fichier sv_blablabla.lua et dans client le cl.truc ?
Exact et ça permettra d'intégrer un fichier de configuration plus tard si vous en avez envie et en se cassant moins la tête que si ce n'était pas fait comme ça.

EglyKozz à dit:
configuration principale pour un des addons
Et j'ai pas compris la question x)
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Merci
Zozo147 à dit:
Et j'ai pas compris la question x)
En gros si je refait un addon je refait le même model ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
Merci

En gros si je refait un addon je refait le même model ?
Oui sauf si bien sûr c'est un pnj
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Zozo147 à dit:
Oui sauf si bien sûr c'est un pnj
Ok merci et dans le loader.lua a
include("exempleaddon/server/sv_exemple.lua")
Dans "exempleaddon" je met le nom du dossier dans le quel ya client et server ?
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
Ok merci et dans le loader.lua a
include("exempleaddon/server/sv_exemple.lua")
Dans "exempleaddon" je met le nom du dossier dans le quel ya client et server ?
Code:
if SERVER then -- ici on inclut directement le fichier serveur include("exempleaddon/server/sv_exemple.lua") -- ici on utilise AddCSLuaFile pour dire au serveur avec AddCSLuaFile d'envoyer au joueur le fichier client AddCSLuaFile("exempleaddon/client/cl_exemple.lua")
end
if CLIENT then include("exempleaddon/client/cl_exemple.lua") -- ici on inclut le fichier client au joueur
end
Et si vous avez des doutes :

http://wiki.garrysmod.com/page/Global/include
http://wiki.garrysmod.com/page/Global/AddCSLuaFile
 
  • Initiateur de la discussion
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
C'est bon merci tout marche niquel, super sympas de ta part d'avoir pris le temps de m'aider ;)
 
  • J'aime
Réactions: Yoh Sambre ♪
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
EglyKozz à dit:
C'est bon merci tout marche niquel, super sympas de ta part d'avoir pris le temps de m'aider ;)
Pas de soucis, à noter que les fichiers "shared" (donc pour la configuration d'un addon) c'est presque le même procédé que pour les fichiers client sauf qu'il vaut mieux le mettre dans lua/exemple/ici et pas dans client ni server, et vue que les fichiers shared communiquent entre le client et le server ça change voici un exemple de son utilité :

Fichier de configuration :

https://github.com/Zozo832/Useless-Pop-UPs-Addon/blob/master/uselesspopups/lua/upp/sh_config.lua

Utilisation du Fichier de configuration :

https://github.com/Zozo832/Useless-...popups/lua/upp/client/cl_reportpopup.lua#L209

Et donc du coup pour l'intégrer ça donnerait un truc comme ça dans le fichier lua/autorun/loadernomaddon.lua :

Code:
if SERVER then  include("exempleaddon/sh_config.lua") -- ici on inclut directement le fichier serveur include("exempleaddon/server/sv_exemple.lua") -- ici on utilise AddCSLuaFile pour dire au serveur avec AddCSLuaFile d'envoyer au joueur le fichier client AddCSLuaFile("exempleaddon/client/cl_exemple.lua") -- Et on l'envoie aussi au client car c'est un fichier "Shared" AddCSLuaFile("exempleaddon/sh_config.lua")
end
if CLIENT then include("exempleaddon/client/cl_exemple.lua") -- ici on inclut le fichier client au joueur include("exempleaddon/sh_config.lua") -- Et on finit par l'inclure au joueur
end
 
  • J'aime
Réactions: EglyKozz
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
16 288
Score réaction
9 687
Points
1 845
A venir sur mtx fofo "Les tutos de papy ZoZo !"

ResidentSleeper
 
  • J'aime
Réactions: EglyKozz et Zozo147
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Yoh Sambre ♪ à dit:
A venir sur mtx fofo "Les tutos de papy ZoZo !"

ResidentSleeper
Mais techniquement c'est déjà fait sur Youtube :


Mais bon 1 pouce rouge, je comprend pas pourquoi Kappa
 
  • J'aime
Réactions: Yoh Sambre ♪
Yoh Sambre ♪

Yoh Sambre ♪

Shaman Fou
Messages
16 288
Score réaction
9 687
Points
1 845
Zozo147 à dit:
Mais techniquement c'est déjà fait sur Youtube :


Mais bon 1 pouce rouge, je comprend pas pourquoi Kappa
Je ne suis pas sur d'avoir compris les nuances du langage cela va beaucoup trop vite pour moi PogChamp
 
  • J'aime
Réactions: Zozo147
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Yoh Sambre ♪ à dit:
Je ne suis pas sur d'avoir compris les nuances du langage cela va beaucoup trop vite pour moi PogChamp
Ah bah ça c'est Grand Père, avec @Taink on lui a dit de taper moins vite mais il a continué et à un moment il n'a pas tenu le rythme intense le pauvre, et c'est ainsi qu'il est mort....
 
Dernière édition:
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
Yoh Sambre ♪ à dit:
Je ne suis pas sur d'avoir compris les nuances du langage cela va beaucoup trop vite pour moi PogChamp
Comme je te comprends.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Zozo147 à dit:
Ah bah ça c'est Grand Père, avec @Taink on lui a dit de taper moins vite mais il a continué et à un moment il n'a pas tenu le rythme intense le pauvre, et c'est ainsi qu'il est mort....
Je crois que le panel va s'ouvrir à tout joueur client... Donc faudrait récupérer l'entity du joueur...
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Feytone à dit:
Je crois que le panel va s'ouvrir à tout joueur client... Donc faudrait récupérer l'entity du joueur...
Nope il va bien s'ouvrir que au client qui a demandé car le ply de net.Receive définit bien le joueur qui a demandé de déclencher le net.Start et comme me l'a fait remarquer @While True c'est dangereux de prendre le LocalPlayer pour l'envoyer en tant qu'entité au serveur alors qu'on peut tout simplement le récupérer avec le ply de net.Receive
 
  • J'aime
Réactions: Taink
Discord d'entraide
Rejoignz-nous sur Discord