[CODAGE] Optimisation LUA

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

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Hey !
Je poste cette nouvelle discussion car @Z3k4 m'a "défoncé" car il n'y avait aucune opti dans mes addons.
Et comme je n'ai jamais eu l’occasion de voir ce qu'étais de l'opti, je demande votre aide pour avoir un tuto/un exemple d'addon qui montre/contient l'optimisation.

J'avais déja pensé à ça :
Code:
function() AdminPage() = (code qu'on veux marquer)
et à chaque fois qu'on en a besoin, on marque ça :
Code:
function() AdminPage()
Je pense moi aussi que je suis complétement à coté de la plaque...
Alors si vous pouvez m'aider, ce serait sympa :)
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Ce qu'il faut que tu comprenent c'est qu'il est beaucoup plus important d'optimisé le coté client que le coté serveur ( qui est généralement pas très remplis ) , je dit pas que le coté serveur n'est pas important mais il est préférable que les joueurs ne se retrouve pas à 10 fps quand ils ouvre ton menu.
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Ce qu'il faut que tu comprenent c'est qu'il est beaucoup plus important d'optimisé le coté client que le coté serveur ( qui est généralement pas très remplis ) , je dit pas que le coté serveur n'est pas important mais il est préférable que les joueurs ne se retrouve pas à 10 fps quand ils ouvre ton menu.
Je comprend, mais as-tu un tuto ou un exemple d'addon opti pour que j'apprenne ?
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
Je comprend, mais as-tu un tuto ou un exemple d'addon opti pour que j'apprenne ?
Franchement non j'ai pas de tuto je fait sa à l'oeil nu , par exemple :

Le Blur ( Donc le flou ) est très consommateur donc il serait préférable de ne pas utilisé le Blur ( c'est pour sa qu'il y'en à pas beaucoup sur Scriptfodder même si la couleur rend bien )

Autre exemple :

Admettons que tu ai à crée 10 entités , ce que tu va faire c'est que tu ne va pas crée 10 fichier mais 1 entitiés qui va ensuite s'accomplir avec 1 fichier config ( et biensur dans le fichier config tu liste tous les entités ) , sa à l'air d'être compliquer je sais moi même je me demande parfois si c'est vraiment moi qui est assis sur cette chaise à écrire :rolleyes:

Un dernier exemple :

Au lieux de crée à chaque fois un FONT ou même autre fonction répétitive et bien tu fait une library et tu y insert toute t'es fonction et cette library fonctionnera avec toute t'es addons ( ce qui optimisera vachement t'es addons étant donner qu'il seront moins charger )

Bon aller un pour la route Kappa :

Evite de rajouter trop de code par exemple sur une frame inutile de préciser qu'il doit etre visible car il est visible de base , exemple

Code:
bg = vgui.Create( 'DFrame' )
bg:SetSize( w, h )
bg:SetPos( x, y )
bg:ShowCloseButton( true )
bg:SetTitle( 'Abc' )
Sur cette frame j'ai pas indiquer ce code

Code:
SetVisible( true )
étant donner qu'il est déjà visible de base.

Et puis pour finir inutile de crée 3 frames , tu crée crée 1 frame et tu y insert des élements comme des labels , donc ce qui fait que si tu à besoin de 3 frames et bien tu te met une claque sur la joue et tu dit NOPE , je fait 1 FRAME et dedans je rend visible ou invisible ce que je souhaite avec ce code biensur KappaPride

Code:
SetVisible( true )
Franchement c'est que dale ce que je t'es présenté la mais c'est un début t'apprendra tous seul petit à petit.

LACHE POCE BLO MON POSTO
 
  • J'aime
Réactions: MrBlackMonkey137, PJGame et Charles10000
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Franchement non j'ai pas de tuto je fait sa à l'oeil nu , par exemple :

Le Blur ( Donc le flou ) est très consommateur donc il serait préférable de ne pas utilisé le Blur ( c'est pour sa qu'il y'en à pas beaucoup sur Scriptfodder même si la couleur rend bien )

Autre exemple :

Admettons que tu ai à crée 10 entités , ce que tu va faire c'est que tu ne va pas crée 10 fichier mais 1 entitiés qui va ensuite s'accomplir avec 1 fichier config ( et biensur dans le fichier config tu liste tous les entités ) , sa à l'air d'être compliquer je sais moi même je me demande parfois si c'est vraiment moi qui est assis sur cette chaise à écrire :rolleyes:

Un dernier exemple :

Au lieux de crée à chaque fois un FONT ou même autre fonction répétitive et bien tu fait une library et tu y insert toute t'es fonction et cette library fonctionnera avec toute t'es addons ( ce qui optimisera vachement t'es addons étant donner qu'il seront moins charger )

Bon aller un pour la route Kappa :

Evite de rajouter trop de code par exemple sur une frame inutile de préciser qu'il doit etre visible car il est visible de base , exemple

Code:
bg = vgui.Create( 'DFrame' )
bg:SetSize( w, h )
bg:SetPos( x, y )
bg:ShowCloseButton( true )
bg:SetTitle( 'Abc' )
Sur cette frame j'ai pas indiquer ce code

Code:
SetVisible( true )
étant donner qu'il est déjà visible de base.

Et puis pour finir inutile de crée 3 frames , tu crée crée 1 frame et tu y insert des élements comme des labels , donc ce qui fait que si tu à besoin de 3 frames et bien tu te met une claque sur la joue et tu dit NOPE , je fait 1 FRAME et dedans je rend visible ou invisible ce que je souhaite avec ce code biensur KappaPride

Code:
SetVisible( true )
Franchement c'est que dale ce que je t'es présenté la mais c'est un début t'apprendra tous seul petit à petit.

LACHE POCE BLO MON POSTO
Je suis un petit peu perdu avec l'opti... t'aurais un addon a me conseiller ?
Et merci pour le mini tuto ;)
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
Je suis un petit peu perdu avec l'opti... t'aurais un addon a me conseiller ?
Et merci pour le mini tuto ;)
Un addon à te conseiller ? J'ai du mal à comprendre ^^
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Un addon à te conseiller ? J'ai du mal à comprendre ^^
un addon gratuit qui contient une forme d'optimisation.
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
un addon gratuit qui contient une forme d'optimisation.
Non désolé ce que je t'es montrer la je le fait personnellement pour mes addons sinon je n'es pas tendance à aller voir d'autre script gratuit ou payant
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Non désolé ce que je t'es montrer la je le fait personnellement pour mes addons sinon je n'es pas tendance à aller voir d'autre script gratuit ou payant
par exemple, si j'ai ceci :
Code:
 local freeze1 = vgui.Create ( "DButton", freezemenu ) freeze1:SetSize( 470, 45 ) freeze1:SetPos ( 15, 50 ) freeze1:SetText("") freeze1.OnCursorEntered = function(self) surface.PlaySound("UI/buttonrollover.wav") self.hover = true end freeze1.OnCursorExited = function(self) self.hover = false end freeze1:SetText("") freeze1.Paint = function(self, w,h) local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) if self.hover then col = BanPanel.Color draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) else draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) end draw.DrawText("Freeze", "aBanPanelFont", w / 2 + 0, h / 2 - 13, col, TEXT_ALIGN_CENTER) end freeze1.DoClick = function() RunConsoleCommand ("ulx", "freeze", v:Nick()) end
pour colorer le bouton, j'utilise cette fonction :
Code:
freeze1.Paint = function(self, w,h) local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) if self.hover then col = BanPanel.Color draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) else draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) end draw.DrawText("Freeze", "aBanPanelFont", w / 2 + 0, h / 2 - 13, col, TEXT_ALIGN_CENTER) end
est-ce possible de la compresser ?
 
P

polio56

Nouveau né
Messages
16
Score réaction
3
Points
25
Ce qu'il veut dire il faut être logique quand tu as une frame tu peux te contenter de celle là aux lieux d'en faire quize mille.
 
P

polio56

Nouveau né
Messages
16
Score réaction
3
Points
25
Oui si tu mets les couleurs en variable
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
P

polio56

Nouveau né
Messages
16
Score réaction
3
Points
25
En gros tu inclus le fichier config et tu fais par exemple le nom de ta couleur = la couleur
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
polio56 à dit:
En gros tu inclus le fichier config et tu fais par exemple le nom de ta couleur = la couleur
avec un
Code:
 button1.DoClick = function() net.Start("button1button1") net.SendToServer() end
?
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
avec un
Code:
 button1.DoClick = function() net.Start("button1button1") net.SendToServer() end
?
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
Et donc pour l'envoyer au config ?
Un fichier config en général c'est une sorte de portail

X = A

Du coup étant donner que X = A tu ne va pas utilisé X tu va utilisé A , désolé je suis nul pour apprendre au autre :(
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Un fichier config en général c'est une sorte de portail

X = A

Du coup étant donner que X = A tu ne va pas utilisé X tu va utilisé A , désolé je suis nul pour apprendre au autre :(
en gros dans le cl_panel je met
Code:
concommand.Add( "OpenSkyPanel", function( ply, cmd, args )
et dans le config je met
Code:
SkyPanel = {}
et après toutes les fonctions
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Non si tu met dans le fichier config

SkyPanel = {}

dans le client tu doit utilisé à chaque fois SkyPanel avant ton portail par exemple :

SkyPanel.CouleurDeFond

SkyPanel.CouleurDuBoutton

SkyPanel.ConsoleCommand

Edit : C'est aussi utilisable coté serveur hein
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Non si tu met dans le fichier config

SkyPanel = {}

dans le client tu doit utilisé à chaque fois SkyPanel avant ton portail par exemple :

SkyPanel.CouleurDeFond

SkyPanel.CouleurDuBoutton

SkyPanel.ConsoleCommand

Edit : C'est aussi utilisable coté serveur hein
Je te montre un de mes bouton :
Code:
 local Exit1 = vgui.Create("DButton", BasePanel1) Exit1:SetSize(40, 15) Exit1:SetPos(452, 8) Exit1:SetText("X") Exit1:SetTooltip("Fermer") Exit1:SetTextColor(Color(0,0,0,255)) Exit1.Paint = function(self,w,h) draw.RoundedBox(3, 0, 0, w, h, BanPanel.Color ) end Exit1.DoClick = function() BasePanel1:Close() end
Et la le BanPanel.Color Se trouve dans le config (BanPanel.Color = Color(230, 92, 78))
C'est bon ?
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Oui sauf qu'il faut oublié que tous en haut de ton fichier config tu doit avoir

BanPanel = {}
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Non si tu met dans le fichier config

SkyPanel = {}

dans le client tu doit utilisé à chaque fois SkyPanel avant ton portail par exemple :

SkyPanel.CouleurDeFond

SkyPanel.CouleurDuBoutton

SkyPanel.ConsoleCommand

Edit : C'est aussi utilisable coté serveur hein
Je te met aussi un autre bouton qui me bouffe enormement de place :
Code:
 local BanMenu = vgui.Create("DButton", BasePanel2) BanMenu:SetSize(465, 45) BanMenu:SetPos(5, 230) BanMenu.OnCursorEntered = function(self) surface.PlaySound("UI/buttonrollover.wav") self.hover = true end BanMenu.OnCursorExited = function(self) self.hover = false end BanMenu:SetText("") BanMenu.Paint = function(self, w,h) local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) if self.hover then col = BanPanel.Color draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) else draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255)) end draw.DrawText("Quitter", "aBanPanelFont", w / 2 + 0, h / 2 - 13, col, TEXT_ALIGN_CENTER) end BanMenu.DoClick = function() BasePanel2:Remove() end
serait il possible de optimiser ça dans le config ?
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Code:
local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255))
Le

local col = Color(100, 100, 100, 255)

Tu peut le mettre dans le fichier config et surtout virée le local qui n'a rien à faire la


Ensuite pourquoi mettre 2 couleur differente qu'alors y'a seulement le dernier qui sera visible ?

Et sa c'est completement inutile tu peut le viré si tu la deja mit dans le fichier config

col = BanPanel.Color
 
RuddyCODE

RuddyCODE

Geek suprême
Messages
298
Score réaction
76
Points
100
Bonjour, je peux te donner un petit wiki francais sur le Lua qui va pouvoir t'aider :
Voici la partie optimisation : http://wiki.extrem-team.com/index.php?title=L'optimisation_du_code_en_Lua
Le wiki : http://wiki.extrem-team.com/index.php?title=Accueil
 
  • J'aime
Réactions: Charles10000
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Code:
local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) draw.RoundedBox(6, 0, 0, w, h, Color(26, 29, 34, 255))
Le

local col = Color(100, 100, 100, 255)

Tu peut le mettre dans le fichier config et surtout virée le local qui n'a rien à faire la


Ensuite pourquoi mettre 2 couleur differente qu'alors y'a seulement le dernier qui sera visible ?

Et sa c'est completement inutile tu peut le viré si tu la deja mit dans le fichier config

col = BanPanel.Color
Voici une petiti opti qui marche :
Code:
 local GoToCommandMenu = vgui.Create("DButton", Base) GoToCommandMenu:SetSize(465, 45) GoToCommandMenu:SetPos(5, 180) GoToCommandMenu.OnCursorEntered = function(self) surface.PlaySound("UI/buttonrollover.wav") self.hover = true end GoToCommandMenu.OnCursorExited = function(self) self.hover = false end GoToCommandMenu:SetText("") GoToCommandMenu.Paint = function(self, w,h) local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, BanPanel.Color1 ) if self.hover then col = BanPanel.Color draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) else end draw.DrawText("Commandes", "aBanPanelFont", w / 2 + 0, h / 2 - 13, col, TEXT_ALIGN_CENTER) end GoToCommandMenu.DoClick = function() Base:Remove() OpenCommandMenu() end
Dit moi s'il y a une faute
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Charles10000 à dit:
Voici une petiti opti qui marche :
Code:
 local GoToCommandMenu = vgui.Create("DButton", Base) GoToCommandMenu:SetSize(465, 45) GoToCommandMenu:SetPos(5, 180) GoToCommandMenu.OnCursorEntered = function(self) surface.PlaySound("UI/buttonrollover.wav") self.hover = true end GoToCommandMenu.OnCursorExited = function(self) self.hover = false end GoToCommandMenu:SetText("") GoToCommandMenu.Paint = function(self, w,h) local col = Color(100, 100, 100, 255) draw.RoundedBox(6, 0, 0, w, h, BanPanel.Color1 ) if self.hover then col = BanPanel.Color draw.RoundedBox(6, 0, 0, w, h, Color(36, 39, 44, 255)) else end draw.DrawText("Commandes", "aBanPanelFont", w / 2 + 0, h / 2 - 13, col, TEXT_ALIGN_CENTER) end GoToCommandMenu.DoClick = function() Base:Remove() OpenCommandMenu() end
Dit moi s'il y a une faute
Je t'es dit de viré sa

local col = Color(100, 100, 100, 255)

Tu met un portail dans le fichier config et pareil pour sa

col = BanPanel.Color
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Je t'es dit de viré sa

local col = Color(100, 100, 100, 255)

Tu met un portail dans le fichier config et pareil pour sa

col = BanPanel.Color
J'ai mit ça :

local col = BanPanel.Color2
 
  • Banni
Esso

Esso

Geek
Messages
178
Score réaction
14
Points
65
Non tu doit mettre

BanPanel.Color2 = La couleur que tu souhaite

Et arrete les local sa te sert à rien pour les couleurs
 
  • Initiateur de la discussion
Charles10000

Charles10000

Geek
Messages
198
Score réaction
11
Points
85
Esso à dit:
Non tu doit mettre

BanPanel.Color2 = La couleur que tu souhaite

Et arrete les local sa te sert à rien pour les couleurs
J'ai cours alors je verrais ça plus tard ^^
 
Discord d'entraide
Rejoignz-nous sur Discord