странности ((

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Val
Posts: 12
Joined: 2004-04-13 16:51:37

странности ((

Post by Val »

Code: Select all

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 тайл так и серию(до окончания внутреннего цикла). Если у кого есть идеи по етому поводу... поделитесь плз.))
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

Наверное проблема вылезает тут:

Code: Select all

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

Для чего устанавливаются dx и dy в 2?
Val
Posts: 12
Joined: 2004-04-13 16:51:37

Post by Val »

устанавливаются, чтоб не пытаться копать когда закончилися кирки в багажнике... :wink:
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

У тебя же есть это:

Code: Select all

   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' дело не дойдет...
Val
Posts: 12
Joined: 2004-04-13 16:51:37

Post by Val »

Вот что значит свежий взгляд... :idea: избыток проверок (((... но дело в любом случае не в етом (((. ибо пропуски бывают в середине массива из 25 тайлов... к примеру с 7 по 10 включительно....(((
Что делать ума неприложу....(((. И, кстати, в етом же скрипте иногда теряются переменные... (счетчики циклов)..(((
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

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

Post by Val »

чтобы увидеть сообщение no item надо включить одну опцию...



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

P.S.
Для того, чтоб увидеть сообщение "no item" вполне достаточно использовать макрос клиеента Last Object если эти обжекты закончились.... (это сообщение клиента и ни каких опций инжи это не касаеться.)
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

То есть, как это теряются переменные? Куда теряются?

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

Еще, можно попробовать переписать без goto (всё равно это очень вредная команда) - мож, из-за нее глючит.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

Val wrote:
чтобы увидеть сообщение no item надо включить одну опцию...
Вы будете смеяться, Монсеньёр, но писать скрипты под инжект я начал ещё в те времена, когда инжект был токо в одном исполнении...
так что "не учите меня жить..." (с) Ильф и Петров.
замечательно... стиль програмирования у вас остался с тех же времён...

ЗЫ не вижу из чего я мог бы сделать подобный вывод.
Val
Posts: 12
Joined: 2004-04-13 16:51:37

Post by Val »

замечательно... стиль програмирования у вас остался с тех же времён...

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

то есть цикл,типа

Code: Select all

var i=0
for i=0 to i < 100
............
next

иногда (когда - непонятно....) вызываеть сообщение:"variable not found i............."..(((((
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

Ну это, вообще, мистика...

Версия инжекта?
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

J17 wrote:Версия инжекта?
судя по строке

Code: Select all

uo.injournal('already|must|broke')
5.х.х
Val
Posts: 12
Joined: 2004-04-13 16:51:37

Post by Val »

а конкретно версия "501.??(4VI)". из тех что я пробывал - это единственная где работает privategettile...... :wink:
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

Может, как раз вот эта конструкция глючит?
uo.injournal('already|must|broke')
Val
Posts: 12
Joined: 2004-04-13 16:51:37

Post by Val »

еслиб проблема была в задержках, то скрипт простоб зависал... а реально он пропускает тайлы(иногда...). Так что у меня один диагноз - теряет значение переменной цикла ((( как правило - внутреннего...
J17
Posts: 69
Joined: 2005-01-16 13:44:08
Location: Moscow
Contact:

Post by J17 »

Я имел в виду, что использование "|" в InJournal появилось недавно. Кто знает, может она глючит, и из-за этого сбиваются переменные...

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