Yoko

All sides of Injection
It is currently 2017-09-25 04:42:13

All times are UTC+02:00




Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next
Author Message
PostPosted: 2014-03-15 21:53:06 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Написал скриптик по переносу вандов и учетом имени и зарядов.
Имеющиеся в контейнере- источнике ванды переносит нормально.
Но если указать таргетом на ванд, который лежит не в источнике, а в другом месте, то имя ванда определяется неправильно и переносятся не те ванды.
Вообще с именами вандов какое-то шаманство, с первого раза не определяются пришлость сначала брать
uo.info ('finditem') а уж потом UO.GetName( 'finditem' ).



Code:
var clr=38, clo=43, cly=53, clg=63, clb1=3, cla=89, clda=83, clp=120 , clgr=1088, clb=1161
# красный   - '38' или '0x0026'  # темно-бирюзовый - '83' или '0x0053'
# оранжевый - '43' или '0x002B'  # голубой    - '89'  или '0x0059'
# желтый    - '53' или '0x0035'  # синий      - '3'   или '0x0003'
# зеленый   - '63' или '0x003F'  # фиолетовый - '120' или '0x0078'
# '1088' - по умолчанию
# 1152 - бирюзовый 1151 - черный 1155 - фиолетовый 1156 - белый  1158 - кр 1161 - синий 1162 - темно зел 1166 ткр 1169 сз
# 2500 2524 - оранж  2517 кр 2567 малин 2566=0x0A06 белый
#  2998 - белый 3008 3221 3600 и выше - контур
###################################################
Sub PrintInColor(text,color)
   # PrintInColor("здесь текст",'цвет текста')
   # красный   - '38' или '0x0026'  # темно-бирюзовый - '83' или '0x0053'
   # оранжевый - '43' или '0x002B'  # голубой    - '89'  или '0x0059'
   # желтый    - '53' или '0x0035'  # синий      - '3'   или '0x0003'
   # зеленый   - '63' или '0x003F'  # фиолетовый - '120' или '0x0078'
   # '1088' - по умолчанию
   # 1152 - бирюзовый 1151 - черный 1155 - фиолетовый 1156 - белый  1158 - кр 1161 - синий 1162 - темно зел 1166 ткр 1169 сз
   # 2500 2524 - оранж  2517 кр 2567 малин 2566=0x0A06 белый
   #  2998 - белый 3008 3221 3600 и выше - контур
   
   
   UO.ConColor(color)
   ;UO.Exec('set quiet 0')   # Показывать сообщения Injection.
   UO.Print(text)
   ;UO.Exec('set quiet 1')   # Не показывать сообщения Injection.
   UO.ConColor('1088')
endsub

###################################################
sub pereklad()
#****ДРВ*****#
# based on... (C) Cooper
# modified by Kobol, 2014.
#****v1.0****#
VAR Ttov
Var ReqName, CurrName   
var ReqWandName, ReqWandCharge=3 ; требуемое имя ванда,  требуемый заряд ванда
var CurrWandName, CurrWandCharge ; текущее найденное имя ванда, текущее найденный заряд ванда
#------------- примеры имен вандов ----------------
;a Magic wand of Cure (8 charges)
;a Magic wand of Mana Drain (10 charges)
;a Magic wand of Reactive Armor (10 charges)
;a Magic wand of Flame Strike (8 charges)

;нужно сравнивать по имени и учитывать число зарядов. разряженные ванды не брать
#-------------
UO.Print('Выбери мешок ИСТОЧНИК (From)')
UO.Exec('addobject istok')
while UO.Targeting()
   wait(100)
wend

UO.UseObject('istok')

UO.Print('Выбери ПРИЕМНИК (To)')
UO.Exec('addobject priem')
while UO.Targeting()
   wait(100)
wend

UO.UseObject('priem')

UO.Print('Выбери ПРЕДМЕТ (Item)')
UO.Exec('addobject tovar')
while UO.Targeting()
   wait(100)
wend

TTov = UO.GetGraphic('tovar')
wait (100)
UO.FindType(Ttov,'-1','istok')
wait (400)

If UO.FindCount() > 0 then
   
   uo.info ('finditem')
   uo.textclear()
   wait(50)
   ReqName= UO.GetName( 'finditem' )
   wait(50)
   UO.Print('ReqName='+ReqName)
   
   ReqWandName=left(ReqName, InStr(ReqName, '(')) ; a Magic wand of Mana Drain (10 charges)
   ;uo.print ("ReqWandName="+ ReqWandName)
   PrintInColor("ReqWandName="+ ReqWandName,CLR)
   
   ;ReqWandCharge=val(mid(ReqName, InStr(ReqName, '(')+1, 2))
   uo.print ("ReqWandCharge="+ str(ReqWandCharge))
   ;PrintInColor("ReqWandCharge="+ str(ReqWandCharge),CLR)
   
   ;return ;!!!!!!!!!!!!!!
   
   repeat
   uo.info ('finditem')
   uo.textclear()
   wait(50)
   CurrName= UO.GetName( 'finditem' )
   wait(50)
   UO.Print('CurrName='+CurrName)
   
   if len(CurrName)> 0 then
      CurrWandName=left(CurrName, InStr(CurrName, '(')) ; a Magic wand of Mana Drain (10 charges)
      ;uo.print ("CurrWandName="+ CurrWandName)
   PrintInColor("CurrWandName="+ CurrWandName,CLb)
      
      CurrWandCharge=val(mid(CurrName, InStr(CurrName, '(')+1, 2))
      uo.print ("CurrWandCharge="+ str(CurrWandCharge))
   ;PrintInColor("CurrWandCharge="+ str(CurrWandCharge),CLb)
      if  ReqWandName==CurrWandName and CurrWandCharge>= ReqWandCharge then
   PrintInColor("CurrWandName="+ CurrWandName,CLg)
         
         UO.MoveItem('finditem', '0', 'priem')
         wait(800)
      else
         uo.ignore('finditem')
         wait (200)
         
         
      end if
      
   else
      
   end if
   
   wait(200)

   CheckLag()
   UO.FindType(Ttov,'-1','istok')
   
   until not UO.FindCount()
   
   UO.Print('Закончили...')
else
   UO.Print('А кидать то нечего...')
endif
uo.ignorereset()


end sub

############################################################
Sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
Wait(250)
until UO.InJournal('backpack')
endsub

############################################################
sub InStr(Source, subStr)
var n = len(subStr)
var j
for var i = 0 to len(Source)-n
   j = 0
   while (j < n) and (Source[i+j] == subStr[j])
      j = j+1;
   wend
   if j == n then
      return i
   end if
next
return -1
end sub


Top
   
PostPosted: 2014-03-15 22:45:52 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
Code:
   uo.info ('finditem')
   uo.textclear()
   wait(50)
   ReqName= UO.GetName( 'finditem' )

замени на
Code:
   uo.click('finditem')
   uo.textclear()
   wait(100) ; или 200 при необходимости
   ReqName= UO.GetName( 'finditem' )

и проблем не будет

_________________
CodeSweeper


Top
   
PostPosted: 2014-03-15 22:54:33 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
На будущее, uo.GetName([object]) - Возвращает параметр обьекта object (по умолчанию - персонажа игрока) - имя обьекта. Если сервер никогда не выводил его на экран (как это делается например после одиночного щелчка click на обьекте или использования All Names в клиенте), то имя неизвестно.

_________________
CodeSweeper


Top
   
PostPosted: 2014-03-15 23:49:40 
Offline

Joined: 2011-06-11 19:54:23
Posts: 823
Имена НПС и игроков определяются как только они появились на экране, по предметам нужно тыкать в любом случае самому (скриптом).


Top
   
PostPosted: 2014-03-16 17:04:59 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Понял, спасибо! :D


Top
   
PostPosted: 2015-11-14 20:08:34 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Перестало определяться имя ванда
Захожу старой инжой - работает нормально.
TrackWorldItem включен

Code:
##################### использование wand #############################
sub wWand(wnum)
   ; Использование wWand(1) - ищет в паке и подсумках UsefulWand [1]="a Magic wand of Paralyze" и берет его (UO.useobject() )
   DIM WandType[4]
   WandType[0] = '0x0DF5' ;
   WandType[1] = '0x0DF3' ;
   WandType[2] = '0x0DF4' ;
   WandType[3] = '0x0DF2' ;
   #------------- примеры имен вандов ----------------
   ;a Magic wand of Cure (8 charges)
   ;a Magic wand of Mana Drain (10 charges)
   ;a Magic wand of Reactive Armor (10 charges)
   ;a Magic wand of Flame Strike (8 charges)
   ;нужно сравнивать по имени и учитывать бы число зарядов. разряженные ванды не брать
   var wCount=26
   dim UsefulWand [26] ;
   UsefulWand [1]='a Magic wand of Paralyze' ;
   UsefulWand [2]='a Magic wand of Paralyze Field' ;
   UsefulWand [3]='a Magic wand of Greater Heal' ; 4: Greater Heal !!!!!!!!!!!!!!! 11 -10
   UsefulWand [4]='a Magic wand of Cure' ; 2: Cure !!!!!!!!!!!!!!! 3 -5
   UsefulWand [5]='a Magic wand of Invisibility' ; 6: Invisibility !!!!!!!!!!!!!!! 19 -10
   UsefulWand [6]='a Magic wand of Reveal' ;!!!!
   UsefulWand [7]='a Magic wand of Recall' ;
   UsefulWand [8]='a Magic wand of Magic Reflection' ; 5: Magic Reflection !!!!!!!!!!!!!!! 16 -10

   UsefulWand [8]='a Magic wand of Wall of Stone' ;
   UsefulWand [9]='a Magic wand of Fire Field' ;
   UsefulWand [10]='a Magic wand of Magic Arrow' ; 1: Magic Arrow !!!!!!!!!!!!!!!    1 -10  ;
   UsefulWand [11]='a Magic wand of Reactive Armor' ; 1: Reactive Armor !!!!!!!!!!!!!!! 2 -10
   UsefulWand [12]='a Magic wand of Mana Drain' ;
   UsefulWand [13]='a Magic wand of Protection' ; 2: Protection !!!!!!!!!!!!!!! 4 -5
   UsefulWand [14]='a Magic wand of Fireball' ; 3: Fireball !!!!!!!!!!!!!!! 5 -5
   UsefulWand [15]='a Magic wand of Poison' ; 3:
   UsefulWand [16]='a Magic wand of Telekinesis' ;
   UsefulWand [17]='a Magic wand of Teleport' ; 3:
   UsefulWand [18]='a Magic wand of Dispel Field' ; 5: Dispel Field !!!!!!!!!!!!!!! 15 -5
   UsefulWand [19]='a Magic wand of Poison Field' ; 5: Poison Field !!!!!!!!!!!!!!! 18 -10
   ; ванды элемов
   
   UsefulWand[20] = 'a Magic wand of Water Elemental';
   UsefulWand[21] = 'a Magic wand of Earth Elemental';
   UsefulWand[22] = 'a Magic wand of Fire Elemental';
   UsefulWand[23] = 'a Magic wand of Air Elemental';
   
   UsefulWand[24] = 'a Magic wand of Daemon'; 'Magic wand of Daemon'
   UsefulWand[25]='a Magic wand of Blade Spirit' ;
   UsefulWand[26] = 'a Magic wand of Energy Vortex';
   
; ищем заданный wand в паке и подсумках
var WNameRQ,WNameCurr, ti, TTov, si, zz,flFound
   
;PrintInColor(str(wnum),'2999')
;PrintInColor(UsefulWand[wnum],'2999')
   
   ; ищем ванды
   for ti=0  to 3 ; перебираем по типам вандов
      Ttov=WandType[ti]
      
      UO.FindType(Ttov,'-1', 2) ; находим wand в паке и подсумках
      wait (10)
      If UO.FindCount() > 0 then
         
         repeat ; <<<<<<<<<<<<<<< цикл поиска вандов в паке и подсумках
            uo.click ('finditem')
            uo.info ('finditem')
            wait (250)
            WNameCurr =UO.GetName( 'finditem' ) ; имя найденного ванда

            PrintInColor(WNameCurr,clb); пишет просто "wand" <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

            WNameRQ=UsefulWand[wnum]
            WNameRQ=left(WNameRQ, InStr(WNameRQ, '(')) ; a Magic wand of Mana Drain (10 charges)
            PrintInColor(WNameRQ,'2998')
            zz=instr(WNameCurr,WNameRQ) ; имя из массива совпадает с именем найденного ванда?
            PrintInColor(str(zz),clo)
            flFound=0

            if zz>-1 then ;если да, то берем его в руки
            PrintInColor(WNameCurr,"2524")
               
               flFound=1
               ti=3 ; для выхода из цикла
               uo.useobject("finditem")
            wserial=uo.getserial("finditem")
            wait(100)
            else
               uo.Ignore("finditem") ; ??????????????
            end if
            UO.FindType(Ttov,'-1',2)
            wait (20)
         until not UO.FindCount() or  flFound==1 ; ; <<<<<<<<<<<<<<<
      end if
            ;CheckLag()
   next ;  переходим к следующему типу Wandа
   
   uo.IgnoreReset()
   wait (30)
UO.Print('Finished...')
return flFound


end sub




Top
   
PostPosted: 2015-11-14 20:12:12 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
В _info имя есть?

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 21:23:55 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Incorrect User wrote:
В _info имя есть?


нет, тоже wand.
кстати, да. делаешь ,info - в старой инже показывает имя, в новой - нет. При клике на ванд имя показывает и в старой и в новой.

info на dagger "crafted by *******". В старой инже показывает полностью 30 символов, в новой - только 29 символов, последний не показывается.
Проверил другой "cutlass crafted by *******" - тоже только 29 символов в новой инже.


Last edited by kobol on 2015-11-14 21:38:17, edited 1 time in total.

Top
   
PostPosted: 2015-11-14 21:26:36 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
Покажи инфо, и какое имя должно быть.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 21:41:41 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
------- новая -------------
ID=0x40539FC3 Type=0x0DF3 NMERVMD Name=wand
Quantity: 1 Colour: 0x0000 Layer: 0 Has: 0
X=91 Y=101 Z=0 C=0x40133DAF F=0x00

---------старая ----------- до клика на предмет
ID=0x40539FC3 Type=0x0DF3 NMERVMD Name=
Quantity: 0 Colour: 0x0000 Layer: 1 Has: 1
X=65535 Y=65535 Z=0 C=0x00133DC7 F=0x00

---------старая ----------- после клика на предмет
ID=0x40539FC3 Type=0x0DF3 NMERVMD Name=a Magic wand of Paralyze (10 charges)
Quantity: 0 Colour: 0x0000 Layer: 1 Has: 1
X=65535 Y=65535 Z=0 C=0x00133DC7 F=0x00

------- новая -------------
ID=0x40424961 Type=0x0F51 NRNETMD Name=Golden Dagger crafted by Note
Quantity: 1 Colour: 0x0032 Layer: 0 Has: 0
X=87 Y=141 Z=0 C=0x40133DAF F=0x00


---------старая -----------
ID=0x40424961 Type=0x0F51 NRNETMD Name=Golden Dagger crafted by Noteca
Quantity: 1 Colour: 0x0032 Layer: 0 Has: 1
X=102 Y=117 Z=0 C=0x402AB8C3 F=0x00


Top
   
PostPosted: 2015-11-14 21:50:13 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
X и Y тоже какие-то левые.


Top
   
PostPosted: 2015-11-14 21:55:40 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
Когда-то в одной из версий имя вообще не отображало. У тебя последняя? У меня с именами в порядке, и координаты правильно отображает .

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 22:19:22 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Incorrect User wrote:
Когда-то в одной из версий имя вообще не отображало. У тебя последняя? У меня с именами в порядке, и координаты правильно отображает .


Script version 1508.09 (Injection >=1501.17)
У меня запущено несколько клиентов, если что.


Top
   
PostPosted: 2015-11-14 22:24:23 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
Кол-во клиентов не должно иметь значения. Отпишу джусифруту, оставь шарда название.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-14 22:31:55 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Incorrect User wrote:
Кол-во клиентов не должно иметь значения. Отпишу джусифруту, оставь шарда название.


Dragon World

Спасибо )


Top
   
PostPosted: 2015-11-15 22:14:19 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
В общем говорит что так и должно быть. На некоторых шардах такое есть, то что ты получаешь теперь это и есть имя, остальное это левый текст, который теперь инжект не воспринимает. Поэтому теперь просто переделай на получение названия из журнала.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-15 23:16:47 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Incorrect User wrote:
В общем говорит что так и должно быть. На некоторых шардах такое есть, то что ты получаешь теперь это и есть имя, остальное это левый текст, который теперь инжект не воспринимает. Поэтому теперь просто переделай на получение названия из журнала.


На старой-то инже нормально. И ванды и названия предметов >30 символов


Top
   
PostPosted: 2015-11-15 23:25:10 
Offline

Joined: 2011-05-23 00:33:30
Posts: 941
Когда ты кликаешь на предмет, приходит пакет с двумя значениями, сначала идет имя, дальше идет текст. В данном случае у тебя имя wand и далее текст a Magic wand of Paralyze (10 charges). Раньше инжект брал текст как имя, но на некоторых шардах во второй параметр вместо имени пишут всякую отсебятину, поэтому инжект теперь читает только имя. А про координаты, новый инжект показывает правильные, старый показывал ошибочные.

_________________
CodeSweeper


Top
   
PostPosted: 2015-11-16 01:56:04 
Offline
User avatar

Joined: 2012-12-15 12:03:25
Posts: 119
Location: C-Петербург
Понятно :cry:


Top
   
PostPosted: 2015-11-17 22:28:44 
Offline

Joined: 2012-07-27 23:43:14
Posts: 212
народ, а есть скрипт такой на определение вандов? А то их гдето 500 и в ручную очень долго все это делать.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 22 posts ]  Go to page 1 2 Next

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