Запись текста в файл/чтение файла
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Запись текста в файл/чтение файла
Извиняюсь если вопрос поднимался, но...
Возможно ли определенный текст записывать в файл и соответсвенно из него выводить?
К примеру, боту в пм приходит месага "т1", в файл "*.txt" записывается строка "т1", через 15 минут приходит месага "т2" и строка "т2" пишется в тот же самый файл "*.txt", после чего через N времени, бот выводит содерджимое файла *.txt?
Возможно ли определенный текст записывать в файл и соответсвенно из него выводить?
К примеру, боту в пм приходит месага "т1", в файл "*.txt" записывается строка "т1", через 15 минут приходит месага "т2" и строка "т2" пишется в тот же самый файл "*.txt", после чего через N времени, бот выводит содерджимое файла *.txt?
давно сам мечтаю о такой функции, надеюсь что кто-нибудь это рано или поздно осущетсвит, или мне придётся самому это делать ))
но... я бы сделал так.
во-первых, в конфиге я бы сделал несколько новых пустых переменных. скажем:
Var1, Var2, Var3, и т.д. смотря сколько строчек нужно. далее, есть автомакрос, который вызывает загрузку переменных:
$var1 = @config (Var1).
далее работаем опять же с автомакросом. если мы уже имеем достаточное количество переменных (не знаю как проверить), или мы получаем комманду определённую (или условие), то выводим эти переменные куда-нибудь. в приват, в паблик, в гильдчат, вобщем куда угодно )
если меняем переменные - не забываем сделать релиз автомакроса-загрузчика переменных.
на этом примере работает мой автомакрос нуп-вор-рог/син ) переменные я использую для создания "контрольных" точек, чтобы бот автоматически сам определял своё состояние, и далее по макросам выбирал своё поведение: пойдёт он бить жуков, или варить кофе, или поедет на метро куда-нибудь на Шаболовскую... )))))))))))))
проблем никогда не возникало с такой штукой, и работает слава богу безотказно. одно но: чем больше макрос и чем больше условий с переменными, тем сложнее за всем уследить.
но... я бы сделал так.
во-первых, в конфиге я бы сделал несколько новых пустых переменных. скажем:
Var1, Var2, Var3, и т.д. смотря сколько строчек нужно. далее, есть автомакрос, который вызывает загрузку переменных:
$var1 = @config (Var1).
далее работаем опять же с автомакросом. если мы уже имеем достаточное количество переменных (не знаю как проверить), или мы получаем комманду определённую (или условие), то выводим эти переменные куда-нибудь. в приват, в паблик, в гильдчат, вобщем куда угодно )
если меняем переменные - не забываем сделать релиз автомакроса-загрузчика переменных.
на этом примере работает мой автомакрос нуп-вор-рог/син ) переменные я использую для создания "контрольных" точек, чтобы бот автоматически сам определял своё состояние, и далее по макросам выбирал своё поведение: пойдёт он бить жуков, или варить кофе, или поедет на метро куда-нибудь на Шаболовскую... )))))))))))))
проблем никогда не возникало с такой штукой, и работает слава богу безотказно. одно но: чем больше макрос и чем больше условий с переменными, тем сложнее за всем уследить.
У меня проблема в том, что неизвестно сколько этих "т" будет.
Я собирался описать такой момент: бот пишет другому в приват имя игрока, потом другое имя, потом еще имя, бот все это записывает в файл, если к этому(принимающему) боту подходит игрок с ником который есть в списке, бот говорит одно, если нету в списке - другое.
btw Возник вопрос, можно ли превратить в переменную значение $.lastpmMsg?
Тоесть при получеии в приват сообщения "т1" сразу создать переменную именем т1?
Но это решение временное и система испортится при ближащем ресете(
Я собирался описать такой момент: бот пишет другому в приват имя игрока, потом другое имя, потом еще имя, бот все это записывает в файл, если к этому(принимающему) боту подходит игрок с ником который есть в списке, бот говорит одно, если нету в списке - другое.
btw Возник вопрос, можно ли превратить в переменную значение $.lastpmMsg?
Тоесть при получеии в приват сообщения "т1" сразу создать переменную именем т1?
Но это решение временное и система испортится при ближащем ресете(
- 4epT
- macro-маньячина
- Сообщения: 2792
- Зарегистрирован: Чт дек 21, 2006 1:23 pm
- Сервер RO:: 4game
- Discord: ya4ept#8494
- Контактная информация:
да
Не тестил, но мысль такая:
ЗЫ: интересно он будет понимать их как T, T1, T2..?
Не тестил, но мысль такая:
Код: Выделить всё
automacro pm_to_Tn {
pm /.*/
timeout 2
call {
$t = T
$.lastpmMsg = $t$n
$n++
}
}
Код: Выделить всё
automacro pms {
# у меня почему-то на кирилические ники он не реагировал, файл в UTF-8
# а на латиницу не проверял :), вообщем тут надо ник бота
pm /.*/
call pms
exclusive 1
}
macro pms {
#тут есть касяк в запятыми - если в нике запятые,
#то его разрубит на куски, на тест серваке, запятые были запрещены
$names = $.lastpmMsg,$names
do conf names $names
}
#один из вариантов как с этим работать - вывод в консоль.
macro print {
$cpnames = $names
$name = [$cpnames]
#тут я выбрал слово END для конца списка
#ибо на тестируемом серваке нельзя создавать ники длины 3 и менее
while ($name != END) as loop
log $name
$name = [$cpnames]
end loop
}
automacro testIn {
pubm /.*/
call testIn
exclusive 1
}
# а вот тут разная реакция на тех кто в списке и тех кто не в списке
macro testIn {
if ($.lastpubMsg ~ $names) goto part
log $.lastpubMsg is not listed name
log Hello!
goto end
:part
log $.lastpubMsg is listed name
log F*ck off!
:end
}
Код: Выделить всё
names END
Последний раз редактировалось CaToH Ср сен 26, 2007 11:24 pm, всего редактировалось 1 раз.