Résolu : Mourir après avoir ouvert un coffre

Started by Lucifer, January 14, 2018, 06:28:16 PM

Previous topic - Next topic
January 14, 2018, 06:28:16 PM Last Edit: January 29, 2018, 09:33:28 PM by Lucifer
Bonjour à tous,
J'ai fait une map avec Solarus et je voudrais savoir comment faire pour mourir après l'avoir ouvert, s'il vous plaît. Voici mon code :
-- Lua script of map caves/hyrule.
-- This script is executed every time the hero enters this map.

-- Feel free to modify the code below.
-- You can add more events and remove the ones you don't need.

-- See the Solarus Lua API documentation:
-- http://www.solarus-games.org/doc/latest

local map = ...
local game = map:get_game()

-- Event called at initialization time, as soon as this map is loaded.
function map:on_started()

  -- You can initialize the movement and sprites of various
  -- map entities here.
end

-- Event called after the opening transition effect of the map,
-- that is, when the player takes control of the hero.
function map:on_opening_transition_finished()

end

function wrong_chest:on_opened()
  hero:freeze 
  game:start_dialog("out.f6.chest_game.wrong_chest")
  sol.timer.start([map], 1000)
  hero:unfreeze
  game:set_life(0)
end


Et ça me génère une erreur :

Info: Solarus 1.6.0
Info: Opening quest 'C:/Users/Hpo/Desktop/The legend of Zelda Hyrule Adventure'
Info: Sound volume: 100
Info: Music volume: 100
Info: Joypad support enabled: true
Info: 2D acceleration: yes
Info: Turbo mode: no
Info: Video mode: normal
Info: LuaJIT: yes (LuaJIT 2.0.3)
Info: Language: fr
Info: Lua console: yes
Info: Simulation started
Error: Failed to load script 'maps/caves/hyrule': maps/caves/hyrule.lua:28: function arguments expected near 'game'
Info: Simulation finished

Pourriez-vous m'aider, s'il vous plaît?

Bonsoir !

Déjà il y a une erreur concernant ton timer : tu dois placer le code a délayer dans le troisieme arguent sous forme d'une fonction sans nom comme suit:

Code ( lua) Select
sol.timer.start(map, 1000, function() --définition d'un callback appelé a la fin du timer
blablabla
end) --fin du callback du timer

Car sinon tout ce qui est en dessous de l'appel du timer est executé directement.
De plus, utiliser [map] comme argument est faux, les crochets sont ici en trop.
Pour le reste, çà me semble correct.