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

Christopho

  • Administrator
  • Hero Member
  • *****
  • Posts: 1173
    • 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

  • Hero Member
  • *****
  • Posts: 551
    • 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

  • Guest
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) [Select]
  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

  • Hero Member
  • *****
  • Posts: 551
    • 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

  • Guest
Re: Problèmes de compatibilités [scripts savegames]
« Reply #19 on: April 04, 2017, 10:10:31 pm »
Code: (lua) [Select]
local game_manager = {}

local initial_game = require("scripts/initial_game")

-- Starts the game from the given savegame file,
-- initializing it if necessary.
function game_manager:start_game(file_name)

  local exists = sol.game.exists(file_name)
  local game = sol.game.load(file_name)
  if not exists then
    -- Initialize a new savegame.
    initial_game:initialize_new_savegame(game)
  end
  game:start()

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

MetalZelda

  • Hero Member
  • *****
  • Posts: 551
    • 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) [Select]
-- Existing file.
    local game = game_manager:start_game(file_name)
    games[i] = game
     
    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) [Select]
local game = sol.game.load(file_name)
    games[i] = game
    draw_hearts(game, surface)

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

Jerelink

  • Guest
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) [Select]
local game = game_manager:start_game(file_name)par:
Code: (lua) [Select]
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

  • Hero Member
  • *****
  • Posts: 551
    • 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

  • Guest
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) [Select]
local function draw_hearts(game, game_surface)

  local life = game:get_life()
  local max_life = game:get_max_life()
  for j = 1, max_life do
    if j % 2 == 0 then
      local x, y
      if j <= 20 then
        x = 40 + 4 * j
        y = 0
      else
        x = 40 + 4 * (j - 20)
        y = 8
      end
      if life >= j then
        hearts_img:draw_region(0, 0, 8, 8, game_surface, x, y)
      else
        hearts_img:draw_region(16, 0, 8, 8, game_surface, x, y)
      end
    end
  end
  if life % 2 == 1 then
    local x, y
    if life <= 20 then
      x = 40 + 4 * (life + 1)
      y = 0
    else
      x = 40 + 4 * (life - 19)
      y = 8
    end
    hearts_img:draw_region(8, 0, 8, 8, game_surface, x, y)
  end
end

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

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