Фишинг, Переделка скрипта |
Фишинг, Переделка скрипта |
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 19:33
Сообщение #1
|
Косметически поправил, выложенный ранее, скрипт на Fishing. Убрал лишнее, добавил пару актуальных нынче записей. Скрипт не крашит (проверял 8 часов), одевает удочку взамен сломанной. var MaxFailure=8 sub FishingAround() var iX,iY for var iStep=0 to 1000 for iX=-6 to 6 for iY=-6 to 6 if iX==0 and iY==0 then next end if GetAllFish(UO.GetX()+iX,UO.GetY()+iY) next next next end sub Sub GetAllFish(iX,iY) var counter=0 repeat counter=counter+1 UO.DeleteJournal() UO.WaitTargetTile(0,iX,iY,251) UO.UseType('0x0DBF') while not UO.InJournal('You pull out a') and not UO.InJournal('You fish a while, but fail to catch anything') and not UO.InJournal('There are no fish here.') and not UO.InJournal('Try fishing in water') and not UO.InJournal('Try fishing elsewhere') and not UO.InJournal('That is too far away') and not UO.InJournal('You cannot fish so close to yourself') and not uo.InJournal('*Your Fishing Pole destroyed!*') wait(100) wend if UO.InJournal('There are no fish here.') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR UO.InJournal('You cannot fish so close to yourself') OR UO.InJournal('Try fishing in water') OR uo.InJournal('*Your Fishing Pole destroyed!*') then return end if if UO.InJournal('You pull out a') then counter=0 GetFish() end if until UO.Injournal('There are no fish here.') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR UO.InJournal('You cannot fish so close to yourself') OR UO.InJournal('Try fishing in water') OR uo.InJournal('*Your Fishing Pole destroyed!*') OR counter>MaxFailure end sub Sub GetFish() UO.set('finddistance',0) UO.IgnoreReset() UO.Ignore('self') UO.FindType(-1,-1,'ground') while UO.FindCount()>0 UO.WaitTargetObject('finditem') UO.UseType('0x0F51') UO.Ignore('finditem') wait(500) UO.FindType(-1,-1,'ground') wend UO.Ignorereset() UO.Ignore('self') UO.FindType(-1,-1,'ground') while UO.FindCount()>0 UO.Grab(0,'finditem') wait(100) UO.FindType(-1,-1,'ground') wend UO.Ignorereset() end sub |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 20:10
Сообщение #2
|
Отступы то программой надо расставлять, а не руками пробелы протыкивать "шоб красиво было". То что он не крашит это чудо. 3 for 4 next скрипту каюк будет по любому. Разве под собой добывать нельзя? Если нельзя то это делается добавление в журнал, а не пропусканием координаты. UO.FindType(-1,-1,'ground') - еще одна завалилочка. Подходишь к такому рыболову и кидаешь шкаф например. И чар крашит. Или не крашит но рыбу уже не будет собирать. В общем зря "улучшал". |
|
|
|
Сообщений: 961 Рег. 14.01.2010 |
27 августа 2013 20:16
Сообщение #3
|
Со специалистом не поспоришь...))) |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 20:23
Сообщение #4
|
if UO.InJournal('There are no fish here.') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR UO.InJournal('You cannot fish so close to yourself') OR UO.InJournal('Try fishing in water') OR uo.InJournal('*Your Fishing Pole destroyed!*') then return end if этот кусок тоже лишний - он у тебя и так из цикла выйдет и остановится если удочку сломает или ловить не сможет. Зачем его раньше выбивать? Gajra |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 20:36
Сообщение #5
|
Задача была не создать полностью новый и идеальный скрипт, а поправить нерабочий и крашащий клиент, но имеющийся на форуме и качнуть фишинг. Задача выполнена, остальное меня мало интересует =) Но благодарю за критику. ЗЫ: Если скрипт не нравится - можно не пользоваться =) |
|
|
|
Сообщений: 961 Рег. 14.01.2010 |
27 августа 2013 20:48
Сообщение #6
|
Большинство скриптов выложенных тут были написаны для старого клиента..оттого и косяки. Похвально, что найдя ошибки вы исправляете и выкладываете для других, не все же тут мега скриптёры) |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 20:55
Сообщение #7
|
Прежде всего для себя любимого. Я не программист и не понимаю половину функций, но общая логика вполне понятна, от этого и отталкиваюсь. |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 22:50
Сообщение #8
|
По этому я не написал что "фууу гавно", а расписал что можно исправить для оптимизации. Можно расписать более подробно если нужно. |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 23:00
Сообщение #9
|
Alucard, Что именно поправить я понял. Как оптимизирую - добавлю в готовые. Есть только одна загвоздка, хоть убей не понимаю чем не устраивает использование закрытия цикла в качестве пропуска координаты. Крашит ,вроде, только не закрытый цикл. |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 23:16
Сообщение #10
|
Не не устраивает :) Если работает - пользуйся. Просто с точки зрения программирования это не верно. Лишние строки не красят скрипт который заявлен как ОПТИМИЗИРОВАННЫЙ. У тебя 3 строки чтобы пропустить 1 точку. То же самое делается добавлением 1 сообщения в проверку. По этому и написал. Если бы чар тыкал в точку 0,0 и терялась конда то эти строки имели бы смысл. А так просто лишняя заусеница. Зачем было убирать лишнее тогда? |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 23:21
Сообщение #11
|
Alucard, Вот так и знал, что ты просто зануда =) В готовых добью, хотя полная оптимизация ИМХО полная автоматизация, но я против этого в УО. |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 23:28
Сообщение #12
|
Мой вариант. Делает примерно то же самое. Работает с берега. С лодки не пробовал по причине отсутствия. PS Не принимай на свой счет но у вас тут модно все что продержалось хотя бы пару минут запущенным кидать в "готовые" PPS не путай понятия "скрипт-автомат" и "оптимизация кода скрипта". Про первое я не говорил. |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 23:31
Сообщение #13
|
var MaxFailure=8 sub FishingAround() var iX,iY for var iStep=0 to 1000 for iX=-6 to 6 for iY=-6 to 6 GetAllFish(UO.GetX()+iX,UO.GetY()+iY) next next next end sub Sub GetAllFish(iX,iY) var counter=0 repeat counter=counter+1 UO.DeleteJournal() UO.WaitTargetTile(0,iX,iY,251) UO.UseType('0x0DBF') while not UO.InJournal('You pull out a') and not UO.InJournal('You fish a while, but fail to catch anything') and not UO.InJournal('There are no fish here.') and not UO.InJournal('Try fishing in water') and not UO.InJournal('Try fishing elsewhere') and not UO.InJournal('That is too far away') and not UO.InJournal('You cannot fish so close to yourself') and not uo.InJournal('*Your Fishing Pole destroyed!*') wait(100) wend if UO.InJournal('You pull out a') then counter=0 GetFish() end if until UO.Injournal('There are no fish here.') OR UO.InJournal('Try fishing elsewhere') OR UO.InJournal('That is too far away') OR UO.InJournal('You cannot fish so close to yourself') OR UO.InJournal('Try fishing in water') OR uo.InJournal('*Your Fishing Pole destroyed!*') OR counter>MaxFailure end sub Sub GetFish() UO.set('finddistance',0) UO.IgnoreReset() UO.Ignore('self') UO.FindType(-1,-1,'ground') while UO.FindCount()>0 UO.WaitTargetObject('finditem') UO.UseType('0x0F51') UO.Ignore('finditem') wait(500) UO.FindType(-1,-1,'ground') wend UO.Ignorereset() UO.Ignore('self') UO.FindType(-1,-1,'ground') while UO.FindCount()>0 UO.Grab(0,'finditem') wait(100) UO.FindType(-1,-1,'ground') wend UO.Ignorereset() end sub Окончательный вариант. На проблему шкафа клал половой огран, пускай массив сами прикручивают кому шкафы ставят, дело 2 секунд. ЗЫ: Я никогда не против критики обоснованной, но ты все равно зануда...Не принимай на свой счет(с) |
|
|
|
Сообщений: 1043 Рег. 18.06.2011 |
27 августа 2013 23:34
Сообщение #14
|
Цитата: Id Окончательный вариант. На проблему шкафа клал половой огран. ="Нате жрите и не пиZ@uте." ок, ок. Я и так тут сегодня чето расписался Закидывай в "готовые". Споки. |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
27 августа 2013 23:50
Сообщение #15
|
Alucard, Не, ну действительно. Какова вероятность того, что кто то будет специально таскать с собой шкаф и искать одинокого фишера ? Меня больше убивает, что я вообще повелся на трололо критику =) |
|
|
|
27 августа 2013 23:53
Сообщение #16
|
|
Id, ты не прав. это не тролль критика, а обыкновенные советы на будущее |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
28 августа 2013 00:01
Сообщение #17
|
Mitako, Ноуоффенс, но советы лучше давать когда их спрашивают. В данном случае была критика рабочего скрипта и занудство, что меня, честно говоря, по-хорошему повеселило =) |
|
|
|
28 августа 2013 00:29
Сообщение #18
|
|
Цитата: Id Ноуоффенс, но советы лучше давать когда их спрашивают. ты не подозревал об ошибке, поэтому и спросить не мог |
|
|
|
Сообщений: 73 Рег. 19.08.2013 |
28 августа 2013 02:01
Сообщение #19
|
Mitako, Fascinating! |
|
|
|
Сообщений: 190 Рег. 23.07.2013 |
31 августа 2013 19:33
Сообщение #20
|
Ловит рыбу и в паке заберает... sub FishingAround() VAR Ms0 = "You can't see" ; ?? ????? ????? ????? VAR Ms1 = "You can't fish under the ship" ; ?? ????? ?????? ????? VAR Ms2 = "You are too far away" ; ?????? VAR Ms3 = "There are no fish here" ; ????????? ??? VAR Ms4 = "You fish a while, but fail to catch anything" ; ???? VAR Ms5 = "You pull out" ; ?????? ???-?? VAR Ms6 = "Try fishing" ; ?? ????? ?????? ????? VAR k, t, v, x, y VAR MaxTime = 800 For y = -4 To 4 For x = -4 To 4 k = 0 repeat If UO.Dead() Then return Endif DeleteJournal(ms0) DeleteJournal(ms1) DeleteJournal(ms2) DeleteJournal(ms3) DeleteJournal(ms4) DeleteJournal(ms5) DeleteJournal(ms6) t = UO.Timer() If UO.Waiting() Then UO.CancelTarget() Endif UO.WaitTargetTile( '0', STR( UO.GetX() + x ), STR( UO.GetY() + y ), '251') UO.UseObject( UO.GetSerial( UO.ObjAtLayer( 'Lhand' ) ) ) repeat wait(100) until UO.InJournal(ms0) OR UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR ((t + MaxTime) < UO.Timer()) k = k + 1 If UO.InJournal(ms5) Then k = 0 Endif If UO.Dead() Then return Endif If UO.InJournal( ms5 ) Then GetResultFish() Endif until UO.InJournal(ms0) OR UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR (k > 6) If UO.Dead() Then return Endif Next Next endsub Sub GetResultFish() ; ------- ???? ------- DIM Fish[18] Fish[0] = '0x170B' ; ?????? Fish[1] = '0x170F' ; ????? Fish[2] = '0x170D' ; ???????? Fish[3] = '0x1711' ; ?????? Fish[4] = '0x09CC' ; ??? ???? 1 Fish[5] = '0x09CD' ; ??? ???? 2 Fish[6] = '0x09CE' ; ??? ???? 3 Fish[7] = '0x09CF' ; ??? ???? 4 Fish[8] = '0x0FC4' ; ???????, ??? 1 Fish[9] = '0x0FC5' ; ???????, ??? 2 Fish[10] = '0x0FC6' ; ???????, ??? 3 Fish[11] = '0x0FC7' ; ???????, ??? 4 Fish[12] = '0x0FC8' ; ???????, ??? 5 Fish[13] = '0x0FC9' ; ???????, ??? 6 Fish[14] = '0x0FCA' ; ???????, ??? 7 Fish[15] = '0x0FCB' ; ???????, ??? 8 Fish[16] = '0x0FCC' ; ???????, ??? 9 Fish[17] = '0x14ED' ; ????? VAR Razmer = 17 ; ?????? ??????? - 1 VAR Scissor = '0x0F9E' ; ??? ?????? VAR Bandag = '0x0E21' ; ??? ?????? VAR i ; ???? ??? ? ??? ???????? ??? ??????, ???? ???? ?????????????? ; ? ?????????? ? ????. ????? ?????? ?????? ??????? ?????? ? ??????. For i = 0 To Razmer UO.FindType( Fish[i], '-1', 'ground' ) If UO.FindCount() > 0 Then If i < 4 Then ; ????? UO.WaitTargetObject( 'finditem' ) UO.UseType( Scissor ) Wait( 3000 ) UO.FindType( Bandag ) Endif UO.Grab( '0', 'finditem' ) Wait( 2000 ) If i > 7 AND i < 17 Then ; ??????? UO.UseObject( 'finditem' ) wait(1000) Endif Endif Next endsub sub Food() VAR food = '0x097A' while NOT UO.Dead() UO.DeleteJournal() UO.WaitTargetObject(0x40002877) UO.UseType(food) repeat wait(500) until UO.InJournal('You burn') OR UO.InJournal('You put') wend end sub Sub CheckLag() DeleteJournal( 'backpack' ) UO.Click( 'backpack' ) repeat wait(100) until UO.InJournal( 'backpack' ) return end sub Sub DeleteJournal( string1 ) VAR nom = UO.InJournal( string1 ) If nom > 0 Then UO.SetJournalLine( Nom - 1, 'string replaced' ) DeleteJournal( string1 ) Endif endsub |
|
|
|
Сейчас: 23 ноября 2024 21:09 |