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

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

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

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

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

Сделать паузу между выводами сообщений в чат

Как бы в цикле сделать задержку 3-5 сек между выводами сообщений в чат

вывелось 2 строки

задержка 3 сек

вывелось еще 2 строки

снова задержка

 

Нужно для скана обьектов и вывода в чат обнаруженных

int radius = cData.ToInt();
array<Object> nearest_objects = new array<Object>;
array<CargoBase> proxy_cargos = new array<CargoBase>;
Object object;
string className;
if (radius > 0 && radius <= 120)
{
	GetGame().GetObjectsAtPosition(AdminPosition, radius, nearest_objects, proxy_cargos);
	for ( int chk = 0; chk < nearest_objects.Count(); chk++ )
	{
		object = nearest_objects.Get(chk);
		className = object.GetType();
		if (className)
		{
				string Msg1 = "Obj:" + chk + ":" + className;
		}
		else
		{
				Msg1 = "Obj:" + chk + ":" + object.ToString();
		}
		string Msg2 = "Pos:" + chk + ":" + object.GetPosition().ToString();
												
		Msgparam = new Param1<string>(Msg1); 
		Msgparam1 = new Param1<string>(Msg2); 
		GetGame().RPCSingleParam(playerAdmin, ERPCs.RPC_USER_ACTION_MESSAGE, Msgparam, true, playerAdmin.GetIdentity());
		GetGame().RPCSingleParam(playerAdmin, ERPCs.RPC_USER_ACTION_MESSAGE, Msgparam1, true, playerAdmin.GetIdentity());
		Print("::: AdminMod.c ::: /check ::: " + Msg1);
		Print("::: AdminMod.c ::: /check ::: " + Msg2);
												
		//Тут бы придумать задержку, что бы между выводом в чат инфо по каждому обьекту проходило 2-3 сек...
  		//это не работает
		float wt0 = 0.00;
		while (wt0 < 36000 )
		{
			wt0 = wt0 + 0.01;
            
		}
											
	}
}

если их много то слишком быстро выводятся (((

 

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


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

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

  • 0

123new NoNameUltima 

Вобщем спасибо бразы

Вы оказались правы

 

в итоге сделал так

 

Собственно откуда идет вызов

 

	int MsgDelay = 5;
	int radius = cData.ToInt();
	array<Object> nearest_objects = new array<Object>;
	array<CargoBase> proxy_cargos = new array<CargoBase>;
	Object object;
	string className;
	if (radius > 0 && radius <= maxCheckRadius)
	{
		GetGame().GetObjectsAtPosition(AdminPosition, radius, nearest_objects, proxy_cargos);
		for ( int chk = 0; chk < nearest_objects.Count(); chk++ )
		{
			object = nearest_objects.Get(chk);
			className = object.GetType();
			if (className)
			{
				string Msg1 = "Obj:" + chk + ":" + className;
			}
			else
			{
				Msg1 = "Obj:" + chk + ":" + object.ToString();
			}
			string Msg2 = "Pos:" + chk + ":" + object.GetPosition().ToString();
			
			//CALL Delayed message function!
			Send_Delayed_Message(PlayerAdmin, Msg1, (MsgDelay * chk), 0);
			Send_Delayed_Message(PlayerAdmin, Msg2, ((MsgDelay * chk) + 1), 0);
		}
	}
									

 

И

 

	void Send_Delayed_Message(PlayerBase Player, string Message, int time, int Channel)
	{
		if ((Message != "") && (time >= 0))
		{
			GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Send_Chat_Message, (time * 1000), false, Player, Message, Channel);
		}
	}
	
	void Send_Chat_Message(PlayerBase Player, string Message, int Channel)
	{
		Param1<string> Msgparam;
		if (Message != "")
		{
			if (Player)
			{
				Msgparam = new Param1<string>(Message); //For single player!
				GetGame().RPCSingleParam(Player, ERPCs.RPC_USER_ACTION_MESSAGE, Msgparam, true, Player.GetIdentity());
			}
			else
			{
				GetGame().ChatPlayer(Channel, Message); //For global chat channel
			}
		}
	}

	string GetDateTime()
	{
		string date = GetCurrentDate();
		string time = GetCurrentTime();

		return date + ", " + time;
	}

	string GetCurrentDate()
	{
		int year, month, day;	
		GetYearMonthDay(year, month, day);
		string date = day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2);
		return date;
	}

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

 

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


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

а теперь напиши новичку, что и куда и как что-бы у меня так же работало))

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: Miduznya
      Как сделать стартовый лут на сервере???
    • Автор: BorizzK
      Автор я
      На основе наработок комьюнити, на основе идей DaOne
       
      Мучайте
      P.S. Так же там есть доп функционал - для вызовов из класса миссии
      P.S.2. Инструкция (на англ) внутрях
       
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: Alex39
      Прописал скрипт, серверные сообщение, вроде как работают, но есть косяки, может кто подскажет в чем проблема,
      override void OnInit() { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(NumPlayersOnServer, 30000, true); // 30 seconds } void NumPlayersOnServer() { ref array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numPlayers = players.Count(); for( int i=0; i < players.Count(); ++i ) { Man player = players.Get(i); if( player ) { string messPlayers = "Players on the server: " + numPlayers.ToString(); Param1<string> m_MessageParam = new Param1<string>(messPlayers); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, player.GetIdentity()); } } }
       
      Проблема пропадание трейдера, админ тулз из за этого скрипта
       
      override void OnInit() { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(NumPlayersOnServer, 30000, true); // 30 seconds }  
    • Автор: 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о количестве игроков.
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\PlayersMessagesCount.c" Находим функцию
      void main() и перед ее закрывающей скобкой "}"добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(SendPlayersCount, CountPlayers_TIME_InfoPlayers_Repeat, true); 3. Помещаем в папку файл
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем "PlayersMessagesCount.c" и заполняем его следующим текстом:
      int CountPlayers_TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) string Message_Chat = "Online Players: "; void SendPlayersCount() { array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { CountPlayers_SendPersonalMessage(Message_Chat + numbOfplayers.ToString(), player); } // GetGame().ChatPlayer(0,Message_Chat + numbOfplayers.ToString()); } } void CountPlayers_SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } 4. Настраиваем файл как нам нужно. Т.е. в строке
      int CountPlayers_TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) указываем время повтора вывода сообщений в чат (поумолчанию стоит 2 минуты)
      и текст сообщений в переменной
      string Message_Chat = "Online Players: ";  
      P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
    • Автор: 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о количестве игроков.
       
      Нам понадобится:
      1. Сервер DayZ 0.63, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\PlayersMessagesCount.c" И после строки
      weather.SetWindFunctionParams(0, 0, 0); добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(SendPlayersCount, TIME_InfoPlayers_Repeat, true); Пример:

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

      3. Помещаем в папку файл Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем "PlayersMessagesCount.c" и заполняем его следующим текстом:
      int TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) string Message_Chat = "Online Players: "; void SendPlayersCount() { array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { GetGame().ChatPlayer(0,Message_Chat + numbOfplayers.ToString()); } } 4. Настраиваем файл как нам нужно. Т.е. в строке
      int TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) указываем время повтора вывода сообщений в чат (поумолчанию стоит 2 минуты)
      и текст сообщений в переменной
      string Message_Chat = "Online Players: ";  
      P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
  • Наш выбор

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

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

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

Поддержка