Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
123new

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

Recommended Posts

Автор скрипта: 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'

Share this post


Link to post
Share on other sites



Доработочка класса/скрипта от 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;
	}
};

 

Edited by BorizzK (see edit history)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By magliner
      Привет ! Ну вот моя история с вопросом в конце.. Я фанат Дэйз ванилы черноруси, заколебало сидеть на бездушных серверах со слабой админкой и терять лут от софтеров, решил создать под свои скромные запросы около ванильный сервер.. Нашел хорошего исполнителя, быстро и четко запустили отладили и ВОТ я имею СВОЙ сервер.. клас! вечер восторга и изучения
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By SemKa1407
      Ссылка на архив: https://disk.yandex.ru/d/WmYW5AcZozGSiA
      Инструкция, написанная на коленке, есть в архиве (для полных нулей).
    • By Troy1
      Всем привет. Подскжите ну или помогите пожалуйста решить вопрос.
      Вопрос звучит так. На сервере есть трейдер зоны и базы игроков. 
      Если в течение определённого времени, на пример 1 - 2 часа с машиной не кто не взаимодействует и машина не находится в зоне трейдера или на теретории базы, то машина отлетает в гараж или на штраф стоянку.
      На сервере используется TraderPlus.
       
      Есть такие решения у кого?
      За ранние благодарю.
    • By radical
      Доброго времени суток! Хотел вот поинтересоваться, плюс по возможности чтобы растолковали что к чему.
      Суть вопроса: хочу на сервер сделать те же самые ванильные вещи, но, кхм, размер клеточек у ванильных по меньше прописать, чтоб в инвентаре поместились. Как это сделать я примерно понял, config.cpp я поправлю, но встал вопрос ребром:  но кроме этого файла, что надо делать. Вопросов много появляется, а в интернете информацию сложно накопать. Решил попросить помощи у знающих людей.
      1. По возможности хотелось бы от начала до конца увидеть весь путь изменения одного ванильного предмета
      2. Из просьбы что выше появляется вопрос: с остальными ванильными предметами такое же решение делать? ( Это при условии, если тема 1 решится)
       
      P.S. Если будут какие то файлы, ссылки, да даже просто объяснения, это меня сдвинет с мёртвой точки, а то завис)
    • By fedotovyasha
      Где можно достать карту в очень высоком разрешении, все в интернете такого себе качества. Хочу сделать свою карту
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.