Problème codage (Nom / prénom)

  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Bonjour, je me trouve vraiment pathétique :< je... je vous explique :
Je souhaite crée un "addons" (Nom / Prénom) donc j'ai commencer par faire sa :

Code:
local TextEntry = vgui.Create( "DTextEntry", FramePanel )
TextEntry:SetPos( 25, 50 )
TextEntry:SetSize( 75, 85 )
TextEntry:SetText( "Sample String" )
TextEntry.OnEnter = function( self )
print ( self:GetValue() )
end
Mais je sais pas sortir le nom prénom en une variable :/
 
Dernière édition:
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
(Un truc très simple pour le moment mais bon j'aimerai juste savoir comment mettre le texte que le joueur a rentre en Variable.)
une idée ?
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Code:
function RetrieveTheGoodPly(nick) local goodply for k,v in pairs(player.GetAll()) do if v:Nick() == nick then goodply = v break end end return goodply
end
Dans le côté client de ton petit script.
Ensuite tu crées un Net et tu envoies l'info au côté serveur :

"net.WriteEntity(RetrieveTheGoodPly(ply))"
"net.WriteString(self:GetValue())"


Ensuite côté serveur : "local playyer = net.ReadEntity()" et "local name = net.ReadString()"

et pour terminer tu set le RpName :

playyer:setRPName(name)
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Après je suis pas sûr de tout, donc j'ai pas tout précisé côté Net de ce qu'il faut mettre mais je pense que tu sais ;)
En revanche je viens de relire un script que j'avais fait :

Code:
 ReasonKickTextEntry.OnValueChanged = function() re = ReasonKickTextEntry:GetValue()
Tu remplaces tout ce qui faut niveau nom mais laisse cela.

Et du coup tu remplaces net.WriteString(self:GetValue()) par net.WriteString(NOMCHOISI)
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Heu... j'ai absolument rien compris :/
Je cherchait simplement a faire sortir le texte qui est écrit dans la
en une variable ^^'
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Bon attend je t'écris le tout.

Code:
local TextEntry = vgui.Create( "DTextEntry", FramePanel )
TextEntry:SetPos( 25, 50 )
TextEntry:SetSize( 75, 85 )
TextEntry:SetText( "" )
TextEntry.OnValueChanged = function()
km = TextEntry:GetValue()
end
util.AddNetworkString("rpname")
net.Start("rpname")
net.WriteEntity(ply)
net.WriteString(km)
net.SendToServer()
Tu mets le util en haut de ton fichier et tu remplaces ton textentry par celui donné. Le net.Start se trouve à la fin de ton fichier donc

Tu crées un fichier sv_setname

A l'intérieur tu mets ceci :

Code:
util.AddNetworkString("rpname")
net.Receive("rpname",function() playyer = net.ReadEntity(ply) km = net.ReadString() playyer:setRPName(km) end)
Donc ton fichier avec le panel doit s'appeler cl_quelquechose.lua
 
  • J'aime
Réactions: kirikoumalou
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Feytone à dit:
Bon attend je t'écris le tout.

Code:
local TextEntry = vgui.Create( "DTextEntry", FramePanel )
TextEntry:SetPos( 25, 50 )
TextEntry:SetSize( 75, 85 )
TextEntry:SetText( "" )
TextEntry.OnValueChanged = function()
km = TextEntry:GetValue()
end
util.AddNetworkString("rpname")
net.Start("rpname")
net.WriteEntity(ply)
net.WriteString(km)
net.SendToServer()
Tu mets le util en haut de ton fichier et tu remplaces ton textentry par celui donné. Le net.Start se trouve à la fin de ton fichier donc

Tu crées un fichier sv_setname

A l'intérieur tu mets ceci :

Code:
util.AddNetworkString("rpname")
net.Receive("rpname",function() playyer = net.ReadEntity(ply) km = net.ReadString() playyer:setRPName(km) end)
Donc ton fichier avec le panel doit s'appeler cl_quelquechose.lua
Je n'aurai JAMAIS trouver sa tous seul ! Merci beaucoup :D
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Hey ^^' une erreur :/

Code:
[ERROR] lua/autorun/client/sv_setname.lua:28: attempt to call field 'AddNetworkString' (a nil value) 1. unknown - lua/autorun/client/sv_setname.lua:28 2. unknown - lua/includes/modules/concommand.lua:54
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
kirikoumalou à dit:
Hey ^^' une erreur :/

Code:
[ERROR] lua/autorun/client/sv_setname.lua:28: attempt to call field 'AddNetworkString' (a nil value) 1. unknown - lua/autorun/client/sv_setname.lua:28 2. unknown - lua/includes/modules/concommand.lua:54
'sv_setname' il ne faut pas le mettre dans le dossier "client" mais "server" car sinon je crois que ça le reconnait comme un fichier client ^^
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Zozo147 à dit:
'sv_setname' il ne faut pas le mettre dans le dossier "client" mais "server" car sinon je crois que ça le reconnait comme un fichier client ^^
Non :/ Toujours la même erreur
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
kirikoumalou à dit:
Non :/ Toujours la même erreur
Ah mais je viens de voir faut pas mettre util.AddNetworkString en clientside ça doit venir d'ici essayez d'enlever en clientside mais laissez en serverside
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Donne l'erreur maintenant stp ça ne peut pas être tout exactement la même.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Il faut mettre le cl dans le client et le sv dans le server.
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Feytone à dit:
local TextEntry = vgui.Create( "DTextEntry", FramePanel )
TextEntry:SetPos( 25, 50 )
TextEntry:SetSize( 75, 85 )
TextEntry:SetText( "" )
TextEntry.OnValueChanged = function()
km = TextEntry:GetValue()
end

util.AddNetworkString("rpname")

net.Start("rpname")
net.WriteEntity(ply)
net.WriteString(km)
net.SendToServer()

Tu mets le util en haut de ton fichier et tu remplaces ton textentry par celui donné. Le net.Start se trouve à la fin de ton fichier donc

Tu crées un fichier sv_setname
Sa c'est coté server ? mais c'est un vgui (coté client seulement) :/
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Feytone à dit:
Il faut mettre le cl dans le client et le sv dans le server.
http://wiki.garrysmod.com/page/util/AddNetworkString

Le bleu signifie que l'on ne peut que l'utiliser en serverside ( enfin je pense que c'est ça perso j'utilise que en serverside et ça marche )
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Non tu suis mes indications mais les fichiers sv se trouvent dans server et cl dans client.
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
Feytone à dit:
Non tu suis mes indications mais les fichiers sv se trouvent dans server et cl dans client.
Ah j'avais mal lu x)

Bref oui il faut mettre le cl_ dans client et le sv_ dans server

( mais là je comprend plus rien x) )
 
Zozo147

Zozo147

Helpeur Divin
Messages
1 814
Score réaction
848
Points
430
A la limite essayez ceci ( j'ai essayé de faire le plus propre possible ) :

Donc dans le dossier client vous faites et un fichier et vous mettez ceci :

Code:
net.Receive("OpenPanel",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400, 400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup() local NameTextEntry = vgui.Create( "DTextEntry", Frame ) NameTextEntry:SetPos( 25, 50 ) NameTextEntry:SetSize( 75, 85 ) NameTextEntry:SetText( "Sample String" ) NameTextEntry.OnEnter = function( self ) Nom = self:GetValue() net.Start("SendNameToTheServer") net.WriteEntity(ply) net.WriteString(Nom) net.SendToServer() end
end
Et dans le dossier server vous faites un fichier et vous mettez ceci :

Code:
util.AddNetworkString("OpenPanel")
util.AddNetworkString("SendNameToTheServer")
local function TriggerOpenPanel(ply) net.Start("OpenPanel") net.Send(ply)
end
hook.Add("PlayerSpawn", "WhenThePlayerSpawn", TriggerOpenPanel)
net.Receive("SendNameToTheServer",function(len, ply) NomSV = net.ReadString() JoueurSV = net.ReadEntity() -- Et là vous faites ce que vous voulez avec ces variables
end)
Et normalement ça devrait marcher
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Zozo147 à dit:
A la limite essayez ceci ( j'ai essayé de faire le plus propre possible ) :

Donc dans le dossier client vous faites et un fichier et vous mettez ceci :

Code:
net.Receive("OpenPanel",function(len, ply) local Frame = vgui.Create("DFrame") Frame:SetSize(400, 400) Frame:SetTitle("Test") Frame:Center() Frame:MakePopup() local NameTextEntry = vgui.Create( "DTextEntry", Frame ) NameTextEntry:SetPos( 25, 50 ) NameTextEntry:SetSize( 75, 85 ) NameTextEntry:SetText( "Sample String" ) NameTextEntry.OnEnter = function( self ) Nom = self:GetValue() net.Start("SendNameToTheServer") net.WriteEntity(ply) net.WriteString(Nom) net.SendToServer() end
end
Et dans le dossier server vous faites un fichier et vous mettez ceci :

Code:
util.AddNetworkString("OpenPanel")
util.AddNetworkString("SendNameToTheServer")
local function TriggerOpenPanel(ply) net.Start("OpenPanel") net.Send(ply)
end
hook.Add("PlayerSpawn", "WhenThePlayerSpawn", TriggerOpenPanel)
net.Receive("SendNameToTheServer",function(len, ply) NomSV = net.ReadString() JoueurSV = net.ReadEntity() -- Et là vous faites ce que vous voulez avec ces variables
end)
Et normalement ça devrait marcher
De base il avait donné tout son panel donc y'a pas que ça, j'ai juste remplacé le TextEntry et rajouté 2-3 trucs.
 
Discord d'entraide
Rejoignz-nous sur Discord