• 28 Mars 2024, 18:31:10


Auteur Sujet: [Résolu] Stocker le nom de mon mods dans une variable  (Lu 4931 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Remi

  • *
  • Criminel
  • Développeur de l'extension MTA:DayZ Epoch
  • Messages: 36
    • Voir le profil
Bonjour,

J'aimerais savoir si c'était possible de stocké le nom de mon mods dans une variable. C'est-à-dire que je veux qu'au lieu d'écrire le nom de ma création et bien j'aimerais faire appel à la variable qui appellera elle une function qui comportera le nom de mon mods.

Voici ce que je compte essayer (dès que possible) :

1. Je créer la variable global dans un fichier LUA côté client :
Code: (LUA) [Sélectionner]
addEventHandler("onClientResourceStart", getResourceRootElement(), function()
  eName = "MTA:DayZ Epoch"
end)

2. Et faire appelle à cette variable global dans n'importe quel fichier LUA de ma création, par exemple dans cette function dans un autre fichier LUA côté serveur cette fois :
Code: (LUA) [Sélectionner]
function outputInfo3()
  for i, player in ipairs(getElementsByType("player")) do
    triggerClientEvent(player, "displayClientInfo", player, "Info", "Visitez le site officiel de " ..eName.. " : censure-pour-le-forum.fr", 200, 200, 22)
  end
  setTimer(outputInfo4, infoTimer, 1)
end

Mais est-ce faisable ? Est-ce une bonne solution ? Il y a t-il meilleure solution ?

Merci d'avance pour votre aide (et de l'aide de Citizen, je suis visionnaire  :tongue:)
« Modifié: 23 Mars 2014, 15:10:23 par Remi »

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : Stocker le nom de mon mods dans une variable
« Réponse #1 le: 23 Mars 2014, 04:23:24 »
Bonsoir Remi,

Déjà ton post est relativement confus et tu emplois des termes qui font que ta phrase n'a aucun sens:
je veux qu'au lieu d'écrire le nom de ma création et bien j'aimerais faire appel à la variable qui appellera elle une function qui comportera le nom de mon mods.
Une variable n'appelle en aucun cas une fonction, elle sert à stocker seulement (une donnée comme un nombre, un tableau ou même une fonction).
Ensuite tu sous-entends que tu ne veux pas écrire le nom de ton mod mais que tu veux y avoir accès via une variable. Donc tu vas forcément devoir l'écrire au moins une fois !

Ensuite ton code n'a pas vraiment de sens. Enfin si mais il n'est pas du tout optimisé car tu laisses au serveur la tâche de déclenché l'event displayClientInfo pour tout le monde alors que tout ce code peut rester du côté client.
Il n'est pas non plus nécessaire de faire un boucle pour déclencher un event client pour tous les joueurs, tu peux faire ça à la place:
Code: (lua) [Sélectionner]
triggerClientEvent("displayClientInfo", player, "Info", "Visitez le site officiel de " ..eName.. " : censure-pour-le-forum.fr", 200, 200, 22)En ne précisant aucun élément dans le 1er argument, il va par défaut le déclencher pour l'élément root (getRootElement(), cf le wiki) et donc pour tous les joueurs connectés.

Mais bon dans cet exemple là, tu peux rester entièrement du côté client mais en utilisant du coup triggerEvent ou en appelant directement la fonction si elle fait partie de ton script.

Je pense quand même avoir compris ce que tu veux:
Comment avoir une variable globale accessible à la fois du côté serveur mais aussi du côté client ?
Et ben c'est très simple, on peut faire un setElementData sur l'objet root et il sera automatiquement synchronisé et donc accessible du côté client.
La variable root est un raccourcis à getRootElement()
Plus d'infos sur les variables prédéfinies ici: https://wiki.multitheftauto.com/wiki/Predefined_variables_list

Exemple:
"Set" les variables 1 seule fois au démarrage du serveur:
Code: (lua) [Sélectionner]
setElementData(root, "modName", "MTA:DayZ Epoch")
setElementData(root, "modWebsite", "http://mon-super-site.com")

Ensuite, utilise les n'importe où dans tes fichiers Lua comme dans ce bout de code:
Code: (lua) [Sélectionner]
function myFunction()
local mName = tostring( getElementData(root, "modName") )
local mSite = tostring( getElementData(root, "modWebsite") )
outputChatBox("Visitez le site officiel de "..mName.." : "..mSite, root, 200, 200, 22)
end
setTimer(myFunction, 5*60*1000, 0) --toutes les 5 mins

Voilà j'espère que c'est compréhensible et que j'ai pas répondu à côté de ce que tu demandais réellement.

Cordialement,
Citizen
The rEvolution is coming ...

Hors ligne Remi

  • *
  • Criminel
  • Développeur de l'extension MTA:DayZ Epoch
  • Messages: 36
    • Voir le profil
Re : Stocker le nom de mon mods dans une variable
« Réponse #2 le: 23 Mars 2014, 14:49:12 »
Ah d'accord..  :embarrassed: En faites, mon code était surtout "théorique" pour bien montrer ce que je voulais avoir comme rendu, mais effectivement celui-ci n'avez aucun sens même si ça m'a pas percuté.

En tout cas, cela répond parfaitement à ma demande et je t'en remercie.  :thumbup:

Hors ligne Citizen

  • Scripteur LUA confirmé
  • *
  • Messages: 235
    • Voir le profil
    • Byston Evolution
Re : [Résolu] Stocker le nom de mon mods dans une variable
« Réponse #3 le: 23 Mars 2014, 16:02:32 »
Pas de soucis, amuse toi bien  :wink:
The rEvolution is coming ...