Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах Для разработчиков Ren'Py Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
СОНЦЕ#946pirsus, я думаю тебе нужен layered image
Код layeredimage batgirl: always: 'images/batgirl/regular/body1.png' group bottom: attribute pants default: 'images/batgirl/regular/pants.png' group top: attribute jaket default: 'images/batgirl/regular/jaket.png' group heads: attribute head1 default: 'images/batgirl/regular/head1.png' attribute head2: 'images/batgirl/regular/head2.png' тогда первая голова вызывается через show batgirl а вторая show batgirl head2 РТФМ в любом случае назначать изображение на переменную по хорошему можно только на фазе init только один раз |
pirsus#947Так у меня получается просто 2 разных изображения с разными названиями и batgirl продолжит выводиться с первой головой.
Т.е. предыдущие label не изменит. А можно ли объекту image присвоить значение переменной? Код $ batgirlhead1 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head1.png') image batgirl = "batgirlhead1" Я прописал вот так. Игра не видит ошибки, но при выведение image batgirl, пишет, что "изображение не найдено" Добавлено (24.12.2020, 17:30) Добавлено (24.12.2020, 17:31) |
СОНЦЕ#948Я прописал вот так. Игра не видит ошибки, но при выведение image batgirl, пишет, что "изображение не найдено" Вот так будет работать: Код init python: #вместо знака доллара batgirlhead1 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head1.png') image batgirl = batgirlhead1 #убрать кавычки Сообщение отредактировал СОНЦЕ - Четверг, 24/Дек/2020, 16:48
|
pirsus#949Заметил странную закономерность:
Если image batgirl = "batgirlhead1" прописать в блоке Init, то голова меняется сразу, не зависимо от места команды image batgirl = "batgirlhead2" даже если перед ней прописать if с выполнением условий. А елси прописать image batgirl = "batgirlhead1" уже в label start, то изменение вообще не происходит. image batgirl = "batgirlhead2" просто не исполняется, даже когда должна по коду. Добавлено (24.12.2020, 17:57) Код init python: batgirlhead1 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head1.png') batgirlhead2 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head2.png') image batgirl = batgirlhead1 Init: обычные изображения Код I'm sorry, but errors were detected in your script. Please correct the errors listed below, and try again. File "game/images.rpy", line 23: expected statement. Init: ^ File "game/images.rpy", line 21: invalid syntax image batgirl = batgirlhead1 ^ Ren'Py Version: Ren'Py 7.3.5.606 Thu Dec 24 17:55:02 2020 |
СОНЦЕ#950pirsus, я повторюсь, потому что в данном контексте это очень важно
image можно назначать
в противном случае оно либо не заработает либо будет работать непредсказуемо. переназначения картинок на лету следует устранять, и есть масса способов это сделать, нужно просто выбрать оптимальный для данного случая |
pirsus#952Теперь он мне совсем чушь выдает
Код I'm sorry, but errors were detected in your script. Please correct the errors listed below, and try again. File "game/images.rpy", line 1: expected statement. Init python: ^ File "game/images.rpy", line 21: expected statement. Init: ^ Ren'Py Version: Ren'Py 7.3.5.606 Thu Dec 24 18:47:10 2020 Код Init python: batgirlhead1 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head1.png') batgirlhead2 = LiveComposite( (625, 850), (0, 0), 'images/batgirl/regular/body1.png', (0, 0), 'images/batgirl/regular/trusi.png', (0, 0), 'images/batgirl/regular/lifon.png', (0, 0), 'images/batgirl/regular/pants.png', (0, 0), 'images/batgirl/regular/jaket.png', (0, 0), 'images/batgirl/regular/head2.png') Init: image batgirl = batgirlhead1 |
Ultra_Scream#953pirsus, исправь первую букву в init на маленькую вместо большой, я предполагаю, в этом ошибка. Python - язык регистрозависимый. Ren'Py, будучи написанным на нем, сохраняет это свойство.
Сообщение отредактировал Ultra_Scream - Четверг, 24/Дек/2020, 18:08
Зродились ми великої години З пожеж війни, із полум'я вогнів Плекав нас біль по втраті України Кормив нас гнів і злість на ворогів |
СОНЦЕ#956по выданной части кода неочевидно почему, но подозреваю image по прежнему объявляется несклолько раз. не важно через переменную или напрямую через LiveComposite конструкцию. и так низя
![]() буду настаивать на layeredimage Код define head = 1 layeredimage batgirl: always: 'images/batgirl/regular/body1.png' group bottom: attribute pants default: 'images/batgirl/regular/pants.png' group top: attribute jaket default: 'images/batgirl/regular/jaket.png' if head == 2: 'images/batgirl/regular/head2.png' elif head == 3: 'images/batgirl/regular/head3.png' else: 'images/batgirl/regular/head1.png' таким образом картинка везде вызывается одной и той же переменной show batgirl а в месте где нужно подменить голову нужно вместо переназначения картинки, переназначить переменную $head = 2 |
pirsus#957Работает!
каеф! ![]() ![]() ![]() Добавлено (26.12.2020, 19:43) Код label ggturn: $ result = renpy.imagemap("images/fight/fightback.png", "images/fight/fighthover.png", [ (1680, 255, 175, 170, "headpunch"), (1680, 455, 175, 170, "bodypuch"), (1680, 655, 175, 170, "legpunch"), ], focus="imagemap") if result == "headpunch": $ hqhp -= 5 $ hqhp -= [fightpower]jump harleyturn elif result == "bodypunch": $ hqhp -= 3 $ hqhp -= [fightpower]jump harleyturn elif result == "legpunch": $ hqhp -= 3 $ hqhp -= [fightpower]jump harleyturn label harleyturn: $ harleypunch = renpy.random.randint(1,12) $ gghp -= [harleypunch]jump ggturn Собственно вот сам код. Ошибок не выдает. Визуальную карту выводит. Но кнопки неактивны. Не реагируют на наведение и нажатие И сразу второй вопрос: Если я из значения переменной вычитаю значение другой переменной, Запись в квадратных скобках правильная? Код $ hqhp -= [fightpower] Добавлено (26.12.2020, 20:04) |
СОНЦЕ#959pirsus, пока отвечу на простое
Если я из значения переменной вычитаю значение другой переменной, Запись в квадратных скобках правильная? Код $ hqhp -= [fightpower] неправильная, такая запись должна выдавать ошибку в любом случае, хотя имеет определенный философский подтекст ^^ Код $ hqhp -= fightpower думаю то что ты хочешь сделать делается вот так. Остальную часть вопроса поизучаю как руки дойдут. Честно говоря такая реализация даже если и заработает устарела лет на 10 ^^ мне даже интересно откуда ты такое берешь ![]() Такой вопрос: а способен ли ренпай гипотетически оперировать, например, 2 окнами? То есть из основного окна игры, нажав кнопку, открыть еще одно со своим размером и с каким-нибудь интерактивным экраном внутри. можно, у меня например, командами питона паралельно запускался произвольный .exe с нужным окошком. возможно это можно сделать более изящно |
AxelK#960СОНЦЕ, произвольный exe это не совсем то, что нужно. На всякий случай уточню, что имелось в виду создание окна с доступом к общим разделам памяти. Как самый простой пример: небольшое отдельное окошко, отображающее текущие предметы в наличии, то есть, при использовании их в игре, чтоб то второе окно могло реагировать на изменения инвентаря. Хотелось бы в идеале уткнуться в какой-то код, умеющий примерно это.
|
| |||