[Lua] Script mal optimisé.

  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Bonjour je viens faire appel à vous car depuis longtemps la communauté aide et est très forte pour résoudre des problèmes ou autres.

J'ai crée un NPC avec interaction, en appuyant sur E un menu (panel) s'ouvre avec 5Catégories sur le côté on va dire 5 pages.
Une ouvre un lien HTML ingame

C'est à dire que ce n'est pas Du tout avec SHIFT tab ou autre.
Le script devait être pour le serveur GtacityRP, je lais confectionné pour le serveur.
Le premier lien ouvre le forue, 2eme boutique, etc... jusqu'à 5.

Sauf que le script marche, mais je passe de 290 fps en solo à 5fps.
En serveur darkrp dédié local (solo), je passe également à 5fps.
Donc mon script est mal optimisé, j'aurais besoin d'aide pour me dire quoi faire car la je suis perdu, j'ai passé deux jours à coder, mais il manque juste l'optimisation...

Sur ceux, merci, en attendant vos réponses.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Fleodon à dit:
Bonjour je viens faire appel à vous car depuis longtemps la communauté aide et est très forte pour résoudre des problèmes ou autres.

J'ai crée un NPC avec interaction, en appuyant sur E un menu (panel) s'ouvre avec 5Catégories sur le côté on va dire 5 pages.
Une ouvre un lien HTML ingame

C'est à dire que ce n'est pas Du tout avec SHIFT tab ou autre.
Le script devait être pour le serveur GtacityRP, je lais confectionné pour le serveur.
Le premier lien ouvre le forue, 2eme boutique, etc... jusqu'à 5.

Sauf que le script marche, mais je passe de 290 fps en solo à 5fps.
En serveur darkrp dédié local (solo), je passe également à 5fps.
Donc mon script est mal optimisé, j'aurais besoin d'aide pour me dire quoi faire car la je suis perdu, j'ai passé deux jours à coder, mais il manque juste l'optimisation...

Sur ceux, merci, en attendant vos réponses.
A 5 fps ? Là c'est plus qu'un problème d'opti... T'es à 5 fps dès qu'il y a le script ou seulement quand t'es dans la page chargée html ?
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Feytone à dit:
A 5 fps ? Là c'est plus qu'un problème d'opti... T'es à 5 fps dès qu'il y a le script ou seulement quand t'es dans la page chargée html ?
Alors,
- Je fais spawn le NPC : 290fps
- Je m'approche du NPC : 290fps
- Je fais "e" sur le NPC : 5fps
- Je reste plus de 4-6secondes dans le panel : Crash du jeu sans message d'erreurs simplement mon jeu qui se ferme.

Mais pourtant j'ai déjà créé des npc pourtant je ne crashais pas pour autant.
De plus, mon script est lourd à mon avis, je dois avoir au total 200lignes de code, mais je me dis les autres scripts de plus de 2000lignes pourquoi ils ne crashent pas, pour moi j'ai foiré un truc mais je ne sais pas quoi?
 
M

Membre supprimé 70413

Anonyme
Vérifie déjà de ne pas créer des fonts dans un point ^^
Sans voir le code c est compliqué
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Slawer à dit:
Vérifie déjà de ne pas créer des fonts dans un point ^^
Sans voir le code c est compliqué
C'est à dire ne pas créer de fonts dans un point ? (J'ai crée deux fonts dans ce sript)
 
M

Membre supprimé 70413

Anonyme
Paint*
Puis ton code sans le voir c est difficile de donner son avis
 
  • J'aime
Réactions: slownls
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Slawer à dit:
Paint*
Puis ton code sans le voir c est difficile de donner son avis
- Voilà une partie du code (création du panel, ouverture via un message networking) : https://prnt.sc/h3bi8o

- 2ème partie (Catégories, les pages on va dire) : https://prnt.sc/h3bjo9
 
M

Membre supprimé 70413

Anonyme
Je vois ça demain
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Ok, merci, je mettrai quelques screens en plus demain.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
hmm envoie plutôt ça dans un pastebin.com
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
M

Membre supprimé 70413

Anonyme
Hastebin.com est mieux selon moi
 
  • J'aime
Réactions: FrenchNeo et slownls
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310

Dans ce screen il n'y a pas de end après
Code:
frame.Paint = function(s, w, h)
Ce qui fait que tout le code après frame.Paint est exécuté en boucle, il faudrait donc faire :
Code:
frame.Paint = function(s, w, h) draw.RoundedBox(0,0,0,w,h,Color(0,102,255,1))
end
 
  • J'aime
Réactions: Membre supprimé 70413
ehtr_sky

ehtr_sky

Geek suprême
Messages
271
Score réaction
87
Points
100
A mon avis, tu dois juste ouvrire 300 fenêtres en appuyant sur le npc .
 
Legende

Legende

Geek suprême
Messages
332
Score réaction
75
Points
130
ehtr_sky à dit:
A mon avis, tu dois juste ouvrire 300 fenêtres en appuyant sur le npc .
Surement , rajoute dans le ENT:Initialize() cette ligne self:SetUseType(SIMPLE_USE) . Pour éviter l'ouverture de plusieurs fenêtres .
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Voila pour la ligjne de code qui crée les pages HTML : https://pastebin.com/DFcEtNBz
Ligne de code "Hook Add" : https://pastebin.com/taniRXMQ
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Je test vos idées IG, je vous dis le résultat après, merci beaucoup ^^ :)
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Bon bah maintenant j'ai le script qui est pas reconnu InGame solo sandbox et en local sur un serveur darkrp.
Voici : https://prntscr.com/h3ft7w
La ligne 117 correspond au "Hook Add"
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Alors j'ai fais quelques test, c'est le 'end' apres drawrounded.. qui foire tout, une fois apres l'avoir enlevé le NPC était dans entités même en rajoutant self:SetUseType(SIMPLE_USE)
cela ne marche pas je reste à 5fps je suis perdu :/
Voila la ligne de code après avoir fait le tout : https://prntscr.com/h3hrq6

J'ai fais le test en supprimant les pages HTML, je tourne vers les 100fps, en rajoutant un panel avec un seul html je tourne sur du 8-13fps
 
Dernière édition:
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Tu veux pas envoyer des pastebin ? Si tu veux de l'aide permet nous de t'aider.

A noter :
1 - Les 5fps sont du à la vitesse d’exécution de la fonction paint d'un des panel (Makss a vu juste)
2 - Sur le dernier screen la fonction envoyée en param dans le net.Receive n'est pas fermée
3 - ents.FindByClass dans un PostDrawOpaqueRenderables est très mauvais; utilise le draw de l'entité à la place. ( ce n'est pas la cause des 5fps mais ca ralentit ton jeu pour rien)
4 - Le problème n'a aucun rapport avec le UseType
5 - T'as un souci avec tes fermetures (end), vérifie ton indentation et que tu fermes bien toutes les fonction au bon endroit.
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Voila le pastebin de cl_init.lua : https://pastebin.com/tQAgvqMB
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
https://pastebin.com/TixYW4fs
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
While True à dit:
https://pastebin.com/TixYW4fs
While True, je te remercie énormément, t'est un dieu !!
Je remercie également la communauté mtx, pour leur réponses rapides, comme dis en haut je sais que vous êtes super forts pour résoudre les problèmes !
Merci vraiment du fond du coeur il me manquait un petit truc pour que le script fonctionne et vous arrivez en mode terminator et vous avez cassez la barraque, j'ai gardé et je garderais toujours une bonne image de la communauté MTX :)
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
Par contre je n'ai plus de text qui s'affiche au dessus du NPC ?
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
C'est parce que la structure de ton addon est mal conçue.

Le script que tu as envoyé n'est pas censé se trouver dans les fichiers du NPC car il ne définit pas le comportement du NPC.
Le script doit être mis à part; par exemple : addons/ton_addon/lua/autorun/client/ton_addon_init.lua

Pour apprendre à bien structurer ton addon, je te conseille de voir les structures de gros projets, voir ce qu'ils mettent dans les NPC et voir les fichiers relatifs aux interfaces utilisateur.
 
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
While True à dit:
C'est parce que la structure de ton addon est mal conçue.

Le script que tu as envoyé n'est pas censé se trouver dans les fichiers du NPC car il ne définit pas le comportement du NPC.
Le script doit être mis à part; par exemple : addons/ton_addon/lua/autorun/client/ton_addon_init.lua

Pour apprendre à bien structurer ton addon, je te conseille de voir les structures de gros projets, voir ce qu'ils mettent dans les NPC et voir les fichiers relatifs aux interfaces utilisateur.
D'accord, merci bien, j'ai un dernier petit soucis si cela ne te dérange pas, j'aimerais créer un bouton "fermer" un peu plus joli que celui de base, pour qu'il n'apparaisse pas "frame:ShowCloseButton( true )" ca je sais faire, il me manque juste ce petit détail de beauté si cela ne te dérange pas, merci ?
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Code:
 local closeButton = vgui.Create("DButton",parent) closeButton:SetPos(parent:GetWide() - 20) closeButton:SetSize(16,16) closeButton:SetText("") closeButton.DoClick = function() parent:Remove() end closeButton.Paint = function(i,w,h) -- redéfini la fonction paint du boutton pour modifier son apparence draw.DrawText( "x", "arial",0, -2, Color( 189, 189, 189), 3 ) end
Je suis certain que tu ne feras que du copier+coller; j'espère me tromper.
Si tu veux apprendre, il faudra à l'avenir d'abord essayer de chercher l'information.
 
  • J'aime
Réactions: Valfunde
  • Initiateur de la discussion
Fleodon

Fleodon

Geek suprême
Messages
819
Score réaction
193
Points
150
While True à dit:
Code:
 local closeButton = vgui.Create("DButton",parent) closeButton:SetPos(parent:GetWide() - 20) closeButton:SetSize(16,16) closeButton:SetText("") closeButton.DoClick = function() parent:Remove() end closeButton.Paint = function(i,w,h) -- redéfini la fonction paint du boutton pour modifier son apparence draw.DrawText( "x", "arial",0, -2, Color( 189, 189, 189), 3 ) end
Je suis certain que tu ne feras que du copier+coller; j'espère me tromper.
Si tu veux apprendre, il faudra à l'avenir d'abord essayer de chercher l'information.
Oui pas de soucis, je ne fais jamais de copier coller.
 
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
Fleodon à dit:
Oui pas de soucis, je ne fais jamais de copier coller.
Bah faut croire que si 4Head
 
Discord d'entraide
Rejoignz-nous sur Discord