Author Topic: (SOLVED)Problèmes de compatibilités [scripts savegames]  (Read 873 times)

Christopho

  • Administrator
  • Hero Member
  • *****
  • Posts: 1008
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #15 on: April 04, 2017, 09:20:12 pm »
Vérifie que le game que tu passes n'est pas nil. En faisant un print par exemple.

MetalZelda

  • Sr. Member
  • ****
  • Posts: 479
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #16 on: April 04, 2017, 09:27:36 pm »
game est un raccourci pour sol.game.load("sauvegarde dans le dossier d'écriture") six jeunes m'abusent, si une sauvegarde est inexistante, game retournera nil.
« Last Edit: April 04, 2017, 09:29:51 pm by MetalZelda »

Jerelink

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #17 on: April 04, 2017, 09:51:59 pm »
J'ai tenté le print, il affiche "nil".
Si je lance je jeu sans sauvegarde enregistré, tout ce passe bien et je peut commencer une partie. En revanche, avec une sauvegarde, il me renvoi l'erreur mentionné précédemment.
Je précise quand même que le print ne fonctionne que dans "on_started", si je le met a la suite de:
Code: Lua
  1.   local hearts = hearts_builder:new(game, { x = 0, y = 0 })

Alors rien ne se passe.
J'ai pas pour habitude de venir demander de l'aide au premier problème, mais là je sèche totalement '-'.

MetalZelda

  • Sr. Member
  • ****
  • Posts: 479
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #18 on: April 04, 2017, 10:02:13 pm »
J'aimerais bien voir ta fonction game_manager:start_game(file_name)
Les coeurs sont visible a l'écran ?
« Last Edit: April 04, 2017, 10:03:47 pm by MetalZelda »

Jerelink

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #19 on: April 04, 2017, 10:10:31 pm »
Code: Lua
  1. local game_manager = {}
  2.  
  3. local initial_game = require("scripts/initial_game")
  4.  
  5. -- Starts the game from the given savegame file,
  6. -- initializing it if necessary.
  7. function game_manager:start_game(file_name)
  8.  
  9.   local exists = sol.game.exists(file_name)
  10.   local game = sol.game.load(file_name)
  11.   if not exists then
  12.     -- Initialize a new savegame.
  13.     initial_game:initialize_new_savegame(game)
  14.   end
  15.   game:start()

Justement oui, en jeu les cœurs sont présent et fonctionnent parfaitement.

MetalZelda

  • Sr. Member
  • ****
  • Posts: 479
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #20 on: April 05, 2017, 01:11:53 am »
En jeu oui, mais dans ton menu de sauvegarde je parle ^^
Si non, alors il faut charger les 3 sauvegardes dans read_savegame dans une variable par exemple et de l'utiliser quand tu dessines ton menu

Code: Lua
  1. -- Existing file.
  2.     local game = game_manager:start_game(file_name)
  3.     games[i] = game
  4.      
  5.     draw_hearts(game, surface)

N'est pas bon car tu cherches a démarrer les 3 sauvegardes et game:start_game() ne retourne aucune valeur.
Comme dit plus haut, on peut résumer la variable game ici par sol.game.load, ton fichier est chargé, mais n'est aucunement executé, sauf si game:start est appellé, cependant, tu peux modifier et charger des valeures depuis ce dernier. Très utile ici

Code: Lua
  1. local game = sol.game.load(file_name)
  2.     games[i] = game
  3.     draw_hearts(game, surface)

Devrait fonctionner
« Last Edit: April 05, 2017, 01:16:54 am by MetalZelda »

Jerelink

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #21 on: April 05, 2017, 08:11:02 pm »
Alors dans le menu non, aucun affichage. J'ai suivi ton conseil et remplacé:
Code: Lua
  1. local game = game_manager:start_game(file_name)
par:
Code: Lua
  1. local game = sol.game.load(file_name)

Je n'ai plus d'erreur, mais toujours pas de cœur affiché.
J'ai chargé une partie, ça fonctionne. J'ai même lancé un print dans cette condition "else" afin de savoir si celle ci était traité et elle l'est.

MetalZelda

  • Sr. Member
  • ****
  • Posts: 479
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #22 on: April 07, 2017, 10:28:35 pm »
Si il n'y a plus d'erreur alors la seule chose manquante se situe au niveau du on_draw, sois la surface auquel tu dessines tes coeurs, sois le on_draw  du script des coeurs.

Jerelink

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Problèmes de compatibilités [scripts savegames]
« Reply #23 on: April 12, 2017, 12:12:42 am »
J'ai finalement trouvé une solution, je n'ai trouvé d'erreur nul part, du coup j'ai choisi d'utiliser une partie du script de Zelda ROTH:
Code: Lua
  1. local function draw_hearts(game, game_surface)
  2.  
  3.   local life = game:get_life()
  4.   local max_life = game:get_max_life()
  5.   for j = 1, max_life do
  6.     if j % 2 == 0 then
  7.       local x, y
  8.       if j <= 20 then
  9.         x = 40 + 4 * j
  10.         y = 0
  11.       else
  12.         x = 40 + 4 * (j - 20)
  13.         y = 8
  14.       end
  15.       if life >= j then
  16.         hearts_img:draw_region(0, 0, 8, 8, game_surface, x, y)
  17.       else
  18.         hearts_img:draw_region(16, 0, 8, 8, game_surface, x, y)
  19.       end
  20.     end
  21.   end
  22.   if life % 2 == 1 then
  23.     local x, y
  24.     if life <= 20 then
  25.       x = 40 + 4 * (life + 1)
  26.       y = 0
  27.     else
  28.       x = 40 + 4 * (life - 19)
  29.       y = 8
  30.     end
  31.     hearts_img:draw_region(8, 0, 8, 8, game_surface, x, y)
  32.   end
  33. end

Comme ça je n'ai plus a faire appel au script "hearts.lua"  8)

Merci a vous d'y avoir consacré du temps .