Bonjour à tous ,
Je débute :D merci pour votre temps: voici ma question : Comment faire démarrer un dialogue après avoir obtenu un objet(ici l'épée)?
voici le script de la map
local map = ...
local game = map:get_game()
function uncle:on_interaction()
if game:set_ability("sword",1) then -- VOICI MON PROBLÈME = je n'arrive pas a faire comprendre au moteur
que je possède l'épée !!! tout le reste fonctionne bien :)
game:start_diaolog("uncle.finish")
else
if game:get_value("uncle_sword_quest_started") then
game:start_dialog("uncle.done")
door_switch:set_enabled(true)
else
game:start_dialog("uncle.sword", function(answer)
if answer == 3 then -- non
game:start_dialog("uncle.no")
else -- oui
game:start_dialog("uncle.yes")
game:set_value("uncle_sword_quest_started", true)
door_switch:set_enabled(true)
sol.audio.play_sound("door_open")
end
end)
end
end
end
J'ai déjà essayer avec game:get_ability et game has_ability message d'erreur pour les deux
Merci pour vos réponse.
Pour reprendre la réponse de Diarandor sur les forums solarus :
Afin de tester l'état d'une capacité, il faut faire :
if game:get_ability(<capacité a tester>)==1
--du code
end
Donc, dans ton cas, il faut faire
if game:get_ability("sword")==1
--code si c'est le cas
end
L'erreur venant du fait que tu as repris la syntaxe de set_ability(<capacité a definir>, <nouvelle valeur>)
D'autre part, pour gagner en lisibilité, au lieu de
if <contition>
--du code
else
if <autre condition>
--code
else
--code par défaut
end
end
tu peux faire
if <condition>
--du code
elseif <autre condition>
--autre code
else
--code par défaut
end
pour réduire la hiérarchie des tests (et gagner de la place au passage
J'espère t'avoir aidé à progresser dans ton long apprentissage du Lua ;)
salut PhoenixII merci pour ton aide
J'ai bien testé avec game:get_ability("sword)==1
mais le moteur me renvoi
Error: In on_interaction: [string "maps/cave_link_house.lua"]:17: attempt to call method 'start_diaolog' (a nil value)
la ligne 17 etant game:start_dialog("uncle.finish")
game:get_value("sword") == 1
ne fonctionne pas non plus
J'ai aussi essayé tout un tas d'autre code et fonction mais vraiment je reste bloqué!! :mellow:
Bizarre, pour moi tout semble correct, aux erreurs de recopie près (ton message d'erreur fait reference à "game:start_diaolog()" avec un "o" en trop)
(edit : je pense meme que c'est çà l'erreur en fait, ce "o" en trop, vérifie avant de lire la suite de ce post)
(edit 2 : confirmé : ligne 17 de ton code, tu as bien mis
game:start_diaolog("uncle.finish")
^ ici
Y aurait-t-il moyen d'avoir le projet pour vérifier si d'autres erreurs ne se cachent pas ? <-- a ne rendre en compte qu'en cas d'autres erreurs
ok c'est bon
cela fonctionne avec la syntax
game:get_ability("sword") ==1
l'erreur etant diaolog() avec le o en trop je suis dslé à force de lire du code depuis hier mes yeux s'embrume
une chose de moins à apprendre (et toujours faire attention à la syntax et l'orthographe bien sur :P)
je te partagerais volontiers le début du projet quand l'intro. sera fini
Merci pour ton aide et ton temps à très vite sur le forum