Описание: object

Синтакс: object
Тема: Символы Ключевые слова: symbol


О конструкции мира Ultima Online

Мир UO состоит из двух типов - обьекты и статики. Статики это как бы фоновое изображение, которое записывается у вас на компьютере, это мир состоящий из земли, воды, скал, деревьев, городских зданий. Эта часть (почти) неизменна на всех шардах Ultima Online.

Обьекты (objects) - это всё что создано трудами администрации и игроков. Это подвижные обьекты типа оружия, ресурсов, ящиков, дверей а так же дополнения типа домов игроков, разнообразных украшений и т.п. Легко проверить динамик то что вы видите или статик, если введёте команду ,hide и прицелом покажете на обьект. Если он исчезнет из виду то это динамик, если же нет или вообще прицел не нажимается - то статик.

Каждый обьект в игровом мире имеет уникальный номер, по которому вы можете сказать серверу, и сервер может сказать вам, что конкретно имеется в виду. Номер представляется обычно в виде длинного (8 знаков) шестнадцатеричноко числа вида 0x4010AF44. Не запрещено использовать десятичное число, например 1074835268 но это весьма экзотично.

Обьекты, создание и хранение

Игроку не требуется знать все обьекты мира, но у него обычно есть несколько избранных обьектов с которыми он имеет дело. Чтобы запомнить такие обьекты для дальнейшего использования существует закладка Objects в окне Injection. Например серийный номер любимого крисса можно запомнить под именем mycryss. В дальнейшем под словом обьект и будем подразумевать его серийный номер или имя в закладке Objects.

Чтобы обратиться к обьекту можно указать прямо его номер например 0x12345678 (0 - ноль, x - икс латинская), либо его имя если он добавлен в закладку Objects.

Добавить именованый обьект можно так же специальной командой addobject. Дополнительная информация о обьекте доступна с помощью команды info.

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

Встроеные обьекты Injection (указатели)

Есть некоторые обьекты которые легко узнать и часто используются всеми игроками, например бекпак (рюкзак персонажа). Такие обьекты запоминаются Injection автоматически и они доступны под специальными системными именами:

Указатель Описание содержимого
lastobject Последний использованый (двойным щелчком мыши) обьект
lasttarget Последний обьект, на который был наведён прицел (одинарный щелчок мыши в режиме прицеливания). Помните, что макрос Target Next клиента не оказывает влияния на lasttarget в Injection.
backpack Текущий бекпак вашего персонажа
lastcontainer Последний контейнер открытый сервером для вас
laststatus Последнее существо, на которое была запрошена информация о здоровье (см. так же getstatus). Это происходит например если вы используете встроеный в клиент макрос Target Next. При включеных установках внизу закладки Display имя и здоровье существа пишется в консоли, например:
a pack horse 100/100 HP <-17y>
lastattack Последнее существо, которое вы атаковали
lastequip Последний обьект, который был перемещён командами equip, equipt, unequip
lasthorse Последний обьект, использовав который вы оказались верхом. Может быть это не лошадь но всё же скорее всего это так :)
Если вы собрались использовать этот указатель, то не забудьте включить Permit vars loopback на закладке Main иначе долго указатель на лошади не продержится.
lastcorpse Последний появившийся в области радиусом два экрана труп.
finditem Обьект найденый командой findtype.
self Ваш чар (персонаж).
lasttargetkey Не обьект но приравняный к нему в следствие размера числа. Это число - уникальный номер последнего прицела, который вы послали серверу клиентом. Полезен для экспертов и тех кто пользуется командой target.

Если у вас включена опция Permit Vars Loopback (разрешение обратной связи к переменным) то в числе прочего команды использующие обьекты будут менять значение вышеперечисленных переменных, иначе они будут меняться только от действий клиента.

P.S. В стандартной версии Injection (не Yoko Injection) из всего вышеперечисленого работает только lastobject и lasttarget а о совместимости с EasyUO и речи нет.

Совместимость с EasyUO

Injection может использовать литералы изиуо для укзания обьектов, например: ,useobject URQOC
Таким образом совместное использование EasyUO с Yoko Injection позволяет использовать лучшие стороны обоих программных продуктов. Пример обращения к Injection из EasyUO: msg $,grab 7 #finditem $
Обратная связь может осуществляться с помощью журнала, команды easyobject, нескольких команд скриптов. В отличае от Injection программа EasyUO не настроена сотрудничать и прямой связи не существует.

Использование модификаторов тип—>обьект

Черезвычайно гибким и полезным инструментом может оказаться для макросника средство по автопреобразованию типа в обьект. Выглядит это как односимвользый модификатор слитно написаный с типом, в результате которого связка считается командами Injection обьектом. Так как большинство команд работают с обьектами это позволяет уменьшить количество и размер скриптов. Пример: ,grab 0 ~POF будет работать как "поднять кучку золота с пола и положить в бекпак" (POF - type золотых монет в нотации EasyUO).

Символ Синтакс Описание преобразования Получение того же обьекта в указателе finditem Пример
_ подчерк _type Ищет по типу на чаре, в бекпаке, подсумках findtype type -1 my ,click _POF
^ крышка ^type Ищет в бекпаке без подсумок findtype type -1 backpack ,click ^POF
~ тильда ~type Ищет на земле в некотором радиусе (см. set finddist) findtype type -1 ground ,grab 0 ~POF
< меньше <type Ищет по типу в последнем открытом контейнере findtype type -1 lastcontainer ,grab 0 <POF
. точка object.type Ищет по типу type в указанном контейнере object. findtype type -1 object ,moveitem lastcorpse.gold

Резюме

Обьект (object) - уникальная игровая динамическая единица хранящаяся на сервере. К ней можно обратиться с помощью серийного номера в шестнадцатеричном (0x...) и десятичном форматах, по имени добавленого в список обьекта, через указатели (если вещь особая), и через модификаторы если известно местонахождение и тип вещи.