[LUA] Mettre timer sur un texte

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

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
Bonjour à tous,
Je viens vers vous aujourd'hui pour une petite question.
Je n'arrive pas à ajouter un timer à un texte qui s'affiche.

Enfaite dans l'addon, je peux acheter les positions de champs. Lorsque je les achète, la position se met sur mon écran (comme dans le screen) : https://prntscr.com/j3drcs

Le problème c'est que le texte reste tout le temps sur l'écran. Je voudrais imaginons qu'au bout de 60 secondes il disparaisse.
J'ai bien trouvé ça
Code:
timer.Create( string identifier, number delay, number repetitions, function func )
Mais je ne sais pas comment le mettre en relation et où avec le code initial:

Code:
 if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != ""then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
J'aurais grandement besoin d'aide s'il vous plait :)

Merci d'avance
Antoine
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Ant00ine à dit:
Bonjour à tous,
Je viens vers vous aujourd'hui pour une petite question.
Je n'arrive pas à ajouter un timer à un texte qui s'affiche.

Enfaite dans l'addon, je peux acheter les positions de champs. Lorsque je les achète, la position se met sur mon écran (comme dans le screen) : https://prntscr.com/j3drcs

Le problème c'est que le texte reste tout le temps sur l'écran. Je voudrais imaginons qu'au bout de 60 secondes il disparaisse.
J'ai bien trouvé ça
Code:
timer.Create( string identifier, number delay, number repetitions, function func )
Mais je ne sais pas comment le mettre en relation et où avec le code initial:

Code:
 if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != ""then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
J'aurais grandement besoin d'aide s'il vous plait :)

Merci d'avance
Antoine
Tout simplement ;)
 
  • J'aime
Réactions: Ant00ine
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
thepsyca à dit:
Tout simplement ;)
D'accord merci, et donc ça fera un truc comme ça?
Code:
 timer.Simple( 20, function() hook.Remove( "SimpleText", "gtav_harvestsystem_info_"..item.."_h" ) end
Je pense que c'est pas dutout ça, mais je suis une réelle quiche o_O
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Code:
 timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end
 
  • J'aime
Réactions: Ant00ine
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
thepsyca à dit:
Code:
 timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end
Merci beaucoup, j'ai réussi par moi même juste avant xD.
Merci encore je passe tout ça en résolu
 
  • J'aime
Réactions: thepsyca
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
@thepsyca désolé encore une fois, mais tout ne fonctionne pas comme prévu. Lorsque je mets donc
Code:
 if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != ""then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
Le premier champ que je cherche, tout fonctionne bien (il disparait après le temps souhaité), mais ensuite lorsque j'en cherche d'autre plus rien n'apparait.
Que je cherche pour le traitement ou la revente.
Saurais tu comment faire, ou d'autre?

Merci
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Ant00ine à dit:
@thepsyca désolé encore une fois, mais tout ne fonctionne pas comme prévu. Lorsque je mets donc
Code:
 if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != ""then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) timer.Simple( 20, function() hook.Remove( "HUDPaint", "GTAV_HarvestSystem_InfoDisplay") end) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
Le premier champ que je cherche, tout fonctionne bien (il disparait après le temps souhaité), mais ensuite lorsque j'en cherche d'autre plus rien n'apparait.
Que je cherche pour le traitement ou la revente.
Saurais tu comment faire, ou d'autre?

Merci
Je passerai pas différent hook.add où je disperserai tout un par un et je remove au fur est à mesure
 
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
thepsyca à dit:
Je passerai pas différent hook.add où je disperserai tout un par un et je remove au fur est à mesure
d'accord je vais test
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Les "hook" ne sont pas ouf, je te conseillerais de passer par les "net"
 
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
Trevili à dit:
Les "hook" ne sont pas ouf, je te conseillerais de passer par les "net"
ok chef SeemsGood
 
  • J'aime
Réactions: Trevili
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
Trevili à dit:
Les "hook" ne sont pas ouf, je te conseillerais de passer par les "net"
Que ce soit des hook ou net, je n'arrive pas à bien les positionner pour que le code fonctionne. J'ai fait de multiples essais mais sans réussite. La première fois, ça fonctionne mais ensuite le hook ne souvre plus.
Saurais tu où je devrais les positionner et me donner un exemple si possible? Je suis un peu dans l'impasse
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Ant00ine à dit:
Que ce soit des hook ou net, je n'arrive pas à bien les positionner pour que le code fonctionne. J'ai fait de multiples essais mais sans réussite. La première fois, ça fonctionne mais ensuite le hook ne souvre plus.
Saurais tu où je devrais les positionner et me donner un exemple si possible? Je suis un peu dans l'impasse
Je n'ai pas le temps de m'y pencher ce soir, mais je regarde ça demain ;)
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Ant00ine à dit:
Que ce soit des hook ou net, je n'arrive pas à bien les positionner pour que le code fonctionne. J'ai fait de multiples essais mais sans réussite. La première fois, ça fonctionne mais ensuite le hook ne souvre plus.
Saurais tu où je devrais les positionner et me donner un exemple si possible? Je suis un peu dans l'impasse
Deja je comprends pas pourquoi tu les as mis en plusieurs ligne avec la même condition a chaque fois, tu aurais pu tout mettre dans la même condition
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Ant00ine à dit:
Que ce soit des hook ou net, je n'arrive pas à bien les positionner pour que le code fonctionne. J'ai fait de multiples essais mais sans réussite. La première fois, ça fonctionne mais ensuite le hook ne souvre plus.
Saurais tu où je devrais les positionner et me donner un exemple si possible? Je suis un peu dans l'impasse
Est-ce que tu as un discord ou autre ou je pourrais te contacter demain pour qu'on vois?
 
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
Trevili à dit:
Deja je comprends pas pourquoi tu les as mis en plusieurs ligne avec la même condition a chaque fois, tu aurais pu tout mettre dans la même condition
ça provient du code initial. Je recherche juste à pouvoir supprimer le texte au bout d'un moment :)
Merci en tout cas
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Ant00ine à dit:
ça provient du code initial. Je recherche juste à pouvoir supprimer le texte au bout d'un moment :)
Merci en tout cas
Essaye avec ce code et tiens moi au courant, je ne l'ais pas test mais ça devrait être bon.

Code:
local timer1 = false
local timer2 = false
local timer3 = false
if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" && timer1 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() timer1 = true if timer1 == true then draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer1 = false end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != "" && timer2 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() timer2 = true if timer2 == true then draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer2 = false end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" && timer3 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() timer3 = true if timer3 == true then draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer3 = false end) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
 
  • Initiateur de la discussion
Ant00ine

Ant00ine

Geek suprême
Messages
455
Score réaction
225
Points
150
Trevili à dit:
Essaye avec ce code et tiens moi au courant, je ne l'ais pas test mais ça devrait être bon.

Code:
local timer1 = false
local timer2 = false
local timer3 = false
if !LocalPlayer().GTAV_HarvestSystem_Point then LocalPlayer().GTAV_HarvestSystem_Point = {} end; for _,item in pairs(LocalPlayer().GTAV_HarvestSystem_Point) do if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") != "" && timer1 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_h") local vpos = gpos:ToScreen() timer1 = true if timer1 == true then draw.SimpleText("Champ de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer1 = false end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") != "" && timer2 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_t") local vpos = gpos:ToScreen() timer2 = true if timer2 == true then draw.SimpleText("Traitement de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer2 = false end) end if LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") != "" && timer3 == false then local gpos = LocalPlayer():GetNWString("gtav_harvestsystem_info_"..item.."_r") local vpos = gpos:ToScreen() timer3 = true if timer3 == true then draw.SimpleText("Revente de "..item, "Trebuchet18", vpos.x, vpos.y-15, Color( 255, 255, 255, 255 ), 1,1 ) draw.SimpleText( math.Round((LocalPlayer():GetPos():Distance(gpos) - 50) / 32).."m", "Trebuchet18", vpos.x, vpos.y, Color( 255, 255, 255, 255 ), 1,1 ) end timer.Simple( 20, function() timer3 = false end) end end
end
hook.Add("HUDPaint", "GTAV_HarvestSystem_InfoDisplay", GTAV_HarvestSystem_InfoDisplay)
Salut, ton code fonctionne mais que partiellement j'ai l'impression. Si tu veux toujours bien m'aider j'ai un ts (ts.boomcityrp.fr) ou alors celui de MTX ;)
 
Trevili

Trevili

Geek
Messages
87
Score réaction
11
Points
85
Ant00ine à dit:
Salut, ton code fonctionne mais que partiellement j'ai l'impression. Si tu veux toujours bien m'aider j'ai un ts (ts.boomcityrp.fr) ou alors celui de MTX ;)
Ok, pas de soucis, je passe dans l'aprem ;)
 
Discord d'entraide
Rejoignz-nous sur Discord