RU

Не открывается в плеере

Зютик #1987 25.01.2017 11:03 15 comments 9621 views

proba.qsp
Помогите разобраться почему не могу открыть в плеере? после посещения Локации Начало выдает ошибку и закрывает плеер. Пробовал разные версии плеера - одно и то же.
пробую писать сам но не могу открыть и посмотреть что получилось…

Может проще сам код локации Начало выложить здесь.

#Начало
“Положить в холодильник 10 кг рыбы”
a=2
b=0
c=0
d=0
act “Начать игру”:gt “Дом”
-
#Дом

“В доме тепло и уютно”
“У вас в холодильнике <<d>> кг рыбы”

if c>0:’Вы вернулись домой с <<c>> килограмами рыбы и положили ее в холодильник’
delobj “Рыба”
d=d+c
с=0
b=0
a=2
gt “Дом”
end

act ‘Собрать снасти’: gt’Сумка со снастями’
act ‘Ити на рыбалку’:
if удочка=1:
gt’Пруд’
else
“Вы не взяли удочку”
end
end
act ‘На начало’: gt ‘Начало’
- #Сумка со снастями
“Тут хранятся ваши рыбацкие принадлежности”

“Количество удочек в вашей сумке <<a>>”
if b>0:
‘Вы взяли <<b>> удочек’
else
‘Вы еще не взяли удочку’
act ‘Взять удочку’:
а=а-1
addobj’Удочка’
b=b+1
gt ‘Сумка со снастями’
end
act ‘Назад’:gt ‘Дом’
-
#Пруд
if b=0:
‘Без удочки на пруду делать нечего’
act ‘Вернуться’:gt ‘Дом’
else
‘На пруду тихо и безветренно. Есть все шансы наловить много рыбы.’
act ‘Ловить рыбу’:”Вы поймали 1кг рыбы”
с=с+1
флаг=1
addobj ‘Рыба <<c>>кг’
gt ‘пруд’
end
act ‘Вернуться’: gt ‘Дом’
end
-
Вот то что я написал в текстовом редакторе а потом скомпилировал

Зютик:

if b>0:
‘Вы взяли <<b>> удочек’
else
‘Вы еще не взяли удочку’
act ‘Взять удочку’:
а=а-1
addobj’Удочка’
b=b+1
gt ‘Сумка со снастями’
end
END
act ‘Назад’:gt ‘Дом’

Не хватало одного энда, мне кажется. Советую писать на Qgen-5, у него есть подсветка синтаксиса, хотя с эндами он и не поможет.

Может ли быть причиной то что плеер не установлен на комп а просто разархивирован и сохранен?
хотя игры от других людей открываются нормально…
Не понимаю что не так! мне же нужно понять работает ли в принципе то что я пишу.

Зютик, плеер может работать где угодно. Я распакованный на флешке таскаю везде и всюду, дело не в нём. Я сам не супер спец. может вечером кто подтянется из старослужащих. Код у тебя ПРИНЦИПИАЛЬНО разумный, возможно просто синтаксис где-то нарушен (формально). Предлагаю всё же попробовать Qgen, перекинуть всё туда. Просто создать отдельные локации, как они у тебя названы в твоем файле. И в каждую скопируй код той локации, которой он соответствует. Попробую сейчас тоже поковыряться.

Проблема в локации Дом, пока не понял где именно.

Глюк шел из-за gt ‘Дом’ на локации Дом. Но это не единственная проблема, игровая механика не отлажена, так что взяв удочку мне не дали порыбачить, хотя она у меня есть аж 2 штуки. Файл прилагаю.Proba-v02.qsp

Aleks Versus Moderator 25.01.2017 18:04 (9 years ago)

Зютик:

if c>0:’Вы вернулись домой с <<c>> килограмами рыбы и положили ее в холодильник’
delobj “Рыба”
d=d+c
с=0
b=0
a=2
gt “Дом”
end

не замечаешь ошибки?
Wol4ik,
ты неправильно определил ошибку. Хотя да, зацикливается из-за goto ‘Дом’.

Ну и далее эта ошибка повторяется во всём коде. Подумайте, пожалуйста, внимательнее. Почитайте справку. Разделы об IF и ACT. Это полезный урок, без него очень тяжело будет дальше писать код. Если не найдёте, предложите вариант наобум.

При многострочной форме IF после “:” ставится перенос строки. Здесь не так.
Про “delobj “Рыба”” затрудняюсь, так как не использую штатный движок инвентаря QSP.
Ошибка в том, что нужно было не gt “Дом” ставить, а ELSE IF и после него все те Акты, которые шли ниже. Так код более предсказуем и управляем. ИМХО. А может я так ничего и не понял.

Aleks Versus Moderator 25.01.2017 19:06 (9 years ago)

Wol4ik:

При многострочной форме IF после “:” ставится перенос строки.

верно. В этом и ошибка. Всё остальное — это производные от неверного представления синтаксиса языка.

Ну вот, сейчас совсем всё поправил, все ЕND расставил, где надо. Но игруха не работает как надо))) и решать это может только автор. Файл во вложении.proba-002.qsp

Не знаю, как у всех. Но когда я запускаю свой код на QSP-Player, то если есть ошибки он мне их выдает в окошке и поясняет В ЧЁМ ошибка. Пишет название Локации и номер строки, где он усмотрел ошибку.

Aleks Versus Moderator 27.01.2017 05:36 (9 years ago)

Wol4ik,
он пишет только явные ошибки. В коде:

#дом
goto 'дом'

с точки зрения плеера нет ошибки. Может ты захотел так)) Плеер делает только то, что ему велено, и указывает на ошибки, когда что-то явно не может выполнить. Бесконечно заходить на локацию он может.)

Aleks Versus,у нас еще есть винда (например #7), которая защищает комп от циклов из которых нет выхода. Проверено неоднократно именно с КУСП)))))

Я использовал “дом-gogo-дом” для перерисовки локации, но из под активной ссылки, а не как результат молниеносных вычислений с переменными. Это допустимое зацикливание, если каждый цикл зависит от клика пользователя.

Да, при зацикливании плеер молча вылетает.

Log in or Register to post comments.