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

Ask for help

Moderators: Murderator+, Murderator

Post Reply
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

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

Post by Sfagnum »

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

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

DRW
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Скрипт в студию. Или хотябы фрагментик.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post 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
South
Posts: 21
Joined: 2004-04-16 17:11:35
Contact:

Post by South »

лично по моему опыту

у мну на шарде UO.UseType так и не заработал. я не стал мучатся и дуплить в чем трабла и щас просто использую
UO.Exec("usetype ....")
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

South wrote:лично по моему опыту

у мну на шарде UO.UseType так и не заработал. я не стал мучатся и дуплить в чем трабла и щас просто использую
UO.Exec("usetype ....")
она вообще не работает или всё таки какое то сообщение выдаёт?
Ex-Brodyaga
Junior Expert
Posts: 150
Joined: 2004-04-12 20:26:41

Post by Ex-Brodyaga »

Где ты описал tShovel? Если она уже заданна в объектах, то напиши UO.UseObject(tShovel), может ты просто ещё лопату кидаешь на пол, она поворачивается и у неё меняется тип, вобщем эксперементируй :)
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

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


В кавычках.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post 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

и повторюсь перестаёт копать хз когда (ИМХО произвольно), с выше описаным сообщением, при "перекиде" этой же лопаты обратно а бэкпак (ложиться точно так же) продолжает копать...
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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(...)
AGRS
Expert!
Posts: 1007
Joined: 2004-04-04 21:40:09
Contact:

Post by AGRS »

Нет. Только если на пол кинуть. на ДРВ в паке никогда не флипается.
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

AGRS wrote:Нет. Только если на пол кинуть. на ДРВ в паке никогда не флипается.
не кидается :)
Sfagnum
Expert!
Posts: 1284
Joined: 2004-07-04 00:14:58
Contact:

Post by Sfagnum »

1. вообщем тип пральный - и не меняется в течении скрипта
2. юзаю вроде тоже правильно.

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