Système de notification custom

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

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Bonjour à vous,

Je crée actuellement un système de notification pour mon serveur, mais je rencontre un soucis et j'ai dans un second temps une question.

Donc l'erreur est que si deux notification sont envoyé, la première va se supprimer mais au bout de X temps une erreur va apparaître lorsque le jeu voudra faire l'animation mais que le panel n'est plus valide, donc comment puis-je remédier au problème ?

Code:
function Os_Notify:Nofication() if IsValid( Os_Notify.Firstp ) then Os_Notify.Firstp:Remove() end Os_Notify.Firstp = vgui.Create( "DFrame" ) Os_Notify.Firstp:SetSize( wei * 200, hei * 80 ) Os_Notify.Firstp:SetPos( 0, 5) Os_Notify.Firstp:SetTitle( "" ) Os_Notify.Firstp:SetDraggable( false ) Os_Notify.Firstp:ShowCloseButton( false ) Os_Notify.Firstp:MoveTo( ScrW() / 2 - Os_Notify.Firstp:GetWide() / 2, 5, 1, 0, 0.25, function() timer.Simple( 5, function() Os_Notify.Firstp:MoveTo( ScrW(), 5, 1, 0, 0.25, function() Os_Notify.Firstp:Remove() end) end) end) function Os_Notify.Firstp:Paint( w , h ) draw.RoundedBox(0, 0, 0, w, h, Color(47, 53, 66) ) draw.SimpleText( "Tu n'as pas assez de point", "Os-Font", w / 2, h / 2, Color( 255, 255, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER ) end
end

Ma question est que j'aimerais faire une sorte de Lerp sauf que Lerp n'autorise en temps que entre 0 / 1's donc comment pourrais-je faire pour crée une barre horizontale qui fait la longueur en X temps ?

EDIT : Premier soucis résolu, j'ai mis des vérifications à chaque étape d'animation

Merci à vous
 
  • Initiateur de la discussion
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Bonjour Bonjour,

En continuant à chercher j'ai réussi à faire ma barre d'animation, le problème c'est qu'elle n'est pas fluide.
J'ai essayé en utilisant Lerp mais je pense faire une mauvaise utilisation, si quelqu'un peut m'éclairer ;)

Code:
 timer.Create( "Os_Notify:LerpOrange", 1, len, function() local width = ( (100 / len ) * ( Os_Notify.Firstp:GetWide() / 100 ) ) LerpOrange = Lerp( 1, LerpOrange, LerpOrange - width ) or Os_Notify.Firstp:GetWide() end)
 
Legende

Legende

Geek suprême
Messages
332
Score réaction
75
Points
130
thepsyca à dit:
Bonjour Bonjour,

En continuant à chercher j'ai réussi à faire ma barre d'animation, le problème c'est qu'elle n'est pas fluide.
J'ai essayé en utilisant Lerp mais je pense faire une mauvaise utilisation, si quelqu'un peut m'éclairer ;)

Code:
 timer.Create( "Os_Notify:LerpOrange", 1, len, function() local width = ( (100 / len ) * ( Os_Notify.Firstp:GetWide() / 100 ) ) LerpOrange = Lerp( 1, LerpOrange, LerpOrange - width ) or Os_Notify.Firstp:GetWide() end)
Pour une animation fluide je te conseil d'utiliser Lerp avec FrameTime comme ceci :
Code:
LerpOrange = Lerp( 3*FrameTime(), LerpOrange, LerpOrange - width ) or Os_Notify.Firstp:GetWide()
 
Discord d'entraide
Rejoignz-nous sur Discord