<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=10742&amp;type=atom" />
	<updated>2015-07-08T18:45:12Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=10742</id>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95141#p95141" />
			<content type="html"><![CDATA[<p>Просто была как то у товарища подобная задача, и там была ещё вторая кнопочка, которая искала по всему логу, да и файл должен был оставатся. Ну а удалить, это да, дело нехитрое.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-07-08T18:45:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95141#p95141</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95136#p95136" />
			<content type="html"><![CDATA[<p><strong>serzh82saratov</strong>, Ну можно сделать авто-удаление log&#039;а через каждые 10 и боле строк. что бы не засорять все жирным массивом.</p>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2015-07-08T18:29:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95136#p95136</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95132#p95132" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-08T18:17:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95132#p95132</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95128#p95128" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>У меня с работой вышеуказаных скриптов проблем нет.</p></blockquote></div><p>Я и не говорил, что они должны быть. Просто судя потому что сначала надо было 3 строку с конца, потом из последних 10, сделал вывод:</p><div class="quotebox"><blockquote><p>что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия</p></blockquote></div><p>если так, то наверное не всегда нужное может оказаться именно в той десятке. <br />Да и лог ведь со временем работы растёт, каждый раз целиком заносить его в массив наверное не лучший вариант.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-07-08T17:37:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95128#p95128</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95122#p95122" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2015-07-08T15:51:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95122#p95122</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95121#p95121" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>serzh82saratov пишет:</cite><blockquote><p>Точно не знаю какова задача, но при работе с обновляемыми логами используется обычно иной подход, когда каждое нажатие клавиши подразумевает, что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия. Если это так, могу написать.</p></blockquote></div><p>У меня с работой вышеуказаных скриптов проблем нет. Только та, что ищет результат в самой последней строке в файле, а мне нужно что бы искало результат среди 10-ти последних строк.</p>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-08T15:47:18Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95121#p95121</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95117#p95117" />
			<content type="html"><![CDATA[<p>Точно не знаю какова задача, но при работе с обновляемыми логами используется обычно иной подход, когда каждое нажатие клавиши подразумевает, что поиск производится только по новому содержимому лога, тому что появилось после предыдущего нажатия. Если это так, могу написать.</p>]]></content>
			<author>
				<name><![CDATA[serzh82saratov]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27879</uri>
			</author>
			<updated>2015-07-08T15:39:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95117#p95117</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=95112#p95112" />
			<content type="html"><![CDATA[<p>Вот еще такой вопрос появился, как сделать так что бы строка</p><div class="codebox"><pre><code>RegExMatch(log.str[log.num - 1 ]
    ,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;
    , end_str)</code></pre></div><p>искала результат среди последних 10-ти строк файла, при этом поиск начинался бы с конца файла и заканчивался как только найдет нужный мне результат.</p>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-08T15:19:03Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=95112#p95112</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94937#p94937" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-04T15:45:36Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94937#p94937</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94934#p94934" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2015-07-04T15:26:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94934#p94934</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94933#p94933" />
			<content type="html"><![CDATA[<p>С результатом &quot;end_str2&quot; разобрался, сделал так</p><div class="codebox"><pre><code>RegExMatch(A_LoopReadLine,&quot;\[(.*)\]  (.*)_(.*) \[(.*)\]&quot;, end_str)</code></pre></div><p>Вопрос про чтение файла остается открытым.</p>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-04T15:04:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94933#p94933</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94931#p94931" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-04T14:44:51Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94931#p94931</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94927#p94927" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[yalanne]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=32850</uri>
			</author>
			<updated>2015-07-04T12:37:38Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94927#p94927</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Скрипт-фильтр текстового log-файла [SA:MP]]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=94895#p94895" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Drusik]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33171</uri>
			</author>
			<updated>2015-07-04T01:42:15Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=94895#p94895</id>
		</entry>
</feed>
