Просмотр полной версии : макрос: обкаст (для приста)
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
а как с другими кастами, скажем кайри, манус..
подумай немного, поменять то надо всего 2-3 строчки, а остальное copy-paste technology :)
С уважением, teacher
Barbarian
28.02.2007, 17:09
а можно для нупов куда этот макрос запихнуть и куда что прописать чтобы он вызывался? :)
с уважением ... :)
а ты разве не знаешь коли ты нуп, что сначала надо читать прикрепленные темы, юзать поиск, и только потом если ничего не нашел, задавать вопрос?
смотри тут (http://ragbot.ru/forum/showthread.php?t=597) гайд очень качественный и на русском языке, вот когда ты ты будешь знать основы, тогда задавай конкретные вопросы
что бы не было оффтопа в <my-bot>\control\macros.txt, остально найдешь в теме 4ерТ'а
С уважением, teacher
papaz0glo
28.02.2007, 22:35
я имел ввиду это
sp 28
я вот не знаю, что это именно хил?
teacher, буть так добр, напиши "циферки" для остальных скилов =)
введи в консоле команду skills, и сам посмотришь, какой скил какой номер имеет, я когда пишу подобный маркос делаю именно так
а еще тебе поможет вот это (http://ragbot.ru/forum/showthread.php?t=26), оно у меня всегда под рукой, хотя уже почти все знаю напамять
С уважением, teacher
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 номеров.
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
Эм.............
а какой версией Коры ты пользуешься?
предполагаю что там неявная нумерация, то есть каждая строка нумеруетсья при считывании информации в оперативку при старте бота(тогде прийдеться номеровать в уме :D :D )
а вообще юзни в консоле соманду skillsтебе выдаст список всех доступных скиллов и их номера будут стоять в начале
ЗЫ там их немного... .около 1к :D :D
У меня вопрос :
Что это за строчка:
pubm /buf|agi|bles/i,10
при сообшение buf,agi,bles, а что дальше?
Что значит i,10?
читаем (http://ragbot.ru/forum/showthread.php?t=597)
pubm "<текст>" | /<набор символов>/[i] [<число клеток>]
АМ запустится, если в общем чате появится <текст> или если полученный текст содержит символ(ы) из <набор символов>. Это условие можно установить для определённой дистанции (<число клеток>). Параметр i означает что <набор символов> становится нечувствительным к РеГиСтРу.
Устанавливаются специальные переменные $.lastpub и $.lastpubMsg.
Для тех кто в танке, то можно читать так:
Если расстоянии 10 клеток от вас кто-то говорит в общий чат buf (или agi или bles), то сработает автомакрос. i - означает, что вам могут написать и BuF - автомакрос всё равно сработает. "//" - означают, что автомакрос срабатывает не на целую фразу, а на кусок из фразы, т.е. вам могут и написать "эй ты buff-ни меня" и автомакрос всё равно сработает.
Сделал всё точ в точ,только скилы поменял. пишет ошибку:
[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 и пр нет вообще никакой...
Если бы не было реакци, то ты бы это не увидел:
[macro] automacro Buff triggered.
Player '-1' << это значает, что у тебя $.lastpub не равно -=JOJO=-
введи строчку:
log $.lastpub (или $.lastparty, как там у тя незнаю)
и посмотри чё он в консоли напишет (твоё имя или нет)
На сколько я знаю, то у меня глюки были если в имени содержался пробел
Это в консоль вводить? непральная команда пишит,или в макро добавлять? добавил,но при запске ругаецо на эту строчку.. ВООбще дело в нике это 100% ник без - и -= кастует нормально. Ещё какие-то косяки в дистанцией бывают: стою на соседней клетке, а бот определяет как на дистанции 6 ,а то и все 10 клеток. Что с ником то сделать? Можно в макросе как нить написать что-бы кастовал на определённый ник? если просто заменить @player и переменную на ник,то бот кастует потоянно и без какой-либо команды....
пробуй так, если разберёшься куда это:
do sp 34 @player (-=JOJO=-)
stopfild
09.02.2008, 20:23
У меня была такая ситуёвина, обкаст по просьбе работал так:
Любое слово, буквы, цыфры в паблик, запускало хил макрос, при ключевых словах, несрабатывал буфф, тупо хил, по всем кто в паблик пишет :) Исправил ситуацию, заменив pubm /buf|agi|bles/i,10 на console /.*buf|agi|bles.*/i,10 - всем у кого были проблемы, пожалуйста, пользуйтесь :)
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.
Бот "замирает". И отстаёт от ведущего. Можно ли вылечить?
-1 это значит не найден игрок с таким именем :)
stopfild
09.02.2008, 21:38
да, точно... как думаешь, если клеток увеличить проблема уменьшится? хоть на половину.
что значет, на половину?
я думаю они исчезнут если имя другое у игрока будет
stopfild
09.02.2008, 22:15
я так понял ошибка возникает из за того, что игрок убегает из поля зрения, что часто случается с сапортом ако.
У меня такая проблема.. Сделал макрос на хил, каст(блесс, аги, кири), магни.. Сначала все нормально кастует, лечит, потом почему-то перестает кастовать по команде, при этом в консоль пишет что макрос сработал, но каста я так и не получаю.. Приходится в консоле прописывать ai clear, после этого опять работает раза 3 и снова приходится прописывать ai clear..
В чем дело?
А что насчет варпов?(тыкнете мну носом если я слеп:p)
http://ragbot.ru/forum/showthread.php?t=1399, вот по варпам.. Есть что-нибудь по моему вопросу?)
А как сделать чтоб писали приватом, или патичатом
LofaK, заменить условие "pubm /buf|agi|bles/i,10" на нужное тебе (читай гайд по макросам)
Заменил pubm на pm. $.lastpub на $.lastpm Не работает. при pubm все хорошо было.
Уменя вот такой код:
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 раз! На второй последующие запросы просто игнорятся. В чем проблема?
party /buf|agi|bles|каст|хилкаст|полечи| хил/i,10
что тут значит 10??
убрал десятку, она и вправду не нужна... Однако Прист опять делает 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 раз
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, откуда взялась эта скобка хз
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 мона не писать ровна как и релиз....Но если бегают толні слонов за кастом но лучше оставить!!!!
Irmo, а ник чара, который просит каст, какой??
ник любой, я постоял часик в пронте и ни на одного не сработало
vBulletin® v3.8.11, Copyright ©2000-2024, vBulletin Solutions Inc. Перевод: zCarot