RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2426606 views

Dark[Ol(U23)leneri] #34 27.08.2010 20:42 (15 years ago)

LordAnvar, вынужден задать Вам вопрос: какой именно переход? Ибо переход может быть двух видов:

1. Вы видите дверь, вы можете попытаться ее открыть, но увы… без ключа Вам ее не открыть.
2. Вы не видите дверь, но стоит Вам сорвать/сжечь/снять непрозрачные занавески, как за ними Вы обнаруживаете дверь.

По сути это конечно не принципиально и мы можем описать оба кода=)

Лучше конечно ж первый вариант, но сейчас именно в этот момент меня интересует вопрос как удалить предмет из инвентаря? А то гг по сюжету оглушают и обезоруживают.

Dark[Ol(U23)leneri] #34 27.08.2010 21:21 (15 years ago)

Удалить предмет:

del obj 'Название предмета'

Первый вариант:

!Тут стоит оговориться. Самый простой способ - это задать переменную. Например переменную "ключ"

act 'Открыть':
     if ключ=1: gt 'Локация': else *p 'У Вас нет ключа, чтобы открыть дверь'
end

вроде так)

Сейчас же проверю! благодарю! а если очистить инвентарь то All Вместо названия предмеиа или как?

Dark[Ol(U23)leneri] #34 27.08.2010 21:40 (15 years ago)

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

Очистка инвентаря - 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. в список действий не добавляется действие ‘Взять ключ’

Dark[Ol(U23)leneri] #34 28.08.2010 07:17 (15 years ago)

Первое Вам уже объясняли

*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

Разве насчёт первого объясняли? возможно я не так задал вопрос. Я например обыскивал локацию и после того как нашёл я выхожу из неё и её больше нет.

Dark[Ol(U23)leneri] #34 28.08.2010 07:25 (15 years ago)

LordAnvar, Вам объяснили, как удалить ненужные действия))

Log in or Register to post comments.