Jump to content

[Résolu] Problème d'affichage avec les fonctions call


Recommended Posts

Ce coup-ci, l'erreur est minime, je me suis inspiré des "useful functions" du wiki pour créer mes propres "dxDrawLoading"

Tout marche à merveille si la fonction que j'execute est interne à ma resource mais lorsque j'utilise les fonction "call" (pour ma part je l'utilise sous le format "exports.resource:fonction(args)"

L'erreur et que lorsque le chargement s'affiche il est directement à 100% et donc, ne part pas de 0% Donc, je me demandais ou était l'erreur, j'envoie les codes.

Voici la fonction qui marche très bien en interne

local start = getTickCount() 
function dxDrawLoading(x, y, width, height, x2, y2, size, color, color2, color3, loadText, second, police) 
    local now = getTickCount() 
    local seconds = second 
    local with = interpolateBetween(0,0,0,width,0,0, (now - start) / ((start + tonumber(seconds)) - start), "Linear") 
    local text = interpolateBetween(0,0,0,100,0,0,(now - start) / ((start + tonumber(seconds)) - start),"Linear") 
    dxDrawText ( loadText.."... "..math.floor(text).."%", x2, y2+1 , width, height, color3, size, police ) 
    dxDrawRectangle(x, y ,width ,height -10, color) 
    dxDrawRectangle(x, y, with ,height -10, color2) 
end 

Voici l'un mes exports:

local start = getTickCount() 
sx ,sy = guiGetScreenSize() 
function drawLoad2() 
    local saTeam = getPlayerTeam(getLocalPlayer()) 
    local r, g, b = getTeamColor(saTeam) 
    local now = getTickCount() 
    exports["Scripts"]:dxDrawLoading(196*sx/800, 482*sy/600, 422*sx/800, 25*sy/600, 196*sx/800, 450*sy/600, 1.00*sx/800, tocolor(0,0,0,120), tocolor(r,g,b,255), tocolor(r,g,b,255), "Démarrage", 7000, "pricedown") 
    if now > start + 7000 then 
        start = getTickCount() 
    end 
end 

Au passage, voici la fonction qui est interne à la resource (celui-ci utilise ma seconde fonction mais les scripts sont identiques à la différence que celui-ci utilise des images):

sx ,sy = guiGetScreenSize() 
function theBarMotor1() 
    local now = getTickCount() 
    dxDrawLoadingImage(196*sx/800, 482*sy/600, 422*sx/800, 25*sy/600, 196*sx/800, 450*sy/600, 1.00*sx/800, "images/fond.png", "images/plein.png", tocolor(255,255,255,255), "Démarrage", 1000, "bankgothic", _, tocolor(255, 255, 255, 255), false, false) 
    if now > start + 1000 then 
        start = getTickCount() 
    end 
end 
addEvent("barMotor1", true) 
addEventHandler("barMotor1", getRootElement(), theBarMotor1) 

Edited by Guest
Link to comment
  • Moderators

Désolé du retard de ma réponse.

Je vois que tu as passé ton titre de topic en Résolu est-ce bien le cas ?

Le problème était la réinitialisation de la variable start qui est seulement accessible à l'endroit où elle à été créée.

Faire un start = getTickCount() va donc fonctionner que si c'est fait en "interne" comme tu dis.

Le faire dans une autre ressource ne va pas modifier le start de la bonne ressource et va juste créer une nouvelle variable start de son côté mais qui n'est pas utilisée.

Le plus simple était donc de créer une nouvelle fonction exportée qui va se charger de faire le start = getTickCount() en interne et que tu appelleras à chaque fois que tu veux remettre le loading à 0%.

Link to comment
Désolé du retard de ma réponse.

Je vois que tu as passé ton titre de topic en Résolu est-ce bien le cas ?

Le problème était la réinitialisation de la variable start qui est seulement accessible à l'endroit où elle à été créée.

Faire un start = getTickCount() va donc fonctionner que si c'est fait en "interne" comme tu dis.

Le faire dans une autre ressource ne va pas modifier le start de la bonne ressource et va juste créer une nouvelle variable start de son côté mais qui n'est pas utilisée.

Le plus simple était donc de créer une nouvelle fonction exportée qui va se charger de faire le start = getTickCount() en interne et que tu appelleras à chaque fois que tu veux remettre le loading à 0%.

C'est bie ce que j'ai fait pour résoudre le problème, avant ça sur le forum anglais on avait tenté de faire et refaire le script de plusieurs façons sans succès.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...