Yoko
http://forum.yoko.com.ua/

Сканер чаров
http://forum.yoko.com.ua/viewtopic.php?f=20&t=16439
Page 1 of 1

Author:  Exist [ 2011-04-26 17:56:15 ]
Post subject:  Сканер чаров

Есть скрипт, который ищет на дистанции в 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

Author:  Mirage [ 2011-04-27 07:14:32 ]
Post subject:  Re: Сканер чаров

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

Author:  Exist [ 2011-04-27 15:04:32 ]
Post subject:  Re: Сканер чаров

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

Author:  Mirage [ 2011-04-27 17:03:01 ]
Post subject:  Re: Сканер чаров

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

Author:  Exist [ 2011-04-27 17:37:55 ]
Post subject:  Re: Сканер чаров

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

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

Author:  Mirage [ 2011-04-27 17:59:34 ]
Post subject:  Re: Сканер чаров

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

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() - реколку.

Author:  Exist [ 2011-04-27 19:44:28 ]
Post subject:  Re: Сканер чаров

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 или можно в этом скрипте придумать что-то ?

Author:  Mirage [ 2011-04-27 19:49:03 ]
Post subject:  Re: Сканер чаров

runehome()
return
end if

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

Page 1 of 1 All times are UTC+02:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/