Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
123new

DayZ 0.63 Класс для логов[перезалив]

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

Автор скрипта: http://s-platoon.ru/profile/48-nonameultima/

Все благодарности за этот скрипт непосредственно автору скрипта, не мне!


 

Установка:

1. Описание: Создаем собственный класс, для сохранения логов.

Код класса:

class Ultima_Server_Class_Logs
	{
		private FileHandle fhandle;
		void Ultima_Server_Class_Logs()
			{	
			}
		void ~Ultima_Server_Class_Logs()
			{
			}
		void SaveLog(string fName, string fLine)
			{
				if ( !FileExist(fName) )
					{
						fhandle	=	OpenFile(fName, FileMode.WRITE);
					}
				else
					{
						fhandle	=	OpenFile(fName, FileMode.APPEND);
					}
				if ( fhandle == 0 )
					{
						Print("[#Ultima]: [Журналы]: Не удалось открыть файл для записи: " + fName);
						Print("[#Ultima]: [Журналы]: [Запись]: " + fLine);
						return;
					}
				FPrintln(fhandle, fLine);
				CloseFile(fhandle);
			}
	}

2. Данный файл сохраняем под именем класса:

Ultima_Server_Class_Logs.c

И помещаем в папку:

....\DayZServer\scripts\5_Mission\mission

 

Пример использования:

*Для примера берем файл:

missionServer.c

В область переменных добавляем:

private    ref Ultima_Server_Class_Logs    Log = new Ultima_Server_Class_Logs();

И далее в любой процедуре, можем логгировать события.

К примеру так:

Log.SaveLog("$profile:MyLogFile.txt", "Записываем строку");

 

Добавлено от 123new:

Если у вас нет папки scripts в папке с сервером игры, откройте папку dta, распакуйте папку scripts из pbo-файла scripts.pbo и переместите в папку с сервером.

Чтобы папка считывалась сервером, необходимо добавить параметр запуска сервера '-FilePatching'.

Чтобы запись в файлы работала, необходимо добавить параметр запуска сервера '-scrAllowFileWrite'

Поделиться сообщением


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



Доработочка класса/скрипта от NoNameUltima

Сокращено название класса

Добавлена функция ротации логов (как в линухе) - Rotate(string File, int FileNum) 1й параметр имя путь-файла, второй кол-во копий

Перед строкой с текстом всегда прописывается текущая дата и время хоста на котором работает сервер

 

Код

class LogClass
{
	private FileHandle Handle;
	
	void LogClass()
	{
		Print("::: LogClass ::: Init :::");
	}

	void ~LogClass()
	{
		Print("::: LogClass ::: UnInit :::");
	}

	void Save(string File, string String)
	{
		private int year, month, day, hour, minute, second;
		Print("::: [LogClass]: Save: " + File);
		if (!FileExist(File))
		{
			Handle = OpenFile(File,FileMode.WRITE);
		}
		else
		{
			Handle = OpenFile(File, FileMode.APPEND);
		}
		if ( Handle == 0 )
		{
			Print("::: [LogClass]: Can not write file: " + File);
			return;
		}

		FPrintln(Handle, DataBase_GetDate() + "," + DataBase_GetTime() + " : " + String);
		CloseFile(Handle);
	}

	void Rotate(string File, int FileNum)
	{
		Print("::: [LogClass]: Rotate: " + File);
		if (!FileExist(File))
		{
			Print("::: [LogClass]: Rotate: File not exists: " + File);
			return;
		}
		else
		{
			for ( int i = FileNum; i > 0; i-- )
			{
				Print("::: [LogClass]: Rotate: File: " + File + "." + i);
				if (FileExist(File + "." + i))
				{
					Print("::: [LogClass]: Rotate: DeleteFile: " + File + "." + i);
					DeleteFile(File + "." + i);
				}
				if (FileExist(File + "." + (i - 1)))
				{
					Print("::: [LogClass]: Rotate: CopyFile: " + File + "." + (i - 1) + " => " + File + "." + i);
					CopyFile(File + "." + (i - 1), File + "." + i);
				}
			}
			CopyFile(File, File + ".0");
			DeleteFile(File);
		}
	}
	
	static string DataBase_GetDate()
	{
		int year, month, day;	
		GetYearMonthDay(year, month, day);
		string date = day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2);
		return date;
	}

	static string DataBase_GetTime()
	{
		int hour, minute, second;
		GetHourMinuteSecond(hour, minute, second);
		string time = hour.ToStringLen(2) + ":" + minute.ToStringLen(2) + ":" + second.ToStringLen(2);
		return time;
	}
};

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: radical
      Доброго времени суток! Хотел вот поинтересоваться, плюс по возможности чтобы растолковали что к чему.
      Суть вопроса: хочу на сервер сделать те же самые ванильные вещи, но, кхм, размер клеточек у ванильных по меньше прописать, чтоб в инвентаре поместились. Как это сделать я примерно понял, config.cpp я поправлю, но встал вопрос ребром:  но кроме этого файла, что надо делать. Вопросов много появляется, а в интернете информацию сложно накопать. Решил попросить помощи у знающих людей.
      1. По возможности хотелось бы от начала до конца увидеть весь путь изменения одного ванильного предмета
      2. Из просьбы что выше появляется вопрос: с остальными ванильными предметами такое же решение делать? ( Это при условии, если тема 1 решится)
       
      P.S. Если будут какие то файлы, ссылки, да даже просто объяснения, это меня сдвинет с мёртвой точки, а то завис)
    • Автор: fedotovyasha
      Где можно достать карту в очень высоком разрешении, все в интернете такого себе качества. Хочу сделать свою карту
    • Автор: fedotovyasha
      Есть ли возможность сгенерировать и отобразить в ui qr код? Если да, то как?
    • Автор: fedotovyasha
      Хочу сделать возможность передачи данных об каждом игроке в программу на c#. Есть ли возможность как-то завязаться на rcon или с помощью кастомного сокета?
       
      Пока сделал часть с помощью текстового документа: сервер сохраняет данные в файл, а программа читает этот файл и получает необходимые данные, но это костыль, хотелось бы сделать нормально.
    • Автор: paranoyk
      Нужно чисто серверное решение, привыходе игроков в определенной зоне следующий респавн  их был по прописанным точкам
  • Наш выбор

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

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

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.