RagBot Forum
 

Вернуться   RagBot Forum > • Всё что касается бота • > Макросы и Плагины

Макросы и Плагины Всё что относится к макросам и плагинам. Сборник готовых макросов.

Ответ
 
Опции темы Опции просмотра
Старый 11.01.2008, 14:56   #1
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

Как написать простой макрос...

0) Куда вставлять написаный макрос
...OKore_204\control\macros.txt
Вот пример содержания файла
Код:
#Сюда пишите ваши макросы и автомакросы
#Гайд по macro плагину:
#http://www.openkore.com/wiki/index.php/Macro_plugin_Russian

automacro loot {
delay 25
console /You have no new messages./
call loot
}

macro loot {
do c @autoloot 100
do c @go 0
}
1) Для автомакроса нужно условие его авто запуска...
Условия бывают разные в зависимости от задач, часто используют для срабатывания c макроса условие появления в приват чате пати чате или паблик чате или в консоли определенного сочетания слов или за ведома известной строки. Но условием может быть что угодно текущая координата, или название локации и таму подобное. Условий может быть несколько!
Задача условия выдать TRUE* для срабатывания макроса
* образно не буквально
Пример:

Код:
automacro{
	pm /привет/ <--(условие)
call{
	.
	.
	.
}
}
Условием срабатывания этого автомакроса будет появления сообщения от любого игрока в котором есть слово "привет" !

2) Вызов макроса
После того как мы выполнили условие срабатывания, мы должны совершить какие либо действия, описание этих действий описываются в макросе. Тело макроса можно вложить в автомакрос как представлено выше, или описать его отдельно, а автомакрос будет его вызывать с помощью команды call смотрим ниже.
Код:
automacro{
	pm /привет/ <--(условие)
call foo  <--(вызывает макрос foo)
}

macro foo{    <--(макрос foo)
	.
	.
	.
}
Вы спросите наверно в чем разница? А разница в том что макрос foo может быть вызван несколькими автомакросами, что есть более гибко, практично и полезно в чем вы непременно убедитесь!

3) Тело макроса
В теле макроса описывается то что должен сделать бот! В простейшем случаи это последовательность команд (выполняются друг за другом). Ботом можно управлять через консоль, вводя в нее. консольные команды. (на русском). Чтобы их использовать в макросе, необходимо воспользоваться командой do:

команда do в теле макроса означает выполнение действия
Цитата:
do use "выполнить использования"
do ss "выполнить скил"
do c "выполнить паблик чат"
и так далее
Но иногда нам нужно что бы некоторые команды работали при одном условии а другие при другом условии, условий может быть множество и разных, для этого нам нужны операторы макроса!

4)Шаблоны. Что это такое и как с ними бороться!
Шаблоны используются во всех языках программирования для того что бы упростить роботу программисту вы спросите как, лучше всего вам наверно на этот вопрос поможет ответить пример:
Жизненный пример:

Привет, хай, хелоу, здрям, боэнос диас, Hello и так далее
Слова єти все разные но их объединяет одно, все єти слова есть приветствием
Тоесть под параметр приветствие попадают все єти слова, из єтого можна сделать вывод
Что параметр приветствие есть шаблон для всех выше упомянутых слов!

Теперь как это в программировании:
Например 8 88 5 987 256 456 853 и так далее
Здесь есть цифры и числа и они все имеют разное значение но
\d+ - есть шаблон для выше упомянутых чисел, и означает любое число
Прошу заметить что цифра это есть частным случаем числа!

Также есть одна закавыка что касается использования шаблонов в условиях. Если у вас есть несколько автомакросов то нужно учесть что их условия срабатывания никогда не пересекались, тоесть условия срабатывания одного макроса небыло часным случаем условия срабатывания другого! Смотрим пример:

Цитата:
automacro{
pm /.*/
call{
.
.
.
}
}

automacro{
pm /.*/,"ник"
call{
.
.
.
}
}
В данном случае у нас 2 автомакроса условием срабатывания 1-го является получения любого приват сообщения, условиям 2-го получения приват сообщения только от отдельного игрока.И получаем что при получении сообщения от игрока определенного в условии 2го автомакроса, будет условием срабатывания обоих автомакросов что есть неправильно.
*Из данной ситуации есть выход путем применения приоритетности автомакросов!

Шаблон и регулярное выражение в принципе одно и тоже понятие, просто в разных языках программирование немного разные принципы строения програм из за этого есть некоторые отличия и в терминах!!

Теперь как их лучше применить:
Не буду тут распинаться это очень хорошо описал 4ерт гайде на макро плагин


5)То что нужно знать.

5.1 Несколько макросов не могут работать одновременно, может работать только один.

5.2 Значение переменных не передаються от макроса к макросу, тоесть они локальные и динамические.
После окончания работы макроса память выделяная на переменные очищаеться
*Есть глобальные переменные но не будем о страшном!

5.3 Паузы и задержки
Цитата:
pause <число секунд>
delay <число секунд>
Первое используеться в теле макроса, нужно для того что бы админы не афигели когда вы(бот) напимер будете отвечть на их вопрос предложением из 10 слов в течении 1 секунды!!
Второе описываеться в теле автомакроса, это задержка после выполнением команд для всего тела автомакроса, например:
Код:
automacro{
pm /.*/
delay 10
call{
do с 1 <--(выводит цифру 1 в паблик чате)
do c 2
do c 3
}
}
Выполняться будет так:
do с 1
10 секунд
do с 2
10 секунд
do с 3
10 секунд

6) Заключение.
Все что выше выложено это как бы "обьяснения на пальцах", большая часть информации в гайде по макро плагинам.
Перед тем как начать писать макрос, четко поймите что вы хотите получить а частности какое условие срабатывания и что потом бот должен сделать; если не можете четко представить структуру макроса нарисуйте алгоритм на бамажке.

Последний раз редактировалось masterspirta; 13.01.2008 в 01:44.
masterspirta вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо masterspirta за это полезное сообщение:
lipik (04.12.2008)
Старый 11.01.2008, 15:24   #2
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

ели что добавить или подправить вы говрите я дополню!!
masterspirta вне форума   Ответить с цитированием
Старый 11.01.2008, 15:25   #3
AmsTaFF
Продвинутый
 
Аватар для AmsTaFF
 
Регистрация: 20.11.2006
Адрес: Москва
Сообщений: 138
Вы сказали Спасибо: 0
Поблагодарили 21 раз(а) в 6 сообщениях
Отправить сообщение для AmsTaFF с помощью ICQ
По умолчанию

ты бы шаблоны с названиями прописал бы... а то прочтут, подумают, что без названий надо... дык ещё дай пример macro...
не забудь про run-once 1 + release... ибо это базовое, что надо знать для написания простого макроса... не забудь упомянять про пример do

прости, что так в разнобой, но времени форматировать текст нету.
__________________
напишу макросы и конфиги для Бота - обращаться в ICQ
(за долгие работы не берусь, в связи с нехваткой времени)
ICQ: 9803956
AmsTaFF вне форума   Ответить с цитированием
Старый 11.01.2008, 16:41   #4
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

Цитата:
ты бы шаблоны с названиями прописал бы... а то прочтут, подумают, что без названий надо... дык ещё дай пример macro...
не забудь про run-once 1 + release... ибо это базовое, что надо знать для написания простого макроса... не забудь упомянять про пример do

прости, что так в разнобой, но времени форматировать текст нету.
ты бы шаблоны с названиями прописал бы - непонял чо автар хочет
дык ещё дай пример macro - я писал обьяснения для новичков что б они поняли с чем имеют дела ссылки на гайд даны для того что бы брать от туда информацию

не забудь про run-once 1 + release. - у меня почти все макросы без этого для простого мака можно и пропустить это мимо глаз, когда разберуться немного тогда будет понимание зачем это нада!

не забудь упомянять про пример do я немогу подправить...((


А добавил бы следующие
команда do в теле макроса означает выполнение действия
do use "выполнить использования"
do ss "выполнить скил"
do c "выполнить паблик чат"
и так далее

Здесь все команды

Последний раз редактировалось masterspirta; 11.01.2008 в 17:08.
masterspirta вне форума   Ответить с цитированием
Старый 11.01.2008, 16:54   #5
Gans
Злостный ROFANовец
 
Аватар для Gans
 
Регистрация: 30.11.2006
Сообщений: 532
Вы сказали Спасибо: 0
Поблагодарили 3 раз(а) в 3 сообщениях
По умолчанию

masterspirta, прежде чем публиковать тексты, прогоняй их спеллчекером.
__________________
Gans вне форума   Ответить с цитированием
Старый 11.01.2008, 17:06   #6
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

masterspirta, прежде чем публиковать тексты, прогоняй их спеллчекером.

спеллчек, хз чо это такое?
------------------------
Не туды ссылку дал, исправил!!

Последний раз редактировалось masterspirta; 11.01.2008 в 17:09.
masterspirta вне форума   Ответить с цитированием
Старый 11.01.2008, 20:08   #7
4epT
Админ
 
Аватар для 4epT
 
Регистрация: 10.12.2006
Сообщений: 4,370
Вы сказали Спасибо: 7
Поблагодарили 386 раз(а) в 240 сообщениях
Отправить сообщение для 4epT с помощью ICQ
По умолчанию

1. "заметьте что если прийдет "привет." макрос уже не сработает"
спорим что сработает? У тебя же написано "pm /привет/", т.е. в строке мы ищим слово "привет". А теперь убеди меня, что в строке "привет." нету слова привет

2. "описание этих дейсвий описываються"
тафтология

3. "Прошу заметить что цифра это есть часным случаем числа!"
чего? Ты хотел, наверно, сказать что цисла состоят из чисел?

4. "После окончания работы макроса память выделяная на переменные очищаеться"
вот тут у меня сомнения.. там какой-то косяк есть с переменными, но что-то ту не так.. не помню что, кароче нада точно проверить

5. "Через 10 сек после срабатывания автомакроса запускается макрос foo, потом ещо через 10 сек запускается макрос foos при условии что макрос foo уже выполнен и закрыт!"
это ты проверял? о_О тут бред на счёт закрытия макроса, как ты закроешь макрос? Закрыться может тока автомакрос.

6. "гайде по макро плагинам"
по макро плагину, он всего один

7. "я немогу подправить"
как это не можешь? а как понимать "Последний раз редактировалось masterspirta, Сегодня в 17:09."?? Как ты подправил (дополнил) последнее сообщение?

8. "спеллчек, хз чо это такое?"
загоняешь текст в Word и жмёшь "проверить орфографию"
4epT вне форума   Ответить с цитированием
Старый 11.01.2008, 20:15   #8
masterspirta
Опытный Ботовод
 
Аватар для masterspirta
 
Регистрация: 22.08.2007
Сообщений: 304
Вы сказали Спасибо: 1
Поблагодарили 9 раз(а) в 9 сообщениях
По умолчанию

я правил его когда к нему ещо небыл прикреплен статус важно....щас немагу!! все с работы бегу домой потом все подправлю!!!
masterspirta вне форума   Ответить с цитированием
Старый 11.01.2008, 20:19   #9
4epT
Админ
 
Аватар для 4epT
 
Регистрация: 10.12.2006
Сообщений: 4,370
Вы сказали Спасибо: 7
Поблагодарили 386 раз(а) в 240 сообщениях
Отправить сообщение для 4epT с помощью ICQ
По умолчанию

ты вообще видел как оформлен гайд по макросам? правда красиво?
а теперь посмотри на своё чудо.. сделай его по-краше (жмёшь "Правка", потом "расширеный режим")

кстати подправил немного твой пост (выделил чуток жирным и добавил инфу про do)

снял пока статус важной
__________________
¤Config checker¤Руководство¤Файлы¤Конфиги¤Макросы¤
Быстро и качественно напишу конфиг (макрос) за yAD! Стучи!
4epT вне форума   Ответить с цитированием
Старый 11.01.2008, 20:57   #10
GoldenShadow
Бывший модер
 
Аватар для GoldenShadow
 
Регистрация: 15.02.2007
Адрес: Москва
Сообщений: 352
Вы сказали Спасибо: 0
Поблагодарили 4 раз(а) в 2 сообщениях
Отправить сообщение для GoldenShadow с помощью ICQ
По умолчанию

Цитата:
Сообщение от 4epT Посмотреть сообщение
1. "заметьте что если прийдет "привет." макрос уже не сработает"
спорим что сработает? У тебя же написано "pm /привет/", т.е. в строке мы ищим слово "привет". А теперь убеди меня, что в строке "привет." нету слова привет
То есть ты хотел сказать, что достаточно написать часть слова(например "при") и при появлении слова "привет" макрос сработает? по моему я это где то встречал уже...вроде в макросе про автолут, там тоже что то подобное было с "You are in the game" достаточно было указать не полную строку...
Вы мне оттветьте лучше вот на что...если я поставлю условие например, при появлении в консоли буквы "к",то при каждом ее появлении,ни важно в слове или отдельно, будет срабатывать макрос?

Последний раз редактировалось GoldenShadow; 11.01.2008 в 20:59.
GoldenShadow вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как зайти ботом в чат и что либо написать в нём? kr3w Макросы и Плагины 1 03.11.2007 00:42


Текущее время: 21:05. Часовой пояс GMT +3.