суть проблемы:
щас бегаю на шарде, где люди активно используют скрытие каста, причем есть много вариаций
1) uo.msg(' ') три раза - самя простая.
2) uo.msg(' An Ex Por') - с разными вариациями
3) спам uo.msg(' An Ex Por') с разными цветами, которые могут совпадать с цветом обычных кастов. + с разной последовательностью.
вобщем пытался найти решение:
Code: Select all
sub DetectCast()
uo.DeleteJournal()
var i,EnemyMag,H1,H2,EnName,color
EnemyMag = '0x0000000'
Dim Cast[39]
Cast[1]='Uus Jux'
Cast[2]='Rel Wis'
Cast[3]='In Por Ylem'
Cast[4]='Des Mani'
Cast[5]='Uus Sanct'
Cast[6]='In Nox'
Cast[7]='Rel Por'
Cast[8]='In Sanct Ylem'
Cast[9]='Vas Uus Sanct'
Cast[10]='Des Sanct'
Cast[11]='In Flam Grav'
Cast[12]='Por Ort Grav'
Cast[13]='Ort Rel'
Cast[14]='Kal Ort Por'
Cast[15]='An Grav'
Cast[16]='Kal In Ex'
Cast[17]='In Jux Sanct'
Cast[18]='Por Corp Wis'
Cast[19]='An Ex Por'
Cast[20]='In Nox Grav'
Cast[21]='Kal Xen'
Cast[22]='An Ort'
Cast[23]='Corp Por'
Cast[24]='Vas Ort Flam'
Cast[25]='An Lor Xen'
Cast[26]='In Ex Grav'
Cast[27]='Wis Quas'
Cast[28]='Vas Ort Grav'
Cast[29]='In Sanct Grav'
Cast[30]='Kal Vas Flam'
Cast[31]='Vas Rel Por'
Cast[32]='Ort Sanct'
Cast[33]='Vas An Ort'
Cast[34]='Flam Kal Des Ylem'
Cast[35]='In Vas Por'
Cast[36]='Vas Corp Por'
Cast[37]='An Corp'
Cast[38]='Agr'
While 1 > 0
for i=1 to 38
if UO.InJournal(Cast[i]) then
if uo.journalcolor(uo.injournal(Cast[i]))=='0x03B2' then
EnemyMag = UO.JournalSerial(UO.InJournal(Cast[i]))
H1 = uo.GetSerial(EnemyMag)
H2 = uo.GetSerial('laststatus')
EnName = uo.GetName('laststatus')
if H1 == H2 then
uo.charprint('0x002d',"*" + Cast[i] + "*")
UO.DeleteJournal()
endif
endif
endif
next
wait(100)
wend
end sub
но скрипт почти не выдает сообщения кастов, тоесть шансы сдетектить каст ~30% причем я так и не понял от чего это зависит.
суть проблемы : заставить скрипт выдавать сообщения произносимые именно персонажем, а не скриптами хозяина. пробовал тупо фильтровать по цвету, но получалось не эффективно.