Дополнительные ловушки прицелов: |
В ASM реализованы несколько дополнительных ловушек прицелов. Практически все их можно заменить громоздкими функциями, но делать это следует только в том случае если вас не устраивает их функциональность. Такое может быть на некоторых шардах. Но лучше не быть эгоистом и предварительно обсудить со мной возможности их модернизации.
number asmWaitTragetMapTile(string LogicType, number X, number Y, number Map) Если ячейка карты Map в координатах X,Y принадлежит логическому типу LogicType по таблице карты, функция установит ловушку прицела UO.WaitTargetTile('0',STR(X),STR(Y),STR(UO.asmMapGetZ(X,Y))) и вернет 1. В противном случае функция вернет 0. Функция не будет работать в тех местах, где персонаж находится ниже уровня карты и всегда будет возвращать 0. Например в шахтах. Это сделано для вашей собственной безопасности, поскольку ни один трезвый ГМ не пройдет мимо персонажа, копающего потолок в шахте. number asmWaitTragetStaticTile(string LogicType, number X, number Y, number Map) Если на карте Map в координатах X,Y есть статичный объект, принадлежащий логическому типу LogicType по таблице статики, функция установит на него ловушку прицела UO.WaitTargetTile(***) и вернет 1. В противном случае функция вернет 0. Пример:
sub main()
Var CanMine UO.asmTLMapOpen('TLMapRock.txt'); Загрузим таблицу типов карты для скал UO.asmTLStaticOpen('TLStaticRock.txt'); Загрузим таблицу типов статики для скал CanMine=UO.asmWaitTargetMapTile('rock',UO.GetX(),UO.GetY(),0); Попытаемся установить прицел на карту If CanMine Then; Если получилось UO.UseType('0x0E85'); Используем кирку Else; Если не получилось CanMine=UO.asmWaitTargetStaticTile('rock',UO.GetX(),UO.GetY(),0); Попытаемся установить прицел на статику If CanMine Then; Если получилось UO.UseType('0x0E85'); Используем кирку EndIf EndIf end sub |