Yoko

All sides of Injection
It is currently 2025-12-02 17:22:09

All times are UTC+02:00




Post new topic  Reply to topic  [ 16 posts ] 
Author Message
PostPosted: 2007-11-10 00:45:49 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Помогите пожалуйста подправить такой макрос:

Время от времени возникает такой вот гамп

Image

Code:
_____infogump_______
serial   0x0080f81d
gumpid   0x004dcedc
X   0
Y   0
168   packet size
23   reply packet size
Buttons: ________
 page 0
    1 [    1] image=0x0851 at 67:119
    2 [    0] image=0x0848 at 127:119
Checks&Radios: __
Entryes: ________
All commands: ____
    1] page 0
    2] gumppic 37 44 2070
    3] button 67 119 2130 2129 1 0 1
    4] button 127 119 2119 2120 1 0 0
    5] text 77 74 1355 0
Text: ____________
    0]  * AIION! *
Reply: ___________
 [0001] primary reply
 Checks&Radios (0)
 Entryes (0)


Нужно просто нажать кнопку ОК

Вот что пока сделал я:

Code:
sub bonus()
  while  not uo.Dead()
      if uo.LastGump('replyed') == 0 then
         if uo.LastGump('text', 0) == ' * AIION! *' then
            uo.LClick(uo.LastGump('x')+73, uo.LastGump('y')+109)
            wait(1000)
         end if
      end if
      wait(100)
   wend
end sub


Здесь сделал такую строку
Code:
uo.LClick(uo.LastGump('x')+73, uo.LastGump('y')+109)

т.к. в прошлый раз здесь были такие координаты:
Code:
Buttons: ________
 page 0
    1 [    1] image=0x0851 at 73:109

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения
http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-10 01:05:16 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
uo.LClick(uo.LastGump('x')+73, uo.LastGump('y')+109)
uo.LastGump('x') и uo.LastGump('y') тут незачем, так как гамп сам не двигается, двигаются только жлементы

Все что нужно сделать это вырезать из текста кнопки координаты, опять таки в макросах (антимакросах) есть достаточно примеров как это сделать.

Можешь воспользоватся командой Mid, можешь Left Right использовать.

допустим
Code:
btnxy = Right(uo.LastGump('button', 0), 7)
uo.LClick(val(Left(btnxy, 3)), val(Right(btnxy, 3)))


Top
   
 Post subject:
PostPosted: 2007-11-12 09:40:20 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Code:
sub bonus()
var btnxy
  while  not uo.Dead()
      if uo.LastGump('replyed') == 0 then
         if uo.LastGump('text', 0) == ' * AIION! *' then
            btnxy = Right(uo.LastGump('button', 0), 6)
            uo.LClick(val(Left(btnxy, 2)), val(Right(btnxy, 3)))
            wait(1000)
         end if
      end if
      wait(100)
   wend
end sub


Запускаю с выскочившим гампом, а оно не работает. Просто ничего не делает.

Может быть ошибка в этом, это фраза " * БОНУС! *", которая в инфогампе отображается следующими иероглифами:
Code:
if uo.LastGump('text', 0) == ' * AIION! *' then

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-12 15:12:42 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Code:
         if uo.LastGump('text', 0) == ' * AIION! *' then
            uo.Print('AntiMacro!')
            btnxy = Right(uo.LastGump('button', 0), 6)
            uo.LClick(val(Left(btnxy, 2)), val(Right(btnxy, 3)))
            wait(1000)
         end if

и смотри работает ли условие по тексту, если нет
то uo.LastGump('text', 0) и в перед, сколько в строке символов и тд и как она вообще выглядит...

ПС Right(uo.LastGump('button', 0), 6) здесь зря 7 на 6 изменил идалее по тексту тоже, если отклнение будет 3-х значное то скрипт пролетит, ну и тд...


Top
   
 Post subject:
PostPosted: 2007-11-13 11:12:30 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
После появления гампа кнопка не нажимается и макрос начинает непрерывно выдавать "AntiMacro!".

И видно жмет где-то левее нужного, т.к. появляются комментарии того, на что нажали кнопкой. Поменяю 6 на 7, попробую.

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-13 13:52:24 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
В общем решил я сделать проверку того, что скрипт выписывает из описания гампа и с чем работает.

Code:
_____infogump_______
serial   0x006d4bc6
gumpid   0x0023e3b2
X   0
Y   0
168   packet size
0   reply packet size
Buttons: ________
 page 0
    1 [    1] image=0x0851 at 65:119
    2 [    0] image=0x0848 at 125:119
Checks&Radios: __
Entryes: ________
All commands: ____
    1] page 0
    2] gumppic 35 44 2070
    3] button 65 119 2130 2129 1 0 1
    4] button 125 119 2119 2120 1 0 0
    5] text 75 74 1355 0
Text: ____________
    0]  * AIION! *


Вот так выглядит мой скрипт (с выдачей переменной btnxy):

Code:
sub bonus()
var btnxy
  while  not uo.Dead()
      if uo.LastGump('replyed') == 0 then
         if uo.LastGump('text', 0) == ' * AIION! *' then
            uo.Print('AntiMacro!')
            btnxy = Right(uo.LastGump('button', 0), 7)
            uo.LClick(val(Left(btnxy, 2)), val(Right(btnxy, 3)))
            wait(1000)
            uo.print('Записали: ' +btnxy)
         end if
      end if
      wait(100)
   wend
end sub


Создается цикл:

"AntiMacro!"
"Записали: 5 y=119"

Странно

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-13 17:08:36 
Offline
User avatar

Joined: 2006-10-08 08:37:57
Posts: 87
Так этот скрипт работает для этого гампа?


Top
   
 Post subject:
PostPosted: 2007-11-13 18:53:46 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Пока нет

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-14 22:40:06 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Значит, у меня такая проблемка... иногда координата Х трехзначная, иногда - двузначная.

Выдается в виде:
х=000 у=000
либо
х=00 у=000

как вырезать нужное количество цифр? или делать две проверки - по двузначным цифрам и трехзначным?

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-14 22:45:06 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Парсить строку.. Что-нибудь в этом духе:
Code:
Sub getXfromStr( str )
   var i, flag = false, x = ""
   for i = 0 to strlen( str ) -1
      if flag then
         if str[i] == " " then
            return val( x )
         endif
         x = x + str[i]
      endif
      if str[i-1] + str[i] == "x=" then
         flag = true
      endif
   next
   return val( x )
endsub


Или заюзать что-нибудь готовое, типа explode.

_________________
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-11-14 22:52:40 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
я же говорил не трогай
Code:
btnxy = Right(uo.LastGump('button', 0), 7) 
uo.LClick(val(Left(btnxy, 3)), val(Right(btnxy, 3)))

val удачно переводит НЕ ЦИФРЫ в 0

во всяком всегда можно отпринтить результаты val(Left(btnxy, 3)) и
val(Right(btnxy, 3))...

да и задача не сложная...


Top
   
 Post subject:
PostPosted: 2007-11-18 10:49:23 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Как можно узнать возник ли этот гамп, если я нахожусь в процессе использования крафтовых скиллов, у которых тоже появляются таблички (гампы), с которыми я оперирую командой uo.recall(*******)
Т.е. получается что появился "бонус", и в этот момент он - uo.lastgump, но через мгновение идет команда uo.recall() и тут появляется другой гамп, и соответственно становится он уже uo.lastgump.

Есть ли способ "найти" появившийся гамп с бонусом при таких условиях?

Надеюсь понятно объяснил. :?

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-19 09:42:06 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Code:
sub bonus()
var btnxy, one, two
while  not uo.Dead()
    if uo.LastGump('text', 0) == ' * AIION! *' then
        uo.Print('AntiMacro!')
        btnxy = Right(uo.LastGump('button', 0), 9)
        one = val(left(btnxy, 3))
        two = val(right(btnxy, 3))
        uo.LClick(one, two)
        wait(1000)
        uo.print('Записали x: ' + one)
        uo.Print('Записали у: ' + two)
    end if
    wait(100)
wend
end sub


Выдает ошибку: "line 11: Runtime error - Bad operation for this type". Не получается что-то этот макрос у меня. Пожалуйста, кто может, помогите.

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


Top
   
 Post subject:
PostPosted: 2007-11-19 15:11:28 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Code:
one = val(left(btnxy, 3)) 
...
uo.print('Записали x: ' + one)

Сами разберётесь?)

_________________
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.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2007-11-19 15:43:12 
Offline
User avatar

Joined: 2006-10-08 08:37:57
Posts: 87
Поскрорее бы этот гамп был готов.. жду не дождусь :)


Top
   
 Post subject:
PostPosted: 2007-11-19 19:49:31 
Offline

Joined: 2004-07-14 22:56:46
Posts: 82
Location: Украина, Одесса
Destruction wrote:
Code:
one = val(left(btnxy, 3)) 
...
uo.print('Записали x: ' + one)

Сами разберётесь?)


Да, с этим разобрался уже :oops:

_________________
ХХДЕНТОНХХ: Холодостойкий Хронометрирующий Дроид с Единым Наступательным Трансмутатором для Ограниченного Нападения и Хронометрированного Хищения

http://uokings.ru/news.php


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 10 guests


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