1 (изменено: Fauk, 2017-01-21 22:45:09)

Тема: AHK: Поиск информации в txt

Приветствую всех.
Мне нужна ваша помощь в исправлении ошибки в одном и кодов.

!Numpad9::
{
words := getdialogtext()
FileAppend, %words%, %A_ScriptDir%\dialog.txt
AddChatMessage("{8B008B}Диалог обработан.")
}
Loop, Read, %A_ScriptDir%\dialog.txt
{
    If RegExMatch( A_LoopReadLine, "(.*)_(.*) ", line)  
        SendInput {F6}/namest{space}%line1%{enter}
Sleep 2000
}
{
FileDelite, %A_ScriptDir%\dialog.txt
}
Return

Вот есть данный скрипт. Если у меня открыто диалоговое окно, то я нажимаю *Alt+Numpad9* и у меня весь текст, что содержится в данном окне - создается в текстовом документе.
После чего идёт поиск игровых ников формата Имя_Фамилия. Все ники на английском языке. После и перед никами может быть текст, но мне нужны только ники формата Имя_Фамилия и больше ничего. Если находит хоть один такой ник, то прописывается команда /namest и этот ник. Сколько там найдёт этих ников, то столько раз будет прописывать данная команда. Ну а после завершения поиска и прописи всех ников - этот текстовый документ удаляется.
Он у меня не работает. Помогите исправить ошибку.

2 (изменено: belyankin12, 2017-01-21 22:05:47)

Re: AHK: Поиск информации в txt

Я бы не назвал ваш заголовок самым информативным. Вы просите нас найти информацию в файле и вывести её в переменную, а сами в названии указали "SAMP". Переделайте. А пока делаете, скажите, что именно не работает? Понятие "не работает" очень растяжимое. Не запускается вообще? Не выводит переменную? Что? Я сейчас вижу ошибку в регулярном выражении у вас, я вам помогу её исправить, но для начала смените заголовок. А ещё, ответьте на вопрос: как ник игрока прописан в текстовом файле. Вот так:

123345sadas62aAleks_BelkaZadsd123456

или вот так:

123345sadas62a Aleks_Belka Zadsd123456

Было бы неплохо предоставить пример текста, желательно максимально шаблонного.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

3 (изменено: Fauk, 2017-01-21 22:21:36)

Re: AHK: Поиск информации в txt

Примером может быть данный текст.

asd
as			ad af	ag	ah

Pypka_Pypka		228	228	1337	123231132131123213

4

Re: AHK: Поиск информации в txt

Т.е., ник всегда в начале строчки? Или может быть и в конце? Кроме того: может быть ли пара ников в одной строчке?

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

5

Re: AHK: Поиск информации в txt

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

6

Re: AHK: Поиск информации в txt

У меня почти все готово, но я вижу вы не читали мою просьбу сменить заголовок.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

7 (изменено: Fauk, 2017-01-21 22:45:24)

Re: AHK: Поиск информации в txt

А да, сейчас.
Изменил.

8 (изменено: belyankin12, 2017-01-21 22:51:28)

Re: AHK: Поиск информации в txt

Вот. Не могу протестировать наверняка - не играю в вашу игру, но скрипт дошел до конца без ошибок.


!Numpad9::
txt := A_ScriptDir "\dialog.txt"
words := getdialogtext()
AddChatMessage("{8B008B}Начинаю обработку данных.")
FileAppend, %words%, %txt%
sleep 300
Loop {
	FileReadLine, line, %txt%, %A_Index%
				
	if ErrorLevel
	break
				
	if RegExMatch(line,"(.*)_(.*) (.*)", end_str)
				
	Pname := end_str1
	PSname := RegExReplace(end_str2, "\ .*", "")
	
	if (end_str1 != "" or end_str2 != "") {
		
		PName := "" . Pname . "_" . PSname . ""
		SendInput {F6}/namest %PName%{enter}
		Sleep 2000
	} else {
		AddChatMessage("{8B008B}Ошибка чтения файла.")
	}
}
FileDelete, %txt%
AddChatMessage("{8B008B}Обработка завершена.")
Return

Кстати, в вашем UDF наверняка есть функция, подобно sendchatmessage. Если есть, то советую строчку №52 заменить на:

sendchatmessage("/namest " . PName . "")

так будет быстрее.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

9

Re: AHK: Поиск информации в txt

Спасибо большое!