ТОМ - платформа для текстовых игр

Объявление

Платформа ТОМ предназначена для создания текстовых игр на русском языке и имеет развитый парсер, позволяющий взаимодействовать с играми с помощью команд на близком к естественному языке. В данный момент активно разрабатывается версия ТОМ 2.
Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Стандартные действия

Сообщений 1 страница 13 из 13

1

Ниже приведена таблица стандартных действий.

Все действия привязаны к глаголам, перечисленным в алфавитном порядке.
К каждому глаголу могут быть привязаны:
- действия (тип act);
- функции (action, fact, expression);
- методы связанных объектов и классов.

действие (act) однозначно указывает на конкретный вид действия.
Глагол может быть многозначным и соответствовать нескольким различным действиям.
Синонимы привязываются к конкретному действию.

функции описывают шаблон команды и содержат код для выполнения действия. Для функции действие (act) является первым аргументом.
Код функции может вызывать методы аргументов и других объектов, как для проверок так и для выполнения самого действия.
Синонимы функции реализуют другие возможные шаблоны команды, но при этом используют код основной функции.
Имя функции - вещь описательная и в код не транслируется. (как вы помните, в синтаксисе ТОМ2 функции имен не имеют).

методы связанных объектов и классов используются в коде функций.

2

арестовывать

act (имя действия)
синонимы

класс действия

код

арестовывать
арестовать
арест

действовать

атаковать

act (имя действия)
синонимы

класс действия

код

атаковать
атака

воздействовать

бежать

act (имя действия)
синонимы

класс действия

код

бежать
побежать
бег
сбежать
подбежать
сбегать
прибежать
выбежать
вбежать
вбегать
прибегать
выбегать
взбегать
взбежать
подбегать
отбегать
отбежать
забежать
забегать

перемещаться

бездействовать

act (имя действия)
синонимы

класс действия

код

бездействовать
бездействие

действовать

тип и имя функции
синонимы функции

аргументы

код

action ожидание

(бездействовать _действие#Пф!е)

==execute==

прошло некоторое время...

беречь

act (имя действия)
синонимы

класс действия

код

беречь

беспокоить

act (имя действия)
синонимы

класс действия

код

беспокоить

библиотека

тип и имя функции
синонимы функции

аргументы

код

action команда

(существо _существо#ЗмИп!е, string _str1, [string _str2], [string _str3], [string _str4], [string _str5])

--parsing--

ok

--check--

if(_существо == actor) fail; //команда самому себе?

if(_существо.type != "object") fail, "{_существо*#Ип} не хочет {actor*#РпНа} слушать..."

if(_существо.num != 1 && $"{_существо*#Ип}"==$"{_существо*#Вп}") //Ип не отличим от Вп

  fail, "непонятно с кем говорить, обращение должно быть в начале фразы"

ok

--execute--

var Command = $"{_str1} {_str2} {_str3} {_str4} {_str5}"

var Resp = _существо < Command

if(Resp != ok)  _существо > Resp

ok

fact наличие класса

(все:видимое _Обж#Ип, class _Клс#Ип)

--parsing--

if(_Клс.num != 2) fail

if(_Обж.type==class) fail //должен быть объект

//if(_Обж.name==_Клс.name) fail //масло масло

if(_Обж.word==_Клс.word) fail //масло масло

if(_Обж.key != _Клс~"ч") fail, _text + " - словосочетание не согласовано"

ok

--check--

_Обж is _Клс?

fact наличие признака

(все:видимое _что#Ип!е, attribute _какое#Ип)

--parsing--

if(_какое.num != 2) fail

if(_что.key != _какое.key) fail, _text + " - словосочета`ние несогласо`вано"

ok

--check--

_что._проверка_видимости

_что.(_какое)

expression объект по владельцу

(все:видимое _что#*п!е, все:видимое _чего_кого#Рп!е)

-- parsing --

if(_что.num == 2) fail

_что._проверка_местоимения

_чего_кого._проверка_местоимения

ok

-- execute --

if(_что.pos != _чего_кого) fail, "у {_чего_кого*#Рп} нет {_что*#Рп}"

_что

expression объект по классу

(class Клс#*п!е, все:видимое Обж#*п!е)

**

мальчик Петя

--parsing--

if(Клс.num==2) fail //это утверждение

if(Обж.type==class) fail //должен быть объект

if(Обж.name==Клс.name) fail //масло масленное

if(Обж.word==Клс.word) fail //масло масленное

Обж._проверка_местоимения

if(Обж.key != Клс~"пч") fail //несогласовано

if(!Обж is Клс) fail, "тут нет {Клс*#Рп} {Обж*#Рп}"

ok

--execute--

Обж

expression объект по признаку

(attribute Atr#*п*р*ч, все:видимое Обж#!е*п*р*ч*д!е)

-- parsing --

if(Atr.num==2 && Обж.key == #Ип) fail //это утверждение

if(Обж.type==class) fail //абстракция с уточнением - это уже не абстракция

Обж._проверка_местоимения

if(Обж.key != Atr.key) fail, "{_text} - словосочета`ние несогласо`вано"

ok

-- execute --

loc._проверка_на_темноту

if(Обж Atr) return Обж

fail, "тут нет {Atr*Обж*#Рп} {Обж*#Рп}"

бить

act (имя действия)
синонимы

класс действия

код

бить
удар
ударить
стукнуть
побить
врезать
вмазать
пнуть
пинать

атаковать

благодарить

act (имя действия)
синонимы

класс действия

код

благодарить
благодарность

говорить

брать

act (имя действия)
синонимы

класс действия

код

брать
взять
поднять
поднимать
забрать
подобрать
забирать
подбирать
присвоить
присваивать

манипулировать

--_проверка--

******************

Дописать!

руки могут быт заняты, связаны, отрублены, а сам ты спишь и ничего взять не можешь.

тип и имя функции
синонимы функции

аргументы

код

action брать
брать предмет

(брать _действие#Пф!е, предмет _что#ВпЗм!е, все:видимое _откуда#ВпБп!е)
(брать _действие#Пф!е, предмет _что#ВпЗм!е)

if(_откуда==null) var _откуда = _что.pos

--parsing--

_что._проверка_на_ты

ok

--check--

if(_что.pos == actor) fail, "уже у тебя"

if(_что.pos != _откуда) fail, "{_откуда*#Бп} нет {_что*#Рп}"

_действие._проверка

_что._проверка_взятия

_что._проверка_типа

ok

--execute--

_что._брать

объект/класс

метод/свойство

код/значение

предмет

_брать

this inside actor

%{actor*#Ип} {$взять*actor} {this*#Вп}.

ok

предмет

_проверка_взятия

this._проверка_видимости

this._проверка_прикосновения

if(this.pos==pers) fail, "{this} и так уже у тебя"

if(this.pos is существо) fail, "{this.pos} не даст тебе {this*#Вп}"

if(this part this.pos) fail, "{this} можно взять только вместе с {this.pos*#Тп}"

if(this._вес > pers._сила) fail, "слишком тяжело"

ok

будить

act (имя действия)
синонимы

класс действия

код

будить
разбудить

воздействовать

быть

act (имя действия)
синонимы

класс действия

код

быть
находиться
располагаться
расположиться

валить

act (имя действия)
синонимы

класс действия

код

валить
завалить
свалить
сваливать
повалить
заваливать
поваливать

воздействовать

варить

act (имя действия)
синонимы

класс действия

код

варить
сварить

воздействовать

везти

act (имя действия)
синонимы

класс действия

код

везти
привезти
увезти

действовать

вести

act (имя действия)
синонимы

класс действия

код

вести
привести
водить
увести

действовать

вздыхать

act (имя действия)
синонимы

класс действия

код

вздыхать
вздохнуть
вздох

бездействовать

взламывать

act (имя действия)
синонимы

класс действия

код

взламывать
взломать
взлом

воздействовать

визжать

act (имя действия)
синонимы

класс действия

код

визжать
визг
повизжать
взвизгнуть

кричать

вить

act (имя действия)
синонимы

класс действия

код

вить
свить

создавать

включать

act (имя действия)
синонимы

класс действия

код

включать
включить
запустить
включение
врубать
врубить
запускать
активировать

воздействовать

возвращать

act (имя действия)
синонимы

класс действия

код

возвращать
вернуть
возвращение
возвратить

манипулировать

возвращаться

act (имя действия)
синонимы

класс действия

код

возвращаться
вернуться
возвращение
возвратиться

перемещаться

воздействовать

act (имя действия)
синонимы

класс действия

код

воздействовать
воздействие

действовать

объект/класс

метод/свойство

код/значение

@материальное

_подмена_объекта

null

возить

act (имя действия)
синонимы

класс действия

код

возить
привезти
увезти

действовать

возражать

act (имя действия)
синонимы

класс действия

код

возражать
возразить
возражение

говорить

вопить

act (имя действия)
синонимы

класс действия

код

вопить
вопль
завопить
повопить

кричать

воровать

act (имя действия)
синонимы

класс действия

код

воровать
своровать
воровство

действовать

врать

act (имя действия)
синонимы

класс действия

код

врать
соврать
враньё

говорить

вставать

act (имя действия)
синонимы

класс действия

код

вставать
встать
подниматься
подняться

менять_положение

вставлять

act (имя действия)
синонимы

класс действия

код

вставлять
вставить

выбрасывать

act (имя действия)
синонимы

класс действия

код

выбрасывать
бросить
оставить
бросать
оставлять
выбросить
уронить
выкинуть
выложить
выкидывать
выкладывать
ронять

манипулировать

тип и имя функции
синонимы функции

аргументы

код

action выбрасывать

(выбрасывать _действие#Пф!е, предмет _что#Вп!е)

--parsing--

_что._проверка_на_ты

ok

--check--

if(_что.pos <> actor) fail, "у тебя нет {_что*#Рп}"

_что._можно_выбросить

if(_что.type !=object) fail, "оставь, пригодится..."

ok

--execute--

_что._выбрасывание

выключать

act (имя действия)
синонимы

класс действия

код

выключать
выключить
выключение
вырубать
вырубить
деактивировать

воздействовать

вытаскивать

act (имя действия)
синонимы

класс действия

код

вытаскивать
вытащить
извлечь
извлекать
извлечение

манипулировать

говорить

act (имя действия)
синонимы

класс действия

код

говорить
разговор
поговорить
беседа
болтать
беседовать
общаться
побеседовать
пообщаться
поболтать

действовать

тип и имя функции
синонимы функции

аргументы

код

action говорить
говорить о предмете с существом
говорить о предмете
говорить с существом

(говорить _действие#Пф!е)
(говорить _действие#Пф!е, о, тема _тема#Пп!у!е, с, существо _собеседник#Тп!е)
(говорить _действие#Пф!е, о, тема _тема#Пп!у!е)
(говорить _действие#Пф!е, с, существо _собеседник#Тп!е)

if(_собеседник==null)

{ //найдем собеседника

  //дописать!

}

if(_тема==null)

{ //найдем тему

  //дописать!

}

--check--

//дописать!

ok

--execute--

%говорим с {_собеседник*#Тп} о {_тема*#Пп} . //заглушка

ok

греметь

act (имя действия)
синонимы

класс действия

код

греметь

шуметь

двигать

act (имя действия)
синонимы

класс действия

код

двигать
движение
шевелить
подвинуть
задвинуть
выдвинуть
задвигать
выдвигать
подвигать
двинуть
передвинуть
передвигать
сместить
смещать
пошевелить

манипулировать

тип и имя функции
синонимы функции

аргументы

код

action двигать

()

двигаться

act (имя действия)
синонимы

класс действия

код

двигаться
движение

действовать

действовать

act (имя действия)
синонимы

класс действия

код

действовать
действие

--проверка_действия--

//в некоторых случаях персонаж неспособен действовать

//%проверка действия //debug

if(actor.мертвое) fail, "{actor*#Ип} не {$мочь*actor} {_действие*#Ив}."

договариваться

act (имя действия)
синонимы

класс действия

код

договариваться

говорить

дотрагиваться

act (имя действия)
синонимы

класс действия

код

дотрагиваться
дотронуться

трогать

есть

act (имя действия)
синонимы

класс действия

код

есть
съесть
жевать
жрать
поесть
кушать
проглотить
сожрать
скушать
сжевать
слопать
лопать
проглатывать

использовать

тип и имя функции
синонимы функции

аргументы

код

action есть

(есть _действие#Пф!е, [еда _обж#Вп!е], [предмет _чем#Тп!е])

ехать

act (имя действия)
синонимы

класс действия

код

ехать
поехать
поездка

перемещаться

ждать

act (имя действия)
синонимы

класс действия

код

ждать
ожидать
подождать
ожидание
обождать

бездействовать

закапывать

act (имя действия)
синонимы

класс действия

код

закапывать
засыпать
закопать
зарыть
зарывать

закрывать

act (имя действия)
синонимы

класс действия

код

закрывать
закрыть
прикрыть
прикрывать
закрытие
затворить
затворять

воздействовать

тип и имя функции
синонимы функции

аргументы

код

action закрывать

(закрывать _действие#Пф!е, @материальное _что#ЗмВп!е)

//подмена объекта действия

if(_что._подмена_объекта !=null) _что = _что._подмена_объекта

--parsing--

_что._проверка_на_ты

_чем._проверка_на_ты

ok

--check--

if(_что.закрытое) fail, "{_что*#Ип} уже {закрыто*_что*#ИпКф}"

_что._проверка_закрытия

ok

--execute--

_что._закрывать

объект/класс

метод/свойство

код/значение

@закрываемое

_закрывать

this.opened = нет

//не открытое

закрытое

%ты закрыл {this*#Вп} {_чем*#Тп}.

ok

@закрываемое

_проверка_закрытия

ok

@материальное

_закрывать

_{this*#Ип} не закрывается!

запирать

act (имя действия)
синонимы

класс действия

код

запирать
запереть
замкнуть
замыкать

воздействовать

тип и имя функции
синонимы функции

аргументы

код

action запирать
закрывать ключом
закрывать на ключ
запирать на ключ

(запирать _действие#Пф!е, @закрываемое _что#ЗмВп!е, [предмет _ключ#ЗмТп!е])
(закрывать _действие#Пф!е, @закрываемое _что#ЗмВп!е, предмет _ключ#ЗмТп!е)
(закрывать _действие#Пф!е, @закрываемое _что#ЗмВп!е, на#!е, предмет _ключ#ЗмВп!е)
(запирать _действие#Пф!е, @закрываемое _что#ЗмВп!е, на#!е, предмет _ключ#ЗмВп!е)

//подмена объекта действия

if(_что._подмена_объекта !=null) _что = _что._подмена_объекта

//есть ключ? а если найду?

if(_ключ==null) var _ключ = _что._ключ

--parsing--

_что._проверка_на_ты

_ключ._проверка_на_ты

ok

--check--

if(_что.запертое) fail, "{_что*#Ип} уже {заперто*_что*#ИпКф}"

if(_ключ!=null && (_ключ.pos != actor || _ключ.pos == _что)) fail, "у тебя нет {_ключ*#Рп}"

if(!_что.закрытое) _что._проверка_закрытия

_что._проверка_запирания

ok

--execute--

_что._запирать

объект/класс

метод/свойство

код/значение

@закрываемое

_запирать

this.opened = нет

не открытое

закрытое

запертое

%ты запер {this*#Вп} {_ключ*#Тп}.

ok

@закрываемое

_проверка_запирания

if(this._ключ != null && this._ключ != loc._ключ) fail, "{loc._ключ*#Вп} не подходит к {this*#Дп}"

ok

записывать

act (имя действия)
синонимы

класс действия

код

записывать
записать

действовать

застегивать

act (имя действия)
синонимы

класс действия

код

застегивать
застегнуть

звать

act (имя действия)
синонимы

класс действия

код

звать
позвать
зов

здороваться

act (имя действия)
синонимы

класс действия

код

здороваться
здравствовать
привет
приветствовать
поздороваться
приветствие
поприветствовать

идти

act (имя действия)
синонимы

класс действия

код

идти
пойти
выйти
прийти
выходить
подойти
войти
приходить
подходить
входить
зайти
заходить
сходить
отойти
сойти
поход
отходить
взойти
всходить
придти

перемещаться

из

тип и имя функции
синонимы функции

аргументы

код

expression предмет из материала

(все:видимое _обж#!е*п*р*ч*д!е,[сделанное _сд#!е], из, материал _мат#РпЕч!е)

-- parsing --

if(_обж.type==class) fail //абстракция с уточнением - это уже не абстракция

if(_сд != null)

{ if(_сд.key != _обж.key) fail, "слова не согласованы"

  if(_сд.key == #Кф) fail //краткая форма соответствует утверждению

}

_обж._проверка_местоимения

ok

-- execute --

if(_обж._материал == _мат || _обж._материал is _мат) return _обж

fail, "здесь нет {_обж*#Рп} из {_мат*#Рп}"

изучать

act (имя действия)
синонимы

класс действия

код

изучать
изучить

действовать

инвентарь

тип и имя функции
синонимы функции

аргументы

код

action инвентарь

(инвентарь#ИпЕч)

--execute--

if(actor.in == null) "у тебя ничего нет"

else $"у тебя есть {actor.in}"

искать

act (имя действия)
синонимы

класс действия

код

искать
поиск
поискать

действовать

использовать

act (имя действия)
синонимы

класс действия

код

использовать

действовать

испытывать

act (имя действия)
синонимы

класс действия

код

испытывать
испытать
испытание

воздействовать

исследовать

act (имя действия)
синонимы

класс действия

код

исследовать
исследование

казнить

act (имя действия)
синонимы

класс действия

код

казнить
казнь

воздействовать

касаться

act (имя действия)
синонимы

класс действия

код

касаться
коснуться

трогать

кидать

act (имя действия)
синонимы

класс действия

код

кидать
кинуть
швырнуть
метать
метнуть
швырять

копать

act (имя действия)
синонимы

класс действия

код

копать
рыть
выкопать
раскопать
разрыть
вырыть
разгрести
разгребать
рытье

копаться

act (имя действия)
синонимы

класс действия

код

копаться
копание
покопаться
ковыряться
поковыряться

кричать

act (имя действия)
синонимы

класс действия

код

кричать
крикнуть
закричать
крик
орать
заорать
покричать
поорать
накричать
наорать
оборать

шуметь

тип и имя функции
синонимы функции

аргументы

код

action кричать на

(кричать _действие#Пф!е, на, существо _обж#ВпЗм!е)

--parsing--

ok

--check--

_действие.проверка_действия

ok

--execute--

%{actor*#Ип} {_действие*actor} на {_обж*#Вп}.

ok

лезть

act (имя действия)
синонимы

класс действия

код

лезть
выбраться
влезть
вылезать
залезть
забраться
слезть
залезать
вылезть
карабкаться
вскарабкаться
выкарабкаться
влезать
слезать

перемещаться

лететь

act (имя действия)
синонимы

класс действия

код

лететь
полететь
прилететь
взлететь

перемещаться

лизать

act (имя действия)
синонимы

класс действия

код

лизать
лизнуть

изучать

ложиться

act (имя действия)
синонимы

класс действия

код

ложиться
лежать
лечь
улечься
разлечься

менять_положение

манипулировать

act (имя действия)
синонимы

класс действия

код

манипулировать

действовать

менять

act (имя действия)
синонимы

класс действия

код

менять_положение

действовать

набирать

act (имя действия)
синонимы

класс действия

код

набирать
набрать
набор

брать

надевать

act (имя действия)
синонимы

класс действия

код

надевать
носить
надеть
одеть
одевать
одевание
напялить
напяливать

манипулировать

нажимать

act (имя действия)
синонимы

класс действия

код

нажимать
нажать
давить
жать
надавить
надавливать
нажим
вдавить
вдавливать

воздействовать

тип и имя функции
синонимы функции

аргументы

код

action нажимать

(нажимать _действие#Пф!е, на, @материальное _что#Вп!е)

--parsing--

_что._проверка_на_ты

ok

--check--

_что._проверка_прикосновения

ok

--execute--

_что._нажимать

ok

объект/класс

метод/свойство

код/значение

@материальное

_нажимать

не нажимается!

нападать

act (имя действия)
синонимы

класс действия

код

нападать
нападение
напасть

атаковать

нюхать

act (имя действия)
синонимы

класс действия

код

нюхать
понюхать
обнюхать
обнюхивать

изучать

обыскивать

act (имя действия)
синонимы

класс действия

код

обыскивать
обыскать
обыск

искать

осматривать

act (имя действия)
синонимы

класс действия

код

осматривать
рассматривать
осмотреть
оглядеть
рассмотреть
оглядывать
осмотр

изучать

тип и имя функции
синонимы функции

аргументы

код

action осматривать
осматриваться в локации
предмет осматривать
смотреть на

(осматривать _действие#Пф!е, всё:видимое _что#ВпЗм!е)
(осматриваться _действие#Пф!е, location _что#ЛпЗм!е)
(всё:видимое _что#ИпЗм!е)
(смотреть _действие#Пф!е, на, всё:видимое _что#ВпЗм!е)

--parsing--

if(_что.type==class || _что.cls==null) fail

_что._проверка_на_ты

ok

--check--

_что._проверка_видимости

ok

--execute--

var text

if(_что is string || _что is number) text = _что  + "."

else text =_что._осматривать

if(actor==pers) %{text}

else actor > text

action осматривать направление

(осмотри#Пф, направление Напр)

--check--

pers._может_видеть

loc._проверка_на_темноту

--execute--

%{Напр}.

объект/класс

метод/свойство

код/значение

все:видимое

_внешнее_описание

"{this._описание}, {this.attribute/@состояние*this*#ИпКф}."

все:видимое

_картинка

""

все:видимое

_описание

"{обычное*this*#Ип} {this*#Ип}"

все:видимое

_осматривать

осмотренное

var text

if(this._картинка!=null) text = "<img src={this._картинка} class=thing>"

if(this._полное_описание!=null && !this.осмотренное) text = text + this._полное_описание + "."

else text = text + this._внешнее_описание + "."

$ text

все:видимое

_полное_описание

""

существо

_осматривать

осмотренное

var text

if(this._картинка!=null) text = "<img src={this._картинка} class=pers>"

if(this._полное_описание!=null && !this.осмотренное) text = text + this._полное_описание

else text = text + this._внешнее_описание

$ text

осматриваться

act (имя действия)
синонимы

класс действия

код

осматриваться
оглядеться
осмотреться
осмотр

осматривать

тип и имя функции
синонимы функции

аргументы

код

action осматриваться

(осматриваться#Пф!е)

--check--

loc._проверка_на_темноту

ok

--execute--

loc._осматривать

отвинчивать

act (имя действия)
синонимы

класс действия

код

отвинчивать
отвинтить
открутить
откручивать

отделять

отдавать

act (имя действия)
синонимы

класс действия

код

отдавать
отдать

отделять

act (имя действия)
синонимы

класс действия

код

отделять
отсоединять
отсоединить
отсоединение
отделить

манипулировать

отключать

act (имя действия)
синонимы

класс действия

код

отключать
отключить
отключение
отсоединять
отсоединить

выключать

открывать

act (имя действия)
синонимы

класс действия

код

открывать
открыть
открытие
распахнуть
раскрыть
вскрыть
раскрывать
растворить
растворять
отворить
отворять
распахивать
вскрывать

воздействовать

тип и имя функции
синонимы функции

аргументы

код

action открывать

(открывать _действие#Пф!е, @материальное _что#ЗмВп!е, [предмет _чем#ЗмТп!е])

//подмена объекта действия

if(_что._подмена_объекта !=null) _что = _что._подмена_объекта

//есть ключ? а если найду?

if(_чем==null && _что._ключ.pos == actor) var _чем = _что._ключ

--parsing--

_что._проверка_на_ты

_чем._проверка_на_ты

ok

--check--

if(_что.открытое) fail, "{_что*#Ип} уже {открыто*_что*#ИпКф}"

_что._проверка_открытия

ok

--execute--

_что._открывать

ok

объект/класс

метод/свойство

код/значение

@закрываемое

_открывать

this.opened = да

открытое

//не закрытое

//не запертое

%ты открыл {this*#Вп} {_чем*#Тп}.

ok

@закрываемое

_проверка_открытия

this._проверка_прикосновения

if(this запертое)

{ if(_чем != null && this._ключ != _чем) fail, $"{_чем*#Тп} {this*#Вп} не открыть..."

  if(this._ключ == null) fail, $"{this*#Ип} не открывается..."

  if(_чем == null) fail, $"{this*#Ип} {запертое*this*#ИпКф}"

}

ok

@контейнер

_открывать

this.opened = да

открытое

//не закрытое

//не запертое

%{actor} {$открыть*actor} {this*#Вп} {_чем*#Тп}. {self._внутри}.

ok

@материальное

_открывать

_{this*#Ип} не открывается!

@материальное

_проверка_открытия

this._проверка_прикосновения

fail, $"{this*#Ип} не открывается!"

отпирать

act (имя действия)
синонимы

класс действия

код

отпирать
отпереть
отомкнуть
отмыкать

открывать

ощупывать

act (имя действия)
синонимы

класс действия

код

ощупывать
ощупать
ощупывание

трогать

переключать

act (имя действия)
синонимы

класс действия

код

переключать
щелкнуть
переключить
переключение
щелкать
перещелкнуть
перещелкивать

манипулировать

перемещаться

act (имя действия)
синонимы

класс действия

код

перемещаться
перемещение
переместиться

двигаться

тип и имя функции
синонимы функции

аргументы

код

action перемещаться
по направлению Ип

([перемещаться _движение#Пф!е], [course _направление#Сп!е], [location _куда#Ап!е], [course _напр2#Сп!е])
(course _направление#Ип!е)

//восстанавливаем недостающие аргументы

if( _движение == null ) var _движение = actor._способ_движения

var _откуда = loc

if(_куда == null)

{ //найдем локацию для перемещения

  var _куда

  if( _направление!=null )                      _куда = loc.(_направление) //найдем локацию по направлению

  else if( _движение == подниматься) _куда = loc.вверх //подниматься можно только вверх

  else if( _движение == спускаться )   _куда = loc.вниз   //спускаться можно только вниз

  else if( _движение.key == #Вн )         _куда = loc.вход   //движение внутрь

  else if( _движение.key == #Нн )         _куда = loc.выход//движение наружу

}

--parsing--

//проверим порядок направлений

if(_направление==null && _напр2!=null) fail

if(_напр2 !=null && _направление.num > _напр2.num) fail

ok

--check--

//должно быть указано направление или локация

if(_направление==null && _куда==null) fail, "непонятно место, куда бы вы хотели {_движение*#Ив}."

if(_направление!=null)

{ //сопоставим _движение с направлением

//%_движение._направление = {_движение._направление}

//%_движение.word._направление = {_движение.word._направление}

//%_направление = {_направление.name}

  if(_движение._направление != null && _движение._направление != _направление.name)

    fail, "невозможно {_движение*#Ив} {_направление.name}!"

  if(_движение.word._направление != null && _движение.word._направление != _направление.name)

    fail, "невозможно {_движение*#Ив} {_направление.name}!"

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

  if(_напр2 != null && _направление != _напр2) fail, _ошибка_направления

  //направление должно вести в выбранную локацию

  if(_куда!=null && loc.(_направление) != _куда) fail, _ошибка_направления

}

if(_куда==_откуда) fail, "ты уже здесь"

_движение._проверка //проверяем возможность перемещения выбранным способом

//проверяем возможность goto

if( _направление!=null ) check _направление

else check _куда

ok

--execute--

if( _направление!=null ) goto _направление

else goto _куда.any

перепрыгивать

act (имя действия)
синонимы

класс действия

код

перепрыгивать
прыжок
перепрыгнуть

перемещаться

печатать

act (имя действия)
синонимы

класс действия

код

печатать
печать
набрать
ввести
набирать
напечатать
вводить

действовать

пить

act (имя действия)
синонимы

класс действия

код

пить
выпить
попить
отпить

использовать

плыть

act (имя действия)
синонимы

класс действия

код

плыть

перемещаться

поворачивать

act (имя действия)
синонимы

класс действия

код

поворачивать
повернуть
поворот

подключать

act (имя действия)
синонимы

класс действия

код

подключать
соединить
подключить
соединять
подключение
присоединить
присоединять

включать

подниматься

act (имя действия)
синонимы

класс действия

код

подниматься
подняться

перемещаться

показывать

act (имя действия)
синонимы

класс действия

код

показывать
показать
показ
похвастать
хвастать
хвалиться
похвалиться

ползти

act (имя действия)
синонимы

класс действия

код

ползти
приползти
заползти
вползти
заползать
вползать
выпозти
выползать
сползти
сползать

перемещаться

помогать

act (имя действия)
синонимы

класс действия

код

помогать
помощь
помочь

преследовать

act (имя действия)
синонимы

класс действия

код

преследовать

привинчивать

act (имя действия)
синонимы

класс действия

код

привинчивать
привинтить
прикручивать
прикрутить

прикреплять

привязывать

act (имя действия)
синонимы

класс действия

код

привязывать
привязать
прикручивать
прикрутить
привязывание

прикреплять

приказывать

act (имя действия)
синонимы

класс действия

код

приказывать
приказ
приказать
велеть
повелеть

говорить

прикасаться

act (имя действия)
синонимы

класс действия

код

прикасаться
прикоснуться

трогать

прикреплять

act (имя действия)
синонимы

класс действия

код

прикреплять
прикрепить

манипулировать

пробовать

act (имя действия)
синонимы

класс действия

код

пробовать
попробовать
жевать
проба
откусить
кусать
пожевать

прыгать

act (имя действия)
синонимы

класс действия

код

прыгать
прыгнуть
прыжок
спрыгнуть
спрыгивать
запрыгнуть
запрыгивать
выпрыгнуть
выпрыгивать

перемещаться

размещать

act (имя действия)
синонимы

класс действия

код

размещать
разместить

рассказывать

act (имя действия)
синонимы

класс действия

код

рассказывать
рассказать
рассказ
сообщить
сообщать

говорить

расстегивать

act (имя действия)
синонимы

класс действия

код

расстегивать
расстегнуть

садиться

act (имя действия)
синонимы

класс действия

код

садиться
сесть
присесть

менять_положение

следовать

act (имя действия)
синонимы

класс действия

код

следовать
последовать

слушать

act (имя действия)
синонимы

класс действия

код

слушать

изучать

смотреть

act (имя действия)
синонимы

класс действия

код

смотреть
посмотреть
глядеть
взглянуть
поглядеть
глянуть
просмотр
просмотреть

осматривать

снимать

act (имя действия)
синонимы

класс действия

код

снимать
снять

манипулировать

тип и имя функции
синонимы функции

аргументы

код

action снимать

(снимать _действие#Пф!е, @надевающееся _что#Вп!е)

var _с_кого = actor

--parsing--

_что._проверка_на_ты

ok

--check--

if(_что.pos != _с_кого || !_что.надето) fail, "на {_с_кого*#Рп} не надето {_что*#Рп}"

_действие._проверка

ok

--execute--

_что._снимать

объект/класс

метод/свойство

код/значение

@надевающееся

_снимать

не надето

this in actor

%ты снял {this*#Вп}

ok

соединять

act (имя действия)
синонимы

класс действия

код

соединять
соединить
соединение

создавать

act (имя действия)
синонимы

класс действия

код

создавать
делать
сделать
создать
создание

действовать

спать

act (имя действия)
синонимы

класс действия

код

спать
сон
заснуть
засыпать
поспать

спрашивать

act (имя действия)
синонимы

класс действия

код

спрашивать
спросить
поинтересоваться
расспрашивать
расспросить
опрос

говорить

спускаться

act (имя действия)
синонимы

класс действия

код

спускаться
спуститься
спуск

перемещаться

стоять

act (имя действия)
синонимы

класс действия

код

стоять

бездействовать

стучать

act (имя действия)
синонимы

класс действия

код

стучать
стук
постучать

танцевать

act (имя действия)
синонимы

класс действия

код

танцевать

двигаться

толкать

act (имя действия)
синонимы

класс действия

код

толкать
толкнуть
толчок

двигать

трогать

act (имя действия)
синонимы

класс действия

код

трогать
потрогать
ощупать
пощупать

изучать

тип и имя функции
синонимы функции

аргументы

код

action трогать
дотрагиваться до
касаться чего-то
прикасаться к

(трогать _действие#Пф!е, @материальное _что#ВпЗм!е)
(дотрагиваться _действие#Пф!е, до, @материальное _что#РпЗм!е)
(касаться _действие#Пф!е, @материальное _что#РпЗм!е)
(прикасаться _действие#Пф!е, к, @материальное _что#ДпЗм!е)

--parsing--

if(_что.type==class) fail

_что._проверка_на_ты

ok

--check--

_что._проверка_прикосновения

ok

--execute--

_что._трогать

ok

объект/класс

метод/свойство

код/значение

@материальное

_проверка_прикосновения

if(this == loc || this == actor || this.pos == actor) return ok

this._проверка_видимости

if(this.высоко) fail, $"не могу - {this*#Ип} высоко"

if(this.далеко) fail, $"не могу - {this*#Ип} далеко"

ok

@материальное

_трогать

if(this == actor) %Ты ощупал себя. Вроде бы всё на месте.

else

{ var List = this.attribute/@@ощупываемое

  if(List==null) %На ощупь совершенно {обычное*this*#Ип} {this*#Ип}

  else %На ощупь {this*#Ип} {List*this*#Ип}

}

существо

_проверка_прикосновения

if(this==actor) return ok

this._проверка_видимости

if(this.неживое) return ok //как быть с ожившими скелетами?

if(this.key == #Жр) fail, "{this*#Ип} увернулась, не дав к себе прикоснуться."

if(this.key == #Мр) fail, "лучше {this*#Вп} не трогать..."

ok

3

тянуть

act (имя действия)
синонимы

класс действия

код

тянуть
потянуть
притянуть
притягивать
подтянуть
подтягивать

двигать

у

тип и имя функции
синонимы функции

аргументы

код

fact предмет у существа
предмет есть у существа

(предмет _что#!еИп, у, существо _у_кого#!еРпЕч)
(предмет _что#!еИп, быть#НвЕч!ф!е, у#!е, существо _у_кого#!еРпЕч)

--check--

(_что.pos == _у_кого), "!не! у {_у_кого*#РпНа}."

--execute--

if(_предлог.key <> #Не) _что in _у_кого

else %<font color=red>Пока что невозможно бросить предмет в никуда!</font>

fact у существа нет предмета

(у#!е, существо _у_кого#!еРпЕч, нет, предмет _чего#!еРп)

--check--

if(_чего.pos != _у_кого) да, "нет"

else нет, "есть"

--execute--

%<font color=red>Пока что невозможно бросить предмет в никуда!</font>

уничтожать

act (имя действия)
синонимы

класс действия

код

уничтожать

воздействовать

чистить

act (имя действия)
синонимы

класс действия

код

чистить
вытереть
вытирать
почистить
чистка
очистить
очищать
протереть
протирать
расчистить
расчищать

воздействовать

читать

act (имя действия)
синонимы

класс действия

код

читать
прочитать
прочесть
чтение
почитать

использовать

тип и имя функции
синонимы функции

аргументы

код

action читать

(читать _действие#Пф!е, @текст _что#Вп!е)

--parsing--

if(_что.type==class) fail  //класс это абстракция, его нельзя читать

if(_что.cls==null) fail   //должен быть класс

ok

--check--

_действие._проверка

_что._проверка_видимости

_что._проверка_чтения

ok

--execute--

if(_что is string || _что is number)

{ var Str = _что

  %{Str}

}

%{_что._текст}

ok

шуметь

act (имя действия)
синонимы

класс действия

код

шуметь
шум
пошуметь

действовать

--проверка_действия--

//%шуметь - {_действие.key}

if(_действие==шуметь) fail, "как именно {_действие*#Ив}?"

шуметь.cls.проверка_действия

тип и имя функции
синонимы функции

аргументы

код

action шуметь

(шуметь _действие#Пф!е)

--parsing--

ok

--check--

_действие.проверка_действия

ok

--execute--

%{actor*#Ип} {_действие*actor}.

ok

4

ASBer написал(а):

библиотека

"библиотека" -- это что?
будут ли глаголы типа "нюхать", "лизнуть", "слушать"... короче связанные с иными органами получения информации?

5

zerbino написал(а):

"библиотека" -- это что?

К слову "библиотека" привязаны функции, которые не используют глаголов.
Для загрузки этих функций необходимо упомянуть библиотеку в коде игры.

zerbino написал(а):

будут ли глаголы типа "нюхать", "лизнуть", "слушать"... короче связанные с иными органами получения информации?

Обязательно!

6

Обновил стандартные действия в связи с выходом версии 2.a.4.5

7

Практически вся стандартная библиотека внутри написана с использованием латинских аналогов ключевых слов (секции: check, parse, execute; вложеные элементы: in, out, part и т.д.). Может стоит всё-же использовать их русские аналоги? Среди тех, кто будет использовать платформу ТОМ2 для программирования наверняка найдутся люди, не знающие английский. А вот процент русскоговорящих будет стремиться к 100. Поэтому было бы странно в русском парсере отдавать приоритет английским ключевым словам.
Я понимаю, что для платформы безразлично, какие идентификаторы используются. Но визуальный редактор сейчас не приводит встроенные имена к какому-то стандартному виду при проверке пересечений. И если честно, я не хочу опять всё перелопачивать для добавления такого механизма. И поэтому в редакторе сейчас возможны такие казусы:
http://sg.uploads.ru/t/CUiup.png
Знаю, что если все литералы в стандартной библиотеке будут русскими, то проблема останется, только прямо противоположная. Но предчувствую, что писатели игр всё-таки будут отдавать приоритет русским ключевым словам.

8

Alexandr написал(а):

Но визуальный редактор сейчас не приводит встроенные имена к какому-то стандартному виду при проверке пересечений. И если честно, я не хочу опять всё перелопачивать для добавления такого механизма.

Двуязычие останется, оно никуда не денется. В любом случае редактор должен с этим как-то справляться.

Английские ключевые слова немного быстрее, для них не производится поиск в словаре. Использую их потому что мне, как программисту, так удобнее.
По-моему, это всего лишь дело привычки. Для человека, желающего разобраться в стандартной библиотеке, это не станет препятствием.

9

ASBer написал(а):

Двуязычие останется, оно никуда не денется. В любом случае редактор должен с этим как-то справляться.

Эхх... придётся всё-таки зарываться в код.

10

Добавил большое количество синонимов к действиям и еще немного самих действий. Список действий обновлён.
К сожалению, большинство действий всё еще не снабжены функциями, поэтому проверить их в игре невозможно.

Проделанная работа меня сильно утомила :D

11

Немного поигрался с причастиями.
Вот результат:

> выбрось яблоко
Вы выбросили яблоко.
------------------
> осм брошенное яблоко
Обычное яблоко.
------------------
> осм выброшенное яблоко
Обычное яблоко.
------------------
> возьми выброшенное яблоко
Вы взяли яблоко.
------------------
> осм брошенное яблоко
Тут нет брошенного яблока
------------------
> осм взятое яблоко
Обычное яблоко.


> инв
У тебя есть ржавый ключ и яблоко
------------------
> брось ключ
Вы выбросили ключ.
------------------
> брось яблоко
Вы выбросили яблоко.
------------------
> осм ключ
Ржавый ключ странной формы.
------------------
> возьми осмотренный предмет
Вы взяли предмет.
------------------
> инв
У тебя есть ржавый ключ

12

Прям чудеса какие-то.  :cool:  Т.е. игра хранит ссылки на предметы в неких переменных типа "только-что выброшенный предмет", "последний взятый предмет", "последний осмотренный предмет", "порядок хождения по локациям" (чтоб можно было писать "зайди обратно", "вернись на две локации назад")? А на уровне чего это обрабатывается? Движок или в стандартной библиотеке прописывается?

А можно сделать чтобы можно было приказать идти в локацию по названию, даже если локация не соединена напрямую к текущей? При этом кратко описывались все пройденные при этом локации и срабатывали триггеры посещения (если надо). Например, находясь на крыше башне сразу перейти в подвал:
> иди в подвал
Пройдя через центр башни и спустившись по винтовой лестнице вы оказались в подвале башни.
[описание подвала]

Не, я понимаю, что это не просто и не особо нужно, но раз пошла такая "пьянка"...  :unsure:

Отредактировано Alexandr (2017-04-12 15:25:21)

13

Alexandr написал(а):

Прям чудеса какие-то.

Да нет, всё проще. Действия назначают объектам дополнительные признаки: "осмотренное", "выброшенное". Они ни чем не отличаются от "старое" или "ржавое". Всё на уровне библиотеки.
Предыдущую локацию тоже надо будет запоминать для "вернись назад".
А вот всё остальное пока излишнее...