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
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
Украл данное творение с чьегото скрипта(Дон Спила кажись). Что значит второй параметр самому интересно, но всегда работало.
Условие ищет в журнале пробел(А он наверно во всех ситемных месагах есть) и проверяет породило ли это сообщение живое существо, сюда только добавь игнорить свои месаги и всё тип-топ будит. Я использую подобную конструкцию в гвардилках обычно.
ЗЫ: Нада включить ТВИ иначе непашет

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

И ваще щас более интересно, что значит второй параметр в uo.InJournal(str,1)
Нету второго параметра, а его подстановка не несёт никакой пользы.