проблемка с резкой\лутом трупов

Ask for help

Moderators: Murderator+, Murderator

Post Reply
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

проблемка с резкой\лутом трупов

Post by comatoza »

проблемка такого рода - для резки трупов мобов пишет - too far away
причём переберал разные варианты:
1. такой

Code: Select all

uo.findtype('0x2006',-1,'ground')
uo.waittargetobject('finditem')
uo.usetype('dagger')
2.такой

Code: Select all

uo.waittargetground('0x02006')
uo.usetype('dagger')
да, забыл добавить - стою точно над трупом, да и с +-1 тайла тоже
ручками режет нормально...

какие могут быть ещё варианты?
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Наверняка ,set finddistance стоит клеток на 14, вот поиск и находит не труп под ногами, а труп на другом конце экрана. Потому и говорит, что далеко.

1. Добавь UO.Set( 'finddistance', '2' ) в начало

либо

1. Убери поиск
2. Вместо 'finditem' поставь 'lastcorpse'
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

Edred wrote:Наверняка ,set finddistance стоит клеток на 14, вот поиск и находит не труп под ногами, а труп на другом конце экрана. Потому и говорит, что далеко.

1. Добавь UO.Set( 'finddistance', '2' ) в начало

либо

1. Убери поиск
2. Вместо 'finditem' поставь 'lastcorpse'
дело в том что я нахожу труп, подхожу к нему ходилкой.... в клетку входящую в радиус 1 тайл и пытаюсь резать... т.е. finddistance тут непричём....

lastcorpse тоже пробовал - не помогает...
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

TWI включи.

А финдидстанс в первом скрипте очень даже причем, ты же используешь:
uo.findtype('0x2006',-1,'ground')
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

Edred wrote:TWI включи.

А финдидстанс в первом скрипте очень даже причем, ты же используешь:
uo.findtype('0x2006',-1,'ground')
у меня просто такая фишка сделана...

Code: Select all

sub loot_harpy()
var x, y
uo.findtype('0x2006', -1, 'ground')
if uo.getname('finditem') == 'A corpse of a harpy' then
 uo.addobject('harpy_corpse', 'finditem')
 uo.info('harpy_corpse')
 uo.infotile('lasttile')
 x=uo.lasttile(1)
 y=uo.lasttile(2)
 while gotoXY(x,y)<>1
  wait(100)
 wend
 uo.waittargetobject('harpy_corpse')
 uo.usetype('0x0f51')
 uo.findtype('0x1bd1', -1, 'harpy_corpse')
 uo.grab('finditem')
 wait(100)
else
 uo.ignore('finditem')
endif
end sub
т.е. тут то финддистанце роли не играет он режет именно тот труп к которому подошёл...

а насчёт ТВИ счас проверю, спасиба...
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

ТВИ тоже не катит... просто суть скрипта примерна такова - находит гарпию - расстреливает, подходит к трупу, режет лутит, и пока гарпия не спавниться сноваа в хайд...
если ставить ТВИ он всегда находит гарпию пока не исчез труп...
кстати заметил такой момент... если перед запуском скрипта не ткнуть ,info куда-нибудь, хоть в себя... он бежит к какому-то трупу находящемуся непонятно где... в координатах явно за пределами finddistnace и говорит invalid object: finditem
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

справился...
помогло target XYZ fix
и немного поменял систему :) оказывается он всегда пытался бежать к предыдущему трупу...
добавил uo.ignore() и всё пошло как по маслу...
счас дообкатаю и выложу полностью :)
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
comatoza
Posts: 76
Joined: 2006-09-10 01:09:20
Location: Russia>>SPb>>Kolpino
Contact:

Post by comatoza »

переделал целиком и получилась такая штука:

Code: Select all

sub feather_bot()
while not uo.dead()
  while uo.Count('0x1bd1')<=2000 
   if find_harpy()==1 then 
    kill_harpy()
    loot_harpy()
   else
    waiting_for_respawn()
    wait(10000)
   endif
  wend
  toHome()
  atHome()
  tofeather()
wend
end sub

sub find_harpy()
uo.set('finddistance', '30')
uo.findtype('0x001E', -1, 'ground') ##Находим Гарпию
if uo.findcount()>0 then
 uo.print('Есть контакт!')  
 return 1
else
 uo.print('Нэту никто!')
 return 0 
endif
end sub

sub kill_harpy()
var x, y
 uo.addobject('harpy', 'finditem')
 x = uo.getx('harpy')
 y = uo.gety('harpy')
 gotoXY(x,y,20)
 uo.deletejournal()
 uo.arm(2)
 uo.attack('harpy')
 uo.press(37)
 while not uo.injournal('You gain')
  wait(100)
 wend
 uo.print('Сдохли сЦуки!')
 wait(1000)
end sub

sub loot_harpy()
var x, y, i
 uo.addobject('harpy_corpse', 'lastcorpse')
 if uo.getname('harpy_corpse') == 'A corpse of a harpy' then
  x=uo.getX('harpy_corpse')
  y=uo.getY('harpy_corpse')
  gotoXY(x,y,1)
  uo.deletejournal()
  while not uo.injournal('You place the items on the corpse.')
   uo.waittargetobject('harpy_corpse')
   uo.usetype('0x0f51') 										## режем труп гарпии
   wait(5000)
  wend
   for i=1 to 10
   uo.emptycontainer('100', 'harpy_corpse')						## лутим начисто
   wait(500)
  next
 else
  uo.ignore('harpy_corpse')
 endif
 wait(1000)
end sub

sub toHome()
 var last_x, last_y
 last_x = uo.getx()
 last_y = uo.gety()
 uo.disarm()
 uo.recall('0x603D144C', '601')									## здесь прописываем серийник рунбуки с руной домой и номер руны от 601 - 1ая до 621 - 20ая
 while uo.getx()==last_x and uo.gety()==last_y
  wait(100)
 wend 
end sub

sub atHome()
var i, j
dim DropItem[4]
		DropItem[1] = '0x1bd1'	 								## Feather
		DropItem[2] = '0x09F1'									## Cuts of raw ribs 
		DropItem[3] = '0x0F09'									## NotID potion
		DropItem[4] = '0x0E20'									## Bloody bandage
dim RuneBooks[2]
		RuneBooks[1] = '0x603D144C'								## ToHome
		RuneBooks[2] = '0x6091468E'								## ToFeather
		
 for i=1 to 4		
  uo.findtype(dropitem[i], -1, 'my')
  while uo.findcount()>0
  uo.findtype(dropitem[i], -1, 'my')
   uo.moveitem('finditem', 0, '0x6043FEDE') 					## здесь вставляем серийник контейнера в который будут сыпаться перья и прочий мусор 		
   wait(100)
  wend
 next
 uo.useobject('0x6043FEDE')										## Открываем контейнер, тоже необходимо вставить нужный, кстати в нём должна быть хавка, рекаллы, бинты и стрелы
 uo.findtype('0x1F4C', -1, 'lastcontainer') 					## Находим рекаллы
 for j=1 to 2
  uo.waittargetobject('finditem')
  uo.recall(RuneBooks[j], '800')								## Перезарядка рунбуки
  wait(10000)
 next
 uo.findtype('0x097B',-1,'lastcontainer')   					## Находим рыбку и кушаем пока не наелись
 uo.deletejournal()
 while not uo.injournal('You are full')
  uo.useobject('finditem')										
  wait(1000)
 wend
 uo.findtype('0x0F3F', -1, 'lastcontainer')						## Находим и добавляем стрелы
 if uo.count('0x0F3F')<300 then
  uo.grab(200-uo.count('0x0F3F'), 'finditem')
 endif 
 uo.findtype('0x0E21', -1, 'lastcontainer')						## Находим и добавляем бинты
 if uo.count('0x0E21')<180 then
  uo.grab(100-uo.count('0x0E21'), 'finditem')
 endif
end sub

sub toFeather()
var last_x, last_y
last_x = uo.getx()
last_y = uo.gety()
uo.disarm()
uo.recall('0x6091468E', '603')									## А здесь прописываем серийник рунбуки к перьям и номерок рунки
while uo.getx()==last_x and uo.gety()==last_y
 wait(100)
wend 
end sub

sub waiting_for_respawn()
 uo.warmode(0)
 while not uo.Hidden()
  uo.useskill('Hiding')
  wait(1000)
 wend
end sub


sub abs(num) 
if num>=0 then 
 return num 
else 
 return num*(-1) 
end if 
end sub 

sub autoheal()													## Этот макрос необходимо запускать параллельно, если жить охота :)
	while not uo.dead()
	 wait(1000)
	 if uo.life<uo.str-10 then
	  while uo.life<uo.str
	   uo.exec("bandageself")
	   wait(3000)
	  wend
	 endif
	 wait(1000)	
	wend
end sub 

sub gotoxy(x,y,prec) 
var ld=0,ldc=0 
var dx,dy 
var mx,my 
var ox,oy,mk,k 
#uo.print(">") 
#uo.track("1",str(x),str(y)) 
start: 
mx=UO.GetX() 
my=UO.GetY() 
dx=mx-x 
if dx<0 then 
dx=0-dx 
endif 
dy=my-y 
if dy<0 then 
dy=0-dy 
endif 
if dy>dx then 
dx=dy 
end if 
if dx<=prec then 
return 
end if 
if not ldc then 
uo.print(STR(dx)) 
end if 
if dx<3 then 
mk=70 
else 
mk=15 
end if 

ox=mx 
oy=my 
for k=1 to mk 
mx=UO.GetX() 
my=UO.GetY() 
if mx<>ox or my<>oy then 
goto sdidapl 
end if 
wait(10) 
next 
sdidapl: 

mx=UO.GetX() 
my=UO.GetY() 
dx=mx-x 
if dx<0 then 
dx=0-dx 
endif 
dy=my-y 
if dy<0 then 
dy=0-dy 
endif 
if dy>dx then 
dx=dy 
end if 

if dx<=prec then 
return 
end if 
if ld==dx then 
ldc=ldc+1 
if ldc>100 then 
uo.print("Can not reach location!") 
return 
end if 
else 
ld=dx 
end if 

if mx==x then 
if my==y then 
return 
endif 
if my>y then 
#UO.Print("UR") 
UO.Press(33) 
goto start 
endif 
#UO.Print("DL") 
UO.Press(35) 
goto start 
end if 
if mx<x then 
if my>y then 
#UO.Print("R") 
UO.Press(39) 
goto start 
endif 
if my==y then 
#UO.Print("DR") 
UO.Press(34) 
goto start 
endif 
#UO.Print("D") 
UO.Press(40) 
goto start 
end if 
if my<y then 
#UO.Print("L") 
UO.Press(37) 
goto start 
endif 
if my==y then 
#UO.Print("LU") 
UO.Press(36) 
goto start 
endif 
#UO.Print("U") 
UO.Press(38) 
goto start 
end sub 
маленькое уточнение... скрипт заточен по шард Destiny of Middle Earth

не судите слишом строго :)
Твоими пастырями будем мы. Во имя Твоё Господи. Сила снизошла из Твоих рук, наши ноги быстро Твоё слово несут. И прямо к Тебе пусть потёчёт река, наполним душами её. Да будет так!
(с) "Святые из трущоб" перевод камрада Гоблина
Sfairet
Posts: 4
Joined: 2006-10-09 18:07:17

Post by Sfairet »

а вот такой еще вопрос назрел, вообщем я хочу лутать все трупы с одной кнопки в радиусе двух тайлов, скрипт на лут одного трупа у меня работает отлично, а вот если трупа два или больше у меня возникает проблема:
суть в следующем , мне просто надо открывать трупы на земле поочереди, команда usefromgraund не позволяет игнорировать объект, тоесть открываеться все время один и тот же труп, а вот findtype норм в этом плане но не могу открыть ни как труп по finditem, скажи те плз как можно открыть труп по finditem или сделать игнор в usefromgraund?
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Труп монстра это контейнер, а значит береш обычную выгребалку и немного изменяеш. Просто вписываеш типы трупов монстров из которых что выгребать. Но тут 1 проблем, такой скрипт уходит в цикл. Значит нужно не открывать контейнеры на уже известных координатах или уже известного типа.
[b][color=green]ДРВ[/color][/b]
[color=blue]Spoiler[/color]
_________________
[b][color=green]Антарес[/color][/b]
[color=blue]Spoiler[/color]|[color=blue]Gostrabaiter[/color]|[color=red]Umhra[/color]|[color=red]Slog[/color]
SLAK
Posts: 182
Joined: 2005-08-19 16:12:23
Contact:

Post by SLAK »

slonopotam wrote:Значит нужно не открывать контейнеры на уже известных координатах или уже известного типа.

Code: Select all

uo.ignore(object)
Sfairet
Posts: 4
Joined: 2006-10-09 18:07:17

Post by Sfairet »

для функции usefromgraund uo.ignore не работает, для функции findtype работает отлично но я не знаю как через укозатель finditem использовать обект с ЗЕМЛИ, как искать трупы и как открыть первый найденный и собрать все от туда я прекрасно знаю, как подсчитать кол во трупов в радиусе я тоже знаю, а вот как открывать их по очереди в этом то и проблема, я выжу её решение в двух вариантах, либо вы мне подскажите какигнорировать объект для функции usefromgraund или как просто использовать объект с земли через укозатель finditem
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

useobject('finditem'), по фиг где объект, в паке или на земле. Команда одна.
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Edred wrote:useobject('finditem'), по фиг где объект, в паке или на земле. Команда одна.

Code: Select all

uo.usefromground('type') 
?
Last edited by Scripts Writer on 2006-10-20 19:56:08, edited 1 time in total.
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

You Must Die wrote:

Code: Select all

uo.usefromground('object') 
?
С каких пор usefromground стала получать параметром сериал? Всегда был тип...
Ни один скрипт не работает? Пора обновить [url=http://www.eof.nm.ru/FiLeS/uoloop.exe]Инжект[/url]...
Все работает, но хочется большего? Пора переходить на [url=http://stealth.od.ua/]стелс[/url]...
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Post by Scripts Writer »

Edred wrote:
You Must Die wrote:

Code: Select all

uo.usefromground('object') 
?
С каких пор usefromground стала получать параметром сериал? Всегда был тип...
Значит по типу.
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post by mont »

если убивает сразу 2 гарпий, то идет к трупу первой и становиться в хайд, а остальных не режет.
ADEPT_ABP
Posts: 223
Joined: 2006-05-12 08:03:45
Contact:

Post by ADEPT_ABP »

А у меня тоже возникал такой вопрос. Я в нубданжене и килял, и резал, и лутал, и труп изучал. Но вот с uo.ignore намучался. Потом сделал просто перед тем как атаковать, игнорил все найденные трупы. Даже если в радиусе uo.set('finddistance',2) лежало 7 трупов. Соответственно при поиске uo.findtype('0x2006','-1','ground') он находил свежий трупак. Правда в моём случае мои жертвы меня первыми не атаковали. :wink:

А если сначала килл-всех-нах, то как-то так...

Code: Select all

var a, body ; Резервируем переменные а и body 
a=0            ;задаём переменной "а" значение "0"
Dim IDbody[100]  ;  Массив с возможность 101 переменной
repeat                  ; 
Uo.findtype(body,-1,'ground')  ; ищем труп любого цвета на земле
IDbody[a]=uo.getserial('finditem')  ;Т. к. ( "а"=0) задаём IDbody[0] серийник трупа
wait(200)  ;
a=a+1      ; вследующий раз "а" будет больше на 1
uo.ignore('finditem')               ; игнорируем найденный объект
Until uo.findcount()<1             ; Пока условие "ложно" оно будет выполняться
Вот наваял будет-ли работать? Теоритически - да, но как показывает практика - возможны варианты. :)
Играю на drw.ru
Использую инжект 505.18 VeNd0r
Начинающий скриптер.
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Тов.. тьфу, ув. некрофилы - кончайте уже!
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
Post Reply