Yoko

All sides of Injection
It is currently 2025-12-03 11:14:37

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
PostPosted: 2006-11-27 08:24:22 
Offline
User avatar

Joined: 2006-08-05 14:09:06
Posts: 270
Скрипт на сбор обычных регов в Египте и Анхельме.
Для работы скрипта биндим 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

_________________
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog


Top
   
PostPosted: 2006-11-27 14:52:28 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
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.

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


Top
   
 Post subject:
PostPosted: 2006-11-27 15:38:09 
Offline
Expert!
User avatar

Joined: 2004-10-15 22:38:04
Posts: 1396
Location: Moscow City.
Кхм.. не согласен.
О каких стандартах вообще может идти речь?
Каждый пишет как хочет и как ЕМУ удобно.

_________________
The End.


Top
   
 Post subject:
PostPosted: 2006-11-27 15:40:40 
Offline
User avatar

Joined: 2005-07-10 21:53:05
Posts: 457
достаточно 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

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


Top
   
 Post subject:
PostPosted: 2006-11-27 15:54:09 
Offline

Joined: 2005-04-19 18:00:29
Posts: 2259
Location: Московская область
I'm wrote:
Кхм.. не согласен.
О каких стандартах вообще может идти речь?
Каждый пишет как хочет и как ЕМУ удобно.


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

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

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


Top
   
 Post subject:
PostPosted: 2006-11-27 19:59:41 
Offline
User avatar

Joined: 2005-07-10 21:53:05
Posts: 457
Программирование это не искусство, авангардизм не может улучшить результат.
Код должен быть кратким, понятным (всем кто его понять способен).
От этого можно отступать ради оптимизации, если она того стоит.
Вот и все правила.

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

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 строку, столько букв писать, должно быть, лень и с читабельностью понты.
Никогда не используйте куски чужих скриптов, только алгоритм. Лень сама активизирует мозг(если он есть).


Top
   
 Post subject:
PostPosted: 2006-11-27 20:28:35 
Offline
Expert!
User avatar

Joined: 2004-10-15 22:38:04
Posts: 1396
Location: Moscow City.
Для автора данного топика на данном "этапе" такое написание приемлимо. С точки зрения более зрелых товарищей в этой области это не так вот и все :)
+ только теперь он узнал о своих "ошибках" => узнал для себя что-то новое и учтет это в своих последующих скриптах.

_________________
The End.


Top
   
 Post subject:
PostPosted: 2006-11-29 04:55:05 
Offline
User avatar

Joined: 2006-08-05 14:09:06
Posts: 270
Да да. Исправлюсь. :D

_________________
ДРВ

Spoiler

_________________

Антарес

Spoiler|Gostrabaiter|Umhra|Slog


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 8 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited