RU

Можно ли сделать локацию со списком всех предметов, существ?

Nickit #1336 01.02.2015 21:53 8 comments 5512 views

Можно ли сделать локацию(и) со списком всех предметов, существ и т.п.
И в нужном месте вставлять допустим определённый предмет, неиспользуя остальные, которые будут предназначены для других действий, локаций и т.д.

Edited at 08.02.2015 14:19 (11 years ago)

Нашёл одну штуку
#Монстры
*PL ‘<center><b>Монстры</b></center>’
*PL ‘’
*P ‘Все создания в игре, с которыми предстоит побороться игроку…’
И так же с предметами
Но как вставить монстра в определённом моменте, не трогая остальных.

Nickit:

Но как вставить монстра в определённом моменте, не трогая остальных.

Можно воспользоваться модулем работы с экраном: https://qsp.org/forum/236-qsp-ekran-modul-dla-raboty-s-ekranom
Нужные тебе места помечаешь тегами:

*P '<region id="monsters"></region>'

После чего тебе достаточно вызвать команду

GS 'Экран.Установить', 'monsters', 'Перечень монстров в локации'

В результате чего у тебя изменится только содержимое экрана между тегами region с идентификатором “monsters”, а остальное останется неизменным.

Nickit,

# начало
! Отключаем неиспользуемые окна.
SHOWSTAT 0
SHOWINPUT 0

! Устанавливаем обработчик перехода на новую локацию.
$ONNEWLOC = 'ONNEWLOC'

! Расставляем объекты по локациям.
GS 'Расставить_объекты'

GT 'прихожая'
-

# расставить_объекты
! Объекты перечислены в специальных массивах имён.

! Перечисляем предметы.
$имя_предмета[] = 'нож'
$имя_предмета[] = 'топор'
$имя_предмета[] = 'бритва'

! Перечисляем персонажей.
$имя_персонажа[] = 'жена'
$имя_персонажа[] = 'брат'

! Для расстановки объектов, используем массивы.
! Индексом массива будет имя объекта.
! Значение массива - локация, на которой находится объект.

! Расставляем предметы по комнатам.
$предметы['нож'] = 'кухня'
$предметы['топор'] = 'кладовка'
$предметы['бритва'] = 'ванная'

! Расставляем "существ" по комнатам.
$персонажи['жена'] = 'кухня'
$персонажи['брат'] = 'гостиная'
-

# ONNEWLOC
! При переходе на новую локацию, выводим список здешних объектов.
GS 'Список_объектов'
-

# список_объектов
! Выводим список предметов.
i = 0
:loop1
IF i < ARRSIZE('$имя_предмета'):
    $предмет = $имя_предмета[i]
    IF $предметы[$предмет] = $CURLOC:
        ! Выводим предмет на экран.
        'Здесь лежит ' + $предмет + '.'
        ! Предмет находится в одной локации с игроком.
        ! Значит, игрок может взять предмет с собой.
        DYNAMIC "
        ACT 'Взять <<$предмет>>':
            ADDOBJ '<<$предмет>>'
            $предметы['<<$предмет>>'] = 'инвентарь'
            GT $CURLOC
        END
        "
    END
    i = i + 1
    JUMP 'loop1'
END

! Выводим список персонажей.
i = 0
:loop2
IF i < ARRSIZE('$имя_персонажа'):
    IF $персонажи[$имя_персонажа[i]] = $CURLOC:
        ! Выводим персонажа на экран.
        'Здесь находится ' + $имя_персонажа[i] + '.'
    END
    i = i + 1
    JUMP 'loop2'
END
-

# кухня
'Это кухня.'
ACT 'Идти в прихожую':
    GT 'прихожая'
END
! Жену можно отправить в магазин, если она на кухне.
IF $персонажи['жена'] = 'кухня':
    ACT 'Отправить жену за пивом':
        *CLR
        '- Жена, сгоняй-ка за пивком.'
        '- Да, дорогой, уже бегу!'
        ''
        $персонажи['жена'] = 'магазин'
        XGT $CURLOC
    END
END
-

# прихожая
'Это прихожая.'
ACT 'Идти в кухню':
    GT 'кухня'
END
ACT 'Идти в гостиную':
    GT 'гостиная'
END
ACT 'Идти в ванную':
    GT 'ванная'
END
ACT 'Заглянуть в кладовку':
    GT 'кладовка'
END
-

# гостиная
'Это гостиная.'
ACT 'Идти в прихожую':
    GT 'прихожая'
END
-

# ванная
'Это ванная.'
ACT 'Идти в прихожую':
    GT 'прихожая'
END
-

# кладовка
'Кладовка.'
ACT 'Идти в прихожую':
    GT 'прихожая'
END
-

Готовый пример:
moving_objects.qsp

Переместил тему в соответствующий раздел.

Nex:

! Перечисляем предметы. 
$имя_предмета[] = 'нож' 
$имя_предмета[] = 'топор' 
$имя_предмета[] = 'бритва' 

! Перечисляем персонажей. 
$имя_персонажа[] = 'жена' 
$имя_персонажа[] = 'брат'

Что-то твой пример на хоррор смахивает) “Пособие для начинающего маньяка”

BiK,
это моё правило.

Пример кода должен быть хотя бы капельку интересным и запоминающимся. Тогда он будет лучше усваиваться.

Абстрактное “локация 1, локация 2, предмет 1, предмет 2” - пусть пишет кто-нибудь другой.

Кстати, по тому же принципу и учебник сделан.

Переименовал тему.

Log in or Register to post comments.