Jump to content

[Help] DrawHUD after logged


Recommended Posts

Yo! Je suis nouveau sur cette commu' FR, enfin, c'est l'un de mes premiers messages sur cette section, avant ça, je me rendais seulement dans la partie Scripting, m'enfin bref!

Je viens donc faire appel à votre talent pour m'aider sur un soucis qui persiste depuis quelques temps, je vous drop le lien du sujet que j'ai fais en anglais: viewtopic.php?f=91&t=91240

Je résume tout de même:

J'ai créé une fenêtre de login là ou, il faut entrer ses identifiants pour se connecter, là n'est pas le soucis, une fois en jeux, j'aimerai que le HUD s'affiche, pour ça:

J'ai au début utilisé un "state" mais j'ai eu une meilleure idée: Celle de fonctionner avec une donnée dans la BDD, étant donné que j'en avais une, "connecter" qui s'update quand le joueur est en jeu et s'est log.

Voici mon code:

datHud = getElementData(getLocalPlayer(), "connecter") 
addCommandHandler("datHud", function () 
    outputChatBox("datHud Status:"..datHud) 
end) 
function drawHud() 
    if datHud == "1" or 1 then 
        outputChatBox("1: datHud Status:"..datHud) 
        -- HUD CODE 
        addEventHandler("onClientRender", getRootElement(), drawHud) 
    else 
        removeEventHandler("onClientRender", getRootElement(), drawHud) 
        outputChatBox("ELSE: datHud Status:"..datHud) 
    end 
end 

Ne faites pas gaffe au Command Handler au dessus, c'est pour checker justement la valeur qu'il me retourne, idem à l'intérieur de la fonction.

En jeu, quand je fais ma CMD pour tester qu'est ce qu'il me retourne, il me dit que j'obtiens 1 mais, le script pour draw le hud ne se lance pas..

Apparemment, cette section n'est pas beaucoup active, mais je poste quand même pour faire un peu connaissance avec vous! Désolé de ce paté! ;)

Link to comment
  • Moderators

Bonsoir,

C'est effectivement une bonne idée d'utiliser un element data sur le joueur pour savoir s'il est en mode connecté ou non.

Donc du côté serveur, j'imagine qu'une fois le login passé côté serveur, tu fais un petit:

setElementData(thePlayer, "connecter", true) 

Et côté client, il suffit de se mettre dans onClientRender pour draw le hud mais avec un if pour vérifier qu'il soit logué:

function drawHud() 
    local isLoggedIn = getElementData(localPlayer, "connecter") 
    if not isLoggedIn then return end -- S'il n'est pas connecté, on arrête l'exécution de la fonction 
     
    -- On draw le hud ici: 
     
end 
addCommandHandler("onClientRender", root, drawHud) 

INFO: les scripts client et serveur possèdent des variables prédéfinies comme le localPlayer ou le root qui sont respectivement équivalent à getLocalPlayer() et getRootElement()

Une liste complète des variables prédéfinies est disponible ici: viewtopic.php?f=91&t=39678#p403110 (déroule les spoilers)

Sinon merci d'avoir posté dans la section FR pour la rendre un peu plus active.

PS: Ton post ? Un Pavé ? T'as pas dû voir mes réponses à certains posts. :mrgreen:

Cordialement,

Citizen

Link to comment

Bonsoir,

Oui, tu as raison, l'element data fonctionne, c'est utile pour restart la ressource sans besoin de se relog.

Pour les pré-définies, certes, j'en connaissais car j'apprends sur le tas, mais je ne savais pas vraiment dans quels circonstances elle devaient être utilisé, donc, j'utilisais un peu n'importe lesquels héhé.

J'ai corrigé ce que tu m'as envoyé, tu m'as rendu un "addCommandHandler" pour un event, j'ai changé ça, le hud est affiché mais, tout le temps.

Tu as mis cette ligne:

local isLoggedIn = getElementData(localPlayer, "connecter") 

Le truc, c'est que nul part, ils me disent si il est de 1, alors.. Du coup j'ai remplacé le "then return end" par: "then return else" puis j'ai draw le hud et fini par un end.

Mais rien n'y fait, le hud est toujours affiché lorsque je suis sur le panel de connexion, pourtant: ma commande /status pour checker si je suis connecter ou pas envoie 0 sur le panel et 1 en jeu, donc elle marche.

Héhé si ça peut rendre cette section active et que je peux aider d'autres personnes selon mes compétences, c'est un plaisir.

On est deux alors à faire des pavés :P

Cordialement,

Wumbaloo

Link to comment

Et t'as l'air de t'y connaitre vachement, ça te dérange pas si je t'embêtes souvent quand j'ai des erreurs? Histoire de rendre cette section active et, si tu n'as rien à faire, sinon, je continuerai comme je fais actuellement pour ne pas trop vous emebeter.

Link to comment
  • Moderators

désolé mais j'avais clairement dit que tu devais mettre la valeur à true après le login et non à 1

tu fais un petit:
setElementData(thePlayer, "connecter", true) 

Et ducoup mon if aurait fonctionné parce que

if isLoggedIn then 

c'est la même chose que d'écrire

if isLoggedIn == true then 

donc c'est sure que si je récupère 1 au lieu de true dans isLoggedIn, 1 n'est pas égal à true donc ça passe pas.

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...