Yoko

All sides of Injection
It is currently 2026-02-21 14:03:04

All times are UTC+02:00




Post new topic  Reply to topic  [ 16 posts ] 
Author Message
 Post subject: странности ((
PostPosted: 2005-04-04 11:18:11 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
Code:
sub dig()

var x=uo.GetX('self')
var y=uo.GetY('self')
var dx,dy
var Tmr,j
var col=''
var i=0
var size=12

 dim tpe[13]
  tpe[0] = '0x07DF' ; Cooper
  tpe[1] = '0x0000' ; Iron
  tpe[2] = '0x0482' ; Steel
  tpe[3] = '0x045E' ; Anra
  tpe[4] = '0x07D6' ; Valurit
  tpe[5] = '0x006F' ; Lavarock
  tpe[6] = '0x09F9' ; Icerock
  tpe[7] = '0x0940' ; Shadow
  tpe[8] = '0x094A' ; Azurit
  tpe[9] = '0x05D7' ; Gem
  tpe[10] = '0x0943' ; Doom 
  tpe[11] = '0x094E' ; Blue Steel 
  tpe[12] = '0x0214' ; Dark Rubi


;------------------------------------------------------
uo.set('finddistance','2')
 for dx=-2 to 2
  for dy=-2 to 2

   i=i+1
   uo.Print(str(i))

   if uo.privategettile(x+dx,y+dy,-1,1330,1360) > 0 then
   
   for j=0 to (size-4)
    col=tpe[j]
     uo.findtype(Ore,col,'ground')
     if uo.findcount() then
       DropToStack(Ore,col)
      end if
   next
   for j=(size-3) to size
    col=tpe[j]
    Grab(Ore,col)
   next

rep1:

    uo.CancelTarget()
    uo.DeleteJournal()
   
   uo.FindType(pickaxe,'-1','my')
   if uo.findcount() then
     uo.WaitTargetTile('0',x+dx,y+dy,str(uo.GetZ('self')))
     wait(50)
     uo.UseType(pickaxe)
    else
     goto rep2
    end if

    repeat
     wait(50)
    until uo.injournal("Select|cannot|already|must|broke|no item")

    Tmr = uo.Timer()+600
    CheckLag()
    wait(1000)

    if uo.injournal('already|must|broke') then
     uo.deletejournal()
     goto rep1
    end if

    if uo.injournal('no item') then
     dx=2
     dy=2
     goto rep2
    end if

    repeat
     wait(50)
    until UO.InJournal("no more ore|must|cannot|broke") || uo.Timer() > Tmr
    if uo.InJournal('broke') then
    else
     uo.Print(str(i))
     test(dx,dy)
    end if

    if uo.injournal('broke') then
     uo.deletejournal()
     goto rep1
    end if

   else
    wait(50)
   end if
rep2:
  next
 next
 uo.exec('mfgi clear')
end sub

вот ето копалка...)). проблема в том что иногда (в случайные моменты)
она может пропусть как 1 тайл так и серию(до окончания внутреннего цикла). Если у кого есть идеи по етому поводу... поделитесь плз.))


Top
   
 Post subject:
PostPosted: 2005-04-06 08:27:56 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
Наверное проблема вылезает тут:
Code:
    if uo.injournal('no item') then 
     dx=2
     dy=2
     goto rep2
    end if

Для чего устанавливаются dx и dy в 2?


Top
   
 Post subject:
PostPosted: 2005-04-06 08:32:58 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
устанавливаются, чтоб не пытаться копать когда закончилися кирки в багажнике... :wink:


Top
   
 Post subject:
PostPosted: 2005-04-06 08:39:30 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
У тебя же есть это:
Code:
   uo.FindType(pickaxe,'-1','my') 
   if uo.findcount() then
     uo.WaitTargetTile('0',x+dx,y+dy,str(uo.GetZ('self')))
     wait(50)
     uo.UseType(pickaxe)
    else
     goto rep2
    end if

Если кирки кончились, то до проверки 'no item' дело не дойдет...


Top
   
 Post subject:
PostPosted: 2005-04-06 11:07:06 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
Вот что значит свежий взгляд... :idea: избыток проверок (((... но дело в любом случае не в етом (((. ибо пропуски бывают в середине массива из 25 тайлов... к примеру с 7 по 10 включительно....(((
Что делать ума неприложу....(((. И, кстати, в етом же скрипте иногда теряются переменные... (счетчики циклов)..(((


Top
   
 Post subject:
PostPosted: 2005-04-06 11:30:08 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
чтобы увидеть сообщение no item надо включить одну опцию...


Top
   
 Post subject:
PostPosted: 2005-04-06 11:42:12 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
Quote:
чтобы увидеть сообщение no item надо включить одну опцию...



Вы будете смеяться, Монсеньёр, но писать скрипты под инжект я начал ещё в те времена, когда инжект был токо в одном исполнении...
так что "не учите меня жить..." (с) Ильф и Петров.

P.S.
Для того, чтоб увидеть сообщение "no item" вполне достаточно использовать макрос клиеента Last Object если эти обжекты закончились.... (это сообщение клиента и ни каких опций инжи это не касаеться.)


Top
   
 Post subject:
PostPosted: 2005-04-06 13:00:01 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
То есть, как это теряются переменные? Куда теряются?

Если в инжекте нет возможности передать переменные как указатели, например, в test(dx,dy), то никак они потеряться не должны.
Расставляй print'ы после каждой строчки, печатай значения dx и dy - и ищи место, где теряются переменные.

Еще, можно попробовать переписать без goto (всё равно это очень вредная команда) - мож, из-за нее глючит.


Top
   
 Post subject:
PostPosted: 2005-04-06 13:14:25 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
Val wrote:
Quote:
чтобы увидеть сообщение no item надо включить одну опцию...
Вы будете смеяться, Монсеньёр, но писать скрипты под инжект я начал ещё в те времена, когда инжект был токо в одном исполнении...
так что "не учите меня жить..." (с) Ильф и Петров.
замечательно... стиль програмирования у вас остался с тех же времён...

ЗЫ не вижу из чего я мог бы сделать подобный вывод.


Top
   
 Post subject:
PostPosted: 2005-04-06 14:00:20 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
Quote:
замечательно... стиль програмирования у вас остался с тех же времён...

возиожно..., но если Вы мине подскажите, как в данной ситуации можно обойтись без goto и при этом не писать строк 25-30, то я с удовольствием воспользуюсь Вашим советом....
Quote:
То есть, как это теряются переменные? Куда теряются?

то есть цикл,типа
Code:
var i=0
for i=0 to i < 100
............
next

иногда (когда - непонятно....) вызываеть сообщение:"variable not found i............."..(((((


Top
   
 Post subject:
PostPosted: 2005-04-06 15:07:55 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
Ну это, вообще, мистика...

Версия инжекта?


Top
   
 Post subject:
PostPosted: 2005-04-06 15:14:04 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
J17 wrote:
Версия инжекта?
судя по строке
Code:
uo.injournal('already|must|broke')
5.х.х


Top
   
 Post subject:
PostPosted: 2005-04-06 15:21:35 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
а конкретно версия "501.??(4VI)". из тех что я пробывал - это единственная где работает privategettile...... :wink:


Top
   
 Post subject:
PostPosted: 2005-04-06 15:54:39 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
Может, как раз вот эта конструкция глючит?
uo.injournal('already|must|broke')


Top
   
 Post subject:
PostPosted: 2005-04-06 16:02:18 
Offline

Joined: 2004-04-13 16:51:37
Posts: 12
еслиб проблема была в задержках, то скрипт простоб зависал... а реально он пропускает тайлы(иногда...). Так что у меня один диагноз - теряет значение переменной цикла ((( как правило - внутреннего...


Top
   
 Post subject:
PostPosted: 2005-04-06 16:12:59 
Offline

Joined: 2005-01-16 13:44:08
Posts: 69
Location: Moscow
Я имел в виду, что использование "|" в InJournal появилось недавно. Кто знает, может она глючит, и из-за этого сбиваются переменные...

По пробуй для эксперимента без этой фишки сделать, через or.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 16 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited