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

Алекс__

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

  • Посещение

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

  1. to tyee: UI-функции гораздо сложнее экранного языка, лучше скачайте одну из новых версий и начните осваивать ScreenLanguage (язык экранов) Здесь руководство http://www.renpy.org/doc/html/screens.html (на английском, конечно, но много примеров). Также несколько примеров кода, которые можно просто скопировать и посмотреть как это работает: http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=18847&hilit=screen+transform#p244299 http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=18638&hilit=screen+transform#p242025 http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=18527&hilit=screen+transform
  2. Версия 6.9.3 очень сильно устарела - лучше начните осваивать одну из последних версий, там появилось много полезного, что здорово упрощает жизнь. Чтобы каждый раз не писать at Position(...) вы можете заранее определить позицию на экране, дать ей имя и в дальнейшем использовать также как и предопределенные left, right, center и т.д. http://www.renpy.org/wiki/Position Параметры, которыми задаются позиции, можно найти здесь - http://www.renpy.org...tyle-properties
  3. Писать скрипт игры можно в нескольких файлах, Рен'пи воспримет все файлы как один большой файл. Никаких дополнительных переходов к отдельным файлам делать ненужно - все переходы делаются между метками игры (label start, label chapter_one, label good_ending и т.д.). Проверьте, также, название файла - Editra не добавляет расширения к файлам, при создании нового надо писать и название и расширение (.rpy) вручную. В Рен'пи есть два вида переходов: jump - когда происходит переход к указанной метке и исполнение скрипта продолжается дальше, и call - когда происходит вызов метки и исполнение скрипта продолжается до тех пор, пока не встетится команда return, которая вернет игру к строке кода следующей за строкой, в которой была команда call. Во втором случае для каждой команды call добавляется уникальный указатель from, который показывает откуда была вызвана метка и куда, соответственно, надо вернуться (т.к. одна и таже метка может быть вызвана из разных мест скрипта). label start: "В памяти часто всплывает эта картина..." call memory_flash from point_1 "Стараюсь забыть - но не могу." "Она приходит снова и снова..." call memory_flash from point_2 "Бред, правда?" return label memory_flash: "...та самая картина..." return
  4. Объявление персонажей в последних версиях Рен'пи делается вне всяких блоков (т.е. без пробелов слева от define) - проверьте так ли у вас. http://www.renpy.org/doc/html/dialogue.html#
  5. В Рен'пи это называется NVL-mode, внешний вид экрана можно настраивать по своему желанию - здесь можно почитать как это сделать: http://www.renpy.org/doc/html/nvl_mode.html http://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=17232
  6. to vikvikvik Немного о сообщениях об ошибках http://www.animeforu...dpost&p=2689628 Хм, эта игра случайно не использует Tile Engine for Tile-Based Maps and Unit Engine for Turn-Based Games ( http://www.renpy.org...nd_Unit_Engines ) - там используется переменная (или функция) Screens, а в современном Рен'пи Screens используется для языка экранов - из-за этого движок карты не работает, если запускать его из модуля запуска.
  7. Ren'py заранее загружает картинки, которые будут использованы в ближайшее время и выгружает из памяти уже использованные - http://www.renpy.org...les.html#images. Размер памяти, которая для этого используется, можно изменять переменной config.image_cache_size - http://www.renpy.org...ml/config.html#. Все зависит от размера изображений. Если они "большие", то в память поместится меньшее их количество и, если они появляются на экране все разом, то Ren'py просто не успевает загрузить их все заранее, и возникают "тормоза" при показе тех картинок которые еще не в памяти. По этому поводу см. пост PyTom'а - http://lemmasoft.ren...he+size#p157347
  8. Рен'пи работает почти как фотошоп с его слоями - т.е. каждое новое изображение отражается на экране поверх уже имеющихся (если не указана иная последовательность изображений). Команда scene добавляет на экран фоновое изображение ("задник"/background), которое закрывает собой весь экран - можете проверить это сделав фоновое изображение по размеру меньше экрана. Т.о., чтобы скрыть все имеющиеся изображения на экране, просто покажите "задник" еще раз использую команду scene. Команда show показывает изображения на экране, при этом, если изображения имеют общий тэг в названиях (eileen normal и eileen happy), то данные изображения будут замещать друг друга при использовании этой команды. image bg one = "bg_1.jpg" image bg two = "bg_2.jpg" image img_1 = "image_1.jpg" image img_2 = "image_2.png" label start: scene bg one show img_1 at left show img_2 at right "..." show bg two with dissolve "Фон поменялся, а изображения остались" scene bg two with Dissolve (5.0) "Теперь фон все закрыл, а т.к. фон не изменился, то создалось впечатление, что все изображения пропали с экрана"
  9. Можно. Здесь список изменений в версии 6.14 http://www.renpy.org/doc/html/changelog.html
  10. Хм, у меня запустилась (XP SP2). Черный экран - это одно из двух: 1) лаунчер еще загружается, 2) проблема с видео (видеокарта, драйверы) - при запуске нажмите и удерживайте клавишу "Shift" - должно появиться окно в котором можно выбрать рендерер, попробуйте разные (тоже самое, если какая-нибудь из игр не запустится или не будет изображения).
  11. Всего добиться нельзя - язык анимации и трансформаций (ATL) появился в версии 6.10, а экранный язык (Screen Language) - в версии 6.11. Игры можно создавать в любой версии (хоть в 6.6.0), что и делалось на протяжении многих лет, но современных визуальных "наворотов" там сделать не получится. На страничке переводов есть русификация для 6.11 - попробуйте использовать ее для последней версии (http://www.renpy.org...sian/ver_6_11_2).
  12. В "рейнджеров" не играл, но если это они То такого расположения текста и меню выбора можно добиться использованием измененного экрана NVL. В файле "screens.rpy" ############################################################################## # Nvl # # Screen used for nvl-mode dialogue and menus. # http://www.renpy.org/doc/html/screen_special.html#nvl screen nvl: #window: #style "nvl_window" frame: xpos 90 ypos 30 top_padding 10 bottom_padding 10 left_padding 10 right_padding 10 has side "c r": area (0, 0, 200, 350) viewport id "vp": draggable True yadjustment ui.adjustment (value=99999, range=99999) vbox: style "nvl_vbox" # Display dialogue. for who, what, who_id, what_id, window_id in dialogue: window: id window_id has hbox: spacing 10 if who is not None: text who id who_id text what id what_id vbar value YScrollValue("vp") bar_invert True # Display a menu, if given. if items: frame: xpos 90 ypos 400 top_padding 10 bottom_padding 10 left_padding 10 right_padding 10 has side "c r": area (0, 0, 200, 150) viewport id "menu_vp": draggable True vbox: id "menu" for caption, action, chosen in items: if action: button: style "nvl_menu_choice_button" action action text caption style "nvl_menu_choice" else: text caption style "nvl_dialogue" vbar value YScrollValue("menu_vp") init -2 python: # How far from the left menu choices should be indented. style.nvl_menu_choice_button.left_margin = 0 В файле "script.rpy" define narrator = Character(None, kind=nvl) init python: menu = nvl_menu # The game starts here. label start: "You've created a new Ren'Py game." "Once you add a story, pictures, and music, you can release it to the world!" "Line 1" "Line 2" "Line 3" "Line 4" "Line 5" "Line 6" "Line 7" "Line 8" menu: "Choice 1": "1" "Choice 2": "2" "Choice 3": "3" "Choice 4": "4" "Choice 5": "5" nvl clear "Line 9" "Line 10" return http://www.renpy.org...l/nvl_mode.html http://lemmasoft.ren...hp?f=51&t=17232
  13. Команда sound воспроизводит звуковой файл один раз, для проигрывания музыки используйте команду music play music "Shionari II.mp3"
  14. Вопрос - как вы начинаете воспроизводить музыку (покажите часть кода - в каком блоке, какой командой, настраивали ли музыку главного и игрового меню)?
  15. Вопрос - как вы сделали объявление ваших картинок? Если так image pic_a: "eileen_concerned.png" image pic_b: "eileen_vhappy.png"То это две разных картинки, они могут появляться на экране одновременно и последняя из появившихся картинок будет отображаться поверх остальных. Если же так image e concerned: "eileen_concerned.png" image e vhappy: "eileen_vhappy.png"То эти картинки будут замещать друг друга на экране, т.к. в их названиях присутствует общий тэг - "e". В этом случае все должно работать так как вам надо.
  16. Если кому-нибудь интересно - посмотрите перевод документации по Музыкальной Комнате на предмет ошибок, неточностей и т.п. (оригинал здесь - http://www.renpy.org...html#music-room) Музыкальная Комната (МК) МК – это экран, который позволяет пользователю выбрать и воспроизвести музыкальные треки из игры. Изначально, эти треки могут быть заблокированы, когда игрок впервые начинает прохождение игры, и будут разблокированы по мере того, как пользователь прослушивает музыку в процессе игры. МК управляется экземпляром класса MusicRoom. В игре может быть больше одного экземпляра MusicRoom, что позволяет сделать несколько МК. Создание МК состоит из следующих шагов: 1. Создание экземпляра MusicRoom. В конструкторе MusicRoom задаются параметры, определяющие канал, в котором будет проигрываться музыка, и длительность усиления / затухания музыки. 2. Добавление музыкальных файлов в этот экземпляр. 3. Создание экрана, который использует этот экземпляр MusicRoom для создания действий (action) для кнопок (button), графических кнопок (imagebutton) и активных зон (hotspot). Этими действиями могут быть выбор трека, следующий / предыдущий трек, или остановка и воспроизведение музыки. Заметим, что используемые действия являются элементами экземпляра MusicRoom, так что если экземпляр MusicRoom был назван mr, то использование действия «воспроизвести» будет выглядеть так – mr.Play(“track1.ogg”). 4. Добавим экран МК в главное или дополнительное меню.Вот пример первых трех шагов: init python: # Шаг 1. Создаем экземпляр MusicRoom. mr = MusicRoom(fadeout=1.0) # Шаг 2. Добавляем файлы музыки. mr.add("track1.ogg", always_unlocked=True) mr.add("track2.ogg") mr.add("track3.ogg") # Шаг 3. Создаем экран музыкальной комнаты. screen music_room: tag menu frame: has vbox # Кнопки для воспроизведения каждого трека. textbutton "Track 1" action mr.Play("track1.ogg") textbutton "Track 2" action mr.Play("track2.ogg") textbutton "Track 3" action mr.Play("track3.ogg") null height 20 # Кнопки, позволяющие переключать треки. textbutton "Next" action mr.Next() textbutton "Previous" action mr.Previous() null height 20 # Кнопка, позволяющая пользователю покинуть МК. textbutton "Main Menu" action ShowMenu("main_menu") # Начнем воспроизводить музыку при входе в МК. on "replace" action mr.Play() # При выходе из МК вернем музыку главного меню. on "replaced" action Play("music", "track1.ogg") Шаг 4 будет варьироваться в зависимости от того как структурирована ваша игра, один из вариантов – это добавление следующей строки кода textbutton "Music Room" action ShowMenu("music_room")в экран главного меню. Используя функцию Preferences(), а именно Preferences("music volume"), можно добавить на экран МК ползунок громкости. class MusicRoom(channel='music', fadeout=0.0, fadein=0.0) Музыкальная комната, содержащая наборы песен, которые могут быть разблокированы пользователем, и действия для их последовательного воспроизведения. channel Канал, который будет использовать МК. fadeout Время (в секундах), в течение которого будет происходить затухание текущей мелодии при смене трека. fadein Время (в секундах), в течение которого будет происходить усиление звука новой мелодии при смене трека. Next(self) Действие МК, которое приводит к воспроизведению следующего разблокированного трека в списке воспроизведения. Play(filename=None) Воспроизведение музыки. Если задано название файла (filename), то начинается его воспроизведение. В противном случае, воспроизведение текущего музыкального файла начинается заново (если он разблокирован), или начинается воспроизведение первого файла. Если задано название файла (filename), то кнопки, содержащие данное действие, будут неактивны, если данный файл заблокирован, и будут отображаться как выбранные во время воспроизведения файла. Previous(self) Действие, которое воспроизводит предыдущий разблокированный файл в списке воспроизведения. Stop(self) Останавливает музыку. add(filename, always_unlocked=False) Добавляет названия файлов музыки в МК. Данные файлы будут воспроизводиться в том порядке, в каком они добавлены (при условии, что они разблокированы). always_unlocked Если значение Истина (True), то файл будет постоянно разблокирован. Это позволяет показать музыкальный файл в МК до того как он был воспроизведен в игре. is_unlocked(filename) Возвращает значение Истина (True), если файл был разблокирован (или разблокирован всегда) и Ложь (False), если файл все еще заблокирован. Upd: Статья добавлена на русскую вики-страничку Ren'Py (http://www.renpy.org/wiki/renpy/rus )
  17. Хороший вопрос... скорее всего это картинки с прозрачным фоном и надписью "save"/"load" соответственно, которые отображаются поверх меню, чтобы было понятно на каком именно экране находится игрок (оба экрана абсолютно одинаковы - оба используют file_picker, и только надпись поможет их различить). Если у вас также все нарисовано на одном imagemap'е, то надо использовать код из примера на ЛеммаСофт, т.е. все активные области (для перехода на страницы и для навигации к другим меню) должны быть указаны. Также у вас есть области для перехода к следующей странице и к предыдущей, для перехода к страницам быстрого и авто сохранения - действия для этих активных областей можно списать из экрана file_picker, который используется по-умолчанию.
  18. В примере на ЛеммаСофт все кнопки нарисованы в одном imagemap'е. Если у вас сделан отдельный скрин с кнопками для навигации (т.е. нарисованы только кнопки справа, а слева прозрачный фон), то пример кода из моего поста должен сработать. Так, как у вас сделаны меню?
  19. Ну, начинается - хочу/нехочу... (шутка) По поводу кнопок клавиатуры - если вам не нужны такие возможности, то просто удалите все строки key ... У вас все слоты сохранения будут на одной странице? Если да, то переключение между страницами в file_picker'е вам не понадобится - удалите эту часть кода hotspot (528, 39, 14, 23) clicked FilePage(1) hotspot (566, 40, 22, 23) clicked FilePage(2) hotspot (611, 39, 18, 23) clicked FilePage(3) hotspot (653, 40, 18, 21) clicked FilePage(4) hotspot (694, 40, 17, 22) clicked FilePage(5) hotspot (735, 41, 21, 20) clicked FilePage(6) hotspot (776, 39, 22, 23) clicked FilePage(7) hotspot (819, 39, 20, 23) clicked FilePage(8) hotspot (860, 39, 23, 24) clicked FilePage(9) hotspot (900, 39, 27, 23) clicked FilePage(10)(никаких дополнительных картинок для них нет - это мелкие белые циферки на темном фоне, которые просто нарисованы на картинках, используемых imagemap'ом) А кнопки возврата в главное меню и вызов настроек - они у вас сделаны в отдельном окне (как в варианте по умолчанию screen navigation)? Если да, то можете удалить и эту часть кода hotspot (523, 68, 62, 31) action ShowMenu("load") hotspot (589, 70, 59, 29) action ShowMenu("save") hotspot (653, 70, 60, 31) action Help() hotspot (787, 72, 62, 27) action Quit() hotspot (718, 71, 65, 27) action MainMenu() hotspot (877, 69, 62, 29) action Return() Останется что-то похожее на ############################################################################## # Save, Load # # Screens that allow the user to save and load the game. # http://www.renpy.org/doc/html/screen_special.html#save # http://www.renpy.org/doc/html/screen_special.html#load # Since saving and loading are so similar, we combine them into # a single screen, file_picker. We then use the file_picker screen # from simple load and save screens. screen load_save_slot: $ file_text = "%2s. %s\n %s" % ( FileSlotName(number, 4), FileTime(number, empty=_("Empty Slot.")), FileSaveName(number)) add FileScreenshot(number) xpos 61 ypos 69 text file_text xpos 215 ypos 92 size 18 color "#261d0c" screen file_picker: imagemap: ground "ui/sl_ground.png" idle "ui/sl_idle.png" hover "ui/sl_hover.png" selected_idle "ui/sl_idle.png" hotspot (22, 121, 444, 235) clicked FileAction(1): use load_save_slot(number=1) hotspot (483, 121, 444, 235) clicked FileAction(2): use load_save_slot(number=2) hotspot (22, 356, 444, 235) clicked FileAction(3): use load_save_slot(number=3) hotspot (483, 356, 444, 235) clicked FileAction(4): use load_save_slot(number=4) screen save: # This ensures that any other menu screen is replaced. tag menu use file_picker add "ui/sl_save.png" use navigation screen load: # This ensures that any other menu screen is replaced. tag menu use file_picker add "ui/sl_load.png" use navigation
  20. Хм, в этой теме как раз и показано меню сохранения/загрузки из трех картинок... Если при использовании imagemap'ов картинки начинают "глючить", то поможет удаление постоянных данных ("Delete persistent"). (или дело опять в использовании прозрачных картинок для imagemap'ов)
  21. Не понял что такое "лаунчеры", но: - видео может быть включено в код экрана главного меню (будет проигрываться каждый раз, когда осуществляется переход к главному меню) - можно сделать splashscreen - метка, код в которой запускается перед главным меню при первом запуске игры http://www.renpy.org/wiki/renpy/doc/cookbook/Splashscreen_Effect (код этой метки должен заканчиваться командой return).
  22. (Количество файлов никак не влияет на качество кода. Подозреваю, что проблема была в отступах - когда вы копировали часть кода в новый файл, то исправили отступы.)
  23. Наверняка проблема в коде, вызывающем эти окна. Если вам нужен более вразумительный ответ, то приведите текст ошибки и часть кода для окон жизни и их отображения.
  24. Проблема в прозрачности картинок для главного меню. В фотошопе добавил под картинкой слой, полностью залитый черным цветом и объеденил их - все работает. screen main_menu: # This ensures that any other menu screen is replaced. tag menu imagemap: ground "back/main_menu_screen.png" hover "back/main_menu_screen_h.png" hotspot (600, 184, 151, 48) action Start() hotspot (600, 249, 151, 48) action ShowMenu("load") hotspot (600, 311, 151, 48) action ShowMenu("preferences") hotspot (600, 373, 151, 48) action ShowMenu("gallery") hotspot (600, 442, 151, 48) action Help() hotspot (600, 502, 151, 48) action Quit(confirm=False)
  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.