Page 1 of 2

Нет больше сил искать...

Posted: 2006-11-08 23:19:06
by smi
Всем привет!
А найти я хочу скрипт такой чтоб чар кидал Протект и Блесс на персонажа написавшего например слово obkast , но чтоб не на каждого он кидал а на оределенных людей;) если вы видели подобный скрипт, скажите где. Буду очень признателен!!

Posted: 2006-11-09 01:59:23
by slonopotam
А что его искать? Написать не сложно.

Posted: 2006-11-09 04:08:55
by Scripts Writer
slonopotam wrote:А что его искать? Написать не сложно.


Напиши. Докажи что твои сообщения не пустой флуд

Posted: 2006-11-09 08:48:35
by Destruction
You Must Die wrote:
slonopotam wrote:А что его искать? Написать не сложно.


Напиши. Докажи что твои сообщения не пустой флуд

Дык ведь и правда не сложно.. -)

Скрипт НЕ тестировался, писался в форме ответа -)

Code: Select all

sub obkast.daemon()
   var jrnl, i, p_len = 1 ; количество игроков, в списке
   var phrase = "obcast" ; фраза, на которую реагируем.
   DIM players[]
   ; Список ID игроков, на которых вешаем обкаст.
   players[0] = '0x0000000';
   repeat
      jrnl = uo.inJournal(phrase);
      if jrnl then
         for i=0 to p_len-1
            if uo.journalserial(jrn-1l) == players[i] then
               obkast.do( journalserial(jrnl-1) )
               break
            endif
         next
         uo.setjournalline(jrnl-1, '')
      endif
      wait(200)
   until false
endsub

Sub obkast.do(serial)
   var mana = uo.mana
   uo.cast('Protection', serial)
   while mana == uo.mana
      wait(50)
   wend
   mana = uo.mana
   uo.cast('Bless', serial)
   while mana == uo.mana
      wait(50)
   wend
endsub


О работе скрипта - скрипт работает по принципу демона, т.е. висит до поры до времени, а как понадобится - делает нужные операции. Соответсвенно нужно запустить демона -

Code: Select all

,exec obkast.daemon
, предварительно настроив скрипт.

Posted: 2006-11-09 16:51:02
by smi
slonopotam wrote:А что его искать? Написать не сложно.

Для меня это невыполнимая задача;)

Posted: 2006-11-09 16:55:11
by smi
To Destruction: Спасибо тебе за скриптец;) сейчас борюсь с ним не хочет пока работать пишет про ошибку в 11 line
А что значит по принципу демона?;)

Posted: 2006-11-09 17:06:37
by smi
You Must Die wrote:
slonopotam wrote:А что его искать? Написать не сложно.


Напиши. Докажи что твои сообщения не пустой флуд

Дело говориш;)

Posted: 2006-11-09 18:29:37
by Nmy

Code: Select all

   while mana == uo.mana
      wait(50)
   wend


некоректно, мана поднимится на 1% и скрипт выходит из цыкла...

Code: Select all

(jrn-1l)


здесь нету ошыбки ?

Posted: 2006-11-09 19:33:26
by smi
NMY wrote:

Code: Select all

   while mana == uo.mana
      wait(50)
   wend


некоректно, мана поднимится на 1% и скрипт выходит из цыкла...

Code: Select all

(jrn-1l)


здесь нету ошыбки ?

Ага так и есть выодит из строя как будет корректно не подскажеш?;)
а (jrn-1l) я исправил;)

Posted: 2006-11-09 23:17:41
by Nmy

Code: Select all

Sub obkast.do(serial)
   var m = uo.mana
   uo.cast('Protection', serial)
   repeat
      wait(50)
   until uo.mana<m
   m = uo.mana
   uo.cast('Bless', serial)
   repeat
      wait(50)
   until uo.mana<m
endsub


последний цыкл можно убрать, но если быстро опять иго ктото запустит, сфизлит :roll:

ищо медитацыя непомешает гдето :roll:

Posted: 2006-11-10 00:30:30
by Savage
ла - отстой, зачем переносить ее в уо?

Posted: 2006-11-10 02:09:22
by slonopotam
You Must Die wrote:
slonopotam wrote:А что его искать? Написать не сложно.


Напиши. Докажи что твои сообщения не пустой флуд


Я не волшебник, я только учусь. Но вот наваял :) :

Code: Select all

VAR One='0x99999999' ; чар № 1
VAR Two='0x99999999' ; ИД чара № 2
VAR Three='0x99999999' ; ИД чара № 3
VAR Four='0x99999999' ; ИД чара № 4
VAR Five='0x99999999' ; ИД чара № 5
VAR goblin=1
sub Start()
repeat
Ojidanie()
   wait(100)
      until goblin>2
end sub

Sub Ojidanie()
   If UO.InJournal('obkast') Then
Protection()
UO.DeleteJournal()
wait(100)
Else
Meditation()
      Endif
end sub

Sub Protection()
   DIM Chars[5]
Chars[0] = One
Chars[1] = Two
Chars[2] = Three
Chars[3] = Four
Chars[4] = Five
   VAR i
   For i = 0 To 5
      If UO.Count(Chars[ i ]) == 0 Then
UO.Cast('Protection',Chars[ i ])
      wait(2500)
Else
      wait(100)
      Endif
   Next
end sub

Sub Meditation()
If UO.mana<=10 Then
UO.useskill('Meditation')
Else
wait(100)
EndIf
end sub


Проверено на птичках !!! 8)

Posted: 2006-11-10 02:55:57
by Scripts Writer
У тебя 5 элементов массива, а ты ищешь до 6ого

Что касается

Code: Select all

if uo.COunt(chars)
-не уверен что будет работать т.к. думаю она проводит поиск в сумках и подсумках :\ Тогда

Code: Select all

uo.FindCount() 
уж если что, но в любом случае надо предварительно найти то,что ты принял за "chars". Если ты принял типы-тогда почему так много?
Если ID -то Count([object]) ошибка синтаксиса.

И не совсем понял принцип работы ожидания и медитации.

Code: Select all

Ждём 100 сек
Сообщения нет => Идём медитировать
Используем скил медитации
Ждём 100 сек
Возврат к первой строке.


Не корректная запись :\

Posted: 2006-11-10 03:58:08
by slonopotam
5 элементов . С 0 до 4 =5 и ищу вроде только 5

if uo.COunt(chars) ищет не только в паке и подсумках, по крайней мере находило птичек.

uo.FindCount() может ощибся, всяко бывает, но работает же :roll:

Принцип медитации простой, пока нет сообщений (тоесть его не вызывают) он медитирует.


Если подольше посидеть с этим скриптом, то можно и добор регов и чеклаг и реконект добавить. Да и напихать еще кастов можно. Тоесть при сообщении "блесс" чтоб кастовал только блесс, при сообщении "протекшен", только протекшен. А при сообщении "обкаст", все сразу.

Posted: 2006-11-10 04:02:11
by Edred

Code: Select all

   For i = 0 To 5


здесь шесть шагов. 0,1,2,3,4,5.

Posted: 2006-11-10 04:13:37
by slonopotam
:D Теперь увидел, осознал.

Posted: 2006-11-10 16:36:25
by Scripts Writer
slonopotam wrote:5 элементов . С 0 до 4 =5 и ищу вроде только 5

if uo.COunt(chars) ищет не только в паке и подсумках, по крайней мере находило птичек.

uo.FindCount() может ощибся, всяко бывает, но работает же :roll:

Принцип медитации простой, пока нет сообщений (тоесть его не вызывают) он медитирует.


Если подольше посидеть с этим скриптом, то можно и добор регов и чеклаг и реконект добавить. Да и напихать еще кастов можно. Тоесть при сообщении "блесс" чтоб кастовал только блесс, при сообщении "протекшен", только протекшен. А при сообщении "обкаст", все сразу.


У тебя нерациональное решение. Не пробовал забивать в массив название кастов?

Code: Select all

элемент 1 = Блесс

если в журнале(месага с содержанием элемент1) тогда
  кастуй элемент 1 на того кто произнёс.


Вот и всё.
Что касается обкаста то и вовсе-если в журнале обкаст, тогда кастуй цикл. Скрипт на самом деле минутный.


2А если тебе нужна проверка на ИД то также забиваешь в том же скрипте второй массив и конструкция примерно следующая:

Code: Select all

цикл перебора сообщений кастов
если в журнале(месага элемент1) тогда
  взять ИД объекта который произнёс строку журнала
  цикл перебора ИД на кого кастовать
    сравнить это значение с теми что в массиве. если == , тогда кастуй

Posted: 2006-11-10 21:05:44
by Mihail
вариант 1.
через серийники

Code: Select all

sub obkast()
###############
var keyword = 'обкаст' ; слово на которое реагировать
var refreshtime = 0.5  ; время проверки сообщений в журнале в сек
##############
var i, t, reg
Dim a[5]
# серийники
a[0]='0x0000000'
a[1]='0x0000000'
a[2]='0x0000000'
a[3]='0x0000000'
a[4]='0x0000000'
repeat
if uo.injournal(keyword) then
for i=0 to 4
if uo.journalserial(uo.injournal(keyword))==a[i] then
uo.cast('Bless',a[i])
uo.deletejournal()
t=0
reg= uo.ns  # Название рега присуствующего в касте
repeat
t=t+1
wait(500)
until uo.injournal('spell|mana') or t==15  or tmp<uo.ns #опять название рега
####
uo.cast('Protection',a[i])
uo.deletejournal()
t=0
reg=uo.ns  # Название рега присуствующего в касте
repeat
t=t+1
wait(500)
until uo.injournal('spell|mana') or t==15  or tmp<uo.ns #опять название рега
end if
next
end if
wait(refreshtime*1000)
until uo.dead()
end sub


варинт 2
те, на кого кастуешь каст должны говорить слово "каст" определенным цветом (можно сделать в инжекте), тогда:

Code: Select all

sub obkast()
###############
var keyword = 'обкаст' ; слово на которое реагировать
var refreshtime = 0.5  ; время проверки сообщений в журнале в сек
##############
var t, reg
repeat
if uo.injournal(keyword) then
if uo.journalcolor(uo.injournal(keyworde))=='0x0000' then #цвет сообщений
uo.cast('Bless',uo.journalserial(uo.injournal(keyworde)))
uo.deletejournal()
t=0
reg= uo.ns  # Название рега присуствующего в касте
repeat
t=t+1
wait(500)
until uo.injournal('spell|mana') or t==15  or tmp<uo.ns #опять название рега
####
uo.cast('Protection',uo.journalserial(uo.injournal(keyworde)))
uo.deletejournal()
t=0
reg=uo.ns  # Название рега присуствующего в касте
repeat
t=t+1
wait(500)
until uo.injournal('spell|mana') or t==15  or tmp<uo.ns #опять название рега
end if
end if
wait(refreshtime*1000)
until uo.dead()
end sub


не тестил возможны ошибки

Posted: 2006-11-11 02:24:34
by smi
Слушайте а как вставлять такое поле в форум Code: ????

Posted: 2006-11-11 02:43:46
by smi
А медитация не нужна у меня на шарде металлы есть ману восстанавливающие;)