Поправьте пожалуйста скрипт!

Ask for scripts here

Moderators: Murderator+, Murderator

Post Reply
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Поправьте пожалуйста скрипт!

Post by mont »

Вот собственно и скрипт. он шьет шапки, и раскладывает их по 12 контейнерам. Но постоянно вылетает((( и у меня плохо реализована система сброса таргета когда получается екзепт шапка. одень нужна ваша помощь! заранее спасибо!

Code: Select all

var a  =0x71636413 #светло.серый
var b  =0x71636A22 #темно.серый
var c  =0x7163642A #светло.синий
var d  =0x7163647A #темно.синий
var e  =0x7163645A #светло.фиолетовый
var f  =0x716364B8 #темно.фиолетовый
var g  =0x71636485 #светло.зеленый
var h  =0x716364AB #темно.зеленый
var i  =0x71637489 #светло.коричневый
var j  =0x7163648D #темно.коричневый
var k  =0x71636469 #светло.красный
var l  =0x71684138 #темно.красный
var finished=0
var SewingKit =0x0f9d
var Hides =0x1078
var cap =0x1db9
var food=0x097B

sub IamMakingCaps()
while not UO.InJournal('destroy')
   UO.WaitMenu('Choose','leather','What','Leather Cap')
      Wait(100)
   UO.WaitTargetType(Hides)
      Wait(100)
   UO.usetype(SewingKit)
   UO.WaitTargetType(Hides)
      Wait(5000)
   uo.usetype(food)
      Wait(100)
    if UO.InJournal("You can improve it's magic capabilities, choose your magic ingredients") then
      uo.deletejournal()
      uo.canceltarget()
   else
      uo.canceltarget()
    endif

wend
end sub

sub IamSwappingBags()
wait(100)
uo.unsetcatchbag()
wait(100)
uo.DeleteJournal()
wait(100)
uo.setcatchbag(a) #ставим setcatchbag на 1ый мешок
wait(100)
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю первый мешок")
wait(100)
uo.say(".reply Processing 1st bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("1ый мешок заполнен. Осталось: 11")
wait(100)
uo.setcatchbag(b) #ставим setcatchbag на 2й
wait(100)
uo.DeleteJournal()
wait(100)
goto three
endif
wend

three:
while not uo.dead()
wait(100)
if uo.injournal("status") then
wait(100)
uo.say("Заполняю второй мешок")
wait(100)
uo.say(".reply Processing 2nd bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("2ой мешок заполнен. Осталось: 10")
uo.setcatchbag(c) #ставим setcatchbag на 3ий
wait(100)
uo.DeleteJournal()
wait(100)
goto four
endif
wend

four:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю третий мешок")
wait(100)
uo.say(".reply Processing 3rd bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("3ий мешок заполнен. Осталось: 9")
uo.setcatchbag(d) #ставим setcatchbag на 4ый
wait(100)
uo.DeleteJournal()
wait(100)
goto five
endif
wend

five:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю четвертый мешок")
wait(100)
uo.say(".reply Processing 4th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("4ый мешок заполнен. Осталось: 8")
uo.setcatchbag(e) #ставим setcatchbag на 5ый
wait(100)
uo.DeleteJournal()
wait(100)
goto six
endif
wend

six:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю пятый мешок")
wait(100)
uo.say(".reply Processing 5th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("5ый мешок заполнен. Осталось: 7")
uo.setcatchbag(f) #ставим setcatchbag на 6ой
wait(100)
uo.DeleteJournal()
wait(100)
goto seven
endif
wend

seven:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю шестой мешок")
wait(100)
uo.say(".reply Processing 6th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("6ой мешок заполнен. Осталось: 6")
uo.setcatchbag(g) #ставим setcatchbag на 7ой
wait(100)
uo.DeleteJournal()
wait(100)
goto eight
endif
wend

eight:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю седьмой мешок")
wait(100)
uo.say(".reply Processing 7th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("7ой мешок заполнен. Осталось: 5")
uo.setcatchbag(h) #ставим setcatchbag на 8ой
wait(100)
uo.DeleteJournal()
wait(100)
goto nine
endif
wend

nine:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю восьмой мешок")
wait(100)
uo.say(".reply Processing 8th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("8ой мешок заполнен. Осталось: 4")
uo.setcatchbag(i) #ставим setcatchbag на 9ый
wait(100)
uo.DeleteJournal()
wait(100)
goto ten
endif
wend

ten:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю девятый мешок")
wait(100)
uo.say(".reply Processing 9th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("9ый мешок заполнен. Осталось: 3")
uo.setcatchbag(j) #ставим setcatchbag на 10ый
wait(100)
uo.DeleteJournal()
wait(100)
goto eleven
endif
wend

eleven:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю десятый мешок")
wait(100)
uo.say(".reply Processing 10th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("10ый мешок заполнен. Осталось: 2")
uo.setcatchbag(k) #ставим setcatchbag на 11
wait(100)
uo.DeleteJournal()
wait(100)
goto twelve
endif
wend

twelve:
while not uo.dead()
if uo.injournal("status") then
wait(100)
uo.say("Заполняю одиннадцатый мешок")
wait(100)
uo.say(".reply Processing 11th bag")
wait(100)
uo.DeleteJournal()
endif
if uo.injournal("That item is too heavy") then
wait(100)
uo.say("11ый мешок заполнен. Осталось: 1")
uo.setcatchbag(l) #ставим setcatchbag на 12ый
wait(100)
uo.DeleteJournal()
wait(100)
goto last
endif
wend

last:
while not uo.dead()
if uo.injournal("status") then
if finished==0 then
wait(100)
uo.say("Заполняю последний мешок")
wait(100)
uo.say(".reply Processing last bag")
wait(100)
uo.DeleteJournal()
else
uo.say("Все мешки заполнены!")
wait(100)
uo.say(".reply All bags processed. Please collect")
wait(100)
uo.DeleteJournal()
endif
if UO.InJournal('destroy') then
wait(100)
uo.unsetcatchbag()
wait(100)
finished=1
endif
wend
end sub
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Много букав, не осилил.

Предлагаю прочитать про массивы и оптимизировать код хотя бы в размерах.

Так же рекомендую попробовать отказаться от setcatchbag.
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Telegram: @tatikom
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post by mont »

Спасибо, Beyonder тру скрипт замутил!
раскладываем вокруг себя 25 мешков кожу в сумку еду в сумку тюбик с краской в сумку

Code: Select all

##############################
#######MIDDLE-EARTH.RU########
##############################
#Раскладываем вокруг себя 25 мешков. Кожу,еду, тюбик с краской в сумку.
#Скрипт красит сумку в указанный цвет когда она заполниться.
var SewingKit =0x0f9d
var Hides =0x1078
var cap =0x1db9
var food=0x097B
var bag=0x0E76
var dyetub=0x0FAB
var full=0x0250
 
var curBag = 0
 
sub statusChecker()
        while (true)
                WaitJournal('status',-1)
                DeleteJournalLine('status')
                UO.Sayu('.reply Bag number ',str(curBag+1))
        wend
end sub
 
sub doMakeCapsFromBackPack()
        dim bags[256]
        var bagcnt = 0
 
        ;Filling bag array
        UO.IgnoreReset()
        uo.set( 'finddistance', 2 )
 
        UO.FindType(bag,-1,'ground')
        while (UO.FindCount())
                bags[bagcnt] = UO.GetSerial('finditem')
                UO.Ignore(bags[bagcnt])
                UO.Print("Found bag: "+bags[bagcnt])
                bagcnt = bagcnt + 1
                UO.FindType(bag,-1,'ground')
        wend
 
        UO.IgnoreReset()
        uo.set( 'finddistance', 32 )
        ;End of bag array filling
 
        var newCap = 0
        var break = false
 
        while (not UO.InJournal('destroy')) and (curBag < bagCnt)
                UO.DeleteJournal()
                UO.WaitMenu('Choose','leather','What','Leather Cap')
                UO.WaitTargetType(Hides)
                UO.usetype(SewingKit)
                wait(500)
                UO.WaitTargetType(Hides) ;for exceptional target
                WaitJournal('in your pack|destroy',10000)
               
                wait(500)
 
                if (UO.InJournal('exceptional') == 0) then ;no exceptional
                        UO.canceltarget() ;cancel target wait
                endif
 
                newCap = WaitType(cap,1000)
                UO.MoveItem(newCap,0,bags[curBag])
 
                wait(300)
 
                if (UO.InJournal('heavy')) then
                        uo.waittargetobject(bags[curBag])
                        uo.usetype(dyetub,full)
                        curBag = curBag + 1
                        if (curBag < bagCnt) then
                                UO.MoveItem(newCap,0,bags[curBag])
                        endif
                endif
 
                wait(100)
                uo.usetype(food)
                wait(100)
        wend
end sub

sub doMakeCapsFromGround()
        dim bags[256]
        var bagcnt = 0
 
        ;Filling bag array
        UO.IgnoreReset()
        uo.set( 'finddistance', 2 )
 
        UO.FindType(bag,-1,'ground')
        while (UO.FindCount())
                bags[bagcnt] = UO.GetSerial('finditem')
                UO.Ignore(bags[bagcnt])
                UO.Print("Found bag: "+bags[bagcnt])
                bagcnt = bagcnt + 1
                UO.FindType(bag,-1,'ground')
        wend
 
        UO.IgnoreReset()
        uo.set( 'finddistance', 32 )
        ;End of bag array filling
 
        var newCap = 0
        var break = false
 
        while (not UO.InJournal('destroy')) and (curBag < bagCnt)
                UO.DeleteJournal()
                UO.WaitMenu('Choose','leather','What','Leather Cap')
                UO.WaitTargetGround(Hides)
                UO.usetype(SewingKit)
                wait(500)
                UO.WaitTargetGround(Hides) ;for exceptional target
                WaitJournal('in your pack|destroy',10000)
               
                wait(500)
 
                if (UO.InJournal('exceptional') == 0) then ;no exceptional
                        UO.canceltarget() ;cancel target wait
                endif
 
                newCap = WaitType(cap,1000)
                UO.MoveItem(newCap,0,bags[curBag])
 
                wait(300)
 
                if (UO.InJournal('heavy')) then
                        uo.waittargetobject(bags[curBag])
                        uo.usetype(dyetub,full)
                        curBag = curBag + 1
                        if (curBag < bagCnt) then
                                UO.MoveItem(newCap,0,bags[curBag])
                        endif
                endif
 
                wait(100)
                uo.usetype(food)
                wait(100)
        wend
end sub

sub WaitJournal(Line,maxWait)
   if (maxWait < 0) then
      maxWait = 60*60*24*30*12
   end if

   while (not UO.InJournal(Line)) and (maxWait > 0)
       wait(100)
      maxWait = maxWait - 100
   wend
   wait(100)
end sub
 
sub WaitType(Type,maxWait)
   if (maxWait < 0) then
      maxWait = 60*60*24*30*12
   end if

   UO.findtype(Type,-1,-1)
   while (not UO.FindCount()) and (maxWait > 0)
      wait(100)
      maxWait = maxWait - 100
      UO.findtype(Type,-1,-1)
   wend
   return uo.getserial("finditem")
end sub
 
Sub DeleteJournalLine(msg)
        while uo.injournal(msg)
                uo.setjournalline(uo.injournal(msg)-1,"")
        wend
endsub
Last edited by mont on 2008-10-19 17:16:42, edited 1 time in total.
TwiN
Posts: 34
Joined: 2008-08-13 01:04:10
Location: Krd
Contact:

Post by TwiN »

Вообще не пойму к чему весь этот движ с сумками, шапками, красками и пр.
Конечный итог каков? Зачем нужно столько шапок? Солить их что ли?
Если это всё на прокачку тайлоринга, так ножницами можно тупо их переделывать обратно в кожу ( при этом теряется 1 кусок кожи ).
А если делать шапки просто чтобы делать шапки, то я в этой кухне вообще ничего не понимаю. :?
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post by mont »

покупаешь у вендора 60 кусков кожи по 4 гп. идешь домой. шьешь из этих 60 кусков 30 шапок. одна шапка стоит примерно 280-400 гп. чуешь?
TwiN
Posts: 34
Joined: 2008-08-13 01:04:10
Location: Krd
Contact:

Post by TwiN »

mont wrote:покупаешь у вендора 60 кусков кожи по 4 гп. идешь домой. шьешь из этих 60 кусков 30 шапок. одна шапка стоит примерно 280-400 гп. чуешь?


Не чую. -)

На МЕ уже пофиксили добычу денег из шапок. Теперь продать её можно максимум за 275 гп (крафтовую) и кусок кожи у вендора стоит теперь не 4, а 20 гп. Поэтому и несколько озадачила вся эта котовасия с шапками. Так как смысла особого теперь нет в этих заморочках. )
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post by mont »

этот скрипт вообще-то для ме1 :D
ну и на ме4, мы на шапкоботе подняли на виллу гс и конечно-же аренду)))
TwiN
Posts: 34
Joined: 2008-08-13 01:04:10
Location: Krd
Contact:

Post by TwiN »

mont wrote:этот скрипт вообще-то для ме1 :D
ну и на ме4, мы на шапкоботе подняли на виллу гс и конечно-же аренду)))


А что на МЕ1 ещё кто то играет? :)
Я как не посмотрю там стабильно 3 - 7 человек онлайн... -)

А на МЕ4, главный багописатель чёто намудрил с подсчётом вещей в паке таким образом, что больше двух полных сумок в пак не положиш.
Соответственно и бегать их продавать придётся не один раз. С таким раскладом лучшеб было придумать как прописать функцию рекола к вендору если пак заполнен, продажи содержимого и возврата на базу с последующим продолжением крафта. Так, мне кажется, было бы намного проще.. :?
Хотя вам виднее, конечно.. :)
mont
Posts: 23
Joined: 2006-10-24 01:51:41
Location: Middle Earth
Contact:

Post by mont »

так а больше двух и не надо)_
Post Reply