Форум Anivisual закрыт. Вы не можете создавать новые темы или писать ответы. Форум будет работать в режиме архива.
Пользователи · Поиск по форуму · · · Регистрация

  • Страница 1 из 1
  • 1
Как сохранять достижения в RenPy без библиотеки Steam? Решен

MrDench

#1
Всем привет, всем доброго времени суток, всем чая и шоколада.
Меня зовут Денис, я новенький на этом сайте:)
Возможно я бы тут и не зарегистрировался, если бы не моя беда. Я такой человек, который предпочитает разобраться в проблеме сам, ведь у кого-то наверняка была такая-же проблема... Но увы я чет не нашел:/.
Прошу помощи у вас ребят. Вы моя последняя надежда.

Теперь объясню почему я хочу это сделать без библиотеки стима. Я не планирую выкладывать эту игру в стим или на другие источники, т.к. это будет игра поздравление. У моего хорошего друга скоро будет ДР, а окно достижений полностью не реализовано.
В script.rpy у меня следующая вещь:
init:
define persistant = [""]
$ persistant.achieve1_unlocked = False
$ persistant.achieve2_unlocked = False
$ persistant.achieve3_unlocked = False
$ persistant.achieve4_unlocked = False
$ persistant.achieve5_unlocked = False
$ persistant.achieve6_unlocked = False
$ persistant.achieve7_unlocked = False
$ persistant.achieve8_unlocked = False
------------------------------------------
Оно работает, если все поставить на "True", то мое рукописное окно будет работать. Соответственно вот код самого окна в screens.rpy:

screen achievments:
tag menu
add "gui/achieve/achieve_menu.png"
if persistant.achieve1_unlocked:
imagebutton auto "gui/achieve/achieve1_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve1")
if persistant.achieve2_unlocked:
imagebutton auto "gui/achieve/achieve2_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve2")
if persistant.achieve3_unlocked:
imagebutton auto "gui/achieve/achieve3_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve3")
if persistant.achieve4_unlocked:
imagebutton auto "gui/achieve/achieve4_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve4")
if persistant.achieve5_unlocked:
imagebutton auto "gui/achieve/achieve5_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve5")
if persistant.achieve6_unlocked:
imagebutton auto "gui/achieve/achieve6_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve6")
if persistant.achieve7_unlocked:
imagebutton auto "gui/achieve/achieve7_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve7")
if persistant.achieve8_unlocked:
imagebutton auto "gui/achieve/achieve8_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("achieve8")
imagebutton auto "gui/achieve/menu_%s.png" xpos 0 ypos 0 focus_mask True action ShowMenu("main_menu")
screen achieve1:
tag menu
imagemap:
ground "images/achieve1.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve2:
tag menu
imagemap:
ground "images/achieve2.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve3:
tag menu
imagemap:
ground "images/achieve3.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve4:
tag menu
imagemap:
ground "images/achieve4.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve5:
tag menu
imagemap:
ground "images/achieve5.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve6:
tag menu
imagemap:
ground "images/achieve6.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve7:
tag menu
imagemap:
ground "images/achieve7.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
screen achieve8:
tag menu
imagemap:
ground "images/achieve8.png"
hotspot (0, 0, 1920, 1080) action ShowMenu("achievments")
----------------------------------------------------------------------------------------------------------

Сама проблема - после перезапуска игры, полученные достижения возвращаются в ложное состояние. Т.е. если я зашел в игру сегодня и получил допустим 1 и 5 достижения, то после перезапуска или когда зайду завтра, будет опять 0 открытых достижений.

Вопрос: Можно ли как-то сохранять состояние переменных, чтобы после перезапуска они оставались в своем состоянии? Может когда игра будет скомпилирована, эта проблема с пропаданием состояний переменных пропадет?
Сообщение отредактировал MrDench - Четверг, 03/Дек/2020, 14:27
:)

mephi1984

#2
Уверен на 95% что проблема вот тут:


Код
define persistant = [""]
$ persistant.achieve1_unlocked = False
$ persistant.achieve2_unlocked = False
$ persistant.achieve3_unlocked = False
$ persistant.achieve4_unlocked = False
$ persistant.achieve5_unlocked = False
$ persistant.achieve6_unlocked = False
$ persistant.achieve7_unlocked = False
$ persistant.achieve8_unlocked = False

Просто убери этот код, должно все заработать. В питоне не нужно заранее объявлять или инициализировать переменные.

Для примера, вот как это сделано у меня:


Код
screen main_menu():

    ## Этот тег гарантирует, что любой другой экран с тем же тегом будет
    ## заменять этот.
    tag menu

    style_prefix "main_menu"

    add gui.main_menu_background

    if persistent.menu_unlocked_aliya: # Unlocked Aliya
        add gui.main_menu_background_aliya_unlocked
    else:
        add gui.main_menu_background_aliya_locked


И вот как я ставлю эту переменную в игре:


Код
$ persistent.menu_unlocked_aliya = True

И все работает без дополнительных инициализации

MrDench

#3
Цитата mephi1984 ()
Уверен на 95% что проблема вот тут:
Код
define persistant = [""]
$ persistant.achieve1_unlocked = False
$ persistant.achieve2_unlocked = False
$ persistant.achieve3_unlocked = False
$ persistant.achieve4_unlocked = False
$ persistant.achieve5_unlocked = False
$ persistant.achieve6_unlocked = False
$ persistant.achieve7_unlocked = False
$ persistant.achieve8_unlocked = False

Просто убери этот код, должно все заработать. В питоне не нужно заранее объявлять или инициализировать переменные.

Для примера, вот как это сделано у меня:


Код
screen main_menu():

    ## Этот тег гарантирует, что любой другой экран с тем же тегом будет
    ## заменять этот.
    tag menu

    style_prefix "main_menu"

    add gui.main_menu_background

    if persistent.menu_unlocked_aliya: # Unlocked Aliya
        add gui.main_menu_background_aliya_unlocked
    else:
        add gui.main_menu_background_aliya_locked

И вот как я ставлю эту переменную в игре:


Код
$ persistent.menu_unlocked_aliya = True

Сейчас попробую. Просто, мне пришлось объявлять "persistant", ибо ругался ренпи. Но я вижу что у тебя написано "pesistEnt" и возможно в этом тоже ошибка(у меня). Если это панацея от проблемы, то большое-большое спасибо!:)

Добавлено (03.12.2020, 15:20)
---------------------------------------------

Цитата mephi1984 ()
Уверен на 95% что проблема вот тут:
Код
define persistant = [""]
$ persistant.achieve1_unlocked = False
$ persistant.achieve2_unlocked = False
$ persistant.achieve3_unlocked = False
$ persistant.achieve4_unlocked = False
$ persistant.achieve5_unlocked = False
$ persistant.achieve6_unlocked = False
$ persistant.achieve7_unlocked = False
$ persistant.achieve8_unlocked = False

Просто убери этот код, должно все заработать. В питоне не нужно заранее объявлять или инициализировать переменные.

Для примера, вот как это сделано у меня:


Код
screen main_menu():

    ## Этот тег гарантирует, что любой другой экран с тем же тегом будет
    ## заменять этот.
    tag menu

    style_prefix "main_menu"

    add gui.main_menu_background

    if persistent.menu_unlocked_aliya: # Unlocked Aliya
        add gui.main_menu_background_aliya_unlocked
    else:
        add gui.main_menu_background_aliya_locked

И вот как я ставлю эту переменную в игре:


Код
$ persistent.menu_unlocked_aliya = True

И все работает без дополнительных инициализации

ДА! Ты был прав. Оно и в правду теперь работает. Ты спас мне жизнь и все что можно. Большое спасибо!:))
:)
  • Страница 1 из 1
  • 1
Поиск: