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

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

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

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

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

[Dayz 0.63] Считывание координат перса и запись в текстовик

Народ,подскажите по скрипту на 63

Нужно чтобы с периодичностью в минуту записывало в текстовый файл UID игрока на сервере и его координаты.

Может знает как это воплотить ?

Спасибо.

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


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

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

  • 0

yTka в init добавить

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

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	for ( int i = 0; i < players.Count(); ++i )
	{
		player_test = players.Get(i);
		if( player_test )
		{
			PlayerIdentity p_identity = player_test.GetIdentity();
			string coord_pl = player_test.GetPosition().ToString();
			string Name_P = p_identity.GetName();
			string UID_P = p_identity.GetPlainId();
			WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
		} 
	}
}

и в конце void main()

GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, 10000, true); 

где 10000 - 10 секунд

Не тестил, но должно работать

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

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


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





  • 0
23 часа назад, 123new сказал:

yTka в init добавить


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

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	for ( int i = 0; i < players.Count(); ++i )
	{
		player_test = players.Get(i);
		if( player_test )
		{
			PlayerIdentity p_identity = player_test.GetIdentity();
			string coord_pl = player_test.GetPosition().ToString();
			string Name_P = p_identity.GetName();
			string UID_P = p_identity.GetPlainId();
			WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
		} 
	}
}

и в конце void main()


GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, 10000, true); 

где 10000 - 10 секунд

Не тестил, но должно работать

23 часа назад, 123new сказал:

yTka в init добавить


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

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	for ( int i = 0; i < players.Count(); ++i )
	{
		player_test = players.Get(i);
		if( player_test )
		{
			PlayerIdentity p_identity = player_test.GetIdentity();
			string coord_pl = player_test.GetPosition().ToString();
			string Name_P = p_identity.GetName();
			string UID_P = p_identity.GetPlainId();
			WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
		} 
	}
}

и в конце void main()


GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, 10000, true); 

где 10000 - 10 секунд

Не тестил, но должно работать

 

Ошибка:

Cant find variable 'fLine'

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

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

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


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

yTka 

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

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	for ( int i = 0; i < players.Count(); ++i )
	{
		player_test = players.Get(i);
		if( player_test )
		{
			PlayerIdentity p_identity = player_test.GetIdentity();
			string coord_pl = player_test.GetPosition().ToString();
			string Name_P = p_identity.GetName();
			string UID_P = p_identity.GetPlainId();
			WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
		} 
	}
}

 

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


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

123new Спасибо огромное ) Все работает,а есть вариант чтобы он  строку с данными  каждого игрока  переписывал а не список делал с координатами ?

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
29 минут назад, 123new сказал:

yTka 


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

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	for ( int i = 0; i < players.Count(); ++i )
	{
		player_test = players.Get(i);
		if( player_test )
		{
			PlayerIdentity p_identity = player_test.GetIdentity();
			string coord_pl = player_test.GetPosition().ToString();
			string Name_P = p_identity.GetName();
			string UID_P = p_identity.GetPlainId();
			WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
		} 
	}
}

 

если без добавление в конец файла я так думаю:

 

if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); }

 

убрать условие и оставить только  fhandle = OpenFile(file_name, FileMode.WRITE);

 

но попробовал и получается что не обновляет координаты и т.д.,поправь если не верно.

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


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

yTka перед

for ( int i = 0; i < players.Count(); ++i )

добавь

if ( FileExist("$profile:PlayersLogFile.txt") )
{
	DeleteFile("$profile:PlayersLogFile.txt");
}

И перед записью данных о всех игроках файл будет очищаться.
А еще желательно добавить проверку на количество игроков, чтобы примерно так получилось:
 

static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	if (players.Count() > 0)
	{
		if ( FileExist("$profile:PlayersLogFile.txt") )
          {
              DeleteFile("$profile:PlayersLogFile.txt");
          }
		for ( int i = 0; i < players.Count(); ++i )
		{
			player_test = players.Get(i);
			if( player_test )
			{
				PlayerIdentity p_identity = player_test.GetIdentity();
				string coord_pl = player_test.GetPosition().ToString();
				string Name_P = p_identity.GetName();
				string UID_P = p_identity.GetPlainId();
				WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
			} 
		}
	}
}

 

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 часа назад, 123new сказал:

yTka перед


for ( int i = 0; i < players.Count(); ++i )

добавь


if ( FileExist("$profile:PlayersLogFile.txt") )
{
	DeleteFile("$profile:PlayersLogFile.txt");
}

И перед записью данных о всех игроках файл будет очищаться.
А еще желательно добавить проверку на количество игроков, чтобы примерно так получилось:
 


static void WritePlayersInfo()
{
	array<Man> players = new array<Man>; Man player; Man player_test; 
	GetGame().GetPlayers( players );
	if (players.Count() > 0)
	{
		if ( FileExist("$profile:PlayersLogFile.txt") )
          {
              DeleteFile("$profile:PlayersLogFile.txt");
          }
		for ( int i = 0; i < players.Count(); ++i )
		{
			player_test = players.Get(i);
			if( player_test )
			{
				PlayerIdentity p_identity = player_test.GetIdentity();
				string coord_pl = player_test.GetPosition().ToString();
				string Name_P = p_identity.GetName();
				string UID_P = p_identity.GetPlainId();
				WriteFile("$profile:PlayersLogFile.txt", "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl);
			} 
		}
	}
}

 

вот интересно а что нет такой функции на авто создание файла?

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


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

DAP ну я не находил. А кто мешает написать свою?)

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


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

123new Спасибо,всё чётко работает !

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, yTka сказал:

123new Спасибо,всё чётко работает !

ага))

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
4 часа назад, BorizzK сказал:

DAP Что за софтина на картинке?

SM

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, NoNameUltima сказал:

BorizzK В стиме вроде валяется.

нет ее в стиме))

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


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

DAP в стиме карта валяется

а так то - с бд или с файла - юид\позишн\никнейм

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


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

Добавил эту информацию в гайды

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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