[#] Синтаксис работы с way
Wol4ik(syscall,22) — All
2017-08-15 16:38:00


Вопрос про то, как кодом добавлять и убирать со сцены переходы в зависимости от условий. Вот есть прямое добавление в инвентарь предмета
pl.obj:add ’нож’
А как добавлять way на сцену? Так?:
way():add 'локация5'

p.s. и еще вопрос, из учебника не совсем понял, как любое прямое стоковое значение dsc/way представлять в виде переменной? Например
global {
        rrt = 'локация5';
        }

room   {
        nam = 'локация4';
        way = { ..... здесь как-то должно быть значение переменной rrt....?????}
        }
========

[#] Re: Синтаксис работы с way
Peter(syscall,1) — Wol4ik
2017-08-15 17:20:23


> А как добавлять way на сцену?
В way может быть сама комната, и в этом случае можно просто добавить саму эту комнату:

ways():add 'локация'
Но есть и другие способы. Во первых, вместо добавления-удаления, можно делать open/close или disable/enable локации:

room {
    nam = 'дом';
...
}:close() -- закрытый дом

room {
    nam = 'main'
    way = { 'дом' }; -- переход невидим
}
где то в коде:

open 'дом' -- открыли дом -- появился переход

И, наконец, можно использовать path:

way = { path { nam = '#дом', 'В дом', 'дом'}:disable() };  -- выключенный переход

enable 'вдом' -- включили переход.

Можно еще создавать path на лету new и добавлять их... Но это лишнее...

Насчет переменных, не совсем понял вопрос, но вот варианты:

a = path('Выход', 'exit')
И вставляем везде где хотим:

way = { a };
Еще вариант:

exitroom = room {
    nam = 'exit';
....
}
И вставляем где хотим:
way = { exitroom };

В твоем примере с rtt, просто везде в момент загрузки игры в way вставится слово 'локация5', если это то, что тебе нужно - можно и так. Но изменение переменной rtt ничего не изменит в уже созданных комнатах.

[#] Re: Синтаксис работы с way
Wol4ik(syscall,22) — Peter
2017-08-15 20:44:36


Спасибо! Ответы исчерпывающи.