Page 1 of 4

Просьба ... с определением появившегося чара на экране ...

Posted: 2006-04-20 08:04:33
by Lesnik
Умные люди ... Нужен кусок скрипта, который будет определять, что на экране появился другой чар ... и затем выполнять что то дальше ... Что то дальше я знаю ... Незнаю как определить появление чара! ...
Просьба помочь ...

Posted: 2006-04-20 08:24:37
by Lesnik
Просьба учесть еще то что сижу по gprs так что лагаю, и шард DRW. Заранее спасибо.

Posted: 2006-04-20 08:32:55
by flake
Возвращает 1 если обнаружит чара.

Code: Select all

Sub Scan()
#################
var i
 Dim scan[2]
  scan[1] = '0x0190'   ; мужик
  scan[2] = '0x0191'   ; баба         
  uo.set( 'finddistance', '14' )
    for i = 1 to 2
       uo.findtype( scan[i], '-1', 'ground' )
           if uo.findcount() then
             return 1        
           endif
    next
  return 0
endsub


З.Ы.
Это же надо таким извращенцем быть, чтобы в УО через gprs играть :)

Posted: 2006-04-20 10:03:30
by Lesnik
условие в моем скрипте как прописать?

if [условие] then [следующее действие]

условие?

1 скрипт чему возвращает переменной i?

Posted: 2006-04-20 10:29:48
by Lesnik
кстати а не получиться так что скрипт будет находить и моего чара и выполнять следующее действие? мне нужно только других чаров.

Posted: 2006-04-20 13:10:43
by flake
пропиши гденить в начале основного скрипта

Code: Select all

uo.ignore('self')

А теперь чтобы проверять наличине чаров:

Code: Select all

 if Scan() == 1 then
    ; тут твои действия
 endif

Posted: 2006-04-20 13:13:30
by Grin

Code: Select all

Sub Scan() 
#################
var i
Dim scan[2]
   scan[1] = '0x0190'   ; ìóæèê
   scan[2] = '0x0191'   ; áàáà         
   uo.set( 'finddistance', '14' )
   uo.ignore("self", "on")
   for i = 1 to 2
            uo.findtype( scan[i], '-1', 'ground' )
                 if uo.findcount() then
         uo.ignore("self", "off")
                   return 1         
                 endif
       next
   uo.ignore("self", "off")
     return 0
end sub

В случаи 1 можно воспользоватсяуказателем finditem

Posted: 2006-04-20 15:35:56
by Lesnik
этот скрипт не работает ... у меня был вариант с элементарным расхайдом, т.е. как токо меня расхайдили .... улетаю по рунке в дом и то под присмотром ни разу не умер ... с вашим скриптом уже 2 раза умер ... просьба предложить другие варианты .....

Суть: стою в хайде копаю .... при появлении любого чара ... улетаю по рунке ... весь скрипт писать ненадо ... нужен токо кусок отвечающий за поиск появившего чара!

Заранее спасибо! ...

P.S. желательно чтобы в момент появления чара я уже кастовал рекол ...

Posted: 2006-04-20 15:55:57
by Grin
Как убивают то? если чары в полиморфе то не уувидишь...
если с большой дистанции бъют то увеличь файнд дистенс...
а вообще можно превязаться к инджорналу

Posted: 2006-04-20 16:13:41
by Lesnik
в том то все и дело .... что убивать могут как угодно ... но перед тем как убить они же появляются на экране ... вот мне и нужет скрипт при котором при появлении кого бы то ни было мой чар срывался по рунке ...

Posted: 2006-04-20 16:20:24
by Lesnik
сейчас стоит элементарная привязка нa if UO.InJournal('revealed') then .... улетаю, хотел сделать на You see ... почему то не работает ... видимо эти слова не входят в инжурнал ... хотя в журнале пишуться ...

Posted: 2006-04-20 16:49:06
by SLAK
Lesnik wrote:сейчас стоит элементарная привязка нa if UO.InJournal('revealed') then .... улетаю, хотел сделать на You see ... почему то не работает ... видимо эти слова не входят в инжурнал ... хотя в журнале пишуться ...

Code: Select all

   IF Uo.InJournal(" ",1) and str(Uo.IsNPC(Uo.JournalSerial(0)))=="1" then 

Posted: 2006-04-20 17:03:59
by Lesnik
SLAK если не трудно поясни написанное ... что есть что ...

Posted: 2006-04-20 17:10:58
by Grin
Да и мне тоже интересно что за второй парамтер в InJournale...

Posted: 2006-04-20 17:46:42
by flake

Code: Select all

#################
; Модуль сканирования.
Sub Scan()
#################
  var i, j, Rser
  var time = uo.time()
   var a1 = 'man'
   var a2 = 'woman'
   var a3 = 'ophidian warrior'
   var a4 = 'deamon'
   var a5 = 'dragon'
   var a6 = 'Quas' 
     Dim scan[5]
     scan[1] = '0x0190'   ; мужик
     scan[2] = '0x0191'   ; баба
     scan[3] = '0x0056'   ; орфидиан
     scan[4] = '0x0009'   ; демон
     scan[5] = '0x000C'   ; дракон
    j = 0   
      for i = 1 to 5
        uo.findtype( scan[i], '-1', 'ground' )
          if uo.findcount() then         
               Rser = uo.getserial( 'finditem' )
               uo.textprint( time, 'Нападение! Id: ' , Rser, 'Имя: ' , uo.getname(Rser))
               j = 1                  
          endif
      next     
    if j == 1 or \
      uo.injournal( a1 ) or \
      uo.injournal( a2 ) or \
      uo.injournal( a3 ) or \
      uo.injournal( a4 ) or \
      uo.injournal( a5 ) or \
      uo.injournal( a6 )    \
    then
      uo.playwav('alarm.wav')   
      uo.print( 'Alarm!!!' )   
      return 1
    else
      return 0
    endif   
endsub

Posted: 2006-04-20 18:31:05
by SLAK
Украл данное творение с чьегото скрипта(Дон Спила кажись). Что значит второй параметр самому интересно, но всегда работало.
Условие ищет в журнале пробел(А он наверно во всех ситемных месагах есть) и проверяет породило ли это сообщение живое существо, сюда только добавь игнорить свои месаги и всё тип-топ будит. Я использую подобную конструкцию в гвардилках обычно.
ЗЫ: Нада включить ТВИ иначе непашет :wink:

Posted: 2006-04-20 18:47:38
by SLAK
Нашёл тот топик, Автор Дон Спил, но он отозвал скрипт(стёр). Нашёл скрипт(выложу только интересующую нас функцию) у себя на компе(by Don SpiL):

Code: Select all

sub Control() 
VAR Enemy,msg,Name_Of_Killer
uo.setglobal("stop","no")
While 1==1
   IF Uo.InJournal(" ",1) and str(Uo.IsNPC(Uo.JournalSerial(0)))=="1" then #
      msg=UO.Journal(0)
      Enemy=Uo.JournalSerial(0)
      Name_Of_Killer=Uo.GetName(Enemy)
   IF Uo.GetNotoriety(Enemy)==6 or Uo.GetNotoriety(Enemy)==5 or Uo.GetNotoriety(Enemy)==4 or Uo.InJournal("elemental")

or Uo.InJournal('reaper') or uo.injournal("is attacking you") then
      IF Name_Of_Killer<>Masta and Name_Of_Killer<>"Freeman" and Name_Of_Killer<>"Koldun" and

Name_Of_Killer<>"Zhoporvatel" and Name_Of_Killer<>"fG" and Name_Of_Killer<>"Flatra" then
                 Uo.deletejournal()
                  rectohome(Name_Of_Killer)#Сваливаем домой
                  else
                  uo.say(Name_Of_Killer)
                  uo.say("Privet ot"+" "+Masta)
                  Uo.deletejournal()
                  wait(200)
      end IF
   end IF
            If msg==(Masta+":"+" "+"stop makr") then
      uo.exec("terminate all")
            end if
         Uo.deletejournal()
        wait(200)
      end IF
   wait(200)
   wend
end sub

Posted: 2006-04-20 18:53:36
by Destruction
Меня просто поражает манера написания скрипта:

Code: Select all

str(Uo.IsNPC(Uo.JournalSerial(0)))=="1" then#

Code: Select all

Uo.IsNPC(Uo.JournalSerial(0)) then


Code: Select all

IF Uo.GetNotoriety(Enemy)==6 or Uo.GetNotoriety(Enemy)==5 or Uo.GetNotoriety(Enemy)==4

Code: Select all

IF Uo.GetNotoriety(Enemy) > 3

Posted: 2006-04-20 18:57:25
by SLAK
Аффтар скрипта не я, ГетНоториети я как и ты пишу :wink:
И ваще щас более интересно, что значит второй параметр в uo.InJournal(str,1)

Posted: 2006-04-20 21:01:16
by Destruction
SLAK wrote:Аффтар скрипта не я, ГетНоториети я как и ты пишу :wink:
И ваще щас более интересно, что значит второй параметр в uo.InJournal(str,1)

Нету второго параметра, а его подстановка не несёт никакой пользы.