Aller au contenu

Bienvenue sur le site de l'escadron 131st VFS 'Death Vipers', unité virtuelle évoluant sur le simulateur DCS World

Script LUA



1 réponse à ce sujet

#1

Racoon

    Aviateur

  • Membre
  • PipPipPip

Posté 26 octobre 2019 - 09:36

Quelques trucs sur les tableaux en script LUA (Merci Migow )

Création d'une table logistique_array :
local logistique_array = {"dallas" , "loulou" ,"london" , "hell"}

Appeler l'élément 1 de la table
logistique_array[1]

Création d'une table logistique_array contenant 2 tables:
local logistique_array = {{"dallas" , "loulou"} ,{"london" , "hell"}}

Appeler l'élément 1 de la table 1
logistique_array[1][1]

Création d'une table logistique_array sous la forme de dictionnaire (clé/valeur):
local logistique_array = {groupname = "dallas" , destination = "loulou"}

Appeler la valeur de la clé groupname
logistique_array.groupname

Ajouter la clé toutou avec comme valeur medor
logistique_array.toutou = "medor"

Supprimer cette clé
logistique_array.toutou = nil

Pour ajouter une clé popaul qui contient le tableau {"ronron","miaou"}
logistique_array.popaul  = {"ronron","miaou"}

Bien sur tout cela se combine à souhait, par exemple:
local logistique_array = {{groupname = "dallas" , destination = "loulou"},{groupname = "titi" , destination = "hell"} }

Pour récupérer "hell" par exemple, qui est la valeur de la clé destination du second tableau.
logistique_array[2].destination

Encore un grand merci à Migow pour ces explications. Donc je fais suivre si cela peut servir.
Racoon

#2

Racoon

    Aviateur

  • Membre
  • PipPipPip

Posté 26 octobre 2019 - 09:58

Un autre truc.
Voici une fonction qui active le flag 103 puis appelle une autre fonction resetFlag 2 secondes plus tard.
Sauf que si la fonction resetFlag appelée par scheduleFunction génère une erreur, elle restera au mieux silencieux, au pire affichera une fenêtre d'erreur en pleine mission.

function cargo_fusee(GroupName)
	trigger.action.setUserFlag( 103 , 1)
	timer.scheduleFunction(resetFlag, 103, timer.getTime() + 2)
end

Sur les conseils de Migow, la même fonction, mais cette fois les erreurs silencieux deviennent visibles et la fonction est protégée en passant par le "pcall" et le "if result == false" évitant ainsi les erreurs bloquantes au cours d'une mission. (Corrige moi Migow si j'ai dis une connerie)
Debug = true
function cargo_fusee(GroupName)
	local function Internal_cargo_fusee(GroupName)
		trigger.action.setUserFlag( 103 , 1) --Flag 103
		timer.scheduleFunction(resetFlag, 103, timer.getTime() + 2)
	end
	local result
	local error
	result , error = pcall(Internal_cargo_fusee,GroupName)
	if result == false then
		env.error(error,Debug)
	end

end
Pour ne plus afficher les messages et mettre la mission en "production", il faut passer la variable Degug à false.



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)