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
  • 0
TheLinsus

Помощь по скрипту

Всех приветствую, решил поставить вот такой скрипт на сервер для кика в лобби игроков, использующих Глобальный голосовой чат:

private ["_seconds","_maxSeconds","_countdown"];
 
//CONFIG
_maxSeconds = 5; //how many seconds players can talk on side channel before they get kicked to lobby
_msg = "ГЛОБАЛЬНЫЙ ГОЛОСОВОЙ ЧАТ ЗАПРЕЩЁН!"; //message to be displayed to the user
_countdown = true; //show countdown in chat
//CONFIG END
 
_seconds = 0;
while {true} do {
waitUntil {(!isNull findDisplay 55) and (!isNull findDisplay 63) and (ctrlText ((findDisplay 63) displayCtrl 101) == localize "STR_CHANNEL_SIDE")};
//wait until microphone icon is showing (IDD 55) and channel label is displayed (IDD 63) and channel label says "Side channel"
 

hint _msg;
taskHint [_msg, [1,0,0.1,1], "taskFailed"];
if(_countdown) then {
player setDamage 0.1;
cutText [format["Возврат в лобби через: %1 сек.", _maxSeconds - _seconds],"WHITE IN"]; //notify user
systemChat format["Возврат в лобби через: %1 сек.",_maxSeconds - _seconds]; //countdown in chat
};
 
if (_seconds >= _maxSeconds) then {
endMission "LOSER"; //return to lobby
};
 
_seconds = _seconds + 1;
sleep 1;
};

Первый вопрос: вывод цветного большого текста доступен только через taskHint? Просто при использовании taskHint нужно обязательно указывать иконку, а я бы не хотел её использовать.

Второй вопрос: какая-то сволочина блокирует мой setDamage 0.1

Скорее всего infiSTAR, но ничего в нём откопать не смог. Персонаж орёт, в голове дырка появляется, но 12к крови никуда не убывают. Ставил значения 0.5, 0.9, 1

Сработало только 1. ОЧ СТРАННО

 

Буду благодарен, если кто может помочь

Edited by TheLinsus (see edit history)

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts






  • 0

Да будет с тобой дюперы с таким файлом )

Если setDamage налажу, то в кике смысла не будет

Знаешь как сделать?

Share this post


Link to post
Share on other sites
  • 0

Если setDamage налажу, то в кике смысла не будет

Знаешь как сделать?

_uid = getPlayerUID player;
_adminlist = ["6158340","0","0","0","0","0"];
if (_uid in _adminlist) exitWith {};
[] spawn {
	disableSerialization;
	DS_really_loud_sounds = {[60,15] call fnc_usec_pitchWhine;for "_i" from 1 to 15 do {playSound format ["%1",_this select 0];};};
	DS_double_cut = {1 cutText [format ["%1",_this select 0],"PLAIN DOWN"];2 cutText [format ["%1",_this select 0],"PLAIN"];};
	DS_slap_them = {_randomnr = [2,-1] call BIS_fnc_selectRandom;(vehicle player) SetVelocity [_randomnr * random (4) * cos getdir (vehicle player), _randomnr * random (4) * cos getdir (vehicle player), random (4)];};
	while {true} do {
		waitUntil {sleep 1;((!isNull findDisplay 63) && (!isNull findDisplay 55))};
		
			if (ctrlText ((findDisplay 63) displayCtrl 101) == localize "str_channel_side") then {
				[] spawn {
					if (isNil "reset_timer") then {
						reset_timer = true;
						sleep 90;
						disconnect_me = nil;
						warn_one = nil;
						warn_two = nil;
						warn_three = nil;
						warn_last = nil;
						reset_timer = nil;
					};
				};
				if (isNil "disconnect_me") then {disconnect_me = 0;} else {disconnect_me = disconnect_me + 1;};
				if (disconnect_me == 0) then {
					if (isNil "warn_one") then {
						warn_one = true;
						systemChat ("Просьба не разговаривать в общем чате, это первое предупреждение.");
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_inpain = true;
						r_player_blood = r_player_blood - 500;
					};
				};
				if (disconnect_me == 1) then {
					if (isNil "warn_two") then {
						warn_two = true;
						systemChat ("Просьба не разговаривать в общем чате, это второе предупреждение...");
						[] spawn DS_slap_them;
						["z_scream_3"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 3000;
					};
				};
				if (disconnect_me == 2) then {
					if (isNil "warn_three") then {
						warn_three = true;
						systemChat ("ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!");
						systemChat ("ВЫ БУДЕТЕ ОТКЛЮЧЕНЫ!");
						[] spawn DS_slap_them;
						["z_scream_4"] spawn DS_really_loud_sounds;
						["ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 4500;
						//_selection = ""legs"";
				        //player setHit[_selection,1];
						
					};
				};
				if (disconnect_me >= 3) then {
					if (isNil "warn_last") then {
						warn_last = true;
						playMusic ["PitchWhine",0];
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["ВАС предупреждали..."] spawn DS_double_cut;
						1 fademusic 10;
						1 fadesound 10;
						disableUserInput true;
						startLoadingScreen ["ОТКЛЮЧЕНИЕ", "DayZ_loadingScreen"];
						progressLoadingScreen 0.2;sleep 2;
						progressLoadingScreen 0.4;sleep 2.25;
						progressLoadingScreen 0.6;sleep 2;
						progressLoadingScreen 0.8;sleep 2.25;
						progressLoadingScreen 1.0;sleep 2;
						endLoadingScreen;sleep 0.5;
						disableUserInput false;
						endMission "LOSER";
					};
				};
			};
		};
		sleep 2;
	
};

Share this post


Link to post
Share on other sites
  • 0

 

_uid = getPlayerUID player;
_adminlist = ["6158340","0","0","0","0","0"];
if (_uid in _adminlist) exitWith {};
[] spawn {
	disableSerialization;
	DS_really_loud_sounds = {[60,15] call fnc_usec_pitchWhine;for "_i" from 1 to 15 do {playSound format ["%1",_this select 0];};};
	DS_double_cut = {1 cutText [format ["%1",_this select 0],"PLAIN DOWN"];2 cutText [format ["%1",_this select 0],"PLAIN"];};
	DS_slap_them = {_randomnr = [2,-1] call BIS_fnc_selectRandom;(vehicle player) SetVelocity [_randomnr * random (4) * cos getdir (vehicle player), _randomnr * random (4) * cos getdir (vehicle player), random (4)];};
	while {true} do {
		waitUntil {sleep 1;((!isNull findDisplay 63) && (!isNull findDisplay 55))};
		
			if (ctrlText ((findDisplay 63) displayCtrl 101) == localize "str_channel_side") then {
				[] spawn {
					if (isNil "reset_timer") then {
						reset_timer = true;
						sleep 90;
						disconnect_me = nil;
						warn_one = nil;
						warn_two = nil;
						warn_three = nil;
						warn_last = nil;
						reset_timer = nil;
					};
				};
				if (isNil "disconnect_me") then {disconnect_me = 0;} else {disconnect_me = disconnect_me + 1;};
				if (disconnect_me == 0) then {
					if (isNil "warn_one") then {
						warn_one = true;
						systemChat ("Просьба не разговаривать в общем чате, это первое предупреждение.");
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_inpain = true;
						r_player_blood = r_player_blood - 500;
					};
				};
				if (disconnect_me == 1) then {
					if (isNil "warn_two") then {
						warn_two = true;
						systemChat ("Просьба не разговаривать в общем чате, это второе предупреждение...");
						[] spawn DS_slap_them;
						["z_scream_3"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 3000;
					};
				};
				if (disconnect_me == 2) then {
					if (isNil "warn_three") then {
						warn_three = true;
						systemChat ("ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!");
						systemChat ("ВЫ БУДЕТЕ ОТКЛЮЧЕНЫ!");
						[] spawn DS_slap_them;
						["z_scream_4"] spawn DS_really_loud_sounds;
						["ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 4500;
						//_selection = ""legs"";
				        //player setHit[_selection,1];
						
					};
				};
				if (disconnect_me >= 3) then {
					if (isNil "warn_last") then {
						warn_last = true;
						playMusic ["PitchWhine",0];
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["ВАС предупреждали..."] spawn DS_double_cut;
						1 fademusic 10;
						1 fadesound 10;
						disableUserInput true;
						startLoadingScreen ["ОТКЛЮЧЕНИЕ", "DayZ_loadingScreen"];
						progressLoadingScreen 0.2;sleep 2;
						progressLoadingScreen 0.4;sleep 2.25;
						progressLoadingScreen 0.6;sleep 2;
						progressLoadingScreen 0.8;sleep 2.25;
						progressLoadingScreen 1.0;sleep 2;
						endLoadingScreen;sleep 0.5;
						disableUserInput false;
						endMission "LOSER";
					};
				};
			};
		};
		sleep 2;
	
};
Какой-то жестокий скрипт)) Поставлю, попробую.

Но всё-таки почему в моём скрипте не работает setDamage?

Share this post


Link to post
Share on other sites
  • 0

 

_uid = getPlayerUID player;
_adminlist = ["6158340","0","0","0","0","0"];
if (_uid in _adminlist) exitWith {};
[] spawn {
	disableSerialization;
	DS_really_loud_sounds = {[60,15] call fnc_usec_pitchWhine;for "_i" from 1 to 15 do {playSound format ["%1",_this select 0];};};
	DS_double_cut = {1 cutText [format ["%1",_this select 0],"PLAIN DOWN"];2 cutText [format ["%1",_this select 0],"PLAIN"];};
	DS_slap_them = {_randomnr = [2,-1] call BIS_fnc_selectRandom;(vehicle player) SetVelocity [_randomnr * random (4) * cos getdir (vehicle player), _randomnr * random (4) * cos getdir (vehicle player), random (4)];};
	while {true} do {
		waitUntil {sleep 1;((!isNull findDisplay 63) && (!isNull findDisplay 55))};
		
			if (ctrlText ((findDisplay 63) displayCtrl 101) == localize "str_channel_side") then {
				[] spawn {
					if (isNil "reset_timer") then {
						reset_timer = true;
						sleep 90;
						disconnect_me = nil;
						warn_one = nil;
						warn_two = nil;
						warn_three = nil;
						warn_last = nil;
						reset_timer = nil;
					};
				};
				if (isNil "disconnect_me") then {disconnect_me = 0;} else {disconnect_me = disconnect_me + 1;};
				if (disconnect_me == 0) then {
					if (isNil "warn_one") then {
						warn_one = true;
						systemChat ("Просьба не разговаривать в общем чате, это первое предупреждение.");
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_inpain = true;
						r_player_blood = r_player_blood - 500;
					};
				};
				if (disconnect_me == 1) then {
					if (isNil "warn_two") then {
						warn_two = true;
						systemChat ("Просьба не разговаривать в общем чате, это второе предупреждение...");
						[] spawn DS_slap_them;
						["z_scream_3"] spawn DS_really_loud_sounds;
						["Запрещено говорить в Глобалчате"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 3000;
					};
				};
				if (disconnect_me == 2) then {
					if (isNil "warn_three") then {
						warn_three = true;
						systemChat ("ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!");
						systemChat ("ВЫ БУДЕТЕ ОТКЛЮЧЕНЫ!");
						[] spawn DS_slap_them;
						["z_scream_4"] spawn DS_really_loud_sounds;
						["ЗАПРЕЩЕНО говорить в Глобалчате! Это последнее предупреждение!"] spawn DS_double_cut;
						r_player_blood = r_player_blood - 4500;
						//_selection = ""legs"";
				        //player setHit[_selection,1];
						
					};
				};
				if (disconnect_me >= 3) then {
					if (isNil "warn_last") then {
						warn_last = true;
						playMusic ["PitchWhine",0];
						[] spawn DS_slap_them;
						["beat04"] spawn DS_really_loud_sounds;
						["ВАС предупреждали..."] spawn DS_double_cut;
						1 fademusic 10;
						1 fadesound 10;
						disableUserInput true;
						startLoadingScreen ["ОТКЛЮЧЕНИЕ", "DayZ_loadingScreen"];
						progressLoadingScreen 0.2;sleep 2;
						progressLoadingScreen 0.4;sleep 2.25;
						progressLoadingScreen 0.6;sleep 2;
						progressLoadingScreen 0.8;sleep 2.25;
						progressLoadingScreen 1.0;sleep 2;
						endLoadingScreen;sleep 0.5;
						disableUserInput false;
						endMission "LOSER";
					};
				};
			};
		};
		sleep 2;
	
};

Спасибо за скрипт, взял нужные строки себе)))

Теперь в принципе вопрос в setDamage отошёл на второй план, хотя интересно всё-таки почему блочится дамаг.

Остался последний вопрос: как выводить цветной текст в самый верх экрана не taskHint?

Share this post


Link to post
Share on other sites
  • 0

Попробуй

 

 

    if ( (getPlayerUID player) in ["76561198108791460","76561198155016649","76561198039299041","76561198041993024"]) exitWith {}; // Вместо 123, 456 и т.д. вписать UID тех кому разрешено говорить в общий канал связи.
    private ["_maxSeconds", "_seconds"];
    _maxSeconds  =    5; // Сколько секунд игроку разрешено говорить в общий чат до убийства.
    _seconds     =    0;
    while {true} do
        {
            waitUntil {(!isNull findDisplay 55) and (!isNull findDisplay 63) and (ctrlText ((findDisplay 63) displayCtrl 101) == localize "STR_CHANNEL_SIDE")};
            cutText ["НЕ ГОВОРИТЕ В ОБЩИЙ КАНАЛ СВЯЗИ!", "PLAIN"];
            systemChat format["При повторном разговоре в общий канал, Вы будете убиты через: %1 сек.", (_maxSeconds - _seconds)];
            if (_seconds >= _maxSeconds) then
                {player setDamage 1;};  
            _seconds    =    _seconds + 1;
            sleep 1;
        };

 

 

Edited by Evgeniy1983 (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Попробуй

 

 

if ( (getPlayerUID player) in ["76561198108791460","76561198155016649","76561198039299041","76561198041993024"]) exitWith {}; // Вместо 123, 456 и т.д. вписать UID тех кому разрешено говорить в общий канал связи.

private ["_maxSeconds", "_seconds"];

_maxSeconds = 5; // Сколько секунд игроку разрешено говорить в общий чат до убийства.

_seconds = 0;

while {true} do

{

waitUntil {(!isNull findDisplay 55) and (!isNull findDisplay 63) and (ctrlText ((findDisplay 63) displayCtrl 101) == localize "STR_CHANNEL_SIDE")};

cutText ["НЕ ГОВОРИТЕ В ОБЩИЙ КАНАЛ СВЯЗИ!", "PLAIN"];

systemChat format["При повторном разговоре в общий канал, Вы будете убиты через: %1 сек.", (_maxSeconds - _seconds)];

if (_seconds >= _maxSeconds) then

{player setDamage 1;};

_seconds = _seconds + 1;

sleep 1;

};

 

 

Ну setDamage 1 работает исправно. Больше ничего выдающегося не вижу в коде, цветных сообщений нет.

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 akklin
      Привет. 
      Я сделал несколько
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By fedotovyasha
      в messages есть такая возможность
      <messages> <!-- This is example message for automatic server termination --> <message> <!-- no delay --> <delay>0</delay> <!-- if the value is larger than 0, then flag Repeat is enabled --> <repeat>0</repeat> <!-- if the value is larger than 0, then flag Countdown is enabled, countdown reaches zero in 10 hours --> <deadline>600</deadline> <!-- disable On connect flag --> <onConnect>0</onConnect> <!-- enable Shutdown flag --> <shutdown>1</shutdown> <!-- message itself with placeholders --> <text>Hello, #name will shutdown in #tmin minutes.</text> </message> </messages> Что лучше и эффективнее будет. Писать свой рестартер с помощью Rcon или будет достаточно messages.xml?
    • By BorizzK
      Есть класс
       
      class LogClass { private FileHandle File; void LogClass() { Print("::: [LogClass] ::: Init :::"); } void ~LogClass() { Print("::: [LogClass] ::: UnInit :::"); } void Save(string FileName, string String) { private int year, month, day, hour, minute, second; Print("::: [LogClass]: Save: " + FileName); if (!FileExist(FileName)) { File = OpenFile(FileName,FileMode.WRITE); } else { File = OpenFile(FileName, FileMode.APPEND); } if ( File == 0 ) { Print("::: [LogClass]: Can not write FileName: " + FileName); Print("::: [LogClass]: May be disk error, file write protected, file busy or FileMode.WRITE disabled (need to specify option -scrAllowFileWrite in server run parameters for enable FileMode.WRITE."); return; } FPrintln(File, DataBase_GetDate() + "," + DataBase_GetTime() + " : " + String); CloseFile(File); } void Rotate(string FileName, int FileNum) { Print("::: [LogClass]: Rotate: " + FileName); if (!FileExist(FileName)) { Print("::: [LogClass]: Rotate: FileName not exists: " + FileName); return; } else { for ( int i = FileNum; i > 0; i-- ) { Print("::: [LogClass]: Rotate: FileName: " + FileName + "." + i); if (FileExist(FileName + "." + i)) { Print("::: [LogClass]: Rotate: DeleteFile: " + FileName + "." + i); DeleteFile(FileName + "." + i); } if (FileExist(FileName + "." + (i - 1))) { Print("::: [LogClass]: Rotate: CopyFile: " + FileName + "." + (i - 1) + " => " + FileName + "." + i); CopyFile(FileName + "." + (i - 1), FileName + "." + i); } } CopyFile(FileName, FileName + ".0"); DeleteFile(FileName); } } 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; } } Мне нужно им пользоваться функциями из него в нескольких местах
      в PlayerBase.c в функциях в классе PlayerBase
      в init.c в функция в классе миссии
      Вопрос как?
       
      В PlayerBase.c
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_MOD\\LogClass\\LogClass.c"
      Далее в классе
      ref LogClass Log = new LogClass();
      ну и в функциях
      Log.Save{"путь-имя", данные);
       
      Но после последнего обновления 0.63.149.525
      В init.c
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_MOD\\LogClass\\LogClass.c"
      приводит к ошибке - Multiple declaration of class "LogClass"
       
      Can't compile mission init script'!
      $CurrentDir://mpmissions//dayzOffline.chernarusplus//_MOD//LogClass//LogClass.c(1): Multiple declaration of class 'LogClass'
       
      До этого обновления все было норм
      Как быть?
       
       
    • By BorizzK
      Что такое массивы и тп я в целом знаю, но поскольку на c++ и подобном никогда не писал (только в Дейзе столкнулся), то есть некоторое непонимание некоторых принципов работы с массивами в данном случае
       
      Продположим
       
      обявили массив внутри функции
       
      array<string> stringParam;
      // определяем массив текстового типа который живет до завершения работы функции
       
      или
       
      static array<string> stringParam;
      // определяем массив текстового типа который сохраняет в себе данные и после завершения работы функции и при следующем
      вызове функции содержимое массива останется и может быть использовано внутри функции (повторного обьявления массива не произойдет)
       
      string text = "text";
       
      //записываем содержимое переменной text в элемент массива 0
      stringParam.Insert(text);
      //записываем содержимое переменной text  в элемент массива 1, если переменная text пуста в элемент запишется текст NULL
      stringParam.Insert(text, "NULL");
       
      читаем в переменную text элемент массива 1
      string text = stringParam.Get(1);
       
      А вот теперь вопрос
      Как мне изменить эелемент 1 массива?
      stringParam[1] = "блаблабла";
       
      так?
      в теории должно быть так
       
      Это вообще возможно?
       
      И еще про функцию возвращающую результат в качестве массива
       
       array<string> FileRead(string FileName)
       {
        array<string> stringParam;
        string line_content;
         
      .....

        CloseFile(File);
        return stringParam;
       }
       
      Все верно?
       
  • 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.