Сканер чаров

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Exist
Posts: 32
Joined: 2011-04-17 07:43:30

Сканер чаров

Post by Exist »

Есть скрипт, который ищет на дистанции в 28 тайлов игроков по типу указанному в массиве, если нашел то проверяет его цвет. Одна проблема как сделать правльную проверку на цвет ника. Т.к. например если чар синий и рядом находится какой-нибудь красный моб он определяет чела как красного. Не пойму как сделать чтобы он игнорил остальные типы или проверял только нужные мне. Подскажите пожалуйста.
Вот сам скрипт

Code: Select all

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]
---------
РУКИ кривые - пинаю НОГАМИ!

--------
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Сканер чаров

Post by Mirage »

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

Re: Сканер чаров

Post by Exist »

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


Если я правильно тебя понял то вот так ?

Code: Select all

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]
---------
РУКИ кривые - пинаю НОГАМИ!

--------
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Сканер чаров

Post by Mirage »

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

Re: Сканер чаров

Post by Exist »

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]
---------
РУКИ кривые - пинаю НОГАМИ!

--------
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Сканер чаров

Post by Mirage »

проверь вот так.

Code: Select all

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() - реколку.
Exist
Posts: 32
Joined: 2011-04-17 07:43:30

Re: Сканер чаров

Post by Exist »

Mirage wrote:проверь вот так.

Code: Select all

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]
---------
РУКИ кривые - пинаю НОГАМИ!

--------
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Сканер чаров

Post by Mirage »

runehome()
return
end if

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