макрос:хил и каст не воркает по просьбе

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

Модератор: 4epT

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
fynjy
Новичок
Сообщения: 14
Зарегистрирован: Вс дек 10, 2006 12:38 pm

макрос:хил и каст не воркает по просьбе

Сообщение fynjy »

по аналогии с вот этим:

automacro Buff {
pubm /buf|agi|bles/i,10
call {
pause 2
do sp 34 @player($.lastpub)
pause 0.5
do sp 29 @player($.lastpub)
pause 2
release Buff
}
run-once 1
}

automacro heal {
pubm /heal|hil/i,10
call {
pause 2
do sp 28 @player($.lastpub)
pause 0.5
do sp 28 @player($.lastpub)
pause 2
release heal
}
run-once 1
}

сделал вот это:

automacro Buff1 {
pubm /баф|аги|каст|блес/i,10
call {
pause 2
do sp 34 @player($.lastpub)
pause 0.5
do sp 29 @player($.lastpub)
pause 2
release Buff
}
run-once 1
}

automacro heal1 {
pubm /хил|полечи/i,10
call {
pause 2
do sp 28 @player($.lastpub)
pause 0.5
do sp 28 @player($.lastpub)
pause 2
release heal
}
run-once 1
}

брал отсюда

viewtopic.php?t=274&highlight=%F5%E8%EB+++%EA%E0%F1%F2
затем по ссылке в http://www.ragnarokbot.ru/forum/showthread.php?t=628

сохранил в ЮТФ-8
а бот не реагирует на просьбы, играю на раггейме


Внимание, всесто "buf|agi|bles" можно написать и русские слова (типо: бафни|аги|блес), но тогда файл macros.txt необходимо сохранить в кодировке UTF-8 и закомментировать 1-ю строчку (значком #)
прочитв это я не понял куда именно делать "#"?? может по эттому не работает?
ЗЫ: яне разбираюсь в макросах, поэтому скажу что пихал эти фразы в файл "macros" -если не туда,скажите куда)

Добавлено спустя 23 минуты 38 секунд:

проблема решена вот этим:

automacro HealOnWord2 {
console /(хил|каст|хилл|полечи|хилл и каст|хильни|бафф|обкастуй|обкаст|мне)/
sp > 15%
timeout 3
call foo2
}

automacro HealOnSmile {
console /\[dist=(.*)\] (.*) \((\d+)\): \*(Wave|Fist|Peace|Help|Flag 1|Flag 2|Flag 3|Flag 4|Flag 5|Flag 6|Flag 7|Flag 8|Flag 9)\*$/
sp > 15%
timeout 3
call foo2
}

macro foo2 {
$i = @arg("$.lastLogMsg", 3)
if ($i == (0)) goto ar2
pause 1
do sp 28 @arg("$.lastLogMsg", 3) 10
do sp 28 @arg("$.lastLogMsg", 3) 10
pause 1
do sp 34 @arg("$.lastLogMsg", 3) 10
do sp 29 @arg("$.lastLogMsg", 3) 10
stop
:ar2
pause 1
do sp 28 @arg("$.lastLogMsg", 2) 10
do sp 28 @arg("$.lastLogMsg", 2) 10
pause 1
do sp 34 @arg("$.lastLogMsg", 2) 10
do sp 29 @arg("$.lastLogMsg", 2) 10
stop
}
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

Взято из примеров для pm..

macro doheal {
$times = @rand (2, 7) # рандом повторов цикла
$i = 0 # счетчик цикла
while ($i < $times ) as healloop
do sp 28 "$.lastpub" 10 # обрати внимание как пишется строка для pm..
$i++ # счетчик=счетчик+1
end healloop
}
от РО до шестой палаты - один шаг...
omfgwtf
Новичок
Сообщения: 5
Зарегистрирован: Пн окт 15, 2007 2:47 am

Сообщение omfgwtf »

У меня тоже проблемка.

Скопировал вот этот пример макроса:
automacro HealOnSmile {
console /\[dist=(.*)\] (.*) \((\d+)\): \*(Wave|Fist|Peace|Help|Flag 1|Flag 2|Flag 3|Flag 4|Flag 5|Flag 6|Flag 7|Flag 8|Flag 9)\*$/
sp > 15%
timeout 3
call foo2
}

macro foo2 {
$i = @arg("$.lastLogMsg", 3)
if ($i == (0)) goto ar2
pause 1
do sp 28 @arg("$.lastLogMsg", 3) 10
do sp 28 @arg("$.lastLogMsg", 3) 10
pause 1
do sp 34 @arg("$.lastLogMsg", 3) 10
do sp 29 @arg("$.lastLogMsg", 3) 10
stop
:ar2
pause 1
do sp 28 @arg("$.lastLogMsg", 2) 10
do sp 28 @arg("$.lastLogMsg", 2) 10
pause 1
do sp 34 @arg("$.lastLogMsg", 2) 10
do sp 29 @arg("$.lastLogMsg", 2) 10
stop
}
Всё нормально работает, пока чар не сменил карту. Когда меняешь карту и возвращаешся обратно к боту за кастом, выдает:
[dist=2] Unknown #2004557 <4>: *Wave*
[macro] automacro HealOnSmile triggered.
Error in function 'sp' <Use Skill on Player>
Player 'Unknown' does not exist
Другими словами: после смены карты и последующего возващения, бот не обкастовывает и не лечит.
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

omfgwtf писал(а):Player 'Unknown' does not exist
Тут собственно трабл.. не успевает "опознать". (подойди поближе, постой секунду две).
Можно конечно немного переделать условие. а именно @arg("$.lastLogMsg", 3) проверять перед выполнением скила. Попробуй использовать "pm" и "pubm". Например..

Код: Выделить всё

automacro res99 {
timeout 15
pubm /res|resu|ressu|ress/
inventory "yggdrasil leaf" > 0
call Ressurection
}

macro Ressurection {
do ip @inventory (yggdrasil leaf) @player ($.lastpub)
}
от РО до шестой палаты - один шаг...
Аватара пользователя
Click
Разработчик
Сообщения: 1564
Зарегистрирован: Сб ноя 04, 2006 11:30 pm
Сервер RO:: clickro.sytes.net
Откуда: Великий Новгород
Контактная информация:

Сообщение Click »

а если хилить не в имя, а в координаты)?
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

мм..

Код: Выделить всё

console /\[dist=(.*)\] (.*) \((\d+)\): \*(Wave|Fist|Peace|Help|Flag 1|Flag 2|Flag 3|Flag 4|Flag 5|Flag 6|Flag 7|Flag 8|Flag 9)\*$/ 
а где тут агрументы координат?
от РО до шестой палаты - один шаг...
omfgwtf
Новичок
Сообщения: 5
Зарегистрирован: Пн окт 15, 2007 2:47 am

Сообщение omfgwtf »

изменил на вот это:
automacro HealOnSmile {
pm /buff|buf|agi|bless/
timeout 3
call foo2
}

macro foo2 {
$i = @arg($.lastpm)
if ($i == (0)) goto ar2
pause 1
do sp 34 @player($.lastpm) 10
do sp 29 @player($.lastpm) 10
stop
:ar2
pause 1
do sp 34 @player($.lastpm) 10
do sp 29 @player($.lastpm) 10
stop
}
Пока чар не сменил карту, бот нормально кастует по привату. Как только меняю карту, выдаёт:
Error in function 'sp' <Use Skill on Player>
Player '-1' does not exist
Ник у меня самый простой, никаких значков и т.п., так что не думаю что проблема из-за ника.
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

Sauron писал(а):мм..

Код: Выделить всё

console /\[dist=(.*)\] (.*) \((\d+)\): \*(Wave|Fist|Peace|Help|Flag 1|Flag 2|Flag 3|Flag 4|Flag 5|Flag 6|Flag 7|Flag 8|Flag 9)\*$/ 
а где тут агрументы координат?
а тут нет координат, тока дистанция

Добавлено спустя 3 минуты 17 секунд:

omfgwtf, у тя какой-то галимый кусок макроса, ибо независимо от условия "$i == (0)" он выполняет одно и тоже, так что вполе можешь использовать:
automacro HealOnSmile {
pm /buff|buf|agi|bless/
timeout 3
call foo2
}

macro foo2 {
do sp 34 @player($.lastpm) 10
do sp 29 @player($.lastpm) 10
}
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
omfgwtf
Новичок
Сообщения: 5
Зарегистрирован: Пн окт 15, 2007 2:47 am

Сообщение omfgwtf »

Изменил на:
automacro HealOnSmile {
pm /buff|buf|agi|bless/
timeout 3
call foo2
}

macro foo2 {
do sp 34 @player($.lastpm) 10
do sp 29 @player($.lastpm) 10
}


Осталась прежняя ошибка:
Error in function 'sp' <Use Skill on Player>
Player '-1' does not exist
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

ну ты хоть бы паузы попробовал воткнуть для интереса...

Добавлено спустя 3 минуты 24 секунды:

да кстати.. попробуй

do sp 34 "$.lastpm" 10
do sp 29 "$.lastpm" 10

не нравится мне что-то твое do sp 34 @player($.lastpm) 10
от РО до шестой палаты - один шаг...
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Сообщение 4epT »

Sauron, в команде "sp" можно писать либо номер (@player($.lastpm)) игрока, либо его имя ($.lastpm)

Просто иногда бот не правельно захватывает имя, поэтому и не может найти номер игрока (Player '-1' does not exist)

Sauron, тока вот кавычки наверно у тебя лишние
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

а ты проверь.. пашет как часики..

Добавлено спустя 1 час 27 минут 26 секунд:

Код: Выделить всё

automacro subload {
run-once 1
call onload
}

macro onload {
$membr1 = хххх
}


automacro aBuff1 { 
pm /buff|buf|agi|bless|блес|блесс|аги|баф|бафф|каст/i 
timeout 5 
call Buff1 
} 

macro Buff1 { 
do sp 34 "$.lastpm" 10 
do sp 29 "$.lastpm" 10 
$membr1 = $.lastpm
}

automacro aBuff2 { 
pubm /buff|buf|agi|bless|блес|блесс|аги|баф|бафф|каст/i
timeout 5 
call Buff2 
} 

macro Buff2 { 
do sp 34 "$.lastpub" 10 
do sp 29 "$.lastpub" 10 
$membr1 = $.lastpub
}

automacro aHeal1 { 
pm /hil|heal|вылеч|подлеч|хил|хильни/i 
timeout 5 
call Heal1 
} 

macro Heal1 { 
$times = @rand (2, 6)
$i = 0
while ($i < $times ) as healloop
do sp 28 "$.lastpm" 10
$i++
end healloop
$membr1 = $.lastpm
}

automacro aHeal2 { 
pubm /hil|heal|вылеч|подлеч|хил|хильни/i 
timeout 5 
call Heal2 
} 

macro Heal2 { 
$times = @rand (2, 6)
$i = 0
while ($i < $times ) as healloop
do sp 28 "$.lastpub" 10
$i++
end healloop
$membr1 = $.lastpub
}

############# благодарности ############

automacro aSenk1 { 
pm /спс|спасиб|пасиб|благод|/i
timeout 5 
call Senk1 
} 

macro Senk1 { 
if ($.lastpm = $membr1) goto one
goto end
:one 
do pm "$.lastpm" @random ("не за что","без проблем","фигня, я самый добрый бот")
:end
}

automacro aSenk2 { 
pubm /спс|спасиб|пасиб|благод|/i
timeout 5 
call Senk2 
} 

macro Senk2 { 
if ($.lastpub = $membr1) goto one
goto end
:one 
do c @random ("не за что","без проблем","фигня, я самый добрый бот")
:end
}
от РО до шестой палаты - один шаг...
parnocop
Новичок
Сообщения: 6
Зарегистрирован: Чт мар 08, 2007 7:44 pm

Сообщение parnocop »

Занолить и дэлэйки

Код: Выделить всё

########Вежливость#####
automacro aPlz1 { 
pm /спс|cgc|спасиб|пасип|пасяп|пасиб/ 
timeout 20 
call Plz
}

macro Plz { 
if ($.lastpm = $membr1) goto one
log не мне  
goto end 
:one
pause @rand(2,3) 
do pm "$.lastpm" @random ("незачто","не жалко)","пажалсто")
:end
$membr1 = хххх 
} 

automacro aPlz2 { 
pubm /спс|cgc|спасиб|пасип|пасяп|пасиб/ 
timeout 20 
call Plz2
}

macro Plz2 { 
if ($.lastpub = $membr1) goto one
log не мне 
goto end 
:one
pause @rand(2,3) 
do c @random ("незачто","не жалко)","пажалсто") 
:end
$membr1 = хххх 
}
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

Раз пошла такая пьянка, нужно дополнить блок:
1. проверкой остатка сп
2. реакцией на "ещё"
3. проверкой "мастера" $master = ТвойПерс (собственного перса требующего каст/хил.. поскольку тут требуется более позитивное поведение бота при отсутствии сп)..
от РО до шестой палаты - один шаг...
parnocop
Новичок
Сообщения: 6
Зарегистрирован: Чт мар 08, 2007 7:44 pm

Сообщение parnocop »

Щас сделаю:

Считаю что кгда у приста сп>500 то хил каст он должен делать спокойно... не отказывая
(хватит на папру хилов и обкаст се и пате, излишком можно и заботится об окружающих)

Для монков сп> 410 (так-как останется достаточно для сэлф-хилокастов)

..... туд я его вставлю... хотя не невставлю.. я это на форуме ужэ видед.. покрайней мере тама сам макрос не похал, НО условия выполнялись отменно


А /еще/ у мя автомакросом гонит на хил повторно, эт не проблема какраз
(при совпададении $.lastpm = $membr1)... эмм подделываясь под
Грамотного Саурона (чтоб люди могли тупо копипастить) Буит примерна так (вежливостей)

Код: Выделить всё

automacro aHealdopPub { 
pubm /еще|еше|хп|снова/ 
timeout 5 
call Heal1dop 
} 

macro Heal1dop { 
if ($.lastpub = $membr1) goto onedop 
log не мне  
goto oneend 
:onedop 
pause @rand(1,2) 
$times = @rand (1, 3) 
$i = 0 
while ($i < $times ) as healloop 
do sp 28 "$.lastpub" 10
$i++
pause 1 
end healloop 
:oneend 
} 

automacro aHealdopPm { 
pm /еще|еше|хп|снова/ 
timeout 5 
call Hea2dop 
} 

macro Heal2dop { 
if ($.lastpm = $membr1) goto onedop 
log не мне  
goto oneend 
:onedop 
pause @rand(1,2) 
$times = @rand (1, 3) 
$i = 0 
while ($i < $times ) as healloop 
do sp 28 "$.lastpm" 10
$i++
pause 1 
end healloop 
:oneend 
} 
Ответить