Перейти к содержанию

Алекс__

Активные участники
  • Зарегистрирован

  • Посещение

Весь контент Алекс__

  1. Дело в том, что вы поместили ваш imagemap внутрь рамки, к которой применен стиль главного меню - там предусмотрены отступы для кнопок от края рамки. Т.о. imagemap был смещен от края рамки (которая оказалась размером во весь экран). Для проверки попробуйте установить отступы в 0 пикс. screen main_menu: # This ensures that any other menu screen is replaced. tag menu # The background of the main menu. window: style "mm_root" # The main menu buttons. frame: xalign .98 yalign .98 imagemap: ground "back/main_menu_screen.png" hover "back/main_menu_screen_h.png" hotspot (614, 184, 111, 48) action Start() hotspot (614, 249, 129, 48) action ShowMenu("load") hotspot (614, 311, 130, 48) action ShowMenu("preferences") hotspot (614, 373, 127, 48) action ShowMenu("gallery") hotspot (614, 442, 121, 48) action Help() hotspot (614, 502, 131, 48) action Quit(confirm=False) #init -2 python: # Make all the main menu buttons be the same size. style.mm_button.size_group = "mm" style.mm_frame.left_padding = 0 style.mm_frame.top_padding = 0 По поводу "глюков" отображения imagemap'ов - очистите постоянные данные (delete persistent в модуле запуска).
  2. "Ждать пока он снова похудеет" (ц) Активные точки imagemap'а привязаны не к картинке, а к экрану, поэтому смещение картинки приводит к визуальному смещению активных точек. А вот почему сместилась картинка... Попробуйте убрать frame и оставить только imagemap screen main_menu: # This ensures that any other menu screen is replaced. tag menu # The background of the main menu. window: style "mm_root" # The main menu buttons. imagemap: ground "back/main_menu_screen.png" hover "back/main_menu_screen_h.png" hotspot (614, 184, 111, 48) action Start() hotspot (614, 249, 129, 48) action ShowMenu("load") hotspot (614, 311, 130, 48) action ShowMenu("preferences") hotspot (614, 373, 127, 48) action ShowMenu("gallery") hotspot (614, 442, 121, 48) action Help() hotspot (614, 502, 131, 48) action Quit(confirm=False)
  3. Как и любые картинки для игры (фоны, персонажи) - в самом начале кода. Вот пример галереи из одной кнопки...)) image gallery_hover_img: "images/hover_border.png" # hover_border.png - это рамка с прозрачной серединой; размер такой же как и у "skycg1_thumbnail.png" xoffset 12 yoffset 1 image bg sky = "images/sky.png" # вставьте правильное название файла init python: # Этап 1. Создаем объект галереи. g = Gallery() # Этап 2. Добавляем в галерею кнопки и изображения. g.button("skycg") g.unlock_image("bg sky") g.transition = dissolve g.locked_button= ("images/cg_locked.png") g.hover_border = "gallery_hover_img" screen gallery: tag menu add "images/game_menu_screen.jpg" grid 1 2: add g.make_button("skycg", "images/skycg1_thumbnail.png", xalign=0.5, yalign=0.5, background=None) null textbutton "Return" action Return() xalign 0.9 yalign 0.1 label start: scene bg sky "... ... ..." В файле "screens.rpy" найдем "screen main_menu:": screen main_menu: # This ensures that any other menu screen is replaced. tag menu # The background of the main menu. window: style "mm_root" # The main menu buttons. frame: style_group "mm" xalign .98 yalign .98 has vbox textbutton _("Start Game") action Start() textbutton _("Load Game") action ShowMenu("load") textbutton _("Preferences") action ShowMenu("preferences") textbutton _("CG") action ShowMenu("gallery") textbutton _("Help") action Help() textbutton _("Quit") action Quit(confirm=False)
  4. Ммм, давайте определимся с терминологией...)) Поверх кнопки в галерее отображается рамка - она может быть активной (при наведении курсора на нее) и неактивной (когда курсор не наведен на нее) - hover_border и idle_border соответственно. Чуть выше писал о том, что для правильного их отображения необходимо использовать не названия файлов, а создать картинки, которые будут отображаться со смещением. https://www.animeforum.ru/index.php?showtopic=61348&st=620&p=2810174&&do=findComment&comment=2810174
  5. make_button(name, unlocked, locked=None, hover_border=None, idle_border=None, **properties) В функцию, создающую кнопку, первым аргументом указывают название ранее объявленной кнопки (названия картинок, связанных с этой кнопкой здесь не указывают). Название картинки "bg sky" должно быть указано при объявлении кнопки. g.button("skycg") g.unlock_image("bg sky") ... ... ... add g.make_button("skycg", "images/skycg1_thumbnail.png", "images/cg_locked.png", "images/skycg1_thumbnailhover.png", xalign=0.5, yalign=0.5) Про превью изображений не слышал (если ссылку дадите - почитаю). Возможно, картинки превью нужно объявить также как и рамки - со смещением.
  6. Все так. Сетка должна быть заполнена полностью - это так и задумано в Рен'пи. Если ее заполнить нечем, то заполняют "пустым местом" - null grid 1 3: xfill True yfill True add g.make_button("logocg", "images/old_logo1_thumbnail.png", "images/cg_locked.png", "images/old_logo1_thumbnailhover.png", xalign=0.5, yalign=0.5) null nullhttp://www.renpy.org...reens.html#null background=None - устанавливает свойство (property) объекта - фон (background) равное пустому месту. В моем примере это было свойство кнопки add g.make_button("first_button", "thumb_beach", background=None) В вашем примере "skycg" - это название кнопки, картинка, которую должен увидеть игрок в игре названа "skycg1" (т.е. где-то в игре должно быть <show skycg1> и нужно доиграть до этого места). Тоже самое с "logocg1".
  7. Размеры кнопок могут быть любыми - лишь бы все уместились на экране. Кнопку "возврат" можно сделать при помощи textbutton'а или imagebutton'а (в последнем случае какой размер картинки нарисуете - такая кнопка и будет). Картинка которая показывает, что кнопка заблокирована, уменьшенная картинка кнопки, активная и неактивная рамки для кнопки - все должны быть одинакового размера для одной кнопки, т.к. все эти картинки накладываются друг на друга. Размер может быть любой - кнопка уменьшится или увеличится автоматически. Задать какие именно картинки надо использовать можно двумя способами: 1. Для каждой кнопки в отдельности (можно сделать разные рамки, разные размеры кнопок) make_button(name, unlocked, locked=None, hover_border=None, idle_border=None, **properties)Когда мы создаем кнопку, то после ее имени и уменьшенной картинки можем указать заблокированную картинку, активную рамку и неактивную рамку (по умолчанию последние три картинки не заданы None). Пример кнопки, в которой указаны все картинки (background=None - убирает фон кнопки): add g.make_button("first_button", "thumb_beach", "locked_img", "gallery_hover_img", "gallery_idle_img", xalign=0.5, yalign=0.5, background=None) 2. В случае, если для кнопки не заданы заблокированная картинка и рамки, то используются картинки заданные для всей галереи, т.о. можно задать одинаковые кртинки для всей галереи - для этого надо добавить в блок init python g.locked_button= "locked_img" # заблокированная кнопка g.hover_border = "gallery_hover_img" # активная рамка g.idle_border = "gallery_idle_img" # неактивная рамкаЗдесь использованы не имена файлов а названия displayable'ов. Кнопка галереи сделана таким образом, что для правильного позиционирования рамку необходимо сдвинуть вправо на 12 пикс и вниз на 1 пикс. Объявим эти displayable'ы image locked_img: "gallery_locked.png" image gallery_hover_img: "gallery_hover.png" xoffset 12 yoffset 1 image gallery_idle_img: "gallery_idle.png" xoffset 12 yoffset 1 image thumb_beach: "thumb_beach.jpg"
  8. Просто удалите строку g.transform(slowpan) Она приведена в примере для того, чтобы показать все возможности галереи (использовать их не обязательно).
  9. Да, трансформации - это эффекты, которые могут быть применены к разным объектам и к картинкам в том числе. В коде галереи они не созданы, но в одном месте кода используется трансформация slowpan g.transform(slowpan) эта трансформация должна быть создана заранее.
  10. Кхм, здесь много полезного. В данном случае используются не сами файлы, а заранее объявленные картинки (displayable). Объявление картинок, персонажей и проч. производится в блоке init. В вашем примере: g.button("dawn") - создает кнопку с названием "dawn" g.image("dawn1") - связывает с этой кнопкой заранее объявленную картинку "dawn1" g.unlock("dawn1") - говорит о том, что никаких условий для разблокировки картинки нет - она будет доступна, если игрок видел ее в игре add g.make_button("dawn", "gal-dawn.png", xalign=0.5, yalign=0.5) - добавляет на экран заранее созданную кнопку с названием "dawn", при этом на экране будет показано маленькое изображение "gal-dawn.png" Т.о. в блок init должны быть добавлены объявления всех картинок (предполагается, что для игры вы уже сделали объявления всех фоновых картинок и картинок персонажей), а также созданы используемые в галерее трансформации (в примере это slowpan). transform slowpan: yalign 1.0 linear 4.0 yalign 0.0 Для объявления трансформации никакие блоки не нужны и отступ от левого края экрана можно не делать. Немного ранее был сделан перевод руководства по ATL - там написано про трансформации - http://renpyru.blogs.../renpy-atl.html http://www.renpy.org/wiki/renpy/rus
  11. Код можно добавить в любой файл с расширением rpy - для удобства можно создать отдельный файл (Рен'пи обрабатывает все файлы с таким расширением как один большой файл). Первые два этапа - в блоке init (такой блок может быть в каждом rpy-файле), третий этап - создание экрана (screen) с использованием полного функционала SL (screen language), т.е. можно использовать сетку (grid), можно поместить кнопки в боксы (vbox, hbox), можно использовать viewport, можно позиционировать каждую кнопку в отдельности - как удобнее. http://www.renpy.org/doc/html/screens.html
  12. Попробовал перевести документацию для Галереи изображений - кому интересно, просьба посмотреть на предмет опечаток и прочих ошибок оригинал Галерея изображений (ГИ) ГИ - это экран, который позволяет игроку разблокировать изображения и затем просматривать эти изображения. Экран имеет одну или несколько связанных с ним кнопок, и каждая кнопка имеет одно или несколько связанных с ней изображений. Кнопки и изображения также имеют условия, которые определяют разблокированы они или нет. ГИ управляются экземплярами класса Gallery. Каждый экземпляр класса может быть использован для нескольких экранов ГИ. ГИ имеет одну или более кнопок, связанных с ней, кнопка имеет одно или более связанных с ней изображений, и каждое изображение имеет одну или более картинку, связанные с ним. Для кнопок и изображений могут быть назначены условия. Кнопка считается разблокированной, когда все назначенные для нее условия выполнены, и разблокировано хотя бы одно изображение, связанное с ней. Изображение считается разблокированным, когда все назначенные для него условия выполнены. Создание ГИ происходит в четыре этапа. 1. Создание экземпляра класса Gallery. 2. Добавление кнопок и изображений в галерею, равно как и условий, определяющих будут ли кнопки и связанные с ними изображения считаться разблокированными. Этот процесс также состоит из нескольких этапов. 1. Объявление новой кнопки, путем вызова Gallery.button(). 2. По желанию, назначение кнопке одного или более условий для разблокирования, путем вызова Gallery.unlock(), Gallery.condition(), или Gallery.allprior(). 3. Объявление картинки, путем вызова Gallery.image() с одной или несколькими картинками в качестве аргумента. Или вызова более удобного метода Gallery.unlock_image(). 4. По желанию, вызов Gallery.transform() для установки трансформаций, применяемых к каждой картинке. 5. По желанию, добавление одного или более условий, при выполнении которых изображение будет считаться разблокированным, путем вызова Gallery.unlock(),Gallery.condition(), или Gallery.allprior(). Дополнительные изображения могут быть добавлены к кнопке путем повторения этапов 3-5, а дополнительные кнопки – путем повторения всех пяти этапов. 3. Создание экрана галереи. Экран должен иметь фоновую картинку и какие-нибудь кнопки навигации, которые позволят пользователю посмотреть другие галереи или вернуться в главное либо дополнительное меню. 4. Добавление в главное ибо дополнительное меню кода для показа экрана галереи на дисплее. Далее пример первых трех этапов: init python: # Этап 1. Создаем объект галереи. g = Gallery() # Этап 2. Добавляем в галерею кнопки и изображения. # Кнопка, содержащая картинку, которая автоматически считается # разблокированной. g.button("dawn") g.image("dawn1") g.unlock("dawn1") # Эта кнопка имеет несколько связанных с ней картинок. Мы используем # unlock_image # так что нам не надо использовать оба .image и .unlock. Также, установим # трансформацию для первого изображения. g.button("dark") g.unlock_image("bigbeach1") g.transform(slowpan) g.unlock_image("beach1 mary") g.unlock_image("beach2") g.unlock_image("beach3") # Для следующих кнопок установлены условия, позволяющие # запрограммировать какое изображение считать разблокированным. g.button("end1") g.condition("persistent.unlock_1") g.image("transfer") g.image("moonpic") g.image("girlpic") g.image("nogirlpic") g.image("bad_ending") g.button("end2") g.condition("persistent.unlock_2") g.image("library") g.image("beach1 nomoon") g.image("bad_ending") # Для последних изображений в этих кнопках установлено условие, # так что они будут считаться разблокированными, только если пользователь # получит обе концовки. g.button("end3") g.condition("persistent.unlock_3") g.image("littlemary2") g.image("littlemary") g.image("good_ending") g.condition("persistent.unlock_3 and persistent.unlock_4") g.button("end4") g.condition("persistent.unlock_4") g.image("hospital1") g.image("hospital2") g.image("hospital3") g.image("heaven") g.image("white") g.image("good_ending") g.condition("persistent.unlock_3 and persistent.unlock_4") # Последние две кнопки содержат изображения, показывающие несколько # картинок одновременно. # Это можно использовать для показа картинки персонажа поверх фоновой # картинки. g.button("dawn mary") g.unlock_image("dawn1", "mary dawn wistful") g.unlock_image("dawn1", "mary dawn smiling") g.unlock_image("dawn1", "mary dawn vhappy") g.button("dark mary") g.unlock_image("beach2", "mary dark wistful") g.unlock_image("beach2", "mary dark smiling") g.unlock_image("beach2", "mary dark vhappy") # Установим перемещение (transition), которое будет использоваться при # смене изображений. g.transition = dissolve # Этап 3. Создаем экран галереи. screen gallery: # Убедимся, что он заменит собой главное меню. tag menu # Добавим фоновую картинку. add "beach2" # Сетка, состоящая из кнопок. grid 3 3: xfill True yfill True # Вызываем make_button для показа каждой кнопки. add g.make_button("dark", "gal-dark.png", xalign=0.5, yalign=0.5) add g.make_button("dawn", "gal-dawn.png", xalign=0.5, yalign=0.5) add g.make_button("end1", "gal-end1.png", xalign=0.5, yalign=0.5) add g.make_button("end2", "gal-end2.png", xalign=0.5, yalign=0.5) add g.make_button("end3", "gal-end3.png", xalign=0.5, yalign=0.5) add g.make_button("end4", "gal-end4.png", xalign=0.5, yalign=0.5) add g.make_button("dark mary", "gal-dark_mary.png", xalign=0.5, yalign=0.5) add g.make_button("dawn mary", "gal-dawn_mary.png", xalign=0.5, yalign=0.5) # Экран, отвечающий за возврат в главное меню. Также, он может # перенаправлять на другой экран галереи. textbutton "Return" action Return() xalign 0.5 yalign 0.5 Этап 4 варьируется в зависимости от того, как структурирована ваша игра, один из вариантов – добавить следующую строку: textbutton "Gallery" action ShowMenu("gallery")в код экрана главного меню. class Gallery(self)¶ Этот класс предоставляет возможность создавать ГИ, обслуживая блокировку изображений, предоставляя действие, которое может показать одно или более изображений, и предоставляя метод, который создает кнопки, использующие это действие. transition Перемещение (transition), которое используется при смене изображений. locked_button Картинка, используемая make_button по умолчанию для заблокированных кнопок. hover_border Активная рамка, которую по умолчанию использует make_button. idle_border Неактивная рамка, которую по умолчанию использует make_button. Action(name) Действие, которое показывает изображения, связанные с указанной кнопкой. allprior(self) Условие, которое считается выполненным, если были разблокированы все предыдущие изображения, связанные с данной кнопкой. button(name) Создает новую кнопку с названием name. name Название создаваемой кнопки. condition(expression) Условие, которое считается выполненным, если выражение (expression) имеет значение Истина (True). expression Строка – выражение на языке python. display(*displayables) Добавляет в текущую кнопку новое изображение, содержащее одну или более картинку (displayables). image(*displayables) Добавляет в текущую кнопку новое изображение, содержащее одну или более картинку (displayables). make_button(name, unlocked, locked=None, hover_border=None, idle_border=None, **properties) Создает кнопку, которая показывает изображения, связанные с данным названием кнопки. name Название создаваемой кнопки. unlocked Картинка, которая отображается, когда кнопка разблокирована. locked Картинка, которая отображается, когда кнопка заблокирована. Если не задано, то вместо нее используется поле locked_button объекта галереи. hover_border Картинка, которая отображается поверх разблокированной кнопки, когда на нее наведен курсор. Если не задано, то используется поле hover_border объекта галереи. idle_border Картинка, которая отображается поверх разблокированной кнопки, когда на нее не наведен курсор. Если не задано, то используется поле idle_border объекта галереи. Дополнительные ключевые аргументы становятся параметрами стиля создаваемого объекта кнопки. transform(*transforms) Применяет трансформации (transforms) к последнему зарегистрированному изображению. Должен вызываться с тем же количеством трансформаций, сколько картинок связано с изображением. Трансформации применяются к соответствующим картинкам. Если трансформация не задана, то используется трансформация по умолчанию. unlock(*images) Условие, которое содержит одно или более названия изображений и считается выполненным, если игрок видел все названные изображения. Названия изображений должны быть заданы в строковом формате (as strings). unlock_image(*images) Удобный метод, который является эквивалентом вызова image и unlock с одинаковыми параметрами. Он позволяет показать изображение, если оно уже было увидено ранее. (images) должно быть определено в строковом формате, задавая названия изображений.
  13. Сделать можно все. Как вариант: init: image char_a = "aaa.jpg" image char_b = "bbb.jpg" define a = Character("Aaa", color="#c00") define b = Character("Bbb", color="#ccc") label start: label loop: # Оставить нужно один из вариантов кода - второй закомментировать # Вариант 1 # Если нужно выбрать случайного персонажа, который произнесет фразу, # то выберем одного из перечня: (a, B) - кортеж, содержащий перечень NPC для выбора # (все персонажы должны быть заранее определены в блоке init # обе буквы a и b должны быть маленькие (не знаю почему b здесь вдруг становится большой, #@$%) ! #$ rand_char = renpy.random.choice( (a, B) ) # Вариант 2 # Если нужно еще и показать на экране именно этого случайного персонажа, то немного усложним # в качестве аргумента для функции выбора зададим кортеж, каждый элемент которого представляет собой список # из персонажа и соответствующей ему картинки $ rand_var = renpy.random.choice( ([a, "char_a"], [b, "char_b"]) ) # Далее используем выбранный список, для присвоения значений переменным $ rand_char = rand_var[0] $ rand_img = rand_var[1] # Покажем нашего случайного персонажа в случайной позиции $ rand_pos = renpy.random.choice ( (0.0, 0.5, 1.0) ) show expression rand_img: xalign rand_pos yalign 1.0 # Выберем случайную фразу $ rand_text = renpy.random.choice ( (u"Да...", u"...а я ему значит и говорю...", u"Проходи, не задерживайся.") ) # Заставим нашего случйного персонажа ее сказать rand_char "[rand_text]" hide rand_img # уберем картинку с экрана, чтобы следующая не накладывалась на нее jump loop Если вы организуете журнал квестов как список, то сможете добавлять в него новые элементы и удалять имеющиеся. screen quests_scr: frame: background Solid("#ccc") xpos 0.1 ypos 0.1 xminimum 200 xmaximum 200 vbox: text "Журнал квестов" size 12 xalign 0.5 null height 30 for i in quests_list: text "- [i]" size 10 null height 30 label start: # Создадим пустой список квестов $ quests_list = [] show screen quests_scr "Журнал квестов пуст" # добавим квест в список, а потом сообщим об этом игроку $ quests_list.append("Квест 1") "Получен квест 1" $ quests_list.append("Квест 3") "Получен квест 3" $ quests_list.append("Квест 2") "Получен квест 2" # удалим выполненный квест $ quests_list.remove("Квест 1") "Выполнен квест 1" Ссылки: http://ru.wikibooks.....81.D0.BA.D0.B8 http://ru.wikibooks.....81.D1.82.D0.B8 http://ru.wikibooks.....BA.D0.B0.D1.85 http://www.renpy.org...ility_Functions (в самом низу страницы)
  14. Например так: label choose_ending: if sae_regard > suzu_regard and sae_regard > eris_regard and sae_regard > sakur_regard: jump sae_ending elif suzu_regard > sae_regard and suzu_regard > eris_regard and suzu_regard > sakur_regard: jump suzu_ending elif eris_regard > sae_regard and eris_regard > suzu_regard and eris_regard > sakur_regard: jump eris_ending elif sakur_regard > sae_regard and sakur_regard > suzu_regard and sakur_regard > eris_regard: jump sakur_ending else: "Не могу выбрать..." return label sae_ending: "и жили они с sae долго и счастливо..." return label suzu_ending: и т.д.
  15. C "чисто конкретными" вопросами вы не по адресу Во многом может помочь гугл-переводчик. Иногда бывает, что необходимо пояснить отдельные моменты - это сделать быстрее и проще. Если необходимо пояснить все и подробно - займет чуть больше времени. Здесь полный код, который необходим для примера галереи (картинки, правда, вам придется сделать самостоятельно) # Сначала надо скачать файл new_gallery.rpy по ссылке # http://www.renpy.org/wiki/renpy/doc/cookbook/New_CG_Gallery (выделен цветом) # и поместить его туда же, где и script.rpy, # в этом файле и есть весь код для галереи # Дальше в своем скрипте вы будете только наполнять галерею картинками init: # Расположим меню навигации по галерее справа вверху. $ style.gallery_nav_frame.xpos = (800 - 10) # положение по горизонтали $ style.gallery_nav_frame.xanchor = 1.0 # в вышеуказанной позиции окажется правый край меню $ style.gallery_nav_frame.ypos = 12 # положение по вертикали (12 пикс. от верхнего края экрана) # Добавим кнопку галереи в главное меню (после 2 кнопки сверху, называется "Gallery", при нажатии ведет к метке с названием "gallery") $ config.main_menu.insert(2, ('Gallery', "gallery", "True")) # в примере галереи используются не только названия файлов, но и названия картинок из игры # они должны быть определены заранее image bg beach daytime = "beach_daytime.jpg" image bg beach nighttime = "beach_nighttime.jpg" image bg lighthouse day = "lighthouse_day.jpg" image bg lighthouse night = "lighthouse_night.jpg" label start: # Изначально все картинки закрыты # Чтобы увидеть их в галерее, сначала надо увидеть их во время игры. # Проверьте, что в самом начале игры все картинки в галерее закрыты # Затем начните игру и вернитесь в главное меню после просмотра одной-двух картинок # Теперь они будут доступны для просмотра # (чтобы сделать картинки снова "закрытыми", нажмите в модуле запуска "delete persistent") show bg beach daytime $ renpy.pause() show bg lighthouse night $ renpy.pause() show bg beach nighttime $ renpy.pause() show bg lighthouse day $ renpy.pause() return # Та самая метка, где мы укажем все картинки для галереи. label gallery: python hide: # Создаем новый объект "галерея" g = Gallery() # Картинка, которая используется если наши картинки закрыты (размер должен быть такой же как и у уменьшенных картинок в галерее) g.locked_button = "gallery_locked.png" # Фон экрана, если картинка закрыта (размер - полный экран, как и у всех картинок галереи). g.locked_background = "gallery_lockedbg.jpg" # Рамки, которые рисуются поверх уменьшенных картинок в галерее - активный / не активный варианты соответственно (размер как у уменьшенных картинок в галерее, прозрачная середина рамки) g.hover_border = "gallery_hover.png" g.idle_border = "gallery_idle.png" # Фон экрана галереи g.background = "gallery_background.jpg" # Расположим уменьшенные картинки галереи на экране # В данном случае в виде сетки 3 на 4 # Верхний левый угол сетки в позиции xpos 10, ypos 20. # В данном случае предполагается, что уменьшенные картинки будут 155x112 пикс. # Расстояние между картинками в сетке будет 160 пикс по горизонтали и 124 пикс по вертикали # Если необходимо использовать уменьшенные картинки большего размера, то надо будет изменить # количество картинок в сетке и/или расстояние между ними g.grid_layout((3, 4), (10, 20), (160, 124)) # Покажем страницу с названием "Backgrounds" (название появиться в меню навигации галереи) g.page("Backgrounds") # Первая уменьшенная картинка g.button("thumb_beach.jpg") # # Покажем картинки, которые игрок уже видел во время игры # данные картинки должны быть определены заранее g.unlock_image("bg beach daytime") g.unlock_image("bg beach nighttime") # # Вот эта штука покажет картинку g.display("beach_sketch.jpg") # ... в том случае, если все предыдущие картинки были открыты g.allprior() # Вторая уменьшенная картинка g.button("thumb_lighthouse.jpg") g.unlock_image("bg lighthouse day") g.unlock_image("bg lighthouse night") g.display("lighthouse_sketch.jpg") g.allprior() # Создадим вторую страницу g.page("Characters") # Our first button g.button("thumb_lighthouse.jpg") g.unlock_image("bg lighthouse day") g.unlock_image("bg lighthouse night") g.display("lighthouse_sketch.jpg") g.allprior() # A second set of images. g.button("thumb_beach.jpg") # # These show images, if they have been unlocked. The image name must # have been defined using an image statement. g.unlock_image("bg beach daytime") g.unlock_image("bg beach nighttime") # # This shows a displayable... g.display("beach_sketch.jpg") # ... if all prior images have been show. g.allprior() # Теперь покажем галерею на экране g.show() return
  16. Так по ссылке и указано как сделать галерею. Вот если есть более конкретный вопрос - что не работает или не совсем понятно, то задавайте.
  17. Да, вместо троеточий. По поводу меню... Самый простой способ - использовать imagemap'ы. Это (минимум) две картинки: на одной нарисованы все кнопки неактивными (idle), а на другой - все кнопки активные (hover, как будто курсор навели на все сразу), указываются координаты активных областей (hotspot), при наведении курсора на которые, автоматически отображается часть картинки с активными кнопками. В Рен'пи есть возможность использовать imagemap'ы для главного и игровых меню. http://www.renpy.org/wiki/renpy/doc/reference/Layouts http://www.renpy.org/wiki/renpy/doc/reference/functions/layout.imagemap_main_menu http://www.renpy.org/wiki/renpy/doc/reference/functions/layout.imagemap_navigation http://www.renpy.org/wiki/renpy/doc/reference/functions/layout.imagemap_load_save http://www.renpy.org/wiki/renpy/doc/reference/functions/layout.imagemap_yesno_prompt http://www.renpy.org/wiki/renpy/doc/reference/functions/layout.imagemap_preferences Все достаточно просто - рисуем полностью менюшки, в блоке init -2 python прописываем для каждой названия картинок и координаты активных зон (по ссылкам есть примеры кода), для кнопки об авторах также добавляем координаты активной зоны. Здесь придется настраивать стили. Для того, что бы узнать какой стиль надо изменить, существует инспектор стилей. Для его вызова необходимо навести курсор на интересующий объект на экране (текстовое окно, пункт меню и т.д.) и нажать Shift + i. В открывшемся окне будет написано название стиля. Далее в любом блоке init присваиваем этому стилю новое значение.Например в файле options.rpy уже есть строка # style.window.background = Frame("frame.png", 12, 12) - поменяйте "frame.png" на название вашей картинки и сотрите знак # и пробел (чтобы индентация строк была одинаковой). Для настройки меню добавьте в блок init следующие строки и измените коэффициент по своему усмотрению (сейчас размер пункта меню 75% от ширины экрана) style.menu_choice_button.xminimum = int(config.screen_width * 0.75) style.menu_choice_button.xmaximum = int(config.screen_width * 0.75)
  18. Советую попробовать версию 6.13.х - screen language (SL) очень мощная штука. 1. http://lemmasoft.ren...php?f=51&t=9812 - здесь руководство по настройке внешнего вида игры (на английском), вам поможет раздел про стили. 2. В версиях Рен'пи, которые не используют SL меню хранится в переменной config.main_menu http://www.renpy.org..._and_Game_Menus Чтобы добавить свой пункт в меню надо "вставить" его описание в эту переменную init: $ config.main_menu.insert(2, (u'Об авторах', "about_authors", "True")) label about_authors: "... ... ..." returnЭтот код добавит в главное меню кнопку 'Об авторах', нажатие на которую перекинет вас к соответствующей метке, "2" показывает положение кнопки в меню по порядку, начиная с верха.
  19. Хм, а что в 94 строке в файле "options.rpy"? Версия 6.9.3 - очень давнишняя, скачайте 6.13.х (кстати уже вышла 6.14.х). На странице переводов есть и русский язык - должен работать с 6.13.х http://www.renpy.org/wiki/renpy/doc/translations/Translations
  20. Там же можно добавить строку style.default.color = "#c00" #(красный) А по поводу юникода - советы те же, что и в прошлый раз.
  21. В файле options.rpy найдите строку # style.window.background = Frame("frame.png", 8, 0, 8, 0) Знак # означает, что данная строка кода является комментарием и фактически не выполняется. Удалите знак # и пробел (чтобы не нарушить индентацию), а затем можете указать вместо "frame.png" название вашего файла, содержащего картинку текстового окна, либо просто укажите цвет в шестнадцатеричном формате style.window.background = Frame(Solid("#ссс"), 12, 12) Другая строка # style.default.size = 22 позволяет изменять размер текста.
  22. За перевод документации наверняка скажут спасибо многие...)) Если есть желание и возможности - попробуйте перевести раздел про ATL и ScreenLanguage (очень полезные фичи движка и совсем не сложные в использовании).
  23. to miss Rima Проблема в русском тексте - поищите его в блоке питон'а после 19 строки в файле script.rpy (попробуйте заменить его на латиницу, чтобы понять какой именно кусок кода вызывает ошибку - потом запОстите этот кусок, чтобы кто-нибудь смог подсказать как его исправить). to Kiro 666 Перевод какого меню и каких кнопок? Если главного и игрового меню, то перевод делается также как и всегда http://www.renpy.org/wiki/renpy/doc/translations/Translations Если речь идет о кнопках dayplanner'а, то можно просто перевести их названия в файлу main.rpy (u"Утро")
  24. to Kiro 666 К сожалению, демо-игр на русском языке не встречал. Перевод странички DSE (http://www.renpy.org/wiki/renpy/DSE) также еще не сделан. Возможно кто-нибудь, знающий английский и имеющий некоторое количество свободного времени, переведет ее... Также, можете воспользоваться google-переводчиком - станет немного понятнее.
  25. Ага, появилось немного свободного времени - закончил наконец-то...))

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.