Yoko

All sides of Injection
It is currently 2025-10-14 22:28:30

All times are UTC+02:00




Post new topic  Reply to topic  [ 8 posts ] 
Author Message
 Post subject: Сканер чаров
PostPosted: 2011-04-26 17:56:15 
Offline

Joined: 2011-04-17 07:43:30
Posts: 32
Есть скрипт, который ищет на дистанции в 28 тайлов игроков по типу указанному в массиве, если нашел то проверяет его цвет. Одна проблема как сделать правльную проверку на цвет ника. Т.к. например если чар синий и рядом находится какой-нибудь красный моб он определяет чела как красного. Не пойму как сделать чтобы он игнорил остальные типы или проверял только нужные мне. Подскажите пожалуйста.
Вот сам скрипт
Code:
sub ScanPlayers()
var Check
var Message1,Message2
Message1="is attacking you"
Message2="Wis Quas|In Ex Grav|An Ex Por|In Sanct Ylem|Vas An Ort"
dim Char[2]
Char[1]='0x0190' ; Male
Char[2]='0x0191' ; Female

UO.Ignore('self','on')
UO.Set('finddistance','28')
caster=''

while not UO.Dead()
for Check=1 to 2
UO.FindType(Char[Check],'-1','1')

if UO.FindCount()>0 then
danger=UO.GetNotoriety(UO.JournalSerial(0))
if UnderAttack==1 and UO.InJournal(Message1) then ; Атака
UO.Print('Бьют!')
end if
if SeeCasting==1 and UO.InJournal(Message2) then ; Каст
caster=UO.JournalSerial(UO.InJournal(Message2)-1)
UO.Cast('Magic Arrow',caster)
end if
if ComingRed==1 and danger==6 and UO.JournalSerial(0)<>UO.GetSerial() then ; Красный
UO.Print('Красный!')
return
else
wait(100)
end if
if ComingGrey==1 and danger==4 and UO.JournalSerial(0)<>UO.GetSerial() then ; Серый
UO.Print('Серый!')
return
else
wait(100)
end if
if ComingBlue==1 and danger==1 and UO.JournalSerial(0)<>UO.GetSerial() then ; Синий
UO.Print('Синий!')
return
else
wait(100)
end if
end if

next
wend
end sub

_________________
---------
PWR: Друль Незнайка [OFF]
PWR: Убийца Незнайка [OFF]
BOI: Прист Недотрога [OFF]
---------
Dragon World: Cooler [Deleted]
Dragon World: Exist [ON]
---------
РУКИ кривые - пинаю НОГАМИ!

--------


Top
   
PostPosted: 2011-04-27 07:14:32 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
У тебя нет проверки на ник игрока в твоем примере.
if uo.getnotoriety(player) == 6 then ; <----- определяет "цвет" ника игрока
Нужно вот так делать -- тогда не слетит.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-04-27 15:04:32 
Offline

Joined: 2011-04-17 07:43:30
Posts: 32
Mirage wrote:
У тебя нет проверки на ник игрока в твоем примере.
if uo.getnotoriety(player) == 6 then ; <----- определяет "цвет" ника игрока
Нужно вот так делать -- тогда не слетит.


Если я правильно тебя понял то вот так ?
Code:
sub ScanPlayers()
var i,player,caster
var Message1,Message2
Message1="is attacking you"
Message2="Wis Quas|In Ex Grav|An Ex Por|In Sanct Ylem|Vas An Ort"
UO.Ignore('self')
UO.Set('finddistance','28')
caster=''

dim Char[2]
Char[1]='0x0190' ; Male
Char[2]='0x0191' ; Female

while not UO.Dead()
for i=1 to 2
UO.FindType(Char[i],'-1','1')

if UO.FindCount()>0 then
player=UO.GetSerial('finditem')
if  UO.InJournal(Message1) then ; Атака
UO.Print('Бьют!')
end if

if UO.InJournal(Message2) then ; Каст
caster=UO.JournalSerial(UO.InJournal(Message2)-1)
UO.Cast('Magic Arrow',caster)
end if

if UO.GetNotoriety(player)==6  then ; Красный
UO.Print('Красный!')
return
else
wait(100)
end if

if UO.GetNotoriety(player)==4  then ; Серый
UO.Print('Серый!')
return
else
wait(100)
end if

if UO.GetNotoriety(player)==1  then ; Синий
UO.Print('Синий!')
return
else
wait(100)
end if
end if

next
wend
end sub

_________________
---------
PWR: Друль Незнайка [OFF]
PWR: Убийца Незнайка [OFF]
BOI: Прист Недотрога [OFF]
---------
Dragon World: Cooler [Deleted]
Dragon World: Exist [ON]
---------
РУКИ кривые - пинаю НОГАМИ!

--------


Top
   
PostPosted: 2011-04-27 17:03:01 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
Правильно в оформлении но не правильно в применении.
Во первых ты не написал цель своего скрипта. Ну нашел человека, ну определил направленность. А дальше?
Во вторых в твоем первом примере направленность определялась словами ComingRed==1 if ComingBlue==1 и так далее. Ты не привел пример этой функции. Ошибка в ней была.
В третьих по поводу второго скрипта. Если ты его запустишь, найдешь человека который тебя атакует скрипт повиснет повторяя фразу АТАКУЮТ!!!! Если чар будет кастовать то скрипт повиснет на касте стрелки. Если чар увидит красного\синего\серого игрока то скрипт выключится.
Мораль пиши чего ты хочешь получить в конечном результате и проставляй паузы.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-04-27 17:37:55 
Offline

Joined: 2011-04-17 07:43:30
Posts: 32
Mirage wrote:
Правильно в оформлении но не правильно в применении.
Во первых ты не написал цель своего скрипта. Ну нашел человека, ну определил направленность. А дальше?
Во вторых в твоем первом примере направленность определялась словами ComingRed==1 if ComingBlue==1 и так далее. Ты не привел пример этой функции. Ошибка в ней была.
В третьих по поводу второго скрипта. Если ты его запустишь, найдешь человека который тебя атакует скрипт повиснет повторяя фразу АТАКУЮТ!!!! Если чар будет кастовать то скрипт повиснет на касте стрелки. Если чар увидит красного\синего\серого игрока то скрипт выключится.
Мораль пиши чего ты хочешь получить в конечном результате и проставляй паузы.

Переменные я убрал для удобства (ComingRed==1 if ComingBlue==1). Вообщем от скрипта хочу получить чтобы при обнаружении, атаке и касте он делал реколл... к примеру. Т.е. если срабатывает одно из условий скрипт загружает функцию реколла.

_________________
---------
PWR: Друль Незнайка [OFF]
PWR: Убийца Незнайка [OFF]
BOI: Прист Недотрога [OFF]
---------
Dragon World: Cooler [Deleted]
Dragon World: Exist [ON]
---------
РУКИ кривые - пинаю НОГАМИ!

--------


Top
   
PostPosted: 2011-04-27 17:59:34 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
проверь вот так.

Code:
sub ScanPlayers()
   var i,player,caster
   var Message1,Message2
   Message1="is attacking you"
   Message2="Wis Quas|In Ex Grav|An Ex Por|In Sanct Ylem|Vas An Ort"
   UO.Ignore('self')
   UO.Set('finddistance','24')
   caster=''
   dim Char[2]
   Char[1]='0x0190' ; Male
   Char[2]='0x0191' ; Female
   UO.DeleteJournal()
   while not UO.Dead()
      for i=1 to 2
         UO.FindType(Char[i],'-1','1')
         if UO.FindCount()>0 then
            player=UO.GetSerial('finditem')
            if UO.GetNotoriety(player)==6 or UO.GetNotoriety(player)==4 or UO.InJournal(Message1) then
               UO.DeleteJournal()
               UO.Print('Улетаем')
               runehome()
            end if
            if UO.InJournal(Message2) then ; Каст
               caster=UO.JournalSerial(UO.InJournal(Message2)-1)
               UO.Cast('Magic Arrow',caster)
               wait(1000)  ;  паузу между кастами отрегулировать
               UO.DeleteJournal()
               runehome()            
            end if
            wait(100)
         end if
      next
   wend
end sub

runehome() ссылка на sub runehome() - реколку.

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


Top
   
PostPosted: 2011-04-27 19:44:28 
Offline

Joined: 2011-04-17 07:43:30
Posts: 32
Mirage wrote:
проверь вот так.

Code:
sub ScanPlayers()
   var i,player,caster
   var Message1,Message2
   Message1="is attacking you"
   Message2="Wis Quas|In Ex Grav|An Ex Por|In Sanct Ylem|Vas An Ort"
   UO.Ignore('self')
   UO.Set('finddistance','24')
   caster=''
   dim Char[2]
   Char[1]='0x0190' ; Male
   Char[2]='0x0191' ; Female
   UO.DeleteJournal()
   while not UO.Dead()
      for i=1 to 2
         UO.FindType(Char[i],'-1','1')
         if UO.FindCount()>0 then
            player=UO.GetSerial('finditem')
            if UO.GetNotoriety(player)==6 or UO.GetNotoriety(player)==4 or UO.InJournal(Message1) then
               UO.DeleteJournal()
               UO.Print('Улетаем')
               runehome()
            end if
            if UO.InJournal(Message2) then ; Каст
               caster=UO.JournalSerial(UO.InJournal(Message2)-1)
               UO.Cast('Magic Arrow',caster)
               wait(1000)  ;  паузу между кастами отрегулировать
               UO.DeleteJournal()
               runehome()            
            end if
            wait(100)
         end if
      next
   wend
end sub

runehome() ссылка на sub runehome() - реколку.


Спасибо вроди бы работает. А чтобы он вырубался после действия это нужно к примеру в модуль реколла поставить ,terminate ScanPlayers или можно в этом скрипте придумать что-то ?

_________________
---------
PWR: Друль Незнайка [OFF]
PWR: Убийца Незнайка [OFF]
BOI: Прист Недотрога [OFF]
---------
Dragon World: Cooler [Deleted]
Dragon World: Exist [ON]
---------
РУКИ кривые - пинаю НОГАМИ!

--------


Top
   
PostPosted: 2011-04-27 19:49:03 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2802
Location: Иваново
runehome()
return
end if

или терминатом

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"
Стрелялка для олдов.


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: Bing [Bot] and 5 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:  
Powered by phpBB® Forum Software © phpBB Limited