Пользователи · Новые посты · Правила форума · Поиск по форуму · · · Регистрация
Страница 1 из 11
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Ребята помогите (Создания слайдера)
Ребята помогите

GREY
Дата: Суббота, 17 Декабря 2016, 21:37 | Сообщение # 1
Проверенный
Сообщений: 18
Награды: 0
Репутация: 4
Замечания: 0%
Ребята... карочи... такая проблема. Пробую создать слайдер. Что бы в игре можно было выбрать аватарку.
В файле script.rpy объявил переменную:
$ avatar = 0

Дальше, вывожу на экран две стрелки, на которые кликая, должна меняться аватарка:
В файле script.rpy
show screen avatar_left_change
show screen avatar_right_change

Создал новый файл btn.rpy. В котором рисую эти стрелки
screen avatar_left_change:
imagebutton auto "images/btn/avatar_left_%s.png" xpos 494 ypos 30 focus_mask True action Show("avatar_left")
screen avatar_right_change:
imagebutton auto "images/btn/avatar_right_%s.png" xpos 894 ypos 30 focus_mask True action Show("avatar_right")

Ну и прописываю их action
screen avatar_right():
$ avatar += 1

if avatar == 1:
add "images/avatar/1.png" xalign 0.5 yalign 0.3
elif avatar == 2:
add "images/avatar/2.png" xalign 0.5 yalign 0.3
elif avatar == 3:
add "images/avatar/3.png" xalign 0.5 yalign 0.3
—------------------------------------
screen avatar_left():
$ avatar -= 1

if avatar == 1:
add "images/avatar/1.png" xalign 0.5 yalign 0.3
elif avatar == 2:
add "images/avatar/2.png" xalign 0.5 yalign 0.3
elif avatar == 3:
add "images/avatar/3.png" xalign 0.5 yalign 0.3
----------------------------------------
Вообщем, проблема заключается в том что, переменная $ avatar не переписывается, она как была 0... так и остаётся. То есть... допустим я нажал в право... он увеличил на 1... но не переписал новое значения. Мои недельные знания Renpy, не позволяют мне решить эту проблему... (( Буду признателен за помощь.


Просто Бог

TGrave
Дата: Суббота, 17 Декабря 2016, 22:40 | Сообщение # 2
Проверенный
Сообщений: 19
Награды: 0
Репутация: 12
Замечания: 0%
Как я понимаю, проблема в том, что напрямую из скринов глобальные переменные не изменить. Вот цитата от автора Ren'Py:
Цитата
A problem is that screen code can be run at arbitrary times for the purpose of predicting and loading images. So if it was to update globals, that could happen unexpectedly.

Тем не менее, "если нельзя, но очень хочется", должно сработать такое решение:
Код

screen avatar_right():
    on "show" action SetVariable("avatar", avatar + 1)

GREY
Дата: Воскресенье, 18 Декабря 2016, 12:01 | Сообщение # 3
Проверенный
Сообщений: 18
Награды: 0
Репутация: 4
Замечания: 0%
Работает, спасибо. Только это надо писать не в функции, а при создания кнопки
screen avatar_left_change:
       imagebutton auto "images/btn/avatar_left_%s.png" xpos 494 ypos 30 focus_mask True  action SetVariable("avatar", avatar - 1), Show("avatar_left")


Просто Бог

Сообщение отредактировал GREY - Воскресенье, 18 Декабря 2016, 12:01

GREY
Дата: Воскресенье, 18 Декабря 2016, 12:24 | Сообщение # 4
Проверенный
Сообщений: 18
Награды: 0
Репутация: 4
Замечания: 0%
Вот весь код, с проверкой на 0 и на макс (В моём случае это 13).

Кнопки прописываются в script.rpy
Код
    show screen avatar_left_change
    show screen avatar_right_change


Это в отдельном файле писал.
Код
creen avatar_left_change:
        if avatar == 1:
            imagebutton auto "images/btn/avatar_left_%s.png" xpos 494 ypos 30 focus_mask True  action SetVariable("avatar", 13), Show("avatar_left")
        elif avatar > 1:
            imagebutton auto "images/btn/avatar_left_%s.png" xpos 494 ypos 30 focus_mask True  action SetVariable("avatar", avatar - 1), Show("avatar_left")

screen avatar_right_change:
        if avatar == 13:
            imagebutton auto "images/btn/avatar_right_%s.png" xpos 600 ypos 30 focus_mask True  action SetVariable("avatar", 1), Show("avatar_right")
        elif avatar >= 1:
            imagebutton auto "images/btn/avatar_right_%s.png" xpos 600 ypos 30 focus_mask True  action SetVariable("avatar", avatar + 1), Show("avatar_right")
          
    screen avatar_right():
        if avatar == 1:
            add "images/avatar/1.png" xalign 0.5 yalign 0.3
        elif avatar == 2:
            add "images/avatar/2.png" xalign 0.5 yalign 0.3
        elif avatar == 3:
            add "images/avatar/3.png" xalign 0.5 yalign 0.3        
        elif avatar == 4:
            add "images/avatar/4.png" xalign 0.5 yalign 0.3       
        elif avatar == 5:
            add "images/avatar/5.png" xalign 0.5 yalign 0.3  
        elif avatar == 6:
            add "images/avatar/6.png" xalign 0.5 yalign 0.3
        elif avatar == 7:
            add "images/avatar/7.png" xalign 0.5 yalign 0.3        
        elif avatar == 8:
            add "images/avatar/8.png" xalign 0.5 yalign 0.3       
        elif avatar == 9:
            add "images/avatar/9.png" xalign 0.5 yalign 0.3  
        elif avatar == 10:
            add "images/avatar/10.png" xalign 0.5 yalign 0.3
        elif avatar == 11:
            add "images/avatar/11.png" xalign 0.5 yalign 0.3        
        elif avatar == 12:
            add "images/avatar/12.png" xalign 0.5 yalign 0.3       
        elif avatar == 13:
            add "images/avatar/13.png" xalign 0.5 yalign 0.3   
        
    
    screen avatar_left():
        if avatar == 1:
            add "images/avatar/1.png" xalign 0.5 yalign 0.3
        elif avatar == 2:
            add "images/avatar/2.png" xalign 0.5 yalign 0.3
        elif avatar == 3:
            add "images/avatar/3.png" xalign 0.5 yalign 0.3        
        elif avatar == 4:
            add "images/avatar/4.png" xalign 0.5 yalign 0.3       
        elif avatar == 5:
            add "images/avatar/5.png" xalign 0.5 yalign 0.3  
        elif avatar == 6:
            add "images/avatar/6.png" xalign 0.5 yalign 0.3
        elif avatar == 7:
            add "images/avatar/7.png" xalign 0.5 yalign 0.3        
        elif avatar == 8:
            add "images/avatar/8.png" xalign 0.5 yalign 0.3       
        elif avatar == 9:
            add "images/avatar/9.png" xalign 0.5 yalign 0.3  
        elif avatar == 10:
            add "images/avatar/10.png" xalign 0.5 yalign 0.3
        elif avatar == 11:
            add "images/avatar/11.png" xalign 0.5 yalign 0.3        
        elif avatar == 12:
            add "images/avatar/12.png" xalign 0.5 yalign 0.3       
        elif avatar == 13:
            add "images/avatar/13.png" xalign 0.5 yalign 0.3  



Просто Бог

Сообщение отредактировал GREY - Воскресенье, 18 Декабря 2016, 12:27
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Ребята помогите (Создания слайдера)
Страница 1 из 11
Поиск: