Erreur lua

  • Initiateur de la discussion kirikoumalou
  • Date de début
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Bonjour,
J'ai récemment modifier 2 add-on (Fancy MOTD et Permanent SWEPS)

Pour Permanant SWEPS : j'ai fait en sorte que dès que le joueur spawn une petit fenêtre s'ouvre (sauf si il est user) qui vas lui permettre de prendre ou non ses armes permanantes mais..

Lorsque le joueur spawn pour la premiere fois j'ai cette erreur :
Code:
[ERROR] addons/oxygenerp/lua/autorun/client/cl_oxygene.lua:3: attempt to call method 'GetUserGroup' (a nil value)
2. unknown - lua/includes/extensions/net.lua:32
Après si il respawn tous vas bien et la fenêtre apparaît

Pour Fancy MOTD : j'ai fait en sorte que dès que le joueur spawn, la fenêtre des règles de son job apparaît (sauf si il est Citoyen)

Lorsque le joueur spawn pour la premiere fois j'ai cette erreur :
Code:
[ERROR] addons/fancy_motd_ook/lua/fancy_motd/cl_init.lua:23: attempt to call method 'Team' (a nil value)
2. unknown - lua/includes/extensions/net.lua:32
Après si il respawn tous vas bien et la fenêtre apparaît


Quelqu'un pourrait me dire comme régler ses erreurs ? :'(
Merci, Kirikou.
 
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
Sans la partie du code en question c'est compliquer
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Oh oui pardon.. x)

Donc pour perm swep, de base il y a un Hook à chaque fois que le joueur prend ses armes :
Code:
hook.Add("PlayerLoadout", "GivePermSweps", function(ply) net.Start("want_weapon_serv") net.Send(ply)
end)
J'ai simplement mis un net pour l'envoyer au joueur
il reçois sa :
Code:
net.Receive("want_weapon_serv", function()
local Nonouser = { ["user"]=true, ["user "]=true,
}
if Nonouser[LocalPlayer():GetUserGroup()] then else
local Frame_premium = vgui.Create("DFrame") Frame_premium:SetSize(ScrW()/2,ScrW()/11) Frame_premium:Center() Frame_premium:SetTitle("") Frame_premium:MakePopup() Frame_premium:SetSizable(false) Frame_premium.Paint = function() draw.RoundedBox(0, 0, 0, Frame_premium:GetWide(), Frame_premium:GetTall(), Color(100, 100, 100)) draw.RoundedBox(0, 0, 0, Frame_premium:GetWide(), 40, Color(50, 50, 50)) end
local Label_premium = vgui.Create("DLabel", Frame_premium) Label_premium:SetPos(10, 10) Label_premium:SetSize(300, 20) Label_premium:SetText("Menu armes permanant pour Premium")
local Label_premium1 = vgui.Create("DLabel", Frame_premium) Label_premium1:SetPos(10, Frame_premium:GetTall()/2 - 10) Label_premium1:SetSize(800, 20) Label_premium1:SetText("Voulez-vous prendre ou non vos armes pemanantes ?") Label_premium1:SetFont("FancyMOTD_button")
local DermaButton = vgui.Create( "DButton", Frame_premium ) DermaButton:SetText( "Oui" ) DermaButton:SetPos( 25, Frame_premium:GetTall() - 40 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function() Frame_premium:Close() net.Start("want_weapon") net.WriteEntity(LocalPlayer()) net.SendToServer() end
local DermaButton3 = vgui.Create( "DButton", Frame_premium ) DermaButton3:SetText( "Non" ) DermaButton3:SetPos( Frame_premium:GetWide() - 275, Frame_premium:GetTall() - 40 ) DermaButton3:SetSize( 250, 30 ) DermaButton3.DoClick = function() Frame_premium:Close() end
end
end)
Si il appuis sur oui il envoie au serveur via un autre net la fonction permettant de lui donner ses armes permanantes.

J'ai l'erreur à la ligne 8.

Ps: Merci à @thepsyca pour l'aide avec la table :)
 
Dernière édition:
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Pour ce qui est de FancyMOTD voici le Hook :
Code:
hook.Add( "PlayerSpawn", "NotifiyClient", function( ply, inf, att ) net.Start( "OxygeneRP" ) net.WriteEntity( ply ) net.Broadcast()
end )
Le joueur vas donc faire ceci :
Code:
net.Receive( "OxygeneRP", function( len, pl )
Plyserver = net.ReadEntity()
Plyclient = LocalPlayer() if Plyserver == Plyclient then if team.GetName(LocalPlayer():Team()) != "Citoyen" then RunConsoleCommand("say","!reglejob") end end
end)
Ici, si le joueur qui à spawn est le joueur en local alors il vas dis "!reglejob", ce qui vas lui ouvrir les règles de son job..
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
kirikoumalou à dit:
Oh oui pardon.. x)

Donc pour perm swep, de base il y a un Hook à chaque fois que le joueur prend ses armes :
Code:
hook.Add("PlayerLoadout", "GivePermSweps", function(ply) net.Start("want_weapon_serv") net.Send(ply)
end)
J'ai simplement mis un net pour l'envoyer au joueur
il reçois sa :
Code:
net.Receive("want_weapon_serv", function() local groupuser = LocalPlayer():GetUserGroup() if table.HasValue({"user ", "user"}, groupuser) then else local Frame_premium = vgui.Create("DFrame") Frame_premium:SetSize(ScrW()/2,ScrW()/11) Frame_premium:Center() Frame_premium:SetTitle("") Frame_premium:MakePopup() Frame_premium:SetSizable(false) Frame_premium.Paint = function() draw.RoundedBox(0, 0, 0, Frame_premium:GetWide(), Frame_premium:GetTall(), Color(100, 100, 100)) draw.RoundedBox(0, 0, 0, Frame_premium:GetWide(), 40, Color(50, 50, 50)) end local Label_premium = vgui.Create("DLabel", Frame_premium) Label_premium:SetPos(10, 10) Label_premium:SetSize(300, 20) Label_premium:SetText("Menu armes permanant pour Premium") local Label_premium1 = vgui.Create("DLabel", Frame_premium) Label_premium1:SetPos(10, Frame_premium:GetTall()/2 - 10) Label_premium1:SetSize(800, 20) Label_premium1:SetText("Voulez-vous prendre ou non vos armes pemanantes ?") Label_premium1:SetFont("FancyMOTD_button") local DermaButton = vgui.Create( "DButton", Frame_premium ) DermaButton:SetText( "Oui" ) DermaButton:SetPos( 25, Frame_premium:GetTall() - 40 ) DermaButton:SetSize( 250, 30 ) DermaButton.DoClick = function() Frame_premium:Close() net.Start("want_weapon") net.WriteEntity(LocalPlayer()) net.SendToServer() end local DermaButton3 = vgui.Create( "DButton", Frame_premium ) DermaButton3:SetText( "Non" ) DermaButton3:SetPos( Frame_premium:GetWide() - 275, Frame_premium:GetTall() - 40 ) DermaButton3:SetSize( 250, 30 ) DermaButton3.DoClick = function() Frame_premium:Close() end end
end)
Si il appuis sur oui il envoie au serveur via un autre net la fonction permettant de lui donner ses armes permanantes.

J'ai l'erreur à la ligne 4.
 
  • J'aime
Réactions: kirikoumalou
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
thepsyca à dit:
Le code fonctionne, mais pas la premiere fois où le joueur spawn :/
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Je sais parfaitement que mon code n'est pas le plus joli mais ça suffit et ça fait le taf x)
 
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
C'est normal que ça ne marche que aux spawns qui suivent le premier, tu utilise
"PlayerSpawn"

Au lieu de
"PlayerInitialSpawn"


Donc dans ton Fancy MOTD tu aura

Code:
hook.Add( "PlayerInitialSpawn", "NotifiyClient", function( ply ) net.Start( "OxygeneRP" ) net.WriteEntity( ply ) net.Broadcast()
end )
Par contre ce Hook ne prend qu'un argument, c'est le player
 
  • Initiateur de la discussion
kirikoumalou

kirikoumalou

Lucas Pastel
Messages
1 057
Score réaction
200
Points
260
Le problème c'est que je le veux à chaque fois que le joueur spawn (sauf au spawn "Initial") :/
 
Dernière édition:
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
kirikoumalou à dit:
Le problème c'est que je le veux à chaque fois que le joueur spawn (sauf à spawn "Initial") :/
Ah d'accord j'avais pas compris ça, pour get la team si t'est en darkrp je te conseille de faire:

ply:Team() == TEAM_CITIZEN


donc tu aurais ça:
Code:
net.Receive( "OxygeneRP", function( len, pl )
Plyserver = net.ReadEntity()
Plyclient = LocalPlayer() if Plyserver == Plyclient then if Plyclient:Team() == TEAM_CITIZEN then RunConsoleCommand("say","!reglejob") end end
end)
 
  • J'aime
Réactions: kirikoumalou
Discord d'entraide
Rejoignz-nous sur Discord