Как сделать?
…
LordAnvar, вынужден задать Вам вопрос: какой именно переход? Ибо переход может быть двух видов:
1. Вы видите дверь, вы можете попытаться ее открыть, но увы… без ключа Вам ее не открыть.
2. Вы не видите дверь, но стоит Вам сорвать/сжечь/снять непрозрачные занавески, как за ними Вы обнаруживаете дверь.
По сути это конечно не принципиально и мы можем описать оба кода=)
Лучше конечно ж первый вариант, но сейчас именно в этот момент меня интересует вопрос как удалить предмет из инвентаря? А то гг по сюжету оглушают и обезоруживают.
Удалить предмет:
del obj 'Название предмета'
Первый вариант:
!Тут стоит оговориться. Самый простой способ - это задать переменную. Например переменную "ключ"
act 'Открыть':
if ключ=1: gt 'Локация': else *p 'У Вас нет ключа, чтобы открыть дверь'
end
вроде так)
Сейчас же проверю! благодарю! а если очистить инвентарь то All Вместо названия предмеиа или как?
Проще задать цикл и удалить не только все предметы, которые должны быть у героя, но и вообще все предметы, которые могли оказаться у него случайно)
Очистка инвентаря - killobj
Проверку на наличие предмета можно делать так: if obj ‘Ключ’: …
Dark:
Проще задать цикл и удалить не только все предметы, которые должны быть у героя, но и вообще все предметы, которые могли оказаться у него случайно)
А вот так делать не нужно :) Удалить все предметы - killobj
killobj - работает
Полностью всё удоляет))) как я примерно и хотел вроде пока всё)) всё что мне нужно вы уже сказали))
Благодарю всех кто мне сегодня и вчера помог)))
Dark забыл упомянуть, что эта переменная должна устанавливаться в момент взятия ключа.
примерно так:
IF ключ=0:
‘На полу лежит ключ.’
ACT ‘Взять ключ’:
ключ=1
ADDOBJ ‘ключ’
GOTO $CURLOC
END
END
Nex
Dark не забыл я задал просто вопрос как сделать дверь закрытую. Но спасибо тебе мне действительно это тоже нужно было.
Кто нить помагите! Столкнулся с такой проблемой вообщето их две. Первая после взятия предмета в этой локации нужно удалить её или же после взятие предмета удалить действие. Вторая как сделать случайное значение при поиске что то вроде - я обыскал здесь всё но ничего не нашёл - и так через некоторое время после использывания этого действия несколько раз предмет находится и причём предмет должен найтись во время случайного повторения. Мне ещё понадобится как сделать так что например вы видете двер только когда у вас есть определённый предмет?
после взятия предмета в этой локации нужно удалить её или же после взятие предмета удалить действие
См. код, который я приводил выше.
IF ключ=0:
'На полу лежит ключ.'
ACT 'Взять ключ':
ключ=1
ADDOBJ 'ключ'
GOTO $CURLOC
END
END
Объясню его подробно:
Записать этот код нужно в области “Выполнить при посещении” той локации, на которой должен быть ключ.
IF ключ=0:
По этому условию проверяется, был ли ключ подобран игроком. Соответственно, если ключ подобран, то ничего не делаем.
Если нет - ключ “лежит на полу”, поэтому выводим в описание строку:
‘На полу лежит ключ.’
Если ключ лежит на полу, значит его можно взять. Создаём действие:
ACT ‘Взять ключ’:
Между ACT ‘Взять ключ’: и первым оператором END мы записываем операторы, которые выполнятся, когда игрок нажмет это действие. Вот эти строки:
ключ=1
ADDOBJ 'ключ'
GOTO $CURLOC
Рассмотрим подробно.
Строка ключ=1 устанавливает значение переменной ключ равным 1.
Строка ADDOBJ ‘ключ’ добавляет предмет ‘ключ’ в инвентарь.
Строка GOTO $CURLOC осуществляет переход на текущую локацию.
При переходе очищается окно описания(в окно описания выводится “базовое описание локации”) и список действий(добавляются “базовые действия”), затем выполняется код из поля “Выполнить при посещении”.
При выполнении кода, снова проверяется условие
IF ключ=0:
Но на этот раз, в переменной ключ уже значение отличное от нуля, поэтому условие не выполняется, и не выполняется весь код от строки IF ключ=0: до второго оператора END.
Раз код не выполняется, значит:
1. в описание локации не добавляется строка ‘На полу лежит ключ.’
2. в список действий не добавляется действие ‘Взять ключ’
Первое Вам уже объясняли
*p 'По середине комнаты лежал камень.'
act 'Взять его':
!Удаляем текущее выбранное действие
delact $selact()
add obj 'Камень'
!Чистим описание
*clr
*p 'После того как я взял камень всё обрушилось.'
end
Второе:
act 'Поиск':
set a=rand(0,10)
!Где 0 - начало массива, а 10 соответственно конец
if a=0: *p 'Ничего'
if a=1: add obj 'Каменюка'
if a=2: *p 'Ничего'
if a=3: add obj 'Монетка'
!и так далее.
end
Хотя в принципе можно задать массив и обозначить a как индекс переменной. Вариант представляю ниже
!в любой локации задаем массив
!ну не в любой, а там, где у Вас задаются переменные)
$предмет[0]='Камень'
$предмет[1]='Монетка'
$предмет[2]='Банка'
$предмет[3]='Кисть'
!не забываем про пустые предметы
$предмет[4]=''
$предмет[5]=''
$предмет[6]=''
$предмет[7]=''
$предмет[8]=''
$предмет[9]=''
$предмет[10]=''
!теперь непосредственно действие
act 'Поиск':
set a=rand(0,10)
!Где 0 - начало массива, а 10 соответственно конец
!Затем делаем проверку на безрезультатный поиск. Иначе говоря строка ниже значит "Если нашли что-то отличное от нуля"
if $предмет[a]!'':
add obj '<<$предмет[a]>>'
end
end
п.с. Вроде так) Единственное, я допускаю ошибки в rand’e
Разве насчёт первого объясняли? возможно я не так задал вопрос. Я например обыскивал локацию и после того как нашёл я выхожу из неё и её больше нет.
LordAnvar, Вам объяснили, как удалить ненужные действия))