Помощь в плагине. (Запись инфы в файле)

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
И снова я обращаюсь к вам. У меня есть 1 плагин, который по идее должен записывать данные игроков в файл, каждый тик(Конечно, выйдет не такой уж и маленький файл), но дело в том, что он в 1 строку записывает 1 игрока несколько раз. На sourcemod script functions написано, что он автоматически записывает в отдельную строку, но я не знаю в чем дело и почему не работает...
1 тик - 1 строка информации.
C-подобный:
public OnGameFrame()
{
    if(!record)
        return;
    decl String:arg[3000]
    decl String:arg2[3000]
    decl String:arg3[3000]
    decl String:steam[30]
    decl String:line2[3000]
    new Float:pos[3]
    new Float:ang[3]
    new buttons
    new bool:yes=false
    for(new client=1;client<=65;client++)
    {
        if(YesPlayer(client)&&IsPlayerAlive(client))
        {
            GetClientAuthId(client, AuthId_SteamID64, steam, 30)
            GetClientAbsOrigin(client, pos)
            GetClientAbsAngles(client, ang)
            buttons = GetClientButtons(client)
            if(yes) Format(arg3, sizeof(arg3), "|3|%s|1|%i|1|%f|2|%f|2|%f|1|%f|2|%f|2|%f|", steam, buttons, pos[0], pos[1], pos[2], ang[0], ang[1], ang[2])
            else Format(arg3, sizeof(arg3), "%s|1|%i|1|%f|2|%f|2|%f|1|%f|2|%f|2|%f", steam, buttons, pos[0], pos[1], pos[2], ang[0], ang[1], ang[2])
            Format(arg2, sizeof(arg2), "%s%s", arg, arg3)
            Format(arg, sizeof(arg), "%s%s", arg2)
            yes=true
        }
    }
    Format(line2, sizeof(line2), "%s\n", arg)
    WriteFileLine(g_file, line2)
}
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
Она нормально работает. Чувство, что где-то ты выставляешь сик на нолик. Или переоткрываешь его где-то постоянно, при чём не в аппенд моде. В общем, открывай файл в моде "a".
ЗЫ: это безобразие, а не "код". Старайся минимизировать. Лучше разработать компактный бинарный формат файла.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
Она нормально работает. Чувство, что где-то ты выставляешь сик на нолик. Или переоткрываешь его где-то постоянно, при чём не в аппенд моде. В общем, открывай файл в моде "a".
ЗЫ: это безобразие, а не "код". Старайся минимизировать. Лучше разработать компактный бинарный формат файла.

За "а" - спасибо, но я хотел под каждую запись сделать отдельный файл.
Забинарить я хотел потом, мне сначало нужно было увидеть содержимое файла.
Но все равно, спасибо
 

acik_traiks

Что нибудь напишем?)
Сообщения
770
Реакции
627
под каждую запись сделать отдельный файл.
вариантов куча:
  1. Узнавать время сервера и добавлять при создание к файлу это время, к примеру pos_clients_#data#.txt
  2. Можно для каждого игрока по Steam id сделать и чтоб знать в какой момент плагин производит запись узнать дату и поставить впереди.
ну и другие варианты. А если хочешь чтоб помог с написание не поленись кинуть весь код, если не сюда то хотя бы мне в ЛС
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
вариантов куча:

  1. Узнавать время сервера и добавлять при создание к файлу это время, к примеру pos_clients_#data#.txt
    Можно для каждого игрока по Steam id сделать и чтоб знать в какой момент плагин производит запись узнать дату и поставить впереди.
ну и другие варианты. А если хочешь чтоб помог с написание не поленись кинуть весь код, если не сюда то хотя бы мне в ЛС

Запись под отдельный файл не проблема. Проблема в том, что я хочу каждый тик писать в новую строку. Но плагин все лепит , причем как-то странно лепит.
6 (например) строк в 1, еще 6(например) строк в новую и так далее.
 

gibs

Фитиль народного волненья
Сообщения
722
Реакции
407
Мошенник
@inklesspen, это просто врапперы на сишную функцию. Обычно она работает нормально. Если так не катит у тебя, то используй функцию WriteFileString, просто в конце дописывай переход на новую строку.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
966
@inklesspen, это просто врапперы на сишную функцию. Обычно она работает нормально. Если так не катит у тебя, то используй функцию WriteFileString, просто в конце дописывай переход на новую строку.
Спасибо.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
decl String:arg[3000] decl String:arg2[3000] decl String:arg3[3000] decl String:steam[30] decl String:line2[3000]
В очень часто выполняемых функциях не должно быть даже decl, тем более, столь большого размера.
В OnGameFrame() настоятельно рекомендуется static. Оффтоп
 
Сверху Снизу