Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
dmit#676а стоит ли использовать в экране layeredimage? не проще показать файлы цифр по числу? типа:
Код screen nomer(nn=""): frame: align (0.5, 0.1) has hbox for cfr in nn: add cfr Сообщение отредактировал dmit - Четверг, 13/Фев/2020, 08:21
планета FOREVER!!! Unkenbro team
|
СОНЦЕ#677Двачую пост dmit-а. можно вот таким кодом объявить циферки, после чего использовать в скрине напрямую
Код for i in range(10): renpy.image(str(i),Crop((i*16, 0, 16, 16), "digits.png")) А если удастся запустить это через layeredimage, кинешь в меня исходником плз. Потому что судя по всему на переменные многократно оно реагирует только в команде if. в остальных местах берет значение один раз и навсегда. Кстати, как вариант - картинку с циферками в ряд можно зарегистрировать как шрифт и дальше толкать как обычный текст - оно будет писать этим шрифтом. примерно так. Код init python: renpy.register_sfont(u'my_num_font',22,filename='digits.png',charset='0123456789') money = 1234567890 label main_menu: return label start: scene expression '#aaa' show expression Text(str(money),font='my_num_font',size=22,color='#fff') at truecenter pause return а файл sfont шрифта - это буквально символы в ряд. только еще для парсинга ему нужна магентовая точка в левом верхнем углу над каждым символом. вот для примера Вот тут подробнее про то как самому рисовать и регистрировать для ренпи шрыфты https://www.renpy.org/doc....d-fonts Прикрепления:
2458931.png
(6.6 Kb)
|
AxelK#681dmit , СОНЦЕ : спасибо за подсказки
. Свой шрифт в данном месте, пожалуй, ни к чему. Хочу отобразить автоматом весь экран вообще (по идее) Кроме денег надо несколько других параметров "градусниками" и числами, время суток, день недели и т.д. Через Layeredimage не выходит. Попробовал сделать экран. Не знаю, можно проще или нет Код ## Generic frames. define gui.frame_borders = Borders(0, 0, 0, 0) ~~~ python: # создание картинок for i in range(10): renpy.image('money_%d' % i, Crop((i*16, 0, 8, 16), "util.png")) renpy.image('money_a', Crop((160, 0, 8, 16), "util.png")) # это графическое изображение точки # вспомогательная функция # добавляю точку для тысяч def format_money (a): if a < 1000: return str(a) return '%da%d' % (int(a/1000), int(a%1000)) screen money (nn=""): frame style "money_frame": has hbox for cfr in nn: add 'money_%s'%cfr screen Stats: modal False zorder 0 style_prefix "stats" window: add "frame.png" use money (format_money (money)) style money_frame: xpos 600 ypos 20 xanchor 1.0 # чтоб прижималось к правому краю style stats_window is empty style stats_window: xpos 0 ypos 0 xsize 640 ysize 400 $ money = 0 show screen Stats pause $ money = 10 pause $ money = 200 pause $ money = 304050 pause |
dmit#683СОНЦЕ подвиг на создание примера и с SFont шрифтом - пример
планета FOREVER!!! Unkenbro team
|
AxelK#685Касательно перекрашенной картинки с прошлой страницы.
Всё бы ничего, но с такой картинкой на экране нельзя делать save/reload Код I'm sorry, but an uncaught exception occurred. While running game code: File "renpy/common/00action_file.rpy", line 372, in __call__ renpy.save(fn, extra_info=save_name) TypeError: no default __reduce__ due to non-trivial __cinit__ (perhaps renpy.game.log.log[9].context.scene_lists.layers[u'master'][0].displayable.raw_child.child_surf = <Surface(512x288x32)>) Я так понимаю, к классу class MyBlit(renpy.Displayable): Надо доопределить еще какой-то стандартный метод типа __reduce__ ? Или чего-то вроде имени не хватает в __init__ ? |
AxelK#688В общем, работает (у меня) до первого эффекта. renpy.show('_', at_list=[truecenter], layer='master', what=test_image, zorder=1, tag='bg', behind=[]) нормально renpy.show('_', at_list=[truecenter], layer='master', what=test_image, zorder=1, tag='bg', behind=[]) renpy.with_statement(Dissolve(0.5)) = ошибка |
AxelK#689СОНЦЕ, кажися починил. Не знаю, в чём проблема, но это явно что-то при сериализации cpickle
Код class MyBlit(renpy.Displayable): def __init__(self, child, colors, **kwargs): super(MyBlit, self).__init__(**kwargs) [b][color=#ff0000]self.child = renpy.displayable(child)[/color][/b] # вместо self.child_surf = renpy.load_surface(child) self.colors = colors self.width = 0 self.height = 0 def render(self, width, height, st, at): displayable_child = renpy.displayable(self.child) child_render = renpy.render(displayable_child, width, height, st, at) self.width, self.height = child_render.get_size() [b][color=#ff0000]surf = renpy.load_surface(self.child)[/color] [/b] # вместо surf = self.child_surf surf.lock() for i in range(int(self.width)): for j in range(int(self.height)): pix = surf.get_at((i, j)) for cf, ct in self.colors: if pix == cf: surf.set_at((i, j), ct) surf.unlock() pix = None render = renpy.Render(self.width, self.height) render.blit(surf, (0, 0)) return render Теперь отображает, красит, сохраняет и загружает (пока что) без ошибок |
Promenadlimpan#690Всем привет, не могу понять, как индифицировать класс. К примеру
Код python: class P (Object): def __init__(self, name, age, opinion): self.Age = age self.Opinion = op self.name = "" h = P ("Иван", 12, 1) label start: h "Что-либо" в таком случае происходит ошибка Exception: Sayer 'H' is not defined. Если использовать define Код python: class P (Object): def __init__(self, name, age, opinion): self.Age = age self.Opinion = op self.name = "" define h = P("Иван", 12, 1) label start: h "Что-либо" Код I'm sorry, but an uncaught exception occurred. While running game code: File "game/script.rpy", line 13, in script . File "game/script.rpy", line 13, in <module> NameError: name 'P' is not defined -- Full Traceback ------------------------------------------------------------ Full traceback: File "game/script.rpy", line 13, in script # Определение персонажей игры. File "C:\Games\renpy-7.3.5-sdk\renpy\ast.py", line 2110, in execute value = renpy.python.py_eval_bytecode(self.code.bytecode) File "C:\Games\renpy-7.3.5-sdk\renpy\python.py", line 2052, in py_eval_bytecode return eval(bytecode, globals, locals) File "game/script.rpy", line 13, in <module> # Определение персонажей игры. NameError: name 'P' is not defined Windows-8-6.2.9200 Ren'Py 7.3.5.606 Classes 1.0 Sat Feb 29 22:17:06 2020 Подскажите как решить проблему |
| |||