Ошибка в renpy expected statement

Forum rules
This is the right place for Ren’Py help. Please ask one question per thread, use a descriptive subject like ‘NotFound error in option.rpy’ , and include all the relevant information — especially any relevant code and traceback messages. Use the code tag to format scripts.

User avatar

pkt

Veteran
Posts: 322
Joined: Tue Jul 28, 2009 10:09 pm
Completed: I dunno
Projects: Something special
Contact:

Expected Statement Errors

#1

Post

by pkt » Tue Feb 16, 2010 5:07 am

I threw together some cut and pasted spaghetti code and it worked about as well as expected. Errors and fixes later I hit a snag. Here’s the code for my doll maker project. Steal/fix/duct tape away.

Code: Select all

I'm sorry, but errors were detected in your script. Please correct the
errors listed below, and try again.


On line 22 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
show_button_game_menu = True
                      ^

On line 24 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
def button_game_menu():
    ^

On line 33 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
config.overlay_functions.append(button_game_menu)
                                                 ^

On line 35 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
def show_eye1():
    ^

On line 37 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
def show_eye2():
    ^

On line 39 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
def show_eye3():
    ^

On line 41 of /media/disk/Sora-O/Projects/Programming Projects/Renpy/renpy-6.10.0/Datte/charactermaker/game/script.rpy: expected statement.
def show_eye4():
    ^

Ren'Py Version: Ren'Py 6.10.0e

Code: Select all


# You can place the script of your game in this file.

init:
    # Declare images below this line, using the image statement.
    # eg. image eileen happy = "eileen_happy.png"

    # Declare characters used by this game.
    $ e = Character('Eileen', color="#c8ffc8")
    image eye1 = "eye01.png"
    image eye2 = "eye02.png"
    image eye3 = "eye03.png"
    image eye4 = "eye04.png"
    image head = "head01.png"
    image hairback = "hair_back01.png"
    image hairfront = "hair_front01.png"
    image face = "face_front.png"
    image skin = "blouse1.png"
    image blouse = "blousea.png"
    
    $ eye=1
    
    show_button_game_menu = True

    def button_game_menu():
        if show_button_game_menu:
            # to save typing
            ui.vbox(xpos=0.99, ypos=0.98, xanchor='right', yanchor='bottom')
            ui.textbutton("Eye1", clicked=show_eye1, xminimum=80)
            ui.textbutton("Eye2", clicked=show_eye2, xminimum=80)
            ui.textbutton("Eye3", clicked=show_eye3), xminimum=80)
            ui.textbutton("Eye4", clicked=show_eye4), xminimum=80)
            ui.close()
    config.overlay_functions.append(button_game_menu)
    
    def show_eye1():
        $ eye=1
    def show_eye2():
        $ eye=2
    def show_eye3():
        $ eye=3
    def show_eye4():
        $ eye=4
    

# The game starts here.
label start:

    show hairback
    show skin
    show blouse
    show head
    show hairfront
    show face

    if eye==1:
        show eye1
    elif eye==2:
        show eye2
    elif eye==3:
        show eye3
    elif eye==4:
        show eye4

    
    e "You've created a new Ren'Py game."

    e "Once you add a story, pictures, and music, you can release it to the world!"
jump start

No Active Public Renpy Projects…


User avatar

backansi

Veteran
Posts: 224
Joined: Sun May 31, 2009 7:15 am
Location: Korea, Republic of
Contact:

Re: Expected Statement Errors

#2

Post

by backansi » Tue Feb 16, 2010 6:12 am

def statement should be in the python block.
to use variable (show_button_game_menu = True) you should put $ mark in front of variable name or put variable in python block.

Ren’Py reference wrote:The python statement allows one to execute Python code in a Ren’Py script. This allows one to use Python code to declare things to Ren’Py, to invoke much of Ren’Py’s functionality, and to store data in variables that can be accessed by user code.

http://www.renpy.org/wiki/renpy/doc/ref … _Statement

Code: Select all

python:
    show_button_game_menu=True
    def somthing():
        #.....


User avatar

PyTom

Ren’Py Creator
Posts: 15979
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren’Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Expected Statement Errors

#3

Post

by PyTom » Tue Feb 16, 2010 9:36 am

Actually, def statements should generally be used inside an init python block. Putting them inside a regular python block will delay their execution until sometime after the game starts, which can make loading fail to work on certain circumstances.

Supporting creators since 2004
(When was the last time you backed up your game?)

«Do good work.» — Virgil Ivan «Gus» Grissom
Software > Drama • https://www.patreon.com/renpytom


Get the Reddit app

Scan this QR code to download the app now

Or check it out in the app stores

#361

93Mangaka

  • Участники
  • Pip

  • Новичок

  • Cообщений: 3

0

Обычный

Отправлено 22 Июль 2011 — 21:38

Спасибо большое! мне это очень помогло!

  • 0

  • Наверх

#362

93Mangaka

93Mangaka

  • Участники
  • Pip

  • Новичок

  • Cообщений: 3

0

Обычный

Отправлено 23 Июль 2011 — 10:42

Пытаюсь следовать руководству,однако после самой первой записи,при запуске проекта,программа выводит ошибку.Изображение

  • 0

  • Наверх

#363

Andy_Scull

Отправлено 23 Июль 2011 — 11:39

Пытаюсь следовать руководству,однако после самой первой записи,при запуске проекта,программа выводит ошибку.Изображение

Как человек, пишущий на питоне, скажу — требуются команды после init:, уж хз какие там должны быть.

Ошибку он пишет потому что там ничего нет — init: начат блок, и после него сразу начало другого блока label start:
Если в init ничего не требуется вставлять, то можно либо убрать совсем либо всунуть в него команду pass

Либо если label start должно быть внутри init, то надо вставить отступ перед label start — чтобы он понимал, что это внутри инит, а не после него

Сообщение отредактировал Andy_Scull: 23 Июль 2011 — 13:41

  • 0

  • Наверх

#364

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 23 Июль 2011 — 23:15

Приветствую!

Вопрос по работе с DSE framework. Собственно задача (думаю) достаточно простая – в некоторый момент игры необходимо поменять выбор действий в планировщике для определенного периода.
В качестве основы под игру использовал пример из демки.
Вот кусок из секции init python в файле main.rpy:

dp_period(«Afternoon», «afternoon_act»)
dp_choice(«Study», «study»)
dp_choice(«Hang Out», «hang»)
dp_choice(«Shop», «shop», enable=»False», show=»True» )

Последнее действие – shop, оно показывается, но не активно.

Теперь вопрос – как в процессе игры поменять для shop значение enable=»False» на enable=»True»?

Сначала я просто пытался добавить новое действие, вызывая функцию dp_choice для добавления нового выбора в процессе игры, но не получилось. Из любого места ее не вызывать, только из init, а сделав еще один блок init далее в файле main.rpy в игре просто сразу показывается последнее заданное значение.

В любом случае мне нужно понять как управлять значениями enable и show, так как в процессе игры некоторые выборы из планировщика потребуется убрать.

Перебрал кучу вариантов, но так как пока плохо знаю Ren’Py и Python — результата и не добился. :(

Кто работает с DSE, подскажите пожалуйста, как в процессе игры управлять возможными действиями в планировщике событий (убирать или делать неактивными старые, добавлять новые)?

  • 0

  • Наверх

#365

Алекс__

Отправлено 24 Июль 2011 — 00:31

С DSE не работал, но есть мысль…

dp_choice("Shop", "shop", enable="False", show="True" )

присваивает параметрам <enable> и <show> значения «False» и «True» соответственно. Попробуйте вместо конкретных значений использовать переменные, значения которых можно будет менять в процессе игры (только в блоке init: или в самом начале блока start: надо будет присвоить этим переменным начальные значения)

init:
     $ shop_enable_value = "False"
     $ shop_show_value = "True"
... ... ...
    dp_choice("Shop", "shop", enable=shop_enable_value, show=shop_show_value )
... ... ...

label start:
... ... ...
    $ shop_enable_value = "True"

, а сделав еще один блок init далее в файле main.rpy в игре просто сразу показывается последнее заданное значение

Так и должно быть — Рен’пи обрабатывает сразу все «.rpy» файлы в папке с игрой (как если бы это был один файл, содержащий все блоки), а далее исполняет блоки в последовательности:
— init python (в соответствии с очередностью — -5 раньше, чем -2)
— init (в соответствии с очередностью)
— start

  • 0

  • Наверх

#366

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 24 Июль 2011 — 09:45

Алекс, к сожалению не получилось добиться нужного результата.

Я сделал вот так:

init python:

shop_enable_value = «False»
shop_show_value = «True»

dp_choice(«Shop», «shop», enable=shop_enable_value, show=shop_show_value)

label start:

label shop_ok:

$ shop_enable_value = «True»

Когда доходит до shop_ok, то сообщений об ошибке не выдает, но выбор shop в меню остается не доступен.

Возможно я что-то делаю не так?

Сообщение отредактировал Евгений Рысь: 27 Июль 2011 — 19:46

  • 0

  • Наверх

#367

Алекс__

Отправлено 24 Июль 2011 — 15:27

Ммм, хорошо… Синтаксис был неправильный…((
http://lemmasoft.ren…hilit=dp_choice
Здесь рассказано, как правильно указать условия для <dp_choice>.

init python:
    
    shop_enable_value = False # убираем кавычки - теперь значение будет не текст "False", а логическое "ложь"
    shop_show_value = True

    dp_period(какой-то код)
    dp_choice("Shop", "shop", enable="shop_enable_value==True", show="shop_show_value==True" ) # проверяем значения переменных "shop_enable_value" и "shop_show_value" - если их значения "истина" (True без кавычек), то наши условия ("shop_enable_value==True" и "shop_show_value==True") вернут значения "истина" и все сработает.
                                                         	# если мы в начале присвоили значения переменным "shop_enable_value" и "shop_show_value" с кавычками ("True"), то получается, что значение - это некий текст (с учетом больших и маленьких букв). Тогда в условиях для <dp_choice> значения нужно было бы писать тоже в кавычках (одинарных, что бы не запутать Рен'пи) - enable="shop_enable_value == 'True' "

label shop_ok:
    $ shop_enable_value = True # в этом примере значения везде используются без кавычек

Также, если значением переменной может быть только «истина» / «ложь», то
можно сократить код
if my_var — это тоже самое, что и if my_var == True
Тоесть код можно записать так:

init python:
    
    shop_enable_value = False
    shop_show_value = True

    dp_period(какой-то код)
    dp_choice("Shop", "shop", enable="shop_enable_value", show="shop_show_value" )

label shop_ok:
    $ shop_enable_value = True

  • 0

  • Наверх

#368

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 24 Июль 2011 — 15:48

Алекс, спасибо за ссылку на доки и за код. Все работает отлично!

  • 0

  • Наверх

#369

Nekofrenik

Nekofrenik

1 134

Понивластелин

Отправлено 24 Июль 2011 — 19:23

Здравствуйте. Хотел бы спросить у гуру конкретно про эту ошибку

On line 15 of C:Program Files!Dvijok dlya novellNyaka-chan/game/script.rpy: end of line expected.
jump dush:
^

и узнать есть ли где-нибудь список выскакивающих ошибок с кратким указанием, что делать в таком случае?

  • 0

  • Наверх

#370

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 24 Июль 2011 — 21:32

У тебя ошибка в синтаксисе. Вот правильный пример:

label start:
    scene ...
    a "text..."
    menu:
        "выбор А":
            jump aaa
        "выбор Б":
            jump bbb

  • 1

  • Наверх

#371

Алекс__

Отправлено 24 Июль 2011 — 23:44

end of line expected

Рен’пи ожидал конец строки, а обнаружил двоеточие… (должно быть просто <jump dush>) Двоеточие ставится в конце первой строки блока — оно показывает, что последующие строки этого блока должны иметь дополнительный отступ (indentation).

Главное в сообщениях об ошибке — номер строки в которой она обнаружена.
А вообще, сообщения об ошибках в Рен’пи простые и понятные…

Indentation mismatch (и другие ошибки, где есть слово Indentation) — все, что связано с неправильной индентацией строк (лишние пробелы или их не хватает)

end of line expected — когда логически строка должна закончиться, но Рен’пи находит еще какие-либо символы в ней (кроме комментариев).

…expects a non-empty block — пустой блок (так быть не должно). Либо исправить индентацию (в следующих строках добавить пробелы, если это действительно блок), либо добавить в пустой блок строку <pass> (команда, которая ничего не делает, но заполняет собой блок), либо убрать двоеточие в строке, если это на самом деле не блок.

expected ‘name’ not found — когда ожидается некое название (изображения, блока и т.д.), а вместо этого написано что-либо другое

name ‘имя переменной’ is not defined — когда используется переменная, значение которой ранее не определено (поэтому, лучше всего присваивать значения всем переменным в самом начале блока «старт»).

Name u’название блока’ is defined twice — два блока с одинаковыми названиями. Названия блоков должны быть уникальными (начинаться с буквы и быть одним словом, т.е. не содержать пробелов (можно использовать нижнее подчеркивание))

… is not terminated with newline. (Check strings and parenthesis.) — необходимо проверить соответствие открывающих и закрывающих скобок

invalid syntax — неправильный синтаксис (возможно пропущены запятые, ошибки в названиях команд (большие и маленькие буквы учитываются)

expected statement — Рен’пи не нашел известной ему команды (возможно ошибка в написании, либо пропущен знак $ в начале единичной строки на питоне)

%d format: a number is required, not str — если формат вывода данных <%d> (т.е. числовые данные), но при этом переменной присвоено текстовое значение.

expected ‘simple_expression’ not found. — проблема со значениями, которые указаны для команд (например xpos = «text» вместо числового значения — текст)

u’какое-то слово’ is not a keyword argument or valid child for… — для данной функции, введенная команда не является правильным аргументом или дочерним элементом (?) (ошибка в названии или для данной функции такая команда просто не применима)

Уфф, вот — что смог припомнить…))

  • 2

  • Наверх

#372

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 27 Июль 2011 — 09:23

В РенПи действительно простые сообщения об ошибках, чтобы даже не программист смог разобраться. Но шпаргалку от Алекса я все-таки себе распечатал. Пригодится :)

  • 0

  • Наверх

#373

Vicente

Отправлено 27 Июль 2011 — 17:45

Помогите мне (опять).
У меня есть несколько(5) меню с выборами ответов(правильный и не правильные). Чтобы продвинуться дальше по сюжету нужно набрать определенное количество очков(т.е правильно ответить на эти вопросы). Если очков будет не достаточно, то должна быть плохая концовка.
Как мне это реализовать? К сожалению ничего из этого руководства мне не помогло.

  • 0

  • Наверх

#374

Евгений Рысь

Евгений Рысь

  • Участники
  • Pip

  • Новичок

  • Cообщений: 7

2

Обычный

Отправлено 27 Июль 2011 — 19:41

Ну, если кратко, то все просто.

1. Заводим переменную, в ней и будем хранить количество правильных ответов
$ victory = 0

2. В процессе игры, при правильном ответе увеличиваем значение переменной
$ victory += 1

3. В финале игры (или там где нужно) проверяем что получилось:
if victory == 5: #проверяем что количество правильных ответов равно 5
jump good_end #переходим к хорошему финалу
#… так же можно проверить и для другого количества правильных ответов, ну а для тех, кто не набрал:
jump bad_end

Вот небольшой пример в виде кода:

define e = Character('Eileen', color="#c8ffc8")

label start:

    $ victory = 0
    
    menu:
        "Правильный ответ":
            e "Ответ правильный"
            $victory += 5
        "Ошибочный ответ":
            e "Ответ ошибочный"
    
    
    if victory == 5:
        e "Ты победил"
        return
    e "Ты проиграл"
    return

Собственно это все премудрости, если что не понятно, пиши.

  • 0

  • Наверх

#375

Vicente

Отправлено 27 Июль 2011 — 20:56

Делаю вроде бы все по Вашей инструкции, но что-то не получается.
Для начала:

$ victory = 0

Что означает цифра ноль?
victory — произвольное название?

$victory += 5

Пробел разве не нужен после доллара?

В общем делаю так:
В каждом меню ставлю переменные
Изображение
В конце ставлю иф:
Изображение
Запускаю игру, отвечаю правильно на все вопросы — выпадает «плохая концовка». Что же не правильно?

  • 0

  • Наверх

#376

Алекс__

Отправлено 27 Июль 2011 — 21:20

Vicente, вы точно ответили на 5 вопросов правильно? Не на 4, не на 6, т.к. у вас стоит условие <if victory == 5>.
Возможно в коде неправильно организованы jump’ы… Вообще, зачем прыгать по блокам? Можно задать вопросы подряд, разбавив неким текстом между менюшками…

label start:
    $ victory = 0 # начальное значение
    menu:
        "Первый вопрос":
             "Правильный ответ":
                  $ victory +=1
             "Неправильный ответ":
                  pass
    menu:
        "Второй вопрос":
             "Правильный ответ":
                  $ victory +=1
             "Неправильный ответ":
                  pass
    menu:
        "Третий вопрос":
             "Правильный ответ":
                  $ victory +=1
             "Неправильный ответ":
                  pass
    menu:
        "Четвертый вопрос":
             "Правильный ответ":
                  $ victory +=1
             "Неправильный ответ":
                  pass
    menu:
        "Пятый вопрос":
             "Правильный ответ":
                  $ victory +=1
             "Неправильный ответ":
                  pass
    "Вот и все с вопросами. Теперь узнаем результат..."
    jump result

label result:
    if victory >4:
        "Похоже, что это победа...))"
    else:
        "Всего %(victory)d правильных ответов, а надо - 5."

В процессе можно использовать Developer tool (Shift + d — язык должен быть английским) — в открывшемся меню выбрать Variable Viewer (просмотр переменных). Там будут написаны текущие значения игровых переменных.

Сообщение отредактировал Алекс__: 27 Июль 2011 — 21:24

  • 0

  • Наверх

#377

Vicente

Отправлено 27 Июль 2011 — 21:55

Использовала джамп, лейбл и элз и все получилось Изображение

В процессе можно использовать Developer tool

Очень полезная штука. Надеюсь она не работает в финальной версии. А то как-то по-читерски это выглядит.

  • 0

  • Наверх

#378

Алекс__

Отправлено 27 Июль 2011 — 22:04

Очень полезная штука. Надеюсь она не работает в финальной версии. А то как-то по-читерски это выглядит.

Дык, отключать надо…))
http://www.renpy.org…Developer_Tools
http://www.renpy.org…onfig.developer
http://www.renpy.org…asing-your-game

  • 0

  • Наверх

#379

Vicente

Отправлено 27 Июль 2011 — 22:13

Спасибо(в очередной раз). Я обещаю, что еще вернусь сюда со своими вопросами.

  • 0

  • Наверх

#380

Vicente

Отправлено 29 Июль 2011 — 18:41

А видео для вставки должно быть какие-то особенное? А то у меня игра зависает перед тем как оно должно воспроизвестись(AVI подогнано под размер окна(800х600))

Как можно ввести текст в центре на весь экран?

Сообщение отредактировал Vicente: 29 Июль 2011 — 19:04

  • 0

  • Наверх

I’m using yesterday’s nightly (Ren’Py 7.6.0.23041402+nightly ) and I’m encountering an error I can’t explain:

File "game/scenes/scene_26.rpy", line 200: expected statement.
    u "... Danya?" id s26_023a

Here’s the original code:

    voice "b26_10"

    u "... Danya?" id s26_023a

    show danya ec pose1 faceleft
    with dissolve

    voice "d26_20"

    d "Yeah, it's me. Who am I speaking to?" id s26_024

And here’s the «u» character definition:

define u =  Character("???", 
            show_namebox_type="unknownname", 
            show_namebox_touch="t_unknownname", 
            ctc="ctc_pic", 
            ctc_position="nestled-close")

define d =  Character(_("Danya"), 
            show_namebox_type="danyaname", 
            show_namebox_touch="t_danyaname", 
            ctc="ctc_pic", 
            ctc_position="nestled-close", 
            voice_tag= "danya")

define r =  Character(_("Riemphea"), 
            show_namebox_type="riempheaname", 
            show_namebox_touch="t_riempheaname", 
            ctc="ctc_pic", 
            ctc_position="nestled-close", 
            voice_tag= "riemphea")

I tried various things:

  • removing the line ID: still same error
  • removing the voice statement: still same error
  • removing the entire line: no more error
  • changing the «u» character to another defined character: works for «d» and a few others, but not «r» for some reason (see character definition above).

Is it a Ren’py bug or something I can fix on my side?

Recommend Projects

  • React photo

    React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo

    Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo

    Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo

    TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo

    Django

    The Web framework for perfectionists with deadlines.

  • Laravel photo

    Laravel

    A PHP framework for web artisans

  • D3 photo

    D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Visualization

    Some thing interesting about visualization, use data art

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo

    Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo

    Microsoft

    Open source projects and samples from Microsoft.

  • Google photo

    Google

    Google ❤️ Open Source for everyone.

  • Alibaba photo

    Alibaba

    Alibaba Open Source for everyone

  • D3 photo

    D3

    Data-Driven Documents codes.

  • Tencent photo

    Tencent

    China tencent open source team.

Понравилась статья? Поделить с друзьями:
  • Ошибка в library car нет пакета под названием car
  • Ошибка в needs to restart что делать
  • Ошибка в render в after effects
  • Ошибка в left 4 dead 2 scripts
  • Ошибка в mysqli class php