Page 1 of 2

add object

Posted: 2009-04-30 08:03:04
by lokis
принципиально не хотел писать на форум,дабы не отвлекать учёные умы на ерунду,тут и так много всяких просьб,но делать больше нечего :oops:
всё облазил что вообще реально,но если никто не обьяснит-не понять никогда,всё что знаю-знаю из етого форума,и чужих скриптов,так что всё равно спасибо вам)
не пинайте ногами,или пинайте но обьясните хотябы
как оно работает? add object?
Sub Mark(RuneID,Place)
var mark_key = 0
uo.Print("Выбрасываем старую рунку... ")
uo.drophere(RuneID)
Uo.UseObject(RuneBags)
wait(500)
uo.findtype(rune,'-1',RuneBags)
if uo.FindCount() then
uo.moveitem("finditem",'-1','backpack')
wait(700)
else
var Emsg = "Нет пустых рунок!!"
FatalError(Emsg)
end if
while mark_key == 0
If Uo.Mana < 50 then
while Uo.Mana < Uo.Int
Uo.Useskill("Meditation")
wait(5000)
wend
endif
Uo.DeleteJournal()
wait(500)
Uo.Cast("Mark",'finditem')
wait(10000)
mark_key = 1
if Uo.Injournal("spell") then
mark_key = 0
endif
wend
mark_key = 0
Uo.WaitTargetObject('finditem')
if Place == 0 then
uo.Exec('addobject RuneSaife')
Uo.UseObject('RuneSaife')
wait(1500)
Uo.Say("RuneToSaife")
wait(2500)
else
uo.Exec('addobject RuneVesper')
Uo.UseObject('RuneVesper')
wait(1500)
Uo.Say("RuneToVesper")
wait(2500)
endif
end sub

это кусок из скрипта на скупку регов,марк рун,там он добавляет рунку через адобжект, предварительно она оговаривается в uo.findtype и потом она везде идёт как finditem а вот ето вот и добавляет её автотагетом присваивая имя
Uo.WaitTargetObject('finditem')
if Place == 0 then
uo.Exec('addobject RuneSaife')
Uo.UseObject('RuneSaife')

я делаю скрипт где нужно переодически так вот добавлять 1 из одинаковых предметов, и далее его мучать :D
но ничего не получается,тупо появляется тагет стрелка,обновляется инфа и всё,если ручками ткнуть в нужный итем,всё ок,оно запоминает.
методом тыка перепробовал от уо.клик(файндитем) до юзобжект(файндитем) всё бред

суть вопроса-как работает addobject?вообще реально его использовать для таких целей,добавления в скрипт нового предмета из имеющихся однотипных с присвоением ему имени?
про лут бэк читал...учебник тоже...по аналогии не работает...спросить не у кого... :cry:

скрипт обязательно выложу для всех если заработает :cry:

Posted: 2009-04-30 08:28:20
by lokis
ну хоть кто нибудь?ну если не тут,то где ж ещё?

Re: add object

Posted: 2009-04-30 08:29:29
by Kynep
Вероятно вы забыли указать цель для таргета которая указывается командой UO.WaitTargetObject():

Code: Select all

sub add_rune()
   VAR tip = '0x0000' #Тип предмета, необходим для поиска.

   UO.FindType(tip, '-1', 'backpack')
   If UO.FindCount() > 0 then
      UO.WaitTargetObject('finditem')
      UO.AddObject('Rune')
   endif
end sub

Этим простым скриптом мы добавляем обьект с именем Rune и ID взятом из finditem, который в свою очередь, получен путем поиска предмета по типу в паке, все предельно просто.
Если не получиться так, то сделаем по синаксису команды:

Code: Select all

sub add_rune()
   VAR tip = '0x0000' #Тип предмета, необходим для поиска.

   UO.FindType(tip, '-1', 'backpack')
   If UO.FindCount() > 0 then
      UO.AddObject('Rune', 'finditem')
   endif
end sub

Posted: 2009-04-30 08:45:50
by lokis
object updated kolbasa=0x000000
и сразу после анхндлд иксепшн ловиться
вообщем как и было,
и тагет указатель остаётся,жму после вылета на итем,пишет уже нормальную object updated kolbasa=0x387873,может из за того что в бак паке таких предметов много? :(

Posted: 2009-04-30 08:47:09
by Kynep
lokis wrote:object updated kolbasa=0x000000
и сразу после анхндлд иксепшн ловиться
вообщем как и было,
и тагет указатель остаётся,жму после вылета на итем,пишет уже нормальную object updated kolbasa=0x387873,может из за того что в бак паке таких предметов много? :(

А может проблема не в этом? Мой скрипт работает? Я просто не могу проверить, если мой работает, значит все должно быть ОК.

Posted: 2009-04-30 08:48:57
by lokis
второй вариант работает!!! 8) :) 8)
а анхндлд парсер там из за чего может быть?

Posted: 2009-04-30 08:49:30
by lokis
пасип) просто не успеваю и проверять и отвечать

Posted: 2009-04-30 08:52:19
by Kynep
lokis wrote:второй вариант работает!!! 8) :) 8)
а анхндлд парсер там из за чего может быть?

ХЗ, нужно скрипт смотреть, щас работает?

Posted: 2009-04-30 08:53:20
by Destruction
uo.addObject()

Не создает ожидания ответа от пользователя.

Т.е. команда не дожидается ответа от пользователя - то нельзя писать конструкцию, который привел автор:

Code: Select all

uo.Exec('addobject RuneSaife') 
Uo.UseObject('RuneSaife')


Нужно добавить паузу:

Code: Select all

uo.Exec('addobject RuneSaife') 
while uo.targeting()
    wait( 100 )
wend
Uo.UseObject('RuneSaife')

Posted: 2009-04-30 08:57:07
by lokis
Kynep wrote:
lokis wrote:второй вариант работает!!! 8) :) 8)
а анхндлд парсер там из за чего может быть?

ХЗ, нужно скрипт смотреть, щас работает?

работает,но как всё сделает вылетает
uo.Print("!")
VAR tip = '0х0000' #Тип предмета, необходим для поиска.
UO.FindType(tip, '-1', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.AddObject('колбаса', 'finditem')
Uo.UseObject('колбаса')
....
....
...
wend
end sub

Posted: 2009-04-30 08:57:11
by Kynep
Destruction wrote:uo.addObject()
Не создает ожидания ответа от пользователя.
Т.е. команда не дожидается ответа от пользователя - то нельзя писать конструкцию, который привел автор:

Ну он привел фрагмент чьего-то скрипта, так что претензии к аффтору. :)

Posted: 2009-04-30 08:58:57
by lokis
вставил паузу,как сказали,попрежнему работает))))
только анхнлд тож осталась

Posted: 2009-04-30 08:59:07
by Kynep
Может русское имя сменить на английское? И UO.WaitTargetObject('finditem') можно удалить, оно лишнее.

Posted: 2009-04-30 09:00:12
by lokis
Kynep wrote:Может русское имя сменить на английское?

нормальное там имя :oops:
это я для консперации...

Posted: 2009-04-30 09:02:20
by lokis
sub fasovka()
Var backpack = '0x403A50A2'
var emptybag = '0x400FFF5D'
var type1='0x0F85'#
var type2='0x0F7B'#
var type3='0x0F87'#
var type4='0x0F86'#
var type5='0x0F8D'#
var type6='0x0F88'#
var type7='0x0F84'#
var type8='0x0F8D'#
var type9='0x0E34'#
var type10='0x0F8C'
var type11='0x0F7A'
var type12='0x0E76'
var recall='0x1F4C'
VAR Ttov
uo.Print("идёт погрузка")
VAR tip = '0x0E76' #Тип предмета, необходим для поиска.
UO.FindType(tip, '-1', 'backpack')
If UO.FindCount() > 0 then
UO.WaitTargetObject('finditem')
UO.AddObject('bag', 'finditem')
while uo.targeting()
wait( 100 )
wend
Uo.UseObject('bag')
UO.FindType(type1, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type1,'-1','bag')
wend
UO.FindType(type2, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type2,'-1','bag')
wend
UO.FindType(type3, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type3,'-1','bag')
wend
UO.FindType(type4, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type4,'-1','bag')
wend
UO.FindType(type5, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type5,'-1','bag')
wend
UO.FindType(type6, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type6,'-1','bag')
wend
UO.FindType(type7, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type7,'-1','bag')
wend
UO.FindType(type8, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type8,'-1','bag')
wend
UO.FindType(type9, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type9,'-1','bag')
wend

UO.FindType(type10, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type10,'-1','bag')
wend

UO.FindType(type11, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(type11,'-1','bag')
wend

UO.FindType(recall, '-1', 'bag')
while UO.GetQuantity('finditem') > 0
UO.MoveItem('finditem','-1',backpack)
CheckLag()
Wait(1000)
UO.FindType(recall,'-1','bag')
wend
uo.Print("погрузка оконченна")
UO.MoveItem('bag','-1',emptybag)
CheckLag()
Wait(1000)
UO.FindType(recall,'-1','bag')

wend
end sub

Posted: 2009-04-30 09:03:22
by lokis
вот оно,где ступил?

Posted: 2009-04-30 09:07:23
by lokis
это кусочек только...запускаю самостоятельно...пока не менял ничего не вылетало...из за чего может быть?только не отправляйте в поиск,там общее,и спасиб за хелп :) работает ведь)

Posted: 2009-04-30 09:19:00
by Kynep
Осмелюсь предложить другой вариант, т.к. этот слишком громоздкий и в принципе не нужный:

Code: Select all

sub fasovka()
   var emptybag = '0x400FFF5D'
   VAR i, ser
   Dim items[13]
   items[0] = '0x0F85'
   items[1] = '0x0F7B'
   items[2] = '0x0F87'
   items[3] = '0x0F86'
   items[4] = '0x0F8D'
   items[5] = '0x0F88'
   items[6] = '0x0F84'
   items[7] = '0x0F8D'
   items[8] = '0x0E34'
   items[9] = '0x0F8C'
   items[10] = '0x0F7A'
   items[11] = '0x0E76'
   items[12] = '0x1F4C'
   
   VAR meshok = '0x0E76' #Тип мешка.
   
   uo.Print("идёт погрузка")
   repeat
      UO.FindType(meshok, '-1', 'backpack')
      If UO.FindCount() > 0 then
         ser = UO.GetSerial('finditem')
         UO.UseObject(ser)
         wait(500)
         for i = 0 to 12
            UO.FindType(items[i], '-1', ser)
            If UO.FindCount() > 0 then
               repeat
                  CheckLag()
                  UO.MoveItem('finditem','-1', 'backpack')
                  Wait(1000)
                  UO.FindType(items[i], '-1', ser)
               until NOT UO.FindCount()
            endif
         next
         CheckLag()
         UO.MoveItem(ser, '-1', emptybag)
         wait(1000)
      else
         uo.Print("В паке пусто, выходим")
         UO.Exec('terminate fasovka')
      endif
      UO.FindType(meshok, '-1', 'backpack')
   until NOT UO.FindCount()
   uo.Print("Погрузка окончена!!")
end sub

В данном скрипте backpack это пак персонажа!!! Будте внимательней!

Posted: 2009-04-30 09:27:12
by lokis
огромное человеческое спасибо) давно маюсь)
теперь рантайм еррор только :)

Posted: 2009-04-30 09:31:17
by lokis
это как то связанно с тем что у меня это кусочек скрипта (который кстати тоже большой и ненужный :D ) а дальше там ещё много чего делает чар?вылетает сразу после окончания фасовки..