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

Vielstern

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

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

  • Посещение

Достижения Vielstern

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator
  • Week One Done
  • One Month Later
  • One Year In

Последние значки

0

Репутация

  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. Спасибо, другой вариант форматирование строки тоже полезный. :)
×
×
  • Создать...

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