Что то не так в коде) посмотрите кто шарит)
у меня есть три локации
1 пляж
'Около пляжа растёт множество кокосов былобы неплохо их собрать'
' У вас <<доска>> досок.'
if доска >= 3 or OBJ 'стол' or дом<5:
act 'Собрать стол':
ADDOBJ 'стол'
доска = доска-3
gt 'пляж'
end
end
if доска >= 2 or OBJ 'стул' or дом<5:
act 'Собрать стул':
ADDOBJ 'стул'
доска = доска-2
gt 'пляж'
end
end
if доска >= 5 or OBJ 'кровать' or дом<5:
act 'Собрать кровать' :
ADDOBJ 'кровать'
доска = доска-5
gt 'пляж'
end
end
if доска >= 4 or OBJ 'ставни' or дом<5:
act 'Изготовить крепкие ставни':
ADDOBJ 'ставни'
доска = доска-4
gt 'пляж'
end
end
if доска >= 3 or OBJ 'дверь' or дом<5:
act 'Собрать Крепкую дверь':
ADDOBJ 'Дверь'
доска = доска-3
gt 'пляж'
end
end
Act 'Идти к берегу': gt 'Берег'
end
if дом=5: act 'идти к дому' gt 'дом'
end
if дом<5: gt 'лачуга'
end
end
2 берег
'На берегу валяется множество обломков корабля из них можно будет собрать мебель'
' У вас <<доска>> досок.'
act 'Собирать обломки':
доска = доска + 1
end
Act 'Идти на пляж': gt 'пляж'
end
if дом=5: act 'идти к дому': gt 'дом'
end
if дом<5: act 'идти к лачуге': gt 'лачуга'
end
и 3 лачуга
'Ваша лачуга нуждается в мебеле'
' У вас <<доска>> досок.'
IF OBJ 'стол':
ACT 'Поставить стол у окна':
DELOBJ 'стол'
'Стол хорошо вписался в обстановку'
дом=дом+1
DELACT 'Поставить стол у окна'
END
END
IF OBJ 'стул':
ACT 'Поставить стул у стола':
DELOBJ 'стул'
'Стул хорошо вписался в обстановку'
дом=дом+1
DELACT 'Поставить стул у стола'
END
END
IF OBJ 'кровать':
ACT 'Поставить кровать у стены':
DELOBJ 'стул'
'кровать хорошо вписалась в обстановку'
дом=дом+1
DELACT 'Поставить кровать у стены'
END
END
IF OBJ 'дверь':
ACT 'Поставить новую дверь':
DELOBJ 'стул'
'С такой дверью можно не боясь спать'
дом=дом+1
DELACT 'Поставить новую дверь'
END
END
IF OBJ 'ставни':
ACT 'Поставить новые ставни':
DELOBJ 'ставни'
'Окно стало безопасным'
дом=дом+1
DELACT 'Поставить новую дверь'
END
END
Act 'Идти на пляж': gt 'пляж'
end
Act 'Идти к берегу': gt 'Берег'
end
по задумке на береге он должен собирать доски на пляже изготавливать мебель а лачугу обустраивать
после того как в лачуге появится 5 элементов декора он должен стать домом. но чтото в коде нето)
локация пляж перестала быть активной
у тебя условия добавления действий “Собрать стол” и т.д. не правильные
например
if доска >= 3 or OBJ 'стол' or дом<5:
действие будет отображаться если досок больше 2 ИЛИ стол есть в инвентаре ИЛИ переменная дом меньше 5
соответственно действие будет добавляться постоянно
нужно
if доска >= 3 AND NO OBJ 'стол' AND дом<5:
и еще в данной реализации можно один и тот же предмет собирать несколько раз - не зная, задумывал ли ты так или нет, если нет надо добавить переменную для отслеживания уже собранных вещей и добавить ее в услови
и еще - ты путаешь одно и многострочную запись if и act
например
Act 'Идти на пляж': gt 'пляж'
end
нужно или
act 'Идти на пляж': gt 'пляж'
или
act 'Идти на пляж':
gt 'пляж'
end
то есть, если пишешь код в той же строчке, что и if или act, то end не нужен
в твоем примере это не критично, но если такая запись будет внутри другого многострочного if/act будут проблемы
я поправил эти ошибки но он всеравно не заходит на пляж переходит только между лачугой и берегом
лачуга
'Ваша лачуга нуждается в мебеле'
' У вас <<доска>> досок.'
IF OBJ 'стол':
ACT 'Поставить стол у окна':
DELOBJ 'стол'
'Стол хорошо вписался в обстановку'
дом=дом+1
DELACT 'Поставить стол у окна'
END
END
IF OBJ 'стул':
ACT 'Поставить стул у стола':
DELOBJ 'стул'
'Стул хорошо вписался в обстановку'
дом=дом+1
DELACT 'Поставить стул у стола'
END
END
IF OBJ 'кровать':
ACT 'Поставить кровать у стены':
DELOBJ 'стул'
'кровать хорошо вписалась в обстановку'
дом=дом+1
DELACT 'Поставить кровать у стены'
END
END
IF OBJ 'дверь':
ACT 'Поставить новую дверь':
DELOBJ 'стул'
'С такой дверью можно не боясь спать'
дом=дом+1
DELACT 'Поставить новую дверь'
END
END
IF OBJ 'ставни':
ACT 'Поставить новые ставни':
DELOBJ 'ставни'
'Окно стало безопасным'
дом=дом+1
DELACT 'Поставить новую дверь'
END
END
Act 'Идти на пляж':
gt 'пляж'
end
Act 'Идти к берегу':
gt 'Берег'
end
берег
'На берегу валяется множество обломков корабля из них можно будет собрать мебель'
' У вас <<доска>> досок.'
act 'Собирать обломки':
доска = доска + 1
CLR
end
Act 'Идти на пляж': gt 'Пляж'
if дом=5:
act 'идти к дому': gt 'дом'
end
if дом<5:
act 'идти к лачуге': gt 'лачуга'
end
end
пляж
'Около пляжа растёт множество кокосов былобы неплохо их собрать'
' У вас <<доска>> досок.'
if доска >= 3 and no OBJ 'стол' and дом<5 and sz=0:
act 'Собрать стол':
ADDOBJ 'стол'
доска = доска-3
sz=1
gt 'Пляж'
end
end
if доска >= 2 and no OBJ 'стул' and дом<5 and sx=0:
act 'Собрать стул':
ADDOBJ 'стул'
доска = доска-2
cx=1
gt 'Пляж'
end
end
if доска >= 5 and no OBJ 'кровать' and дом<5 and st=0:
act 'Собрать кровать' :
ADDOBJ 'кровать'
доска = доска-5
st=1
gt 'Пляж'
end
end
if доска >= 4 and no OBJ 'ставни' and дом<5 and sv=0:
act 'Изготовить крепкие ставни':
ADDOBJ 'ставни'
доска = доска-4
sv=1
gt 'Пляж'
end
end
if доска >= 3 and no OBJ 'дверь' and дом<5 and cb=0:
act 'Собрать Крепкую дверь':
ADDOBJ 'Дверь'
доска = доска-3
cb=1
gt 'Пляж'
end
end
Act 'Идти к берегу': gt 'Берег'
end
if дом=5: act 'идти к дому' gt 'дом'
end
if дом<5: gt 'лачуга'
end
end
Полность не уверен, но возможно проблема в этих строках:
Act 'Идти к берегу': gt 'Берег'
end
if дом=5: act 'идти к дому' gt 'дом'
end
if дом<5: gt 'лачуга'
end
end
Получается что при каждом переходе на локацию “Пляж” код срабатывает так что ты появляешься у лачуги. Лучше убрать эти условия или, по возможности, заменить их чем либо другим, скажем добавь в условие переменную-флаг. Удачи!
Заработалоо спасиба)
Act 'Идти к берегу': gt 'Берег'
end
if дом=5:
act 'идти к дому': gt 'дом'
end
if дом<5:
act 'идти к лачуге': gt 'лачуга'
end
Перепутаны многострочные и однострочные операторы. Классика.
Поэтому однострочные формы лучше не использовать совсем.
я забыл вписать
act 'идти к лачуге':
пляж
if доска >= 4 and no OBJ 'ставни' and дом<5 and sv=0:
act 'Изготовить крепкие ставни':
ADDOBJ 'ставни'
доска = доска-4
sv=1
msg 'Вы соорудили ставни'
gt 'Пляж'
end
end
лачуга
IF OBJ 'ставни'and aq=0 :
ACT 'Поставить новые ставни':
DELOBJ 'ставни'
дом=дом+1
aq=1
msg'Окно стало безопасным'
DELACT 'Поставить новую дверь'
END
END
на пляже делаю ставни их можно сделать всего 1ни в лачуге ставни можно поставить только 1 раз
так должно быть
на пляже делаю ставни их можно сделать всего 1ни в лачуге ставни можно поставить нное кол раз
а так получается
в итоге счетчик фрагментов интерьера считает слишком много и не могу попасть в локацию дом. как сделать чтоб ставни можно былоб разместить только 1 раз
FIdan,
Действие по условию.
У тебя в DELACT удаляется не то действие которое выбрал игрок. Из-за таких ошибок лучше обходиться вообще без DELACT.
=)спасиба)
а как можно обойтись без delact ?
FIdan,
см. примеры по ссылке в моём предыдущем сообщении.
А также см. учебник.
FIdan:
а как можно обойтись без delact
Проверять условие в действии, например.
Spoiler
ACT 'Поставить новые ставни':
IF OBJ 'ставни'and aq=0 :
DELOBJ 'ставни'
дом=дом+1
aq=1
msg'Окно стало безопасным'
ELSEIF aq=1:
'На окне уже есть ставни'
ELSE
'У тебя нет нужного предмета'
END
END