Перейти к содержанию
АнимеФорум

Vielstern

Участники
  • Постов

    20
  • Зарегистрирован

  • Посещение

Весь контент Vielstern

  1. Ага, спасибо. Так даже лучше (очевиднее, во всяком случае) :)
  2. Так, если убрать modal True, то ctrl работает нормально (и say все перекрывает как надо). Осталось только space оживить. :) ADD: Если добавить key "K_SPACE" action renpy.curry(renpy.restart_interaction) ,то все работает как надо.
  3. Ага, нашел на lemmasoft решение. Делаем скрин say modal True. И потом в нем же вешаем на весь экран прозрачную imagebutton с action такого вида: renpy.curry(renpy.restart_interaction). Тогда клик будет обрабатываться как надо, при этом все что под say нельзя будет нажать. Остался только один вопрос — как заставить space и ctrl работать с таким say как полагается?
  4. Спасибо. Полезная функция. Хотя по сути, та же схема с If на каждом imagebutton, хоть и без лишних переменных... Интересно, а можно как-то на action (через Function() или еще как-то) подвесить действие аналогичное клику во время диалогового окна? Т.е. чтобы клик по некой imagebutton (которая будет прозрачной и растянутой на весь экран) обрабатывался как стандартный клик во время присутствия скрина say?
  5. Придумался еще вариант — засунуть практически прозрачный imagebutton c NullAction() в скрин Say размером до самого диалогового окна... Но что-то это тоже, мягко говоря, не слишком изящное решение.
  6. Привет. Такой вопрос — можно ли во время вызова диалогов (скрина say) как-то блокировать присутствующие на экране imagebutton-ы? Т.е. если начинается диалог, чтобы нельзя было ничего из активных объектов нажать в это время. У меня пока только какие-то довольно-таки дикие решения крутятся в голове — типа подвесить какую-то переменную, которая при on "show" диалогового окна будет False, а при on "hide" — True. Ну и везде в кнопках в action прописать через If(), что код выполняется только если переменная True. Но это же извращение то еще. Может (да и наверняка) что-то более очевидное есть?
  7. Спасибо! А я уже было полез копать в сторону ui.adjustment и т.д. Все оказалось гораздо проще.
  8. Привет. Как можно сделать, чтобы viewport при каждом обновлении текста (или другого контента) в нем автоматически перематывался вниз до последней строчки?
  9. Спасибо, deepcopy помогло. Второй вариант — то же самое, да. Третий не успел попробовать, но буду еще изучать. :)
  10. Привет. Столкнулся с проблемой, когда у копий экземпляра класса меняются одновременно атрибуты по не очень понятному мне алгоритму. Вот такой примерно код: label start: python: from copy import copy class test_cl: def __init__ (self, var, list): self.var = var self.list = list $tester_base = test_cl(10, ["a", "b"]) $tester1 = copy(tester_base) $tester2 = copy(tester_base) $tester1.var -= 5 "1 этап. Всё в порядке, меняется значение только у tester1" $tester1.list.append("x") "2 этап. \"x\" добавляется и в tester1, и в tester2, и в tester_base" $tester1.list = ["x"] "3 этап. меняется list только у tester1" return объясните, плз, почему на втором этапе происходит такое и как этого избежать.
  11. Понятно, спасибо.
  12. Хм, столкнулся тут то ли с багом (новой версии? Версия 6.18.2.729, если что) RenPy, то ли я в чем-то туплю (что тоже вполне может быть :D). В общем, такой код: init: $ spisok = [] label start: "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok.append("a") "место, где мы загружаемся на предыдущее сохранение" сохраняемся до добавления элемента в список, после добавления загружаемся на это сохранение и видим... что элемент все равно уже добавлен. При этом, если убрать объявление списка из init вот так: label start: $ spisok = [] "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok.append("a") "место, где мы загружаемся на предыдущее сохранение" ,то после загрузки получаем пустой список, как и должно быть. То же самое с remove и т.д. А вот если прописать код вот так: init: $ spisok = [] label start: "bla-bla-bla" "место, где мы сохраняемся" "bla-bla-bla" $spisok = ["a"] "место, где мы загружаемся на предыдущее сохранение" , то после загрузки видим пустой список, несмотря на объявления списка в init. В общем, вопрос — это баг и надо просто подождать, пока его исправят, или я что-то не понимаю, и так и должно быть?
  13. Спасибо! list.sort() — то, что надо. Видимо, плохо гуглил. С lambda тоже попробую разобраться. :)
  14. Такой вопрос — вот есть, предположим, класс: class test: def __init__(self, name, strenght, agility): self.name = name self.str = strenght self.agi = agility далее следующий код: $Dima = test("Dima", 5, 2) $Katya = test("Katya", 2, 5) $Actors = [Dima, Katya] и, теперь главное, функция сортировки (да-да, я знаю, что «пузырьки» отстой :lol: ) в зависимости от параметра для сравнения, нечто в таком духе: def bubble_sort (inlist, param): for i in range (0, len(inlist)-1): for j in range (0, len(inlist)-1-i): if inlist[j].param > inlist[j+1].param: inlist[j], inlist[j+1] = inlist[j+1], inlist[j] return inlist ну и дальше нужен результат, примерно так: $champions_str = bubble_sort(Actors, str) $champions_agi = bubble_sort(Actors, agi) Этот код не работает, т.к. не получается таким способом в функцию bubble_sort передать нужный параметр для сравнения (param). Собственно, вопрос, как переработать функцию так, чтобы она понимала нужный параметр? Есть, конечно, извращенный вариант: def bubble_sort (inlist, param): if param == "str": for i in range (0, len(inlist)-1): for j in range (0, len(inlist)-1-i): if inlist[j].str > inlist[j+1].str: inlist[j], inlist[j+1] = inlist[j+1], inlist[j] return inlist и далее: $champions_str = bubble_sort(Actors, "str") ,но это именно что извращение и дикие костыли. :unsure:
  15. Спасибо, другой вариант форматирование строки тоже полезный. :)
  16. О, отлично! Очень полезная штука. И правда. Вот уж действительно, хочешь двиг без глюков — напиши его сам. :lol: С форматированием питона всё работает. Полез это самое форматирование изучать.) Спасибо за помощь. :) Да я пока больше тренируюсь на кошках, вот как навык наберу — тогда можно будет уже что-то постить. Спасибо за приглашение, обязательно посмотрю, что там.
  17. Столкнулся с каким-то для меня прямо-таки необъяснимым явлением. Вот есть скрин: screen skills_panel(player): vbox: for j in player.skills: if not j.mpcost > player.mp: textbutton "[j.name]" hovered Notify(j.description) action If(select_hero == 0, Notify("Выбери цель!"), Return(j)) else: textbutton "[j.name]" hovered Notify("Не хватает энергии!") action Notify("На этот прием не хватает энергии") оно замечательно работает, но вот если поменять последнюю строчку следующим образом: else: textbutton "[j.name]" hovered Notify("Не хватает энергии!") action Notify("На этот прием не хватает [j.mpcost] энергии") то получаем при активации этой строки вот такую вот штуку: само j.mpcost в этом же блоке отлично работает, хотя бы здесь: if not j.mpcost > player.mp: Я понимаю, что, возможно, для ловли бага надо смотреть весь код, что, конечно, никому не надо. :) Если так, то я вполне обойдусь без объяснения этой проблемы. Или позже сам пойму в чем дело, или просто забью. Обойти, в конце концов, это совсем не сложно. Но вдруг это что-то совершенно очевидное, что ясно даже из этого блока кода, чего я просто в силу малоопытности не понимаю? Тогда было бы здорово понять, в чем дело.
  18. Понятно, спасибо.
  19. Спасибо за ответ! Про SetVariable я был в курсе, не очень удачный пример подобрал, пожалуй. Там смысл был не в том, что в лабеле делается, а именно в вызове этого лабела через Call или его аналог. Еще раз перечитав все, что можно на эту тему, делаю вывод, что из Action все же только Jump доступен. И, судя по всему, параметры через этот Jump тоже передать нельзя (или все-таки как-то можно?) По второму моменту — оказалось, что мой код тоже сработал бы, просто надо было проставить кавычки для параметра. Т.е. не call screen test1(test1) ,а call screen test1("test1") Про разницу между Call и Show знал, а вот про modal нет — очень полезно, спасибо. Тогда еще один вопрос — можно ли как-то вызвать несколько экземпляров, к примеру, одного скрина одновременно? Если сделать так: Show screen test1("screen1") Show screen test1("screen2") , то сначала скрин test1 вызовется с параметром "screen1" и тут же следом он же с параметром "screen2". А можно ли вызвать его экземпляры одновременно с этими параметрами, чтобы они вместе отображались на экране?
  20. Привет! Есть ряд вопросов: 1. Как можно (и можно ли) с помощью Action вызвать определенный label с параметрами? Есть, предположим, некий label1: label label1(variable1): $variable1 +=1 return а) Как через стандартный Action Jump перейти к нему с указанием параметра? Если бы параметра не было, то все просто: textbutton "Тест" action Jump("label1") А с параметром? б) Можно ли как-то сделать не Jump, а Call из кнопки? Т.е. мне надо, чтобы просто выполнился label1, но при этом код продолжался как после Call. 2. Можно ли передавать в качестве параметров названия, к примеру, скринов? Что-то в таком духе: screen test1(scr): textbutton "самоуничтожение" action Hide(scr) и далее: call screen test1(test1) Но этот код не работает.
×
×
  • Создать...

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