- Initiateur de la discussion
D3YM0NYT
Je vie dans un igloo
- Messages
- 154
- Score réaction
- 16
- Points
- 125
This message has been be deleted by the user
Dernière édition:
Je trouve qu'il est pas mal mon derma ^^ Surtout que j'ai juste 3 DermaPanel... J'ai celui de l'interface, un kick menu et un ban menuRayZz à dit:Bonjour,
Pas trop trop mal pour un premier addons, en revanche, il serait peut être préférable pour toi d'attendre de faire des choses plus compliqués et avec un meilleur derma surtout ^^ avant de présenter tes créations
D3YM0NYT à dit:Je trouve qu'il est pas mal mon derma ^^ Surtout que j'ai juste 3 DermaPanel... J'ai celui de l'interface, un kick menu et un ban menu
(tu peux mettre local devant) grade { -- tu le mets le nom que tu veux
["superadmin"] = true,
["admin"] = true,
}
if grade [ply:GetUserGroup()] then -- tu dois remettre le nom de ton tableau
Coté serveur :
AddCSLuaFile("autorun/client/cl_menu.lua")
include("core/sh_config.lua")
util.AddNetworkString("ouverturedumenud3y") -- on enregistre le net on peut le faire uniquement côté serveur
hook.Add( "PlayerSay", "DPanel", function( ply, text, team ) if text == "!panel" then net.Start("ouverturedumenud3y") -- on débute le net lorsque le joueur écrit !panel net.Send(ply) --on envoie l info au joueur return "" end
end)
Coté client :
-- A la place de la ligne ConCommand, tu peux mettre ça :
net.Receive("ouverturedumenud3y", function(len) -- on reçoit le net que l'on a envoyé côté serveur local ply = LocalPlayer() -- Vu que tu utilises souvent le ply on dit a quoi il correspond
La suite de ton code habituel.
D3YPanel = D3YPanel or {} -- le nom que tu veux
D3YPanel.unnom = Color(255,255,255) -- tu peux mettre ce que tu veux
D3YPanel.unautrenom = SetPos(150,150)
-- Après tu remplaces dans ton script
NonHosgor à dit:suffit de remplacer par and
Avec une variable local c’est mieuxHosgor à dit:je te conseille de faire un tableau :
C#:grade { -- tu le mets le nom que tu veux ["superadmin"] = true, ["admin"] = true, } if grade [ply:GetUserGroup()] then -- tu dois remettre le nom de ton tableau
pour le and je me suis mal exprimé autant pour moi, quand j'ai testé le script le premier grade était fonctionnel mais pas le deuxième. Du coup j'ai changé le or pas and. Ca a fonctionné, j'ai donc voulu dire qu'il y avait une deuxième possibilité .ZarosOVH à dit:Non
Avec une variable local c’est mieux
Le reste flemme de lire, le mode arc-en-ciel m’a donner mal de tête
Préfères utiliser https://wiki.garrysmod.com/page/GM/OnPlayerChat lorsque tu n’as pas réellement besoin du côté serveur, ça permet d’eviter un surplus de requêteHosgor à dit:Bonjour !
Alors j'ai regardé de mon côté et j'ai vu selon moi pas mal de petits problèmes.
Les problèmes que je vais citer, sont les problèmes qui selon moi peuvent gêner !
1 problème:
Lorsque j'ai testé l'ouverture du panel pour la première fois, il n'y a que le premier grade qui a fonctionné
Regarde la pièce jointe 13650
En Admin j'avais la possibilité d'ouvrir le panel mais pas en Superadmin j'ai donc remplacé le or par and et pour ma part, c'est devenu fonctionnel (à tester)
Imaginons que je souhaite rajouter un grade modérateur, ce n'est pas forcément le plus clean d'utiliser ta technique, je te conseille de faire un tableau :
C#:(tu peux mettre local devant) grade { -- tu le mets le nom que tu veux ["superadmin"] = true, ["admin"] = true, } if grade [ply:GetUserGroup()] then -- tu dois remettre le nom de ton tableau
2 problème :
J'ai vu que pour ouvrir ton panel, tu avais crée une ConCommand.Add, pour ma part je n'utilise pas cette technique, je ne pourrai donc pas dire si elle est opti. Cependant je pense qu'il est plus commun d'utiliser des nets pour créer justement l'ouverture du panel
C#:Coté serveur : AddCSLuaFile("autorun/client/cl_menu.lua") include("core/sh_config.lua") util.AddNetworkString("ouverturedumenud3y") -- on enregistre le net on peut le faire uniquement côté serveur hook.Add( "PlayerSay", "DPanel", function( ply, text, team ) if text == "!panel" then net.Start("ouverturedumenud3y") -- on débute le net lorsque le joueur écrit !panel net.Send(ply) --on envoie l info au joueur return "" end end) Coté client : -- A la place de la ligne ConCommand, tu peux mettre ça : net.Receive("ouverturedumenud3y", function(len) -- on reçoit le net que l'on a envoyé côté serveur local ply = LocalPlayer() -- Vu que tu utilises souvent le ply on dit a quoi il correspond La suite de ton code habituel.
3 problème :
Lorsque tu "travailles" dans autorun, il me semble que tu n'as pas besoin d'inclure des fichiers (avec include) ou (avec
AddCSLuaFile) il se relie presque automatiquement, ce qui veut dire qu'il faut faire attention au nom que tu donnes car si tu le souhaites tu pourras réutiliser le net que tu as mis dans ce script. ( Il est important de mettre des noms en rapport avec ton script)
Bien sur si tu crées des fonctions local etc tu ne pourras pas les utiliser dans tes autres scripts.
Je parle ici des net ou du fichier config qui peuvent être utilisé dans plusieurs scripts.
4 problème :
Dès que tu veux vérifier si un joueur est "Superadmin" ou "admin", il faut au maximum le faire coté serveur, on te le dira souvent mais si tu vérifies le grade du joueur coté client, il ne faut pas oublier que tout le monde peut modifier son jeu coté client.
La solution pour le fichier config :
Du coup tu n'as plus qu'a créer un fichier dans le autorun de ton script et tu commences par :
C#:D3YPanel = D3YPanel or {} -- le nom que tu veux D3YPanel.unnom = Color(255,255,255) -- tu peux mettre ce que tu veux D3YPanel.unautrenom = SetPos(150,150) -- Après tu remplaces dans ton script
Pour terminer je rejoins l'avis de Rayzz, sur le "design" qui reste très simpliste. Tu pourras essayer d'aligner la colonne rank avec le grade. Après ce n'est pas le plus important mais, il faut quand même y porter un minimum d'attention
Tout ce que je t'ai dis n'est que mon Avis, il y a des personnes bien plus expérimenté que moi, donc s'ils ont des avis ou des conseils.
Je suis preneur
Merci de l'info, c'est vrai que j'avais jamais fait attention à ce hookthepsyca à dit:Préfères utiliser https://wiki.garrysmod.com/page/GM/OnPlayerChat lorsque tu n’as pas réellement besoin du côté serveur, ça permet d’eviter un surplus de requête