Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Помогите с чтением логфайла игры, лог файл со строками
Sglasio
сообщение 20.9.2022, 18:24
Сообщение #1


*

Registred
Сообщений: 3
Регистрация: 20.9.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.345
Возраст: 38



Просьба подсказать код скрипта к чтению файла (лога) игры, нужно читать каждую новую свежую строчку, и при поиске информации, делать действие. С действием +/- разберусь, а вот читать файл в режиме нон-стоп, пока не могу понять как.
// Пример 2
// если в файле элементы отделены табуляцией
load_array %arr D:\UOPilot\mas.txt
log %arr [1 1] // первая элемент первой строки
log %arr [1 2] // второй элемент первой строки
log %arr [2 1] // первая элемент второй строки
end_script

т.е. грубо говоря в файле идет
строка1
строка2
строка3
строка4 (соответствует нашему запросу-делаем действие)
строка 5
строка 6
строка 7 (соответствует - делаем действие)

Каждая следующая строка появляется позже
Посути лог игры, где.. "Вас убили" - ждем нцать секунд, потом начинаем снова выполнять всякое... потом новая строчка "Вас убили" и снова начинает выполнять что либо.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.9.2022, 8:16
Сообщение #2


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



Вам критично использовать непосредственно старый синтаксис? В нем есть существенные проблемы с экранированием и пробелами при работе со строками. Вариант на lua:
Код

--lua
local file = io.open("!tmp.txt")
local line = {}
for l in file:lines() do
    line [#line+1] = l
end
log(line[1])
log(line[2])


Сообщение отредактировал DarkMaster - 21.9.2022, 14:05


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sglasio
сообщение 21.9.2022, 12:48
Сообщение #3


*

Registred
Сообщений: 3
Регистрация: 20.9.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.345
Возраст: 38



Цитата(DarkMaster @ 21.9.2022, 12:16) *

Вам критично использовать непосредственно старый синтаксис? В нем есть существенные проблемы с экранированием и пробелами при работе со строками. Вариант на lua:
Код

--lua
local file = io.open("!tmp.txt")
local line = {}
for l in file:lines() do
    line[#line+1] = l
end
log(line[1])
log(line[2])


И куда там вставить текст типа "[System] [] You were killed by".... ?что бы и с пробелами
Можно просто "You were killed by"

Сообщение отредактировал DarkMaster - 21.9.2022, 14:06
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 21.9.2022, 14:11
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



смотря что требуется. общий смысл:
if line[#line]:find("тут ваш текст") then
или
if line[#line] == "тут ваш текст" then

если файл постоянно дописывается во время работы программы, то будет необходимо его переоткрывать:
Код
local file = io.open("!tmp.txt")
local line = ""
for l in file:lines() do
    line = l
end

local pos = file:seek()
file:close()

--типа подождали пока что-нибудь допишется, переоткрыли.
wait(5000)
file = io.open("!tmp.txt")
file:seek("set", pos) -- чтобы не пропускать можно pos+1 или pos+2
file:lines()() -- пропускаем строку нулевой дилны.
line = file:lines()()
local pos = file:seek()
file:close()

log(line)


Сообщение отредактировал DarkMaster - 21.9.2022, 17:18


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Sglasio
сообщение 22.9.2022, 5:33
Сообщение #5


*

Registred
Сообщений: 3
Регистрация: 20.9.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.345
Возраст: 38



Не совсем понятно что писать в file:lines так как на них ошибку выдает.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.9.2022, 7:14
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.467
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27723
Пользователь №: 11.279



вы ваш код приведите который выдает ошибку и саму ошибку. код из постов выше я запускал и он рабочий.

Сообщение отредактировал DarkMaster - 22.9.2022, 7:50


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в онлайне!Delete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 25.4.2024, 14:50
Designed by Nickostyle