Описание: type

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


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

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

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

Все обьекты в Ультиме имеют тип (type) обозначающийся обычно четырёхзначным шестнадцатеричным числом вида 0x1234. Тип так же называется graphic (изображение). Это связано с тем что тип совпадает с номером рисунка в базе Ультимы.

Типы, создание и хранение

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

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

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

На шардах распространено использование покрашеных в разные цвета обьектов. Тем не менее они имеют один и тот же тип. Чтобы "на глаз" сравнить типы двух обьектов мысленно покрасьте оба в серый цвет. Если они выглядят одинаково то и тип одинаковый. Точно узнать вы это можете с помощью команды ,info.

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

Типы некоторых обьектов найболее вероятно могут понадобится игроку запоминаются Injection автоматически и они доступны под специальными системными именами:

Указатель Описание содержимого
lastobject Тип последнего использованного (двойным щелчком мыши) обьекта
lasttarget Тип последнего обьекта, на который был наведён прицел (одинарный щелчок мыши в режиме прицеливания). Помните, что макрос Target Next клиента не оказывает влияния на lasttarget в Injection.
lastequipgraphic Тип последнего обьекта, который был перемещён командами equip, equipt, unequip

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

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

Injection может использовать литералы изиуо для укзания типов, например: ,usetype NPF
Таким образом совместное использование EasyUO с Yoko Injection позволяет использовать лучшие стороны обоих программных продуктов. Пример обращения к Injection из EasyUO: msg $,equipt Rhand #findtype $
Обратная связь может осуществляться с помощью журнала, команды 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

Резюме

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