PDA

Просмотр полной версии : макрос: обкаст (для приста)


DreamHop
05.12.2006, 17:48
Макрос для приста. Если рядом с ботом человек пишет текс в котором есть слова: buf, agi, bles - даёт аги и блесс 10 лев. При слове heal или hil даёт лечение 2 раза.

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
}
Внимание, всесто "buf|agi|bles" можно написать и русские слова (типо: бафни|аги|блес), но тогда файл macros.txt необходимо сохранить в кодировке UTF-8 и закомментировать 1-ю строчку (значком #)

papaz0glo
28.02.2007, 16:31
а как с другими кастами, скажем кайри, манус..

teacher
28.02.2007, 16:33
подумай немного, поменять то надо всего 2-3 строчки, а остальное copy-paste technology :)
С уважением, teacher

Barbarian
28.02.2007, 17:09
а можно для нупов куда этот макрос запихнуть и куда что прописать чтобы он вызывался? :)

с уважением ... :)

teacher
28.02.2007, 18:26
а ты разве не знаешь коли ты нуп, что сначала надо читать прикрепленные темы, юзать поиск, и только потом если ничего не нашел, задавать вопрос?
смотри тут (http://ragbot.ru/forum/showthread.php?t=597) гайд очень качественный и на русском языке, вот когда ты ты будешь знать основы, тогда задавай конкретные вопросы
что бы не было оффтопа в <my-bot>\control\macros.txt, остально найдешь в теме 4ерТ'а
С уважением, teacher

papaz0glo
28.02.2007, 22:35
я имел ввиду это
sp 28
я вот не знаю, что это именно хил?
teacher, буть так добр, напиши "циферки" для остальных скилов =)

teacher
01.03.2007, 01:20
введи в консоле команду skills, и сам посмотришь, какой скил какой номер имеет, я когда пишу подобный маркос делаю именно так
а еще тебе поможет вот это (http://ragbot.ru/forum/showthread.php?t=26), оно у меня всегда под рукой, хотя уже почти все знаю напамять
С уважением, teacher

4epT
01.03.2007, 01:55
papaz0glo, подсказка:
1. do sp 29 @player($.lastpub)
do - использовать команду
sp - консольная команда СкилПлеер (это есть в мануалке к боту)
29 - номер скила (можносказать его название) skills.txt.
@player($.lastpub) - номер игрока, который что-то сказал в публик чат
pause 2 - пауза после скила

papaz0glo
01.03.2007, 14:17
29 - номер скила (можносказать его название) skills.txt.


спасибо.
АП! у меня нету в skills.txt номеров.

teacher
01.03.2007, 17:06
22 AL_DP Divine Protection
23 AL_DEMONBANE Demon Bane
24 AL_RUWACH Ruwach
25 AL_PNEUMA Pneuma
26 AL_TELEPORT Teleport
27 AL_WARP Warp Portal
28 AL_HEAL Heal
29 AL_INCAGI Increase AGI
30 AL_DECAGI Decrease AGI
31 AL_HOLYWATER Aqua Benedicta
32 AL_CRUCIS Signum Crusis
33 AL_ANGELUS Angelus
34 AL_BLESSING Blessing
35 AL_CURE Cure
выдержка из моего skills.txt обрати внимание, номера - это те числа которые стоят в самом начале строк
С уважением, teacher
PS у тебя не может не быть номеров, иначе скиллы не будут работать вообще

papaz0glo
02.03.2007, 14:41
вот мой skills.txt

teacher
02.03.2007, 15:04
Эм.............
а какой версией Коры ты пользуешься?
предполагаю что там неявная нумерация, то есть каждая строка нумеруетсья при считывании информации в оперативку при старте бота(тогде прийдеться номеровать в уме :D :D )
а вообще юзни в консоле соманду skillsтебе выдаст список всех доступных скиллов и их номера будут стоять в начале
ЗЫ там их немного... .около 1к :D :D

Funt
29.05.2007, 18:07
У меня вопрос :
Что это за строчка:
pubm /buf|agi|bles/i,10
при сообшение buf,agi,bles, а что дальше?
Что значит i,10?

4epT
30.05.2007, 14:25
читаем (http://ragbot.ru/forum/showthread.php?t=597)
pubm "<текст>" | /<набор символов>/[i] [<число клеток>]
АМ запустится, если в общем чате появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Это условие можно установить для определённой дистанции (<число клеток>). Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу.
Устанавливаются специальные переменные $.lastpub и $.lastpubMsg.

Для тех кто в танке, то можно читать так:
Если расстоянии 10 клеток от вас кто-то говорит в общий чат buf (или agi или bles), то сработает автомакрос. i - означает, что вам могут написать и BuF - автомакрос всё равно сработает. "//" - означают, что автомакрос срабатывает не на целую фразу, а на кусок из фразы, т.е. вам могут и написать "эй ты buff-ни меня" и автомакрос всё равно сработает.

Oxarik
03.07.2007, 15:38
Сделал всё точ в точ,только скилы поменял. пишет ошибку:
[macro] automacro Buff triggered.
Error in function 'sp' (Use Skill on Player)
Player '-1' does not exist.
Error in function 'sp' (Use Skill on Player)
Player '-1' does not exist.
В чём дело? (может из за ника? ник со знаками у меня -=JOJO=-)
хотел настроить чтобы из пати чата работало,заменил Pubm на party и $.lastpub на $.lastparty реакции на buf и пр нет вообще никакой...

4epT
03.07.2007, 21:36
Если бы не было реакци, то ты бы это не увидел:
[macro] automacro Buff triggered.
Player '-1' << это значает, что у тебя $.lastpub не равно -=JOJO=-
введи строчку:
log $.lastpub (или $.lastparty, как там у тя незнаю)
и посмотри чё он в консоли напишет (твоё имя или нет)

На сколько я знаю, то у меня глюки были если в имени содержался пробел

Oxarik
04.07.2007, 12:26
Это в консоль вводить? непральная команда пишит,или в макро добавлять? добавил,но при запске ругаецо на эту строчку.. ВООбще дело в нике это 100% ник без - и -= кастует нормально. Ещё какие-то косяки в дистанцией бывают: стою на соседней клетке, а бот определяет как на дистанции 6 ,а то и все 10 клеток. Что с ником то сделать? Можно в макросе как нить написать что-бы кастовал на определённый ник? если просто заменить @player и переменную на ник,то бот кастует потоянно и без какой-либо команды....

4epT
04.07.2007, 13:19
пробуй так, если разберёшься куда это:
do sp 34 @player (-=JOJO=-)

stopfild
09.02.2008, 20:23
У меня была такая ситуёвина, обкаст по просьбе работал так:
Любое слово, буквы, цыфры в паблик, запускало хил макрос, при ключевых словах, несрабатывал буфф, тупо хил, по всем кто в паблик пишет :) Исправил ситуацию, заменив pubm /buf|agi|bles/i,10 на console /.*buf|agi|bles.*/i,10 - всем у кого были проблемы, пожалуйста, пользуйтесь :)

4epT
09.02.2008, 20:36
stopfild, фигню пишешь, сдаётся мне что у тебя лажа была из-за того что что-то криво написал!

console /.*buf|agi|bles.*/i,10 означает:
либо .*buf
либо agi
либо bles.*

я думаю ты не того хотел..

шаблон ".*buf" и "buf" - одно и тоже в данном случае!

stopfild
09.02.2008, 20:42
Спасибо что поправил. Но я ничего сам не правил в макросе, только добавил больше вариантов, на русском. И сохранил конешно в утф8. Будем разбиратся. И ошибку выдаёт как у чувака, Error in function 'sp' (Use Skill on Player)
Player '-1' does not exist.
---------------------------
Вобщем, хоть ошибка и вылетает, макрос работает нормально. Единственно что с pubm отказалось работать. Ещё, когда вылетает вот это:
Error in function 'sp' (Use Skill on Player)
Player '-1' does not exist.
Бот "замирает". И отстаёт от ведущего. Можно ли вылечить?

4epT
09.02.2008, 21:19
-1 это значит не найден игрок с таким именем :)

stopfild
09.02.2008, 21:38
да, точно... как думаешь, если клеток увеличить проблема уменьшится? хоть на половину.

4epT
09.02.2008, 22:13
что значет, на половину?

я думаю они исчезнут если имя другое у игрока будет

stopfild
09.02.2008, 22:15
я так понял ошибка возникает из за того, что игрок убегает из поля зрения, что часто случается с сапортом ако.

Tract0r
05.04.2008, 10:58
У меня такая проблема.. Сделал макрос на хил, каст(блесс, аги, кири), магни.. Сначала все нормально кастует, лечит, потом почему-то перестает кастовать по команде, при этом в консоль пишет что макрос сработал, но каста я так и не получаю.. Приходится в консоле прописывать ai clear, после этого опять работает раза 3 и снова приходится прописывать ai clear..
В чем дело?

aspedom
06.04.2008, 15:06
А что насчет варпов?(тыкнете мну носом если я слеп:p)

Tract0r
06.04.2008, 15:34
http://ragbot.ru/forum/showthread.php?t=1399, вот по варпам.. Есть что-нибудь по моему вопросу?)

LofaK
12.05.2008, 20:34
А как сделать чтоб писали приватом, или патичатом

4epT
12.05.2008, 20:46
LofaK, заменить условие "pubm /buf|agi|bles/i,10" на нужное тебе (читай гайд по макросам)

LofaK
12.05.2008, 21:06
Заменил pubm на pm. $.lastpub на $.lastpm Не работает. при pubm все хорошо было.

LofaK
13.05.2008, 08:45
Уменя вот такой код:

automacro Buff {
party /buf|agi|bles|каст|хилкаст|полечи| хил/i,10
call {
pause 2
do sp 28 @player($.lastparty)
pause 0.5
do sp 28 @player($.lastparty)
pause 1
do sp 34 @player($.lastparty)
pause 0.5
do sp 29 @player($.lastparty)
pause 2
do sp 73 @player($.lastparty)
pause 2
release Buff
}
run-once 1
}

При этом каст совершается ровно 1 раз! На второй последующие запросы просто игнорятся. В чем проблема?

4epT
13.05.2008, 19:43
party /buf|agi|bles|каст|хилкаст|полечи| хил/i,10
что тут значит 10??

LofaK
18.05.2008, 21:59
убрал десятку, она и вправду не нужна... Однако Прист опять делает 1 раз каст толькою. На вротой раз бот пишет что макрос сработал, но все-таки каста не последовало... Может потому что ник русский?

Добавлено через 4 часа 30 минут 59 секунд
Если писать ai clear то потом все нормально начинает срабатывать, но опять же на 1 раз. А как сделать в макросе, чтоб при его закрытии он типа вводил ai clear

Добавлено через 22 минуты 40 секунд
automacro Buff {
pubm /каст/i,10
call {
do sp 28 @player($.lastpub)
pause 0.5
do sp 28 @player($.lastpub)
pause 1
do sp 34 @player($.lastpub)
pause 1
do sp 29 @player($.lastpub)
pause 2
do sp 73 @player($.lastpub)
pause 2
release Buff
}
run-once 1
}

Все работает ХОРОШО!

automacro Buffik {
party /каст|полечите/i
call {
do sp 28 @player($.lastparty)
pause 0.5
do sp 28 @player($.lastparty)
pause 1
do sp 34 @player($.lastparty)
pause 1
do sp 29 @player($.lastparty)
pause 2
do sp 73 @player($.lastparty)
pause 2
release Buffik
}
run-once 1
}
РАботает 1 раз. На 2ой бот пишет что запустил автомакрос, однако каста нету. После ai clear опять может заработать 1 раз

Irmo
22.05.2008, 14:23
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
}

нарыл уже не помню где макрос, проблема в том что $.lastpub выдает не номер игрока, например 14, а ]14, откуда взялась эта скобка хз

fantom
22.05.2008, 15:41
2LofaK попробуй так:

automacro Buff {
pubm /каст/i,10
сall Buff_
}

macro Buff_ {
lock Buff

do sp 28 @player($.lastpub)
pause 0.5
do sp 28 @player($.lastpub)
pause 1
do sp 34 @player($.lastpub)
pause 1
do sp 29 @player($.lastpub)
pause 2
do sp 73 @player($.lastpub)
pause 2

release Buff
}

P.S. run-once 1 .... невьехал для чего о_О

masterspirta
22.05.2008, 17:27
P.S. run-once 1 .... невьехал для чего о_О

С интервалом пол секи от разных игроков приходить слова "каст" либо заглючил сервак и пришоли 2 раза сообщение каст....так вот срабатывая АИ на первое сообщение и не успея закончить обработать команды самого макроса попытаеться запустить себя опять..... Ну вообщем если вероятность такая маленькая то run once мона не писать ровна как и релиз....Но если бегают толні слонов за кастом но лучше оставить!!!!

4epT
22.05.2008, 20:31
Irmo, а ник чара, который просит каст, какой??

Irmo
22.05.2008, 23:36
ник любой, я постоял часик в пронте и ни на одного не сработало