| Yoko http://forum.yoko.com.ua/ |
|
| Перетаскивание в мешок. Срочно помогите ОТЦЫ! http://forum.yoko.com.ua/viewtopic.php?f=20&t=3978 |
Page 1 of 1 |
| Author: | KuKuRuZ@ [ 2005-05-11 13:34:52 ] |
| Post subject: | Перетаскивание в мешок. Срочно помогите ОТЦЫ! |
Вот такенная проблемка возникла. Своял я скрипт на БК чтоб он лики делал. Берёт с сундука 6 логов и одну нитку(у нас на шарде дается лук из этих ресурсов) он крафтиться и падает обратно в сундук. Но проблемка в том, что сундук не безграничен (255 итемов). Мне нужно чтоб он искал в сундуке мишки и складывал туда луки, пока не дойдет до 255 луков в мешке, потом он их начинает складывать в другой мешок (мешков в сундуке целая куча). Вот мой скрипт: Quote: sub bowcraft()
VAR Sunduk = '0x400D2C79' VAR Logi = '0x1BDD' VAR Spool = '0x0FA0' VAR Bow = '0x13B1' VAR Kolvo = 6 VAR Kolvo2 = 1 VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ############################################################### If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") Return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Logi ) < Kolvo wait(100) wend Endif Endif ############################################################## If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") Return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################## UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', 0, Sunduk ) wait(500) while UO.Count( Bow ) > 0 wait(100) wend UO.Print( 'Bow moved' ) Endif Wend end sub Зарание спасиба!!! Очень нужно! |
|
| Author: | Sfagnum [ 2005-05-11 13:36:40 ] |
| Post subject: | Re: Перетаскивание в мешок. Срочно помогите ОТЦЫ! |
KuKuRuZ@ wrote: Очень нужно! если б нужно было б поискал бы аналогичные скрипты. ищи по necklace
|
|
| Author: | KuKuRuZ@ [ 2005-05-11 13:54:42 ] |
| Post subject: | Re: Перетаскивание в мешок. Срочно помогите ОТЦЫ! |
Sfagnum wrote: KuKuRuZ@ wrote: Очень нужно! если б нужно было б поискал бы аналогичные скрипты. ищи по necklaceА бес перетаскивание мешков можно? Хотя в скрипте непонял совсем не чего. Я тока учусь... Вот что у меня получилось тока непашет Quote: sub bowcraft()
VAR Sunduk = '0x400D2C79' VAR Logi = '0x1BDD' VAR Spool = '0x0FA0' VAR Bow = '0x13B1' VAR Bag = '0x0E76' VAR Kolvo = 6 VAR Kolvo2 = 1 VAR k = 0, j, dagger var BagSer, i=0, fizl=0, control=5, time, z dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ############################################################### If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") Return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Logi ) < Kolvo wait(100) wend Endif Endif ############################################################## If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") Return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################## UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', 0, 'Bag' ) wait(500) while UO.Count( Bow ) > 0 wait(100) wend UO.Print( 'Bow moved' ) if UO.InJournal("Too many items") then NewBag() endif Endif Wend end sub sub NewBag() Open('Sunduk') UO.FindType('Bag', -1, 'Sunduk') UO.Print('Ok') if UO.FindCount() < 1 then end if BagSer=UO.GetSerial('finditem') wait(1000) end sub |
|
| Author: | KuKuRuZ@ [ 2005-05-11 14:03:08 ] |
| Post subject: | |
Сделайте пжалста! А то совсем не соображаю... |
|
| Author: | KuKuRuZ@ [ 2005-05-11 23:33:04 ] |
| Post subject: | Re: Перетаскивание в мешок. Срочно помогите ОТЦЫ! |
Sfagnum wrote: Вот что у меня получилось. Но вот он только всё время выводит ошибку и ссылается на BagSer в 84 строке (Line 84: Veriable undefined - BagSer) BagSer=UO.GetSerial( 'finditem' ) Вот скрипт который получился.... Quote: sub bowcraft()
VAR Sunduk = '0x400D2C79' VAR Sunduk2 = '0x4009B2BC' VAR Logi = '0x1BDD' VAR Spool = '0x0FA0' VAR Bow = '0x13B1' VAR Bag = '0x0E76' VAR Kolvo = 6 VAR Kolvo2 = 1 VAR k = 0, j, dagger var BagSer, i=0, fizl=0, control=5, time, z dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ############################################################### NewBag() If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, 'Sunduk' ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") Return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Logi ) < Kolvo wait(100) wend Endif Endif ############################################################## If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") Return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################## UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', '0', 'BagSer' ) wait(500) while UO.Count( Bow ) > 0 wait(100) if UO.InJournal("Too many items") then NewBag() endif wend UO.Print( 'Bow moved' ) Endif Wend end sub sub Open(Container) UO.DeleteJournal() UO.UseObject(Container) wait(500) end sub sub NewBag() Open('Sunduk') Open('Sunduk2') UO.FindType('Bag', -1, 'Sunduk') UO.Print('Ok') if UO.FindCount() < 1 then end if BagSer=UO.GetSerial('finditem') UO.MoveItem('BagSer', 0, 'Sunduk2') wait(1000) end sub |
|
| Author: | Destruction [ 2005-05-12 02:27:50 ] |
| Post subject: | |
Нуу, то, что он путает строки - я заметил давно, может вовсе и не та ошибка, о которой тв всех заставляешь думать По поводу перекида кхм.. Code: var btype = 0x0000#Тип сумки. |
|
| Author: | Sfagnum [ 2005-05-12 08:05:46 ] |
| Post subject: | |
Destruction wrote: Нуу, то, что он путает строки - я заметил давно, может вовсе и не та ошибка, о которой тв всех заставляешь думать не путай человека. с этим там всё норм ошибка тут:По поводу перекида кхм.. Code: var btype = 0x0000#Тип сумки. Code: UO.MoveItem('BagSer', 0, 'Sunduk2') надо:Code: UO.MoveItem(BagSer, 0, 'Sunduk2')т.к. это переменная, а не объект. |
|
| Author: | KuKuRuZ@ [ 2005-05-12 08:42:51 ] |
| Post subject: | |
Sfagnum wrote: не путай человека. с этим там всё норм ошибка тут:
Code: UO.MoveItem('BagSer', 0, 'Sunduk2') надо:Code: UO.MoveItem(BagSer, 0, 'Sunduk2')т.к. это переменная, а не объект. Теперь таже ошибка тока в этой строке которую ты написал. Line 85: Veriable undefined - BagSer |
|
| Author: | Sfagnum [ 2005-05-12 08:56:13 ] |
| Post subject: | |
ну есстественно Code: VAR Bag = '0x0E76'эти переменные вынеси из процедуры - они должны быть видны по всему скрипту, а не только в 1ой прцедуре. и тут: Code: UO.FindType('Bag', -1, 'Sunduk') аналогичная вышеописаной ошибка.
ЗЫ будь внимательнее при копировании кусков скрипта. ничего просто так не делается |
|
| Author: | Destruction [ 2005-05-12 09:10:35 ] |
| Post subject: | |
Sfagnum wrote: Destruction wrote: Нуу, то, что он путает строки - я заметил давно, может вовсе и не та ошибка, о которой тв всех заставляешь думать не путай человека. с этим там всё норм ошибка тут:По поводу перекида кхм.. Code: var btype = 0x0000#Тип сумки. Code: UO.MoveItem('BagSer', 0, 'Sunduk2') надо:Code: UO.MoveItem(BagSer, 0, 'Sunduk2')т.к. это переменная, а не объект. Ну я хз, я чужое кхм, так и хочется сказать про экскрименты... не очень люблю читать, вот прочел первый пост и написал решение, самое простое тип |
|
| Author: | KuKuRuZ@ [ 2005-05-12 09:34:33 ] |
| Post subject: | |
New Error Теперь нехочет логи падла брать Quote: var BagSer
VAR Bag = '0x0E76' sub bowcraft() VAR Sunduk = '0x400D2C79' VAR Sunduk2 = '0x4009B2BC' VAR Logi = '0x1BDD' VAR Spool = '0x0FA0' VAR Bow = '0x13B1' VAR Kolvo = 6 VAR Kolvo2 = 1 VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ############################################################### While TRUE NewBag() If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, 'Sunduk' ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") Return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Logi ) < Kolvo wait(100) wend Endif Endif ############################################################## If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") Return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################## UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', '0', 'BagSer' ) wait(500) while UO.Count( Bow ) > 0 wait(100) if UO.InJournal("Too many items") then NewBag() endif wend UO.Print( 'Bow moved' ) Endif Wend end sub sub Open(Container) UO.DeleteJournal() UO.UseObject(Container) wait(500) end sub sub NewBag() Open('Sunduk') Open('Sunduk2') UO.FindType(Bag, -1, 'Sunduk') UO.Print('Ok') if UO.FindCount() < 1 then end if BagSer=UO.GetSerial('finditem') UO.MoveItem(BagSer, 0, 'Sunduk2') wait(1000) end sub |
|
| Author: | Sfagnum [ 2005-05-12 09:36:25 ] |
| Post subject: | |
Destruction wrote: Ну я хз, я чужое кхм, так и хочется сказать про экскрименты... не очень люблю читать, вот прочел первый пост и написал решение, самое простое тип ну так и не вводи в заблуждение просто этот код тож не мой просто я его причёсывал и юзаю достаточно регулярно... поэтому в курсе... 2 KuKuRuZ@ Code: if UO.FindCount() < 1 thenэтот изврат либо убери, либо верни к исходному варианту. |
|
| Author: | KuKuRuZ@ [ 2005-05-12 10:09:59 ] |
| Post subject: | |
это не менят положения, всё равно логи брать не хочет |
|
| Author: | KuKuRuZ@ [ 2005-05-12 10:47:16 ] |
| Post subject: | |
Теперь такая ощибка. Он при каждом крафте лука берёт новую сумку и пихает туда лук... Мне нужно чтоб он перемещал сумку и клал туда луки пока она не заполниться. потому как я немогу удержать все 255 луков... Quote: var BagSer VAR Bag = '0x0E76' ## Òèï ñóìêè ################################### sub bowcraft() wait(500) VAR Sunduk = '0x400D2C79' ## Ñåðèéíèê ñóíäóêà VAR Sunduk2 = '0x4009B2BC' ## Ñåðèéíèê ñóíäóêà 2 VAR Logi = '0x1BDD' ## Òèï ëîãîâ ############################################################################### VAR Spool = '0x0FA0' ## Òèï íèòîê ############################################################################### VAR Bow = '0x13B1' ## Òèï ëóêîâ VAR Kolvo = 6 ## Êîëè÷åñòâî ëîãîâ êîòîðîå áåð¸ì ############################################################################### VAR Kolvo2 = 1 ## Êîëè÷åñòâî íèòîê êîòîðîå áåð¸ì ############################################################################### VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ## Òóò ìû áåð¸ì ëîãè While TRUE NewBag() If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) while UO.Count( Logi ) < Kolvo wait(100) wend Endif Endif ############################################################################### If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################################### UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', 0, BagSer ) wait(500) while UO.Count( Bow ) > 0 wait(100) if UO.InJournal("Too many items") then NewBag() endif wend UO.Print( 'Bow moved' ) Endif Wend end sub sub NewBag() UO.UseObject('0x400D2C79') UO.UseObject('0x4009B2BC') UO.FindType(Bag, -1, '0x400D2C79') UO.Print('Ok') BagSer=UO.GetSerial('finditem') UO.MoveItem(BagSer, 0, '0x4009B2BC') wait(1000) end sub |
|
| Author: | Sfagnum [ 2005-05-12 11:55:51 ] |
| Post subject: | |
KuKuRuZ@ wrote: Теперь такая ощибка. Он при каждом крафте лука берёт новую сумку и пихает туда лук... местами поменяй
Code: While TRUE и повторяю для группы "Д", не подумайте что плохого, для "Думающих". не путай объекты и переменные! |
|
| Author: | KuKuRuZ@ [ 2005-05-13 07:22:25 ] |
| Post subject: | |
Скрипт готов на готов на 90%, осталось наверное Quote: var BagSer
VAR Bag = '0x0E76' ## Òèï ñóìêè ################################### sub bowcraft() wait(500) VAR Sunduk = '0x400D2C79' ## Ñåðèéíèê ñóíäóêà VAR Sunduk2 = '0x4009B2BC' ## Ñåðèéíèê ñóíäóêà 2 VAR Logi = '0x1BDD' ## Òèï ëîãîâ ############################################################################### ôóíêöèþ VAR Spool = '0x0FA0' ## Òèï íèòîê ############################################################################### VAR Bow = '0x13B1' ## Òèï ëóêîâ VAR Kolvo = 6 ## Êîëè÷åñòâî ëîãîâ êîòîðîå áåð¸ì ############################################################################### VAR Kolvo2 = 1 ## Êîëè÷åñòâî íèòîê êîòîðîå áåð¸ì ############################################################################### VAR k = 0, j, dagger dagger = UO.ObjAtLayer( 'Rhand' ) UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) ) ## Òóò ìû áåð¸ì ëîãè NewBag() UO.FindType( Bow, -1, -1 ) uo.moveitem('finditem',0,BagSer) While TRUE if uo.count(Logi) <> 6 then uo.findtype('0x1BDD', -1, -1) UO.MoveItem( 'finditem', 0, Sunduk ) endif wait(500) If UO.Count( Logi ) == 0 Then UO.FindType( Logi, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Logs not found, script terminated") return else UO.Grab( Str( Kolvo ), 'finditem' ) wait(500) wend Endif Endif ############################################################################### If UO.Count( Spool ) == 0 Then UO.FindType( Spool, -1, Sunduk ) If UO.FindCount() == 0 Then UO.Print("Spool not found, script terminated") return Endif Endif UO.Grab( Str( Kolvo2 ), 'finditem' ) wait(500) while UO.Count( Spool ) < Kolvo2 wait(100) wend ############################################################################### UO.DeleteJournal() UO.CancelMenu() UO.WaitTargetType( Logi ) UO.UseObject( dagger ) UO.WaitMenu ('What do you want to carve', 'bow' ) k = 0 while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 ) k = k + 1 wait(300) wend If UO.Count( Bow ) > 0 then UO.FindType( Bow, -1, -1 ) UO.MoveItem( 'finditem', 0, BagSer ) wait(500) while UO.Count( Bow ) > 0 wait(100) if UO.InJournal("Too many items") then NewBag() UO.FindType( Bow, -1, -1 ) uo.moveitem('finditem',0,BagSer) endif wend UO.Print( 'Bow moved' ) Endif Wend end sub sub NewBag() UO.UseObject('0x400D2C79') UO.UseObject('0x4009B2BC') UO.FindType('0x0E76', -1, '0x400D2C79') UO.Print('Ok') BagSer=UO.GetSerial('finditem') UO.MoveItem(BagSer, 0, '0x4009B2BC') wait(1000) end sub |
|
| Author: | Sfagnum [ 2005-05-13 08:20:02 ] |
| Post subject: | |
KuKuRuZ@ wrote: Скрипт готов на готов на 90%, осталось наверное ну ты и переврал скрипт то....Code: If UO.Count( Bow ) > 0 then замени на это выделенный кусок. Code: while UO.Count( Bow ) > 0а проблема у тебя была из-за того что ты не удалял сообщение "Too many items" из журнала. |
|
| Page 1 of 1 | All times are UTC+02:00 |
| Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |
|