Page 1 of 1
подскажите с uo.ignore
Posted: 2010-02-02 21:23:59
by Lumberjacker
Code: Select all
##
#Проверяем наличие игроков в поле видимости#
##
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')? Я плохо знаю как делаются скрипты. в общем задумка такая, чтобы он рубил, и как видит кого то в лесу тут же улетал домой. но если видит когонить дома или за пределами базы, то просто спокойно стоял, а не пытался бесконечно число раз среколиться. потом допустим выгрузил логи и полетел в лес. в лесу проверка на поиск плееров опять включается
Re: подскажите с uo.ignore
Posted: 2010-02-02 23:41:24
by Scripts Writer
1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать.
2. Предварительно заигнорить персонажей которые на базе или дома, чтобы на них не реагировать.
Re: подскажите с uo.ignore
Posted: 2010-02-03 21:46:09
by Lumberjacker
1. Проверять координаты того, кого видит. Если он в координатах базы или дома- тогда не улетать.
приведи, пожалуйста, пример синтаксиса написания
Re: подскажите с uo.ignore
Posted: 2010-02-04 00:31:34
by Mirage
Code: Select all
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
Re: подскажите с uo.ignore
Posted: 2010-02-04 00:42:47
by Beyonder
К примеру так:
Code: Select all
#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(playerType,0,'ground')
wend
return true
endsub
Пример использования:
Code: Select all
...
#
if (isAreaSafe() == false) then
recallHome()
endif
...
Re: подскажите с uo.ignore
Posted: 2010-02-04 00:46:18
by Beyonder
Mirage wrote:Code: Select all
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
А что если на экране будет две твари, одна в безопасной зоне а вторая не в ней? Твой скрипт найдёт ту которая в безопасной зоне

Re: подскажите с uo.ignore
Posted: 2010-02-04 03:17:29
by Lumberjacker
Большое спасибо вам за помощь, очень признателен

Re: подскажите с uo.ignore
Posted: 2010-02-04 07:15:39
by Mirage
Beyonder wrote:
это не пример ЕГО скрипта. Это пример из моей тамилки в 2 загонах.Радиус поиска идет по кругу по часовой стрелке. Всегда сперва найдет справа потом слева если они одновременно появятся. В моем примере можно разделить загоны как безопасный и нет заменив walker на нужные действия
Если за всех все делать как же они научатся сами?

Кстати можно еще вариант предложить который мы забыли
В скрипте перед реколлом просто терминатить процедуру AttackEnts() а после того как прилетел на место копки рубки снова ее запускать и ненадо никаких доработок скрипта
