Ouvrir un panel avec une commande (cCasser)

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

J'ai un petit problème, j'ai voulu faire un panel qui s'ouvre avec une commande (par exemple "!site") mais quand je fait ça, ça ne fonctionne pas:

Code:
-- lua/autorun/server/sv_init.lua
util.AddNetworkString("Whatever")
hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end
end)

Code:
-- lua/autorun/client/cl_init.lua
net.Receive("Whatever", function() local Frame = vgui.Create( "DFrame" ) Frame:SetPos( 5, 5 ) Frame:SetSize( 300, 150 ) Frame:SetTitle( "Name window" ) Frame:SetVisible( true ) Frame:SetDraggable( false ) Frame:ShowCloseButton( true ) Frame:MakePopup()
end)
PS: Je précise que j'ai pris ce code de Facepunch et que pour le gars qui avait le problème ça marchait niquel :/


Merci de votre aide
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
- Change le nom de tes fichiers, aucune utilité de mettre sv ou bien cl alors que t'es déjà dans des côtés définis, change aussi init.

- Change le nom de ton network string.

- Change le nom de ton hook ( asd ).

- Pourquoi mettre la variable teamonly si tu l'utilise pas ?

- Change le nom de ta Frame.

- Si tu n'as besoin d'aucune info côté serveur tu peux utiliser ceci au lieu de PlayerSay.
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
thepsyca à dit:
- Change le nom de tes fichiers, aucune utilité de mettre sv ou bien cl alors que t'es déjà dans des côtés définis, change aussi init.

- Change le nom de ton network string.

- Change le nom de ton hook ( asd ).

- Pourquoi mettre la variable teamonly si tu l'utilise pas ?

- Change le nom de ta Frame.

- Si tu n'as besoin d'aucune info côté serveur tu peux utiliser ceci au lieu de PlayerSay.
En fait ce code n'est pas de moi comme je l'ai dit plus haut et pour l'autre personne ça marchait parfaitement et même en changeant le nom des fichiers, du NetString, du hook, enlever teamonly et changer le nom de la Frame ça ne marche pas :/
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Deadman69330 à dit:
En fait ce code n'est pas de moi comme je l'ai dit plus haut et pour l'autre personne ça marchait parfaitement et même en changeant le nom des fichiers, du NetString, du hook, enlever teamonly et changer le nom de la Frame ça ne marche pas :/
Utilise print pour savoir où l'information passe et s'arrête ;)
 
  • J'aime
Réactions: Deadman69330
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
thepsyca à dit:
- Change le nom de tes fichiers, aucune utilité de mettre sv ou bien cl alors que t'es déjà dans des côtés définis, change aussi init.
Je vois pas en quoi mettre "sv" ou "cl" gène, en l'occurrence ce qui gène c'est le nom basique des fichiers,
All lua folders get mounted into a single lua folder. Your addon doesn't run on its own little island and you shouldn't behave that way.
Ce qui veut dire que les fichiers lua se doivent d'avoir un nom unique tel que "cl_deadman-script" pour éviter les conflits
thepsyca à dit:
- Pourquoi mettre la variable teamonly si tu l'utilise pas ?
Car c'est un argument de la fonction et qu'il n'est pas obligé de l'enlever ?
thepsyca à dit:
- Change le nom de ta Frame.
C'est une variable locale je vois pas où est le problème.

Je pense que soit il ne valide pas la condition côté serveur ( if text == "/test" then ) soit il y a un conflit entre le nom des nets, du hook ou des fichiers qui ne sont pas des noms uniques

edit : Effectivement, comme dit thepsyca
Utilise print pour savoir où l'information passe et s'arrête
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Valfunde à dit:
Car c'est un argument de la fonction et qu'il n'est pas obligé de l'enlever ?
Aucune utilité à le garder

Valfunde à dit:
C'est une variable locale je vois pas où est le problème.
c'est pas le fait que ça soit une variable local ou non, juste si tu dois reprendre son code et que tu vois tous les vgui avec des noms comme ça tu vas chercher pas mal de temps pour rien.
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
thepsyca à dit:
Utilise print pour savoir où l'information passe et s'arrête ;)
Heuuuuu.....

J'ai mis ça comme Print:
Code:
util.AddNetworkString("DeadmanPanelLotterie")
hook.Add("PlayerSay", "DeadmanPanelLotterie", function(ply, text) print("étape 1") if text == "/test" then print("étape 2") net.Start("DeadmanPanelLotterie") net.Send(ply) print("étape 3") end
end)
dans "lua/autorun/server/deadman_lotterie_server.lua" et il ne print même pas l'étape 1 :/
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Deadman69330 à dit:
Heuuuuu.....

J'ai mis ça comme Print:
Code:
util.AddNetworkString("DeadmanPanelLotterie")
hook.Add("PlayerSay", "DeadmanPanelLotterie", function(ply, text) print("étape 1") if text == "/test" then print("étape 2") net.Start("DeadmanPanelLotterie") net.Send(ply) print("étape 3") end
end)
dans "lua/autorun/server/deadman_lotterie_server.lua" et il ne print même pas l'étape 1 :/
Le problème dois venir du fichier alors et pas du code
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
thepsyca à dit:
Aucune utilité à le garder

c'est pas le fait que ça soit une variable local ou non, juste si tu dois reprendre son code et que tu vois tous les vgui avec des noms comme ça tu vas chercher pas mal de temps pour rien.
osef, ici on parle pas de la propreté de son code mais juste du fonctionnement
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
il ne print même pas l'étape 1 :/
Valfunde à dit:
Ce qui veut dire que les fichiers lua se doivent d'avoir un nom unique tel que "cl_deadman-script" pour éviter les conflits
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Ce qui veut dire que les fichiers lua se doivent d'avoir un nom unique tel que "cl_deadman-script" pour éviter les conflits
Je pense que "deadman_lotterie_server" et "deadman_lotterie_panel" c'est assez unique :/
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
Je pense que "deadman_lotterie_server" et "deadman_lotterie_panel" c'est assez unique :/
Oui c'est assez unique ;)
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Oui c'est assez unique ;)
Sauf que ça marche pas (j'ai même essayer en nommant le fichier avec une dizaine de chiffres au pif (par exemple 2546835214.lua )
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
xD Je peux pas regarder actuellement j'essaie de revenir plus tard sur le pc pour ca
 
  • J'aime
Réactions: Deadman69330
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Bon, j'ai testé ça dans un fichier shared.lua dans lua/autorun
JSON:
if CLIENT then net.Receive("Whatever", function() local Frame = vgui.Create( "DFrame" ) Frame:SetPos( 5, 5 ) Frame:SetSize( 300, 150 ) Frame:SetTitle( "Name window" ) Frame:SetVisible( true ) Frame:SetDraggable( false ) Frame:ShowCloseButton( true ) Frame:MakePopup() end)
end
if SERVER then util.AddNetworkString("Whatever") hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end end
end
Et ca marche, donc soit conflit avec un autre script, soit un bug, essaie de supprimer les autres scripts et réessaye
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Bon, j'ai testé ça dans un fichier shared.lua dans lua/autorun
JSON:
if CLIENT then net.Receive("Whatever", function() local Frame = vgui.Create( "DFrame" ) Frame:SetPos( 5, 5 ) Frame:SetSize( 300, 150 ) Frame:SetTitle( "Name window" ) Frame:SetVisible( true ) Frame:SetDraggable( false ) Frame:ShowCloseButton( true ) Frame:MakePopup()
end)
end
if SERVER then util.AddNetworkString("Whatever") hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end end
end
Et ca marche, donc soit conflit, soit un bug, essaie de supprimer les autres scripts et réessaye
Je test dès que j'arrive chez moi :)
 
  • J'aime
Réactions: Valfunde
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Bon, j'ai testé ça dans un fichier shared.lua dans lua/autorun
JSON:
if CLIENT then net.Receive("Whatever", function() local Frame = vgui.Create( "DFrame" ) Frame:SetPos( 5, 5 ) Frame:SetSize( 300, 150 ) Frame:SetTitle( "Name window" ) Frame:SetVisible( true ) Frame:SetDraggable( false ) Frame:ShowCloseButton( true ) Frame:MakePopup() end)
end
if SERVER then util.AddNetworkString("Whatever") hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end end
end
Et ca marche, donc soit conflit avec un autre script, soit un bug, essaie de supprimer les autres scripts et réessaye
Alors ton code marche niquel dans un shared.lua Mais quand je remplace avec mon code (après le net.Receive) ça affiche toujours une petite box en haut et pas la mienne (alors que le script client marche niquel quand je le lance en faisant "lua_openscript_cl" :/

Code:
if CLIENT then net.Receive("Whatever", function() -- Mon code end)
end
if SERVER then util.AddNetworkString("Whatever") hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end end
end
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
ça affiche toujours une petite box en haut et pas la mienne
Hmm, donc l'ancien panel s'affiche alors que t'as mis quelque chose de différent; essaie de re-démarrer le serveur xD
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Hmm, donc l'ancien panel s'affiche alors que t'as mis quelque chose de différent; essaie de re-démarrer le serveur xD
J'ai re-démarrer mon jeu 3 fois :/
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
J'ai re-démarrer mon jeu 3 fois :/
C'est pas normal que quelque chose qui n'existe plus s'ouvre, c'est qu'il existe encore si t'as redémarré ton serveur
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
C'est pas normal que quelque chose qui n'existe plus s'ouvre, c'est qu'il existe encore si t'as redémarré ton serveur
Je sait, pourtant j'ai aucun addon sur mon gmod (A part ULX, ULIB, Darkrp, Un physicgun, et Mes addons que j'ai créer)
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
Je sait, pourtant j'ai aucun addon sur mon gmod (A part ULX, ULIB, Darkrp, Un physicgun, et Mes addons que j'ai créer)
Le problème doit donc venir des addons que tu as crée
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Le problème doit donc venir des addons que tu as crée
Je viens de les enlever et ça marche toujours pas (j'ai aussi essaye en enlevant mes addons workshop ET ulx et ulib)
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Supprime tout sauf darkrp, ulx/ulib, et le script concerné, redémarre le serveur, ton jeux, et dis moi si la fenêtre s'ouvre toujours ( j'y pense, tu n'as pas oublié d'enlever le script dans le shared.lua ? )
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
j'y pense, tu n'as pas oublié d'enlever le script dans le shared.lua ? )
Je me sert que de celui qui est dans le shared.lua pour l'instant
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Deadman69330 à dit:
Je me sert que de celui qui est dans le shared.lua pour l'instant
Donc t'as plus aucun addon mis a part ulx ulib darkrp et le shared.lua ? et t'as encore le bug de la fenetre ?
 
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Donc t'as plus aucun addon mis a part ulx ulib darkrp et le shared.lua ? et t'as encore le bug de la fenetre ?
Exactement
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
  • Initiateur de la discussion
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Valfunde à dit:
Bah mets le code du shared ici
Code:
if CLIENT then net.Receive("Whatever", function()
local CodeNeeded = "PYK4056"
local DeadLotteriePanel = vgui.Create( "DFrame" )
DeadLotteriePanel:SetTitle( "Lotterie" )
DeadLotteriePanel:SetSize( ScrW() * 400/1920, ScrH() * 300/1080 )
DeadLotteriePanel:Center()
DeadLotteriePanel:MakePopup()
DeadLotteriePanel.Paint = function( self, w, h ) -- 'function Frame:Paint( w, h )' works too draw.RoundedBox( 0, 0, 0, w, h, Color( 231, 76, 60, 150 ) ) -- Draw a red box instead of the frame
end
surface.CreateFont( "DeadLotterie1", { font = "Arial", -- Use the font-name which is shown to you by your operating system Font Viewer, not the file name extended = false, size = 13, weight = 500, blursize = 0, scanlines = 0, antialias = true,
} )
local CodeEnter = nil
local CodeEntry = vgui.Create( "DTextEntry", DeadLotteriePanel )
CodeEntry:SetPos( ScrW() * 100/1920, ScrH() * 150/1080 )
CodeEntry:SetSize( ScrW() * 200/1920, ScrH() * 50/1080 )
CodeEntry:SetText( "Entrer votre code" )
CodeEntry.OnEnter = function( self ) CodeEnter = self:GetValue() draw.SimpleText("Test", "DeadLotterie1", ScrW() * 100/1920, ScrH() * 100/1080, Color(0,255,0)) if CodeEnter == CodeNeeded then print("Vous avez reçu 50 000$") -- ca marche elseif CodeEnter == "Entrer votre code" then chat.AddText( Color( 100, 100, 255 ), "Vous devez renseigner un code !") chat.PlaySound() else chat.AddText( Color( 100, 100, 255 ), "Votre code n'est pas valide !") chat.PlaySound() end
end end)
end
if SERVER then util.AddNetworkString("Whatever") hook.Add("PlayerSay", "asd", function(ply, text, teamonly) if text == "/test" then net.Start("Whatever") net.Send(ply) end end
end
 
Discord d'entraide
Rejoignz-nous sur Discord