<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=10742</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10742&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Скрипт-фильтр текстового log-файла [SA:MP]».]]></description>
		<lastBuildDate>Wed, 08 Jul 2015 18:45:12 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95141#p95141</link>
			<description><![CDATA[<p>Просто была как то у товарища подобная задача, и там была ещё вторая кнопочка, которая искала по всему логу, да и файл должен был оставатся. Ну а удалить, это да, дело нехитрое.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 08 Jul 2015 18:45:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95141#p95141</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95136#p95136</link>
			<description><![CDATA[<p><strong>serzh82saratov</strong>, Ну можно сделать авто-удаление log&#039;а через каждые 10 и боле строк. что бы не засорять все жирным массивом.</p>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Wed, 08 Jul 2015 18:29:32 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95136#p95136</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95132#p95132</link>
			<description><![CDATA[<div class="quotebox"><cite>yalanne пишет:</cite><blockquote><div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog

log := {str:&quot;&quot;,find:0,num:0}    ,    log.str := []

Loop, read, %path_log%
    log.str.Insert(A_LoopReadLine)    ,log.num := A_Index

loop 10
    if RegExMatch(     log.str[log.num + 1 - A_Index]
        ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
        , end_str) and (log.find:=log.num + 1 - A_Index)
            break
        
msgbox % &quot;Номер строки:`t&quot; log.find &quot;`nСтрока:`t`t&quot; end_str &quot;`nДата:`t`t&quot; end_str1 &quot;`nИмя:`t`t&quot; end_str2 &quot;`nФамилия:`t`t&quot; end_str3 &quot;`nID:`t`t&quot; end_str4</code></pre></div><p>Ищет по шаблону &quot;\[(.*)\]&nbsp; (.*)_(.*) \[(.*)\]&quot;.</p></blockquote></div><br /><p>Спасибо, то что нужно)</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Wed, 08 Jul 2015 18:17:54 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95132#p95132</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95128#p95128</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>У меня с работой вышеуказаных скриптов проблем нет.</p></blockquote></div><p>Я и не говорил, что они должны быть. Просто судя потому что сначала надо было 3 строку с конца, потом из последних 10, сделал вывод:</p><div class="quotebox"><blockquote><p>что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия</p></blockquote></div><p>если так, то наверное не всегда нужное может оказаться именно в той десятке. <br />Да и лог ведь со временем работы растёт, каждый раз целиком заносить его в массив наверное не лучший вариант.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 08 Jul 2015 17:37:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95128#p95128</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95122#p95122</link>
			<description><![CDATA[<div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog

log := {str:&quot;&quot;,find:0,num:0}    ,    log.str := []

Loop, read, %path_log%
    log.str.Insert(A_LoopReadLine)    ,log.num := A_Index

loop 10
    if RegExMatch(     log.str[log.num + 1 - A_Index]
        ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
        , end_str) and (log.find:=log.num + 1 - A_Index)
            break
        
msgbox % &quot;Номер строки:`t&quot; log.find &quot;`nСтрока:`t`t&quot; end_str &quot;`nДата:`t`t&quot; end_str1 &quot;`nИмя:`t`t&quot; end_str2 &quot;`nФамилия:`t`t&quot; end_str3 &quot;`nID:`t`t&quot; end_str4</code></pre></div><p>Ищет по шаблону &quot;\[(.*)\]&nbsp; (.*)_(.*) \[(.*)\]&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Wed, 08 Jul 2015 15:51:41 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95122#p95122</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95121#p95121</link>
			<description><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Точно не знаю какова задача, но при работе с обновляемыми логами используется обычно иной подход, когда каждое нажатие клавиши подразумевает, что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия. Если это так, могу написать.</p></blockquote></div><p>У меня с работой вышеуказаных скриптов проблем нет. Только та, что ищет результат в самой последней строке в файле, а мне нужно что бы искало результат среди 10-ти последних строк.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Wed, 08 Jul 2015 15:47:18 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95121#p95121</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95117#p95117</link>
			<description><![CDATA[<p>Точно не знаю какова задача, но при работе с обновляемыми логами используется обычно иной подход, когда каждое нажатие клавиши подразумевает, что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия. Если это так, могу написать.</p>]]></description>
			<author><![CDATA[null@example.com (serzh82saratov)]]></author>
			<pubDate>Wed, 08 Jul 2015 15:39:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95117#p95117</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=95112#p95112</link>
			<description><![CDATA[<p>Вот еще такой вопрос появился, как сделать так что бы строка</p><div class="codebox"><pre><code>RegExMatch(log.str[log.num - 1 ]
    ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
    , end_str)</code></pre></div><p>искала результат среди последних 10-ти строк файла, при этом поиск начинался бы с конца файла и заканчивался как только найдет нужный мне результат.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Wed, 08 Jul 2015 15:19:03 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=95112#p95112</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94937#p94937</link>
			<description><![CDATA[<p>Вот, теперь он читает то что мне нужно, огромное спасибо.</p><p>Вот конечный результат кода если кому пригодиться:</p><div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog

!1:: ; alt +1 
log := {str:&quot;&quot;,num:0}    ,    log.str := []

Loop, read, %path_log%
    log.str.Insert(A_LoopReadLine)    ,log.num := A_Index

RegExMatch(log.str[log.num - 1 ]
    ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
    , end_str)

; В переменной end_str без цифр будет хранится вся строка.
; С цифрой 1 Дата
; С цифрой 2 Имя
; С цифрой 3 Фамилия
; С цифрой 4 ID
; Если строка по шаблону не найдена, в переменной будет 0
; msgbox % end_str1 &quot;`n&quot; end_str2 &quot; &quot; end_str3 &quot;`n&quot; end_str4
sendinput {f6}Привет %end_str3%{space}
return</code></pre></div><p><strong>yalanne </strong> огромное спасибо вам за вашу помощь.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Sat, 04 Jul 2015 15:45:36 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94937#p94937</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94934#p94934</link>
			<description><![CDATA[<div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog
log := {str:&quot;&quot;,num:0}    ,    log.str := []

Loop, read, %path_log%
    log.str.Insert(A_LoopReadLine)    ,log.num := A_Index

msgbox % log.str[log.num - 1 ]

RegExMatch(log.str[log.num - 1 ]
    ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
    , end_str)
    
msgbox % end_str1</code></pre></div><p>Вот тут в квадратных скобках надо указывать номер нужной строки log.str[&nbsp; ]<br />А в log.num хранится общее количество строк. там вычитается 1</p>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Sat, 04 Jul 2015 15:26:52 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94934#p94934</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94933#p94933</link>
			<description><![CDATA[<p>С результатом &quot;end_str2&quot; разобрался, сделал так</p><div class="codebox"><pre><code>RegExMatch(A_LoopReadLine,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;, end_str)</code></pre></div><p>Вопрос про чтение файла остается открытым.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Sat, 04 Jul 2015 15:04:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94933#p94933</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94931#p94931</link>
			<description><![CDATA[<div class="quotebox"><cite>yalanne пишет:</cite><blockquote><div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog


!1:: ; alt +1    
Loop, read, %path_log% ; читаем последнюю строку.
    RegExMatch(A_LoopReadLine,&quot;\[(.*)\]  (.*) \[(.*)\]&quot;, end_str)

; В переменной end_str без цифр будет хранится вся строка.
; С цифрой 1 только дата.
; С цифрой 2 только ник в игре
; С цифрой 3 только id
; Если строка по шаблону не найдена, в переменной будет 0
msgbox % end_str1 &quot;`n&quot; end_str2 &quot;`n&quot; end_str3

</code></pre></div></blockquote></div><p>Спасибо большое, только вот я немного ошибся, и завел вас в заблуждение. Необходимо читать не последнюю строчку, а получается пред пред последнюю</p><p>Вот пример:<br /></p><div class="codebox"><pre><code>
151: [17:41:30]  Player_Name [132]
152:
153:
</code></pre></div><p>Получается что в конце файлы &quot;chatlog.txt&quot; идет еще две пустых строки.<br />Как это можно исправит. Лучше вообще сделать поиск результата &quot;[17:41:30]&nbsp; Player_Name [132]&quot; по всему файлу начиная с его конца, а не чтение последней строчки в &quot;chatlog.txt&quot;</p><p>Заранее благодарю за помощь. Пока жду ответа, постараюсь разобраться сам.</p><p>Забыл сказать что сам скрипт работает на отлично. Проверил просто запихнув результат &quot;[17:41:30]&nbsp; Player_Name [132]&quot; в самый конец в ручную.</p><p>P.S. Есть ли возможность вывести результат &quot;end_str2&quot; без нижней черты &quot;_&quot;? Что бы в итоге выводилось просто &quot;Player Name&quot; а не &quot;Player_Name&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Sat, 04 Jul 2015 14:44:51 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94931#p94931</guid>
		</item>
		<item>
			<title><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94927#p94927</link>
			<description><![CDATA[<div class="codebox"><pre><code>path_log := A_MyDocuments &quot;\GTA San Andreas User Files\SAMP\chatlog.txt&quot;  ; Путь к chatlog


!1:: ; alt +1    
Loop, read, %path_log% ; читаем последнюю строку.
    RegExMatch(A_LoopReadLine,&quot;\[(.*)\]  (.*) \[(.*)\]&quot;, end_str)

; В переменной end_str без цифр будет хранится вся строка.
; С цифрой 1 только дата.
; С цифрой 2 только ник в игре
; С цифрой 3 только id
; Если строка по шаблону не найдена, в переменной будет 0
msgbox % end_str1 &quot;`n&quot; end_str2 &quot;`n&quot; end_str3

</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (yalanne)]]></author>
			<pubDate>Sat, 04 Jul 2015 12:37:38 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94927#p94927</guid>
		</item>
		<item>
			<title><![CDATA[Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=94895#p94895</link>
			<description><![CDATA[<p>Доброго времени суток уважаемые форумчане. Обращаюсь к вам за помощью так как самостоятельно уже не могу решить свою проблему.<br />Постараюсь объяснить как можно понятнее(Подобные темы уже были на форуме).</p><p>Мне необходимо из текстового файла &quot;chatlog.txt&quot; вывести в чат игры определенную информацию.<br />К примеру я ввожу в чат команду &quot;/id 777&quot; после этого я получаю такой результат &quot;[04:21:57]&nbsp; Vasa_Pupkin [777]&quot;</p><p>[04:21:57] - Время на ПК<br />Vasa_Pupkin - Ник игрока<br />[777] - ID игрока</p><p>Так вот, после того как я введя id получаю его ник, и к примеру сочетанием клавиши Alt+1 (Просто к примеру) мне нужно что бы AHK нашел в текстовом файле эту информацию и вывел мне в чат игры только часть результата &quot;Pupkin&quot;. Выводить нужно самый последний результат из файла chatlog.txt</p><p>На практике должно быть как-то так:<br />1. Нажал сочетание клавиш Alt+1<br />2. В чате получить команду /id (Ид может быть от 0 до 999)<br />3. После начатия Enter получить в чате необходимую мне информацию</p><p>Нашел пример такого скрипта:<br /></p><div class="codebox"><pre><code>#IfWinActive GTA:SA:MP
SLES := 0
suspectid := 0
suspectname := &quot;Подозреваемый&quot;
suspectid1 := 0
suspectname1 := &quot;Подозреваемый&quot;
path := &quot;C:\Documents and Settings\Администратор\Мои документы\GTA San Andreas User Files\SAMP\&quot;
F3::
{
SLES := 1
suspectid := 0
suspectname := &quot;Подозреваемый&quot;
suspectid1 := 0
suspectname1 := &quot;Подозреваемый&quot;
sleep 1000
}
Return


!1::
FileDelete, %A_MyDocuments%%path%suspect.txt
sleep 50
Loop
{
Loop, read, %A_MyDocuments%%path%chatlog.txt, %A_MyDocuments%%path%suspect.txt
{
    IfInString, A_LoopReadLine, ] Ник{ffffff} , FileAppend, %A_LoopReadLine%`n
}
Loop, read, %A_MyDocuments%%path%suspect.txt
{
    RegExMatch(A_LoopReadLine, &quot;] Вопрос от{ffffff} (.*) {33aa33}ID {ffffff}&quot;, suspectname)
    RegExMatch(A_LoopReadLine, &quot; {33aa33}ID {ffffff}(.*)&quot;, suspectid)
}
sendinput {f6}/answ %suspectid% Здравствуйте, %suspectname% , решение вашей проблемы: {scape}
return
}
</code></pre></div><p>Только вот как его правильно переделать?</p><p>Пример записей из файла chatlog.txt</p><div class="codebox"><pre><code>
[09:57:05]  Объявление: [LS News] В 10:10 пройдёт эфир &quot;Прятки&quot; приз 150.000. Прислал: Pechenka_Big. Тел: 77777

[09:57:05]         Отредактировал сотрудник LS News: Pechenka_Big

[09:58:20]  Администратор: Zloy_Admin забанил Rodrigo. Причина: cheat

[09:58:28]  Primer_Name [190]
</code></pre></div><p>Надеюсь вы поймете что я хочу получить от AHK. И рассчитываю на ваши помощь. </p><p>P.S. Ув. Модераторы, если тему оформил не правильно, прошу сразу простить и указать на ошибку.</p>]]></description>
			<author><![CDATA[null@example.com (Drusik)]]></author>
			<pubDate>Sat, 04 Jul 2015 01:42:15 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=94895#p94895</guid>
		</item>
	</channel>
</rss>
