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

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'
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
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')
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
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 проблем, такой скрипт уходит в цикл. Значит нужно не открывать контейнеры на уже известных координатах или уже известного типа.
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
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'), по фиг где объект, в паке или на земле. Команда одна.
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
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 стала получать параметром сериал? Всегда был тип...
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...
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