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

Помощь по Ren'Py (Вопрос\Ответ)

Admin

#1
Сюда пользователи сайта могут писать вопросы о тех или иных функциях движка Ren'Py, а мы попытаемся на них ответить:)

JustSpace

#526
Cпасибо большое, dmit! Не хотел, юзать паузу, но, видимо, другого пути нет, ну да ладно. Afm поставил на 4, а слайдер отключил ток в некоторых частях игры. В 90%-95% случаев слайдер включён, и книгу можно листать) Ну и ещё раз большое спасибо, ибо я не мог это нигде загуглить, и на lemma soft forums мне никто не ответил, ну и ты единственный, кто смог помочь

CHMOnika

#527
Код

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00start.rpy", line 203, in script call
    if not _restart and auto_load and renpy.can_load(auto_load):
  File "renpy/common/00keymap.rpy", line 446, in script
    python hide:
  File "renpy/common/00keymap.rpy", line 446, in <module>
    python hide:
  File "renpy/common/00keymap.rpy", line 456, in _execute_python_hide
    renpy.load("_reload-2")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "renpy/common/00start.rpy", line 203, in script call
    if not _restart and auto_load and renpy.can_load(auto_load):
  File "renpy/common/00keymap.rpy", line 446, in script
    python hide:
  File "D:\renpy-7.1.3-sdk\renpy\ast.py", line 881, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "D:\renpy-7.1.3-sdk\renpy\python.py", line 1913, in py_exec_bytecode
    exec bytecode in globals, locals
  File "renpy/common/00keymap.rpy", line 446, in <module>
    python hide:
  File "renpy/common/00keymap.rpy", line 456, in _execute_python_hide
    renpy.load("_reload-2")
  File "D:\renpy-7.1.3-sdk\renpy\loadsave.py", line 730, in load
    log.unfreeze(roots, label="_after_load")
  File "D:\renpy-7.1.3-sdk\renpy\python.py", line 1868, in unfreeze
    self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
  File "D:\renpy-7.1.3-sdk\renpy\python.py", line 1696, in rollback
    raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?

Windows-7-6.1.7601-SP1
Ren'Py 7.1.3.1092
"Название новеллы"
Mon Mar 04 16:57:21 2019


Вот такая вот шняга вылетает, хотела добавить галерею, но что-то пошло не так wow
Сообщение отредактировал CHMOnika - Понедельник, 04/Мар/2019, 15:59
Вареник

CHMOnika

#528
Цитата dmit ()
Вы взяли галерею из документации?


Да, видимо в этом проблема?

UPD:
Я что-то намутила, вылезло теперь такое ХД
Прикрепления: 2017392.png (12.7 Kb)
Сообщение отредактировал CHMOnika - Среда, 06/Мар/2019, 11:21
Вареник

GCStudio

#530
Всем привет. Есть запырка с функцией.
В общем, есть несколько переменных, пусть будут name1, ..., nameN
Нужна функция, которой будут скармливаться имя переменной и значение, и которая должна, в том числе, присваивать переменной нужное значение.

вызов из кода игры идет как-то так:

Код
$ myfunc  (name1, 2)


Поначалу написал какой-то такой вариант:
Код
init python:
   def myfunc (fname, amount):
        fname1 = amount


Закономерно не работает. Можно сделать вот таким костылем, в объявлением возможной пемеренной, сравнением итд, тогда работает, но нафиг некрасиво и геморно. И в перспективе список переменных будет сильно расширяться.

Код
init python:
   def myfunc (fname, amount):
       global name1
       if fname == name1:
           name1 = amount


Как-бы это сделать попроще и красивее? Чтобы хотя бы не объявлять весь список переменных в функции?
Сообщение отредактировал GCStudio - Понедельник, 08/Апр/2019, 14:50

TGrave

#531
Если речь о динамическом доступе к глобальным переменным, то можно так:
Код
globals()[fname] = amount

А можно просто сделать глобальный словарь:
Код
global var_dict
var_dict[fname] = amount

Ну и обращаться к нему через var_dict. Только нужно не забыть его инициализировать где-то в начале:
Код
global var_dict
var_dict = {}

GCStudio

#532
Нет, не работает. Сделал вот такой примерчик в IDLE

Код
def myfunc (fname, amount):
    globals()[fname] = amount

a = 0
myfunc  (a, 2)
        
print a    


И на выхлопе все равно ноль получил. Или объявлять прям обязательно? Со словарем тоже довольно много возни заполнять его. И это не проще, чем просто сделать перечисление всех возможных для этой функции переменных.
Сообщение отредактировал GCStudio - Понедельник, 08/Апр/2019, 15:36

TGrave

#533
Так функции передавать нужно имя переменной, а не ее саму :)
Код
> myfunc ("a", 2)
> a
2
>
Сообщение отредактировал TGrave - Понедельник, 08/Апр/2019, 15:36

TGrave

#536
Реплики можно переключать, если передавать параметр interact=False, например:
Код
renpy.say(eileen, "Hello! You do not have to click after this line, just wait 3 seconds", interact=False)
renpy.pause(3.0)
Сообщение отредактировал TGrave - Понедельник, 08/Апр/2019, 17:45

Nary

#538
Еще вопрос, можно ли как-то использовать это в input().Я хочу сделать ввод пользователя на время.Допустим викторина какая-нибудь и у пользователя 15 секунд,чтобы ввести ответ.

СОНЦЕ

#539
Цитата Nary ()
Еще вопрос, можно ли как-то использовать это в input().Я хочу сделать ввод пользователя на время.Допустим викторина какая-нибудь и у пользователя 15 секунд,чтобы ввести ответ.

перед строчкой с инпут показать скрин, который пихнет юзера на лейбл, если юзер тупит. например
Код

default answer = ''
screen s():
    timer 15 action If("answer = ''",
        true = Jump('slowpoke'),
        false = Return())

label start:
    show screen s
    $answer = renpy.input('Сколько будет два плюс два')
    if answer.strip().lower() in ['4','четыре']:
        'молодец'
    else:
        'дурачек'
    return

label slowpoke:
    'тугодум'
    return

Поиск: