Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

Сохранение лога боя в текстовый файл.


Гость lomus

Рекомендуемые сообщения

Имею: время, скилы и желание сделать оффлайновый либо онлайновый анализатор лога прошедшего боя, с выводом в красивые таблички. (Смотреть ДПС/ХПС, дамажащие скиллы и прочия, прочия).

Не имею: возможности сохранить лог боя в текстовый файл.

Кто-то знает как это можно сделать?

Может где-то в каком-то конфиге есть параметр WriteCombatLog = False?

Ссылка на комментарий
Поделиться на другие сайты

Выход есть.

По-первых, насчёт лога боя, загляни в тему [Комбат Лог] События в мире.

Во-вторых, сохранять текстовые данные можно в файл user.cfg (Согласен, неудобно, но других способов пока вроде нет. Хотя, может можно в LOG-файл как-то писать, где-то я про такое слышал, кажется)

Делается это через тот же API, который используется в оригинальных LUA.

Как пример, можешь посмотреть, как пишут в user.cfg аддоны !AstralDBi.pak и !AstralDBs.pak, которые устанавливаются вместе с Astral Updater (программой обновления аддонов).

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

Ссылка на комментарий
Поделиться на другие сайты

Посмотрел тему, буду пробовать. Проблема в том, что я не очень силен в Lua, хотя с другой стороны одним скриптовым языком больше одним меньше (пишу на питоне, перле и пхп). Не будет ли все дико тормозить, если все данные туда загонять?

При включенных события в мире в комбат лог ведь сыпется огромное количество информации.

Еще я видел тут когда-то тему, где человек давал возможность менять конфигурационные файлы подменой какого-то файла с чексуммами. Никто не пробовал накопать, может быть там есть параметры ведения логов?

Ссылка на комментарий
Поделиться на другие сайты

Без аддона на LUA тебе не обойтись никак. Я тоже не силён в LUA, но он очень смахивает на Python, так что проблем с освоением быть не должно. Если что, в интернете полно учебников по LUA.

Тормозить будет, когда user.cfg сильно разрастётся. Поэтому, твоя программа, которая будет собирать из него данные, должна также его чистить.

Чтобы менять конфигурационные файлы, тебе нужно взломать файл game.version. Это делается программой game.ver.truncator, которая лежит в теме AO Tools.

Ссылка на комментарий
Поделиться на другие сайты

Я просто сильно надеялся, что такой функционал есть уже в движке, просто отключен в конфигах.

Ладно, в принципе как писать данные понятно, а чистить я думаю можно при каждом старте игры, надо просто сделать небольшой скриптик на запуск, который будет перекидывать собранные данные из предыдущей сессии куда-то мне в папочку логов.

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

И последний вопрос, кто-то может помочь загнать все в user.cfg в любом формате?

Подойдет даже в текстовом, уж дальше я бы разобрался, конечно, я наверное и сам смогу просто это займет больше времени.

Ссылка на комментарий
Поделиться на другие сайты

Чистить, кстати, можно только тогда, когда игра не запущена. Т.к. во время работы, она блокирует все свои файлы, т.е. пока она запущена, доступа на запись user.cfg НЕ будет.

Ссылка на комментарий
Поделиться на другие сайты

Ну это понятно, я имел в виду скрипт на запуск игры. Т.е. чтобы чистить до того как игра запущена.

Ссылка на комментарий
Поделиться на другие сайты

Пример записи в user.cfg

Code:

function WriteAllTargetBuffInfoToCfg()

local Target = avatar.GetTarget()

if Target then 

local buff_count = unit.GetBuffCount( Target )

local buff

local section = {}

if buff_count > 0 then 

for i = 0, buff_count - 1 do

buff = unit.GetBuff( Target, i )

section   = buff.debugName

end

end

common.SetGlobalConfigSection( "TARGET_BUFF_LIBRARY", section )

end

end

Пример того что он туда запишет

Code:

 table_begin ScriptLocal_TARGET_BUFF_LIBRARY

  table_begin data

   int_keys_begin data

    0 = l"Mechanics/Spells/Paladin/HolyStrike/Buff01.xdb"

   int_keys_end data

  table_end data

  remote_version = -1

 table_end ScriptLocal_TARGET_BUFF_LIBRARY

Ссылка на комментарий
Поделиться на другие сайты

О, огромное спасибо.

Как я понимаю если бы бафов было несколько, то в int_keys_begin data было бы несколько строк, правильно?

Ссылка на комментарий
Поделиться на другие сайты

В общем нарыл вот что:

Ingame\AncestralCombatLog\ScriptCombatLog.lua

Похоже именно тут обрабатывается вывод данных в комбат лог.

Есть вот такая функция:

function AddNewText( valuedText, flag )

{

...

}

Вот кто подскажет, как глобально определить какую-то переменную, по умолчанию допустим равную нулю и секцию?

Чтобы можно было в этой функции вписать:

section [log_line] = {}

section [log_line].text = valuedText

section [log_line].flag = flag

log_line = log_line + 1

common.SetGlobalConfigSection( "COMBAT_LOG_TEXTS", section )

Это просто для теста, что попал в нужное место. Там есть отдельные хэндлеры на все события боя, по уму естественно надо сохранять оттуда, но если сохранить тут то все будет просто и наглядно.

Ссылка на комментарий
Поделиться на другие сайты

Обявление глобальной переменой :

-- CONSTANTS

Global( "MyVariable", 0 )

Global( "GlobalSectionName", "SECTION_NAME" )

.

.

.

MyVariable = MyVariable + 1

*)))) я перстал пписчать аддоны для АО *) Но опытом поделюсь с удовольствием

Ссылка на комментарий
Поделиться на другие сайты

можете поделиться теми самыми !AstralDBi.pak и !AstralDBs.pak либо рецептом как записывать данные о вещах в файл?

упомянутая прога файлы эти не качает, а взять больше негде(

переписывать со скриншотов слишком утомительно,а баз того что хочется переписать в инетах нет(

Ссылка на комментарий
Поделиться на другие сайты

В общем, я пытался изменять то место, которое показалось мне ответственным за вывод логов.

Ничего вообще не происходило, даже когда я просто пытался вывести одну и ту же строку два раза (т.е. просто дублировал существующую строку из кода).

В связи со всем этим возникло несколько вопросов:

1. Что происходит, если в коде скрипта допущена синтаксическая ошибка?

2. Как можно отлаживать скрипты?

3. Как понять, что скрипт хотя-бы запустился?

Буду признателен за любую помощь.

Ссылка на комментарий
Поделиться на другие сайты

1. Вопрос очень хороший. Насколько я разобрался (на опыте создания одного простого аддона), если в скрипте есть синтаксическая ошибка, то вместо него будет использоваться оригинальный ниваловский скрипт. Такое у меня случалось, когда я делал AutoAcceptEula. Хотя, когда-то давно, я где-то слышал, что у кого-то скрипт с ошибкой запускался, просто показывал пустое окно (если скрипт отвечает за какое-то окно. Хотя, мой-то тоже отвечает за окно с лицензией). В общем, однозначного ответа у меня нет, пусть лучше ответит кто-нибудь поопытнее меня.

2. Проверять синтаксис можно любым LUA-компилятором. Если скомпилировался, значит синтаксических ошибок нет.

3. Вроде, для проверки, ты всё правильно сделал, продублировав строку. Но скрипт, говоришь, не сработал? Может в нём где-то всё-таки синтаксическая ошибка есть? Или попробуй как-нибудь по-другому, какое-нибудь другое место в скрипте. Скрипт версии 1.0.03, сам по себе, может быть устаревшим, поэтому, какие-то его части могут не работать в современной версии игры. Кстати, есть и хорошая новость, Kosh научился декомпилировать современные скрипты.

EDIT: Хороший LUA-редактор с проверкой синтаксиса (по нажатии Ctrl+Alt+C) - LuaEdit 2010

Ссылка на комментарий
Поделиться на другие сайты

1. Если в коде скрипта ошибка, то он не грузится и функции этого скрипта не работают. совсем.

3. Соответственно, если работают функции, которые этот скрипт выполняет, значит скрипт загрузился.

2. Смотря что отлаживать. если смотреть что приходит в функцию в параметрах, то скидаваю все в user.cfg если смотреть как та или иная команда работает - то после каждого изменения запускаю игру...

Ссылка на комментарий
Поделиться на другие сайты

На счет декомпиляции я уже слышал. Но пока не хочется напрягать человека.

Возможно, это не тот скрипт я правил, а тот что отвечает за вывод в реальные логи (которые наверняка где-то включаются, знать бы где)

Буду дальше рыть, может что-то и найдется.

Ссылка на комментарий
Поделиться на другие сайты

Да, кстати, сейчас, если я ничего не путаю, скрипты AncestralCombatLog\ScriptCombatLog.lua не используются совсем игрой. поэтому у тя и ничего не изменилось.

В воскресенье я хочу потратить время на аддоны, так что попробую и тебе чтонить нарыть

Ссылка на комментарий
Поделиться на другие сайты

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования