Yoko
http://forum.yoko.com.ua/

Антарес. Сбор обычных регов.
http://forum.yoko.com.ua/viewtopic.php?f=20&t=10137
Page 1 of 1

Author:  slonopotam [ 2006-11-27 08:24:22 ]
Post subject:  Антарес. Сбор обычных регов.

Скрипт на сбор обычных регов в Египте и Анхельме.
Для работы скрипта биндим 2 кнопки. Sbor для собирания, Razbor для переработки. Когда написал, был сам в ужосе от скорости 8)



Code:
Sub Sbor()
UO.Set('finddistance','3')
UO.FindType('0x18DF','-1','ground')
If UO.FindCount() > 0 Then
M()
Else
wait(50)
End if
wait(50)
UO.FindType('0x18E5','-1','ground')
If UO.FindCount() > 0 Then
N()
Else
wait(50)
End if
wait(100)
UO.FindType('0x18E1','-1','ground')
If UO.FindCount() > 0 Then
Gar()
Else
wait(50)
End if
wait(50)
UO.FindType('0x18E9','-1','ground')
If UO.FindCount() > 0 Then
Gi()
Else
wait(50)
End if
end sub
Sub M()
UO.Set('finddistance','3')
UO.FindType('0x18DF','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18DF','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub N()
UO.Set('finddistance','3')
UO.FindType('0x18E5','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E5','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Gar()
UO.Set('finddistance','3')
UO.FindType('0x18E1','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E1','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Gi()
UO.Set('finddistance','3')
UO.FindType('0x18E9','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E9','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
sub Razbor()
UO.FindType('0x18DD','-1','backpack')
If UO.FindCount() > 0 Then
Rm()
Else
wait(50)
End if
UO.FindType('0x18E7','-1','backpack')
If UO.FindCount() > 0 Then
Rn()
Else
wait(50)
End if
UO.FindType('0x18E3','-1','backpack')
If UO.FindCount() > 0 Then
Rgar()
Else
wait(50)
End if
UO.FindType('0x18EB','-1','backpack')
If UO.FindCount() > 0 Then
Rgi()
Else
wait(50)
End if
endsub
Sub Rm()
UO.FindType('0x18DD','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18DD','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rn()
UO.FindType('0x18E7','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E7','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rgar()
UO.FindType('0x18E3','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E3','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rgi()
UO.FindType('0x18EB','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18EB','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub

Author:  Scripts Writer [ 2006-11-27 14:52:28 ]
Post subject:  Re: Антарес. Сбор обычных регов.

slonopotam wrote:
Скрипт на сбор обычных регов в Египте и Анхельме.
Для работы скрипта биндим 2 кнопки. Sbor для собирания, Razbor для переработки. Когда написал, был сам в ужосе от скорости 8)



Code:
Sub Sbor()
UO.Set('finddistance','3')
UO.FindType('0x18DF','-1','ground')
If UO.FindCount() > 0 Then
M()
Else
wait(50)
End if
wait(50)
UO.FindType('0x18E5','-1','ground')
If UO.FindCount() > 0 Then
N()
Else
wait(50)
End if
wait(100)
UO.FindType('0x18E1','-1','ground')
If UO.FindCount() > 0 Then
Gar()
Else
wait(50)
End if
wait(50)
UO.FindType('0x18E9','-1','ground')
If UO.FindCount() > 0 Then
Gi()
Else
wait(50)
End if
end sub
Sub M()
UO.Set('finddistance','3')
UO.FindType('0x18DF','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18DF','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub N()
UO.Set('finddistance','3')
UO.FindType('0x18E5','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E5','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Gar()
UO.Set('finddistance','3')
UO.FindType('0x18E1','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E1','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Gi()
UO.Set('finddistance','3')
UO.FindType('0x18E9','-1','ground')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E9','-1','ground')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
sub Razbor()
UO.FindType('0x18DD','-1','backpack')
If UO.FindCount() > 0 Then
Rm()
Else
wait(50)
End if
UO.FindType('0x18E7','-1','backpack')
If UO.FindCount() > 0 Then
Rn()
Else
wait(50)
End if
UO.FindType('0x18E3','-1','backpack')
If UO.FindCount() > 0 Then
Rgar()
Else
wait(50)
End if
UO.FindType('0x18EB','-1','backpack')
If UO.FindCount() > 0 Then
Rgi()
Else
wait(50)
End if
endsub
Sub Rm()
UO.FindType('0x18DD','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18DD','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rn()
UO.FindType('0x18E7','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E7','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rgar()
UO.FindType('0x18E3','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18E3','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub
Sub Rgi()
UO.FindType('0x18EB','-1','backpack')
while UO.FindCount()
UO.UseObject('finditem')
UO.FindType('0x18EB','-1','backpack')
UO.Ignore('finditem')
wend
UO.Ignorereset()
end sub


В ужасе от :
табуляции
синтаксиса
структуры скрипта
нерациональности

Ты если пишешь- то старайся придерживаться стандартов хотя бы каких-нибудь.
Критерии скрипта в одной из тем Yoko.

То что ты написал- ИМХО первый блин.

Author:  I'm [ 2006-11-27 15:38:09 ]
Post subject: 

Кхм.. не согласен.
О каких стандартах вообще может идти речь?
Каждый пишет как хочет и как ЕМУ удобно.

Author:  omi4 [ 2006-11-27 15:40:40 ]
Post subject: 

достаточно 10 строк
Code:
sub Sbor()
   UO.Set('finddistance','3')
   for var i = 6367 to 6377
      while UO.GetSerial("~" + UO.Int2Hex(i))
         UO.UseObject("finditem")
         wait(100)
      wend
   next
   UO.Set('finddistance','16')
end sub

лень двигатель прогресса

Author:  Scripts Writer [ 2006-11-27 15:54:09 ]
Post subject: 

I'm wrote:
Кхм.. не согласен.
О каких стандартах вообще может идти речь?
Каждый пишет как хочет и как ЕМУ удобно.


Согласен-но смысл тогда выкладывать сюда "это" ?!
Ради похвалы? Не вижу здесь ничего такого.

Другой вопрос если человек учится писать скрипты и хочет выкладывать сюда какие-никакие ,но свои скрипты которые мб кому то помогут. Тогда надо воспринимать критику + учиться правильно писать и оформлять скрипты с самого начала. Критерии скрипта -универсальность, простота в настройках, отсутствие длительных wait'ов(если без них нельзя)(тоесть проверки на месаги из журнала), отсутствие lclick, динамические задержки, чеклаг ... Вобщем думаю понятно.

Опять же I'm- смотря какую цель преследует человек.
Если только показать свои труды- флаг в руки.

Author:  omi4 [ 2006-11-27 19:59:41 ]
Post subject: 

Программирование это не искусство, авангардизм не может улучшить результат.
Код должен быть кратким, понятным (всем кто его понять способен).
От этого можно отступать ради оптимизации, если она того стоит.
Вот и все правила.

Чтобы было более понятно, напишем что ни будь маленькое и показательное.
Раз тема про лут напишем лут. А то некоторые уже логику считают, лишней.
Пропагандируя втыкание кусков из одних скриптов в другие.

Code:
sub mLoot()
   UO.Set("grabdelay", 100)
   UO.MoveItem("<0x0EED", 0, "backpack")
   UO.FindType(-1, -1, "lastcontainer")
   while UO.FindCount()
      i = UO.Hex2Int(UO.GetGraphic("finditem"))
      if 7982 < i < 8044 || 3846 < i < 3853 || 3960 < i < 3984 || i == 5360 ||  3856 < i < 3885 || 5136 < i < 5141 || 7026 < i< 7035  then
         UO.MoveItem("finditem", 0, "backpack")
      endif
      UO.Ignore("finditem")
      UO.FindType(-1, -1, "lastcontainer")
   wend
   UO.IgnoreReset()
   UO.Set("grabdelay", 0)
endsub


Всего 15 строк, только не сильно понятно…. Зато кратко.

Улучшим читаемость, в ущерб оптимальности…
Code:
sub Loot()
   UO.Set("grabdelay", 100)
   UO.MoveItem("<0x0EED", 0, "backpack")
   UO.FindType(-1, -1, "lastcontainer")
   while UO.FindCount()
      i = UO.Hex2Int(UO.GetGraphic("finditem"))
      ;  |    scroll      |      Potions     |      Reagents    |     Deeds
      if 7982 < i < 8044 || 3846 < i < 3853 || 3960 < i < 3984 || i == 5360 then
         UO.MoveItem("finditem", 0, "backpack")
      endif
      ;  |    Gems       |       Plate      |      Shields
      if 3856 < i < 3885 || 5136 < i < 5141 || 7026 < i< 7035 then
         UO.MoveItem("finditem", 0, "backpack")
      endif
      UO.Ignore("finditem")
      UO.FindType(-1, -1, "lastcontainer")
   wend
   UO.IgnoreReset()
   UO.Set("grabdelay", 0)
endsub


UO.FindType() является медленной и прожорливой командой, запускать ее 200 раз ламерство. Массив на 200 итемов занимает 201 строку, столько букв писать, должно быть, лень и с читабельностью понты.
Никогда не используйте куски чужих скриптов, только алгоритм. Лень сама активизирует мозг(если он есть).

Author:  I'm [ 2006-11-27 20:28:35 ]
Post subject: 

Для автора данного топика на данном "этапе" такое написание приемлимо. С точки зрения более зрелых товарищей в этой области это не так вот и все :)
+ только теперь он узнал о своих "ошибках" => узнал для себя что-то новое и учтет это в своих последующих скриптах.

Author:  slonopotam [ 2006-11-29 04:55:05 ]
Post subject: 

Да да. Исправлюсь. :D

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/