Page 1 of 1

трабла с UO.UseType()

Posted: 2004-10-29 08:17:56
by Sfagnum
у меня тут проблемка возникла, буквально на днях с UO.UseType() на майнинге и тинкеринге, не понятно с чего вдруг теряется ссылка(?) на тип инструмента в бэкпаке, т.е. чар работает - всё ок, а потом упс.. и пишет [b]Item not found[b](вроде так).
кидаешь этот же инструмент(лопата/тинкер тулс) в пак по-новой и всё ок - дальше работает.
через UseObject - замарачиваться чтоль?

ЗЫ этот майнинг юзал в течении 2-3 недель без проблем - non stop'ом

DRW

Posted: 2004-10-29 12:58:44
by AGRS
Скрипт в студию. Или хотябы фрагментик.

Posted: 2004-10-29 13:09:49
by Sfagnum
AGRS wrote:Скрипт в студию. Или хотябы фрагментик.
дома он... :(
а вообще стандартная конструкция, что-то типа

Code: Select all

sub Dig()
var x,y,z='0',TileNum='1339', t=0
   for x=-1 to 1
      for y=-1 to 1
         while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock")
            ToHide()
            CheckLag()
            UO.WaitTargetTile(TileNum,STR(UO.GetX()+x),STR(UO.GetY()+Y),z)
            UO.UseType(tShovel)
            repeat
               wait(500)
            until UO.InJournal("Try mining") OR UO.InJournal("You put") OR UO.InJournal("You loosen") OR UO.InJournal("There is no") OR UO.InJournal("That is too") OR UO.InJournal("OOPS") OR UO.InJournal("attacking you") OR UO.Dead()
            if UO.InJournal("OOPS") then
               t = 1
            end if
            if UO.InJournal("attacking you") OR UO.Dead() then
               UO.CloseUO()
            end if
         wend
         if t == 1 then
            UO.CloseUO()
         end if
      next
   next
end sub

Posted: 2004-10-29 13:48:06
by South
лично по моему опыту

у мну на шарде UO.UseType так и не заработал. я не стал мучатся и дуплить в чем трабла и щас просто использую
UO.Exec("usetype ....")

Posted: 2004-10-29 13:49:43
by Sfagnum
South wrote:лично по моему опыту

у мну на шарде UO.UseType так и не заработал. я не стал мучатся и дуплить в чем трабла и щас просто использую
UO.Exec("usetype ....")
она вообще не работает или всё таки какое то сообщение выдаёт?

Posted: 2004-10-29 21:11:50
by Ex-Brodyaga
Где ты описал tShovel? Если она уже заданна в объектах, то напиши UO.UseObject(tShovel), может ты просто ещё лопату кидаешь на пол, она поворачивается и у неё меняется тип, вобщем эксперементируй :)

Posted: 2004-10-29 21:21:35
by AGRS
Ex-Brodyaga wrote:Где ты описал tShovel? Если она уже заданна в объектах, то напиши UO.UseObject(tShovel), может ты просто ещё лопату кидаешь на пол, она поворачивается и у неё меняется тип, вобщем эксперементируй :)


В кавычках.

Posted: 2004-10-30 01:58:09
by Sfagnum
не там копаете...
вот точно то что юзаю:

Code: Select all

var tShovel='0x0F3A' ; 0x0F39

sub main()
if UO.Count('0x0F3A') > 0 then
   tShovel='0x0F3A'
else
   tShovel='0x0F39'
end if
...
end sub

sub Dig()
var mx = UO.GetX("self"), my = UO.GetY("self"), mz = UO.GetZ("self"),TileNum='1339', t=0
var i,j
   if UO.Dead() then
      UO.Exec('terminate all')
   end if
   for i = mx-1 to mx+1
         for j = my-1 to my+1
            tohide()
            UO.Print("Now Mining In: "+str(mx-i)+" "+str(my-j))
            while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock")                
               tohide()
               CheckLag()
               UO.Waittargettile("1341", str(i), str(j), str(mz))
               UO.Usetype(tShovel)
               while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("OOPS") and not UO.InJournal("attacking you")             
                  wait(500)                   
               wend
               if UO.InJournal('something with ore') or UO.InJournal("OOPS") then
                  t=1
               end if
               if UO.InJournal("but fail") then
                  wait(1000)
               end if               
            wend
            UO.DeleteJournal()
         next
      next
   if t == 1 then       
      UO.CloseUO()
   end if   
   return 1
end sub

и повторюсь перестаёт копать хз когда (ИМХО произвольно), с выше описаным сообщением, при "перекиде" этой же лопаты обратно а бэкпак (ложиться точно так же) продолжает копать...

Posted: 2004-10-30 13:24:20
by Edred
Sfagnum wrote:не там копаете...
вот точно то что юзаю:

Code: Select all

var tShovel='0x0F3A' ; 0x0F39

sub main()
if UO.Count('0x0F3A') > 0 then
   tShovel='0x0F3A'
else
   tShovel='0x0F39'
end if
...
end sub

sub Dig()
var mx = UO.GetX("self"), my = UO.GetY("self"), mz = UO.GetZ("self"),TileNum='1339', t=0
var i,j
   if UO.Dead() then
      UO.Exec('terminate all')
   end if
   for i = mx-1 to mx+1
         for j = my-1 to my+1
            tohide()
            UO.Print("Now Mining In: "+str(mx-i)+" "+str(my-j))
            while not UO.InJournal("no ore here") and not UO.InJournal("location") and not UO.InJournal("far away") and not UO.InJournal("in rock")                
               tohide()
               CheckLag()
               UO.Waittargettile("1341", str(i), str(j), str(mz))
               UO.Usetype(tShovel)
               while not UO.InJournal("You put") and not UO.InJournal("location") and not UO.InJournal("no ore") and not UO.InJournal("but fail") and not UO.InJournal("far away") and not UO.InJournal("in rock") and not UO.InJournal("OOPS") and not UO.InJournal("attacking you")             
                  wait(500)                   
               wend
               if UO.InJournal('something with ore') or UO.InJournal("OOPS") then
                  t=1
               end if
               if UO.InJournal("but fail") then
                  wait(1000)
               end if               
            wend
            UO.DeleteJournal()
         next
      next
   if t == 1 then       
      UO.CloseUO()
   end if   
   return 1
end sub

и повторюсь перестаёт копать хз когда (ИМХО произвольно), с выше описаным сообщением, при "перекиде" этой же лопаты обратно а бэкпак (ложиться точно так же) продолжает копать...


Ну и никакой траблы нет. Абсолютно все логично. Изменение типа лопаты при юзе. Такое может иногда происходить. У тебя же переназначение типа происходит один раз в main, потом при использовании такой проверки уже не происходит. Попробуй переставить этот if...else...endif перед командой UO.UseType(...)

Posted: 2004-10-30 13:36:22
by AGRS
Нет. Только если на пол кинуть. на ДРВ в паке никогда не флипается.

Posted: 2004-10-30 15:32:13
by Sfagnum
AGRS wrote:Нет. Только если на пол кинуть. на ДРВ в паке никогда не флипается.
не кидается :)

Posted: 2004-10-30 17:49:39
by Sfagnum
1. вообщем тип пральный - и не меняется в течении скрипта
2. юзаю вроде тоже правильно.

проблема в том, что в хз какой момент UseType не находит этот тип, который юзается, от чего - вот проблема.