Взять кусок из строки в журнале.

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
Zergushka
Posts: 6
Joined: 2005-03-22 14:28:36
Contact:

Взять кусок из строки в журнале.

Post by Zergushka »

Добрый день!

Нужна маленькая помощь, давно не скриптил и не могу разобраться.
Грубо есть журнал, у меня в журнале постоянно появляются строки, типа:
"Zergushka's mode - 6"
"Zergushka's mode - 6"
"Zergushka's mode - 6"
"Zergushka's mode - 5"
"Zergushka's mode - 5"
"Zergushka's mode - 5"
"Zergushka's mode - 4"

Мне нужно брать из журнала строку с цифрой 6.
Затем добираться текстовым поиском до цифры 6.
Затем цифру 6 (изначально она как текст) переваривать в числовое значение 6.
Затем, сравнивать цифру 6, взятую, со следующей строкой мода, с цифрой опять 6.
Как только цифра изменится на -1 цифру, с 6 на 5 или с 5 на 4, мне надо делать скрипт допустим abvgd().

Нуждаюсь в помощи по написанию.) Заодно вспомню.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Взять кусок из строки в журнале.

Post by Mirage »

вот такой кусок

Code: Select all

sub main()
 var nomer, line
   UO.DeleteJournal()
   while not (uo.InJournal('6'))
      wait(100)
   wend
   line=UO.injournal('6')
   nomer=str(val(Trim(right(UO.Journal(line-1),1))))
   uo.print(nomer)
end sub


минусы - в таком виде он будет реагировать и на 6 и на 456 и на 654 (но в последнем случае напишет 4 так как берет 1 число справа).

Есть еще один вариант только он дюже секретный :shock:

PS ищи скупку или мининги по рунам - там есть перезарядка рунок при определенном значении.
Zergushka
Posts: 6
Joined: 2005-03-22 14:28:36
Contact:

Re: Взять кусок из строки в журнале.

Post by Zergushka »

Code: Select all

sub spisok(vendor,sector)

dim m[23]
m[1]  = 'Electrum'
m[2]  = 'Snow'
m[3]  = 'Silver'
m[4]  = 'Sky'
m[5]  = 'Steel'
m[6]  = 'Monk`s'
m[7]  = 'Blood'
m[8]  = 'Bronze'
m[9]  = 'Gold'
m[10] = 'Scorpion'
m[11] = 'Fire'
m[12] = 'Red Devil`s'
m[13] = 'Brilliance'
m[14] = 'Water'
m[15] = 'Crystal'
m[16] = 'Black'
m[17] = 'Crusader`s'
m[18] = 'Assasin'
m[19] = 'Druid`s'
m[20] = 'Ice'
m[21] = 'Acid'
m[22] = 'Copper'
m[23] = 'Goblin`s'

var i,j,k,s=0, KolTov
var X,Y,kol,tovar,cena,name,hozjain
uo.warmode(0)
UO.RClick(Xclick,Yclick)
      CheckLag()
      wait(200)
uo.useobject(vendor)
      CheckLag()
      wait(200)
uo.useobject(vendor)
      CheckLag()
      wait(200)
uo.deletejournal()
   UO.LDblClick(Xclick,Yclick)
   CheckLag()
   wait(200)
   if uo.injournal('данный момент') || uo.injournal('open profile') || uo.LastGump('gumpid')<>gumptype then
      CheckLag()
      wait(200)
      uo.ignore(vendor)
      return 0
   end if
   if uo.LastGump('gumpid')<>gumptype then
      UO.RClick(400,300)
      CheckLag()
      wait(200)
   end if
while not f.eof()
   s=safe call f.ReadLn()   
wend
X=str(uo.getx(vendor))
Y=str(uo.gety(vendor))
name=uo.GetName(vendor)
hozjain=uo.LastGump('text',0)
for i=0 to len(hozjain)
   if mid(hozjain,i,1)=='ц' then
      hozjain=mid(hozjain,i+2,len(hozjain)-(i+2))
   end if
next
KolTov=uo.LastGump('text',1)
for i=0 to len(KolTov)
   if mid(KolTov,i,1)==':' then
      KolTov=val(mid(KolTov,i+2,len(KolTov)-(i+2)))
   end if
next
if KolTov==0 then
   UO.LDblClick(Xclick,Yclick)
   CheckLag()
   s=safe call f.writeln('товара нет - '+m[sector]+' - '+hozjain+'`s Vendor  -  '+name+'('+X+','+Y+')')
   CheckLag()
   wait(200)
   uo.ignore(vendor)
   return 0 
end if
#*****************************
while true
   for j=2 to 21
      k=uo.LastGump('text',j)   
      if k=='N/A' then
         UO.LDblClick(Xclick,Yclick)
         CheckLag()
         wait(200)
         uo.ignore(vendor)
         return 0 
      end if     
      for i=0 to len(k)
         if mid(k,i,4)==' за ' || mid(k,i,4)==' по ' then
            kol=kolichestvo(k)
            if kol==0 then
               tovar=mid(k,0,i)
               kol='1'
            else
               tovar=mid(k,kol+1,i-(kol+1))
               kol=mid(k,0,kol)
            end if
            cena=mid(k,i+4,len(k)-(i+4))             
         end if
      next
      for i=0 to len(cena)
         if mid(cena,i,6)==' монет' then
            cena=mid(cena,0,i)
         end if
      next
      #*********************************
            s=safe call f.writeln(tovar+' - '+cena+'gp - '+kol+'  -  '+name+'('+X+','+Y+') - '+hozjain+'`s - '+m[sector]+'')
   next
   KolTov=KolTov-20
   if KolTov<=0 then
      UO.LDblClick(Xclick,Yclick)
      CheckLag()
      wait(200)
      uo.ignore(vendor)
      return 0 
   end if
   UO.LClick(172,146)
   CheckLag()
   wait(100)
wend
end sub


Ну и + сюда ходилка и некоторые модули на поиск, координаты и так далее.
Есть вот такой скрипт, году в 2008 писал его сам с гирником на пару под Антарес, на сбор всей инфы о рынке (обход всех вендоров и перелистывание всех товаров) в Excel табилицу с сортировкой по секторам, ценам, вещам, их количестве, хозяине вендора, нике вендора и так далее. Он идеально отличал все нюансы текста, всех знаков и так далее. Его мы через гампы делали, а тут надо с журналом работать. А с журналом у меня проблемы. Может в нашем старом скрипте есть твой "дюже секретный" вариант?)) Но я не силен в функциях по журналу (

Помогай ещё ! :)

Т.е. грубо это будет один из под_скриптов в большом циклическом скрипте
Цикл предназначен для условного ожидания, пока цифра изменится, когда цифра поменялась на -1, цифра может быть в интервале от 10 до 1, т.е. она всё время падает, сначала 10, потом через какое-то время становится 9. Но через какое, не факт, может и 2 секунды, а может и минута. Вот как только она поменялась, мне надо делать действие.
Last edited by Zergushka on 2014-06-29 13:18:50, edited 1 time in total.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Взять кусок из строки в журнале.

Post by Mirage »

Code: Select all

hozjain=uo.LastGump('text',0)
for i=0 to len(hozjain)
   if mid(hozjain,i,1)=='ц' then
      hozjain=mid(hozjain,i+2,len(hozjain)-(i+2))
   end if
next
KolTov=uo.LastGump('text',1)
for i=0 to len(KolTov)
   if mid(KolTov,i,1)==':' then
      KolTov=val(mid(KolTov,i+2,len(KolTov)-(i+2)))
   end if
next


правда это считывает инфу с окошка гампа но принцип похожий.
Text: ____________
0] Владелец Cecmpa
1] Товаров на продажу: 36
2] 131 Ancient Logs
3] 4000


hozjain - 0 строка справа от символа ц_ = Cecmpa
KolTov - 1 строка справа от символа :_ = 36
Zergushka
Posts: 6
Joined: 2005-03-22 14:28:36
Contact:

Re: Взять кусок из строки в журнале.

Post by Zergushka »

Vse sdelali sps )
Post Reply