## #Проверяем наличие игроков в поле видимости# ##
sub AttackEnts() var player uo.Set('finddistance','15') var i DIM people[2]
people[0]='0x0190' people[1]='0x0191'
uo.Ignore('self') for i = 0 to 1 uo.FindType(people[i],'-1','ground') player = uo.GetSerial('finditem') wait(500) if uo.FindCount() then uo.Exec('terminate Lumberjacking') RecallAtAttack() end if end sub
## # побег# ##
sub RecallAtAttack() uo.Ignore('all') var mX,mY reccal: uo.DeleteJournal() if uo.Waiting() then uo.CancelTarget() end if mX=uo.getX("self") mY=uo.getY("self") uo.DeleteJournal() UO.UseType( '0x0F06' ) uo.waittargetobject('home') UO.UseType( '0x1F4C' ) uo.Print('Fucking hippies') wait(3000) if not uo.getX("self")<>mX and not uo.getY("self")<>mY then goto reccal end if uo.Print('Yea baby') Wait(5000) Terminate() end sub
Как сделать игнорирование всех персонажей кого он видит, uo.ignore('all')? Я плохо знаю как делаются скрипты. в общем задумка такая, чтобы он рубил, и как видит кого то в лесу тут же улетал домой. но если видит когонить дома или за пределами базы, то просто спокойно стоял, а не пытался бесконечно число раз среколиться. потом допустим выгрузил логи и полетел в лес. в лесу проверка на поиск плееров опять включается
1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать. 2. Предварительно заигнорить персонажей которые на базе или дома, чтобы на них не реагировать.
uo.FindType(animal, COLanimal, 'ground') if uo.FindCount()>0 AND uo.GetX('finditem')<5904 then if uo.GetY('finditem')>=1449 and uo.GetY('finditem')<=1455 then UO.Print(UO.GetName('finditem') +' справа') walker(5896, 1455,0) ; идем направо else if uo.GetY('finditem')>=1457 and uo.GetY('finditem')<=1463 then UO.Print(UO.GetName('finditem') +' слева') walker(5896, 1457,0) ; идем налево endif endif endif
#X и Y верхнего левого угла безопасного сектора var safeX1 = 100 var safeY1 = 100
#X и Y правого нижнего угла безопасного сектора var safeX2 = 200 var safeY2 = 200
Sub isAreaSafe() var playerType = "0x0000" #Type of player
UO.set('finddistance',24)
UO.FindType(playerType,0,'ground') while (UO.FindCount()) if (UO.GetX('finditem') >= safeX1 AND UO.GetX('finditem') <= safeX2 AND UO.GetY('finditem') >= safeY1 AND UO.GetY('finditem') <= safeY2) then UO.Ignore('finditem') else return false endif
uo.FindType(animal, COLanimal, 'ground') if uo.FindCount()>0 AND uo.GetX('finditem')<5904 then if uo.GetY('finditem')>=1449 and uo.GetY('finditem')<=1455 then UO.Print(UO.GetName('finditem') +' справа') walker(5896, 1455,0) ; идем направо else if uo.GetY('finditem')>=1457 and uo.GetY('finditem')<=1463 then UO.Print(UO.GetName('finditem') +' слева') walker(5896, 1457,0) ; идем налево endif endif endif
А что если на экране будет две твари, одна в безопасной зоне а вторая не в ней? Твой скрипт найдёт ту которая в безопасной зоне
это не пример ЕГО скрипта. Это пример из моей тамилки в 2 загонах.Радиус поиска идет по кругу по часовой стрелке. Всегда сперва найдет справа потом слева если они одновременно появятся. В моем примере можно разделить загоны как безопасный и нет заменив walker на нужные действия
Если за всех все делать как же они научатся сами?
Кстати можно еще вариант предложить который мы забыли В скрипте перед реколлом просто терминатить процедуру AttackEnts() а после того как прилетел на место копки рубки снова ее запускать и ненадо никаких доработок скрипта