Kotmajor

Anti-Dupe by JustBullet

Вопрос

Доброго времени суток! и с праздником ребят!

Столкнулся с такой проблемой, поставил анти-дюп от джастбуллета и теперь он конфликтует с Snap build т.е при постройке он вообще не работает, как только убираю скрипт анти-дюпа, всё начинает работать. Может кто знает решение данной проблемы.

Кастомный dayz_spaceInterrupt.sqf брал с Snap build.

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


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

2 ответа на этот вопрос

private ["_dikCode","_handled","_primaryWeapon","_secondaryWeapon","_nearbyObjects","_nill","_shift","_ctrl","_alt","_dropPrimary","_dropSecondary","_iItem","_removed","_iPos","_radius","_item"];
_dikCode = 	_this select 1;

_handled = false;

if (_dikCode in[0x02,0x03,0x04,0x58,0x57,0x44,0x43,0x42,0x41,0x40,0x3F,0x3E,0x3D,0x3C,0x3B,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05]) then {
	_handled = true;
};

if ((_dikCode == 0x3E or _dikCode == 0x0F or _dikCode == 0xD3)) then {
	if(diag_tickTime - dayz_lastCheckBit > 10) then {
		dayz_lastCheckBit = diag_tickTime;
		call dayz_forceSave;
	};
	call dayz_EjectPlayer;
};

// esc
if (_dikCode == 0x01) then {
	DZE_cancelBuilding = true;
	call dayz_EjectPlayer;
};
// Disable ESC after death
if (_dikCode == 0x01 && r_player_dead) then {
	_handled = true;
};

if (_dikCode == 0x06) then
    {
        if (soundVolume == 1) then {
            1 fadeSound 0.25;
            hintSilent "Вы одели беруши";
        }
            else
        {
            1 fadeSound 1;
            hintSilent "Вы сняли беруши";
        };
    };

// surrender 
if (_dikCode in actionKeys "Surrender") then {
	
	_vehicle = vehicle player;
	_inVehicle = (_vehicle != player);
	_onLadder =	(getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
	_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder and !_inVehicle);
	
	if (_canDo and !DZE_Surrender and !(player isKindOf  "PZombie_VB")) then {
		DZE_Surrender = true;
		_dropPrimary = false;
		_dropSecondary = false;

		_primaryWeapon = primaryWeapon player;
		if (_primaryWeapon != "") then {_dropPrimary = true;};
		_secondaryWeapon = "";
		{
			if ((getNumber (configFile >> "CfgWeapons" >> _x >> "Type")) == 2) exitWith {
					_secondaryWeapon = _x;
			};
		} forEach (weapons player);
		if (_secondaryWeapon != "") then {_dropSecondary = true;};

		if (_dropPrimary or _dropSecondary) then {
			player playActionNow "PutDown";
			_iPos = getPosATL player;
			_radius = 1;
			_item = createVehicle ["WeaponHolder", _iPos, [], _radius, "CAN_COLLIDE"];
			_item setposATL _iPos;
			if (_dropPrimary) then {
				_iItem = _primaryWeapon;
				_removed = ([player,_iItem,1] call BIS_fnc_invRemove);
				if (_removed == 1) then {
					_item addWeaponCargoGlobal [_iItem,1];
				};
			};
			if (_dropSecondary) then {
				_iItem = _secondaryWeapon;
				_removed = ([player,_iItem,1] call BIS_fnc_invRemove);
				if (_removed == 1) then {
					_item addWeaponCargoGlobal [_iItem,1];
				};
			};
			player reveal _item;
		};

		// set publicvariable that allows other player to access gear
		player setVariable ["DZE_Surrendered", true, true];
		// surrender animation
		player playMove "AmovPercMstpSsurWnonDnon";
	};
	_handled = true;
};

if (_dikCode in actionKeys "MoveForward") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveLeft") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveRight") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};
if (_dikCode in actionKeys "MoveBack") exitWith {r_interrupt = true; if (DZE_Surrender) then {call dze_surrender_off};};

//Prevent exploit of drag body
if ((_dikCode in actionKeys "Prone") and r_drag_sqf) exitWith { force_dropBody = true; };
if ((_dikCode in actionKeys "Crouch") and r_drag_sqf) exitWith { force_dropBody = true; };

_shift = 	_this select 2;
_ctrl = 	_this select 3;
_alt =		_this select 4;

//diag_log format["Keypress: %1", _this];
if ((_dikCode in actionKeys "Gear") and (vehicle player != player) and !_shift and !_ctrl and !_alt && !dialog) then {
			createGearDialog [player, "RscDisplayGear"];
			_handled = true;
};

if (_dikCode in (actionKeys "GetOver")) then {
	
	if (player isKindOf  "PZombie_VB") then {
		_handled = true;
		DZE_PZATTACK = true;
	} else {
		_nearbyObjects = nearestObjects[getPosATL player, dayz_disallowedVault, 8];
		if (count _nearbyObjects > 0) then {
			if((diag_tickTime - dayz_lastCheckBit > 4)) then {
				[objNull, player, rSwitchMove,"GetOver"] call RE;
				player playActionNow "GetOver";
				dayz_lastCheckBit = diag_tickTime;
			} else {
				_handled = true;
			};
		};
	};
};
//if (_dikCode == 57) then {_handled = true}; // space
//if (_dikCode in actionKeys 'MoveForward' or _dikCode in actionKeys 'MoveBack') then {r_interrupt = true};
if (_dikCode == 210) then {
		_nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf";
};

if (_dikCode in actionKeys "ForceCommandingMode") then {_handled = true};
if (_dikCode in actionKeys "PushToTalk" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
	dayz_lastCheckBit = diag_tickTime;
	[player,50,true,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "VoiceOverNet" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
	dayz_lastCheckBit = diag_tickTime;
	[player,50,true,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "PushToTalkDirect" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
	dayz_lastCheckBit = diag_tickTime;
	[player,15,false,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "Chat" and (diag_tickTime - dayz_lastCheckBit > 10)) then {
	dayz_lastCheckBit = diag_tickTime;
	[player,15,false,(getPosATL player)] spawn player_alertZombies;
};
if (_dikCode in actionKeys "User20" and (diag_tickTime - dayz_lastCheckBit > 5)) then {
	dayz_lastCheckBit = diag_tickTime;
	_nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf";
};

// numpad 8 0x48 now pgup 0xC9 1
if ((_dikCode == 0xC9 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User15")) then {
	DZE_Q = true;
};
// numpad 2 0x50 now pgdn 0xD1
if ((_dikCode == 0xD1 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User16")) then {
	DZE_Z = true;
};


// numpad 8 0x48 now pgup 0xC9 0.1
if ((_dikCode == 0xC9 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User13")) then {
	DZE_Q_alt = true;
};
// numpad 2 0x50 now pgdn 0xD1
if ((_dikCode == 0xD1 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User14")) then {
	DZE_Z_alt = true;
};


// numpad 8 0x48 now pgup 0xC9 0.01
if ((_dikCode == 0xC9 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User7")) then {
	DZE_Q_ctrl = true;
};
// numpad 2 0x50 now pgdn 0xD1
if ((_dikCode == 0xD1 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User8")) then {
	DZE_Z_ctrl = true;
};




// numpad 4 0x4B now Q 0x10
if (_dikCode == 0x10 or (_dikCode in actionKeys "User17")) then {
	DZE_4 = true;
};		
// numpad 6 0x4D now E 0x12
if (_dikCode == 0x12 or (_dikCode in actionKeys "User18")) then {
	DZE_6 = true;
};
// numpad 5 0x4C now space 0x39
if (_dikCode == 0x39 or (_dikCode in actionKeys "User19")) then {
	DZE_5 = true;
};

// F key
if ((_dikCode == 0x21 and (!_alt and !_ctrl)) or (_dikCode in actionKeys "User6")) then {
	DZE_F = true;
};

if (_dikCode == 0xDB) then {
    if (tagName) then {tagName = false;titleText ["Group name tags OFF","PLAIN DOWN"];titleFadeOut 4;} else {tagName = true;titleText ["Group name tags ON","PLAIN DOWN"];titleFadeOut 4;};
    _handled = true;
};
 
if (_dikCode in actionKeys "TacticalView") then {_handled = true;};

/* anti-dupe */
if (_dikCode in actionKeys "Gear") then {
    _nill = execvm "custom\esc.sqf";
};  
 
_handled

Если пригодится, вот мой, подключал я сюда: беруши,Snap build,dzgm, и анти-дюп от джастбуллета

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


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


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

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

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

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


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

Войти

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


Войти сейчас

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

    • Автор: ClouD
      До недавнего времени все было идеально. Несколько дней не заходил на сервер. Решил на днях зайти посмотреть что да как и получаю следующее.
      В лобби коннект прекрасный, дохожу до выбора персонажа, прогружаюсь, получаю кик от инфистар и белый экран.
      Логов инфистара не вижу. Сервер на хостинге.
      Прошу помочь с проблемой. До этого на сервере ничего не устанавливалось, не изменялось, кроме меня доступ к файлам никто не имеет.
       
      P.S. Если такая тема уже имеется извиняйте. Поиск перерыл и перечитал все что нашлось похожее.
    • Автор: NickPS
      Такая проблема. Кик игроков при заходе в сейф зону. В основном в Ленцбурге на карте Напф.
      -При этом выдается сообщение: Бла-бла, такой-то игрок has been kicked by BattlEye: SetPos Restriction #0
      -Так же пишет в DZEU пишет (может поможет делу):"Could not connect to BE Master. Update attempt failed"
      -Некоторые игроки не могут зайти в игру: "Сессия прервана". В игре выглядит как на скриншоте, извиняюсь за шакалистость картинки.

       
      Прошу вас помочь, пришлось даже сервер отключать, т.к. это все не дело. =(
    • Автор: JustBullet
      КОМПЛЕКСНАЯ ЗАЩТА
      В этой теме я буду описывать свои способы,
      свои скрипты и не только, в общем то что
      я делаю для защиты своего сервера.
       
      * Всем привет, хотелось бы поделиться со всеми дабы приблизить хоть немного к запрету от багоюзании, все мы здесь за одно ведь так? Я пытался сделать скрипт не нагружающий сервер, черпал идеи и в целом методом проб и ошибок получилось на мой взгляд не так уж плохо, он защищает от дюпа, конечно далеко не от всех способов но тем ни менее создает больше геморроя для желающего...
       
       
      БЛОКИРУЕМ МЕНЮ ЕСК ПОСЛЕ ПОСЕЩЕНИЯ ИНВЕНТАРЯ
       
      Что он делает?: Функция проста, блокирует меню выхода ескейп, после открытия инвентаря.
       
      Что было добавлено в Обновлении 1.0.2 ?: Все просто, если игрок открывает инвентарь и понижает свой ФПС то ему выводится черный экран с надписью "Анти-Дюп : У Вас слишком низкий ФПС, Вы заблокированы...". По окончанию времени экран снимается с блокировки либо если ФПС станет выше заданной нормы. На данный момент если ФПС ниже 5ти то происходит блокировка.   Чем отличается от других?: Он не делает постоянных циклов(проверок) на всех игроков(игрока), задумка была проста, сделать достаточно эффективный но не нагружаемый сервер функционал. Функция срабатывает только при открытии инвентаря.  
      Инструкция:
       
      1. Создаем файл ИМЯ.sqf в любом удобном месте в Вашей папки с миссиями.
       
      2. Копируем в него этот код:
      ///////////////////////////////////////////////////// //////////////* author by JustBullet */////////////// ///////////////////* ver. 1.0.2 *//////////////////// ///////////////////////////////////////////////////// if (isNil "_triggerBLOCK") then {     _triggerBLOCK = true;     _triggerFPS = false;     private ["_timer","_playerFPS"];     disableSerialization;     waituntil{!isnull (finddisplay 46)};     _timer = 28;     while {_timer > 0} do {         _timer = _timer - 0.1;         _playerFPS = round(diag_fps);         if (_playerFPS < 5) then {             startLoadingScreen ["Анти-Дюп : У Вас слишком низкий ФПС, Вы заблокированы...", "DayZ_loadingScreen"];             disableUserInput true;             _triggerFPS = true;         } else {             endLoadingScreen;             disableUserInput false;             _triggerFPS = false;         };         if !(isnull (finddisplay 49)) then {             findDisplay 106 closeDisplay 1;             finddisplay 49 closeDisplay 2;             systemchat format["Анти-Дюп : Вы не cможете выйти еще: %1 сек. после доступа к инвентарю.", round(_timer)];         };         uiSleep 0.1;     };     if (_triggerFPS) then {endLoadingScreen; disableUserInput false; _triggerFPS = false;};     _triggerBLOCK = nil;     _triggerFPS = nil; };  
      3. Открываем dayz_spaceInterrupt.sqf и находим эти строчки: (должен быть изменен путь на кастомный в compile.sqf)
      // esc if (_dikCode == 0x01) then {     DZE_cancelBuilding = true;     call dayz_EjectPlayer; }; после них вставляем это:
      /* anti-dupe by JustBullet */ if (_dikCode in actionKeys "Gear") then {     _nill = execvm "ВАШ\ПУТЬ\ДО\ИМЯ.sqf"; };  Собственно все. Честной игры на Ваших серверах друзья!
       
      ДОПОЛНЕНИЕ К СКРИПТУ ВЫШЕ
       
      Вместе они работают в паре достаточно хорошо, скрипт который я сейчас Вам покажу, делал не полностью я, скажу как есть, позаимствовал на каком то сервере идею, переделал его без цикла и т.п, у меня фетиш на то что бы не было постоянных проверок на игрока, как то так...
       
      Что мы делаем?: Блокируем инвентарь рядом с местами хранения.
       
      Инструкция:
       
      1. Создаем файл ИМЯ.sqf в любом удобном месте в Вашей папки с миссиями.
       
      2. Копируем в него этот код:
      private ["_block_access", "_vehType", "_message", "_typeOf"]; _block_access = [ "WeaponHolder" ,"VaultStorage" ,"LockboxStorage" ,"TentStorage" ,"TentStorageDomed" ,"TentStorageDomed2" ,"Wooden_shed_DZ" ,"WoodShack_DZ" ,"StorageShed_DZ" ,"GunRack_DZ" ,"WoodCrate_DZ" ,"DebugBoxPlayer_DZ" ,"OutHouse_DZ" ]; _vehType = ["LandVehicle","Air","Ship","Tank"]; disableSerialization; _message = {     systemchat "Анти-Дюп : Запрещено выходить рядом с местом хранения.";     (findDisplay 49) closedisplay 0; }; waitUntil {!isNull findDisplay 49}; findDisplay 106 closeDisplay 1; if ( (count nearestObjects [player, _vehType, 5]) > 0 ) exitWith {     [] call _message; }; {     _typeOf = typeOf _x;     if (_typeOf in _block_access) exitWith {         [] call _message;     }; } foreach (nearestObjects [player, ["All"], 5]); Открываем description.ext и ищем эту строку:
      onPauseScript = "";  Изменяем ее на:
      onPauseScript = "ВАШ\ПУТЬ\ДО\ИМЯ.sqf";  
      Готово!
       
       
      СПОСОБ БЛОКИРУЮЩИЙ ДЮП ПРИ СМЕНЕ СКИНА
       
      Это уже обсуждалась на форуме но я решил добавить тут как дополнение и скажу от себя, проверенно и работает замечательно.
       
      Инструкция:
       
      Открываем player_switchModel.sqf: (разумеется делаем его кастомным)
       
      В самый верх кода над private вставляем это:
      startLoadingScreen ["Анти-Дюп : Меняем скин...", "DayZ_loadingScreen"]; теперь в самый низ кода вставляем это:
      endLoadingScreen; При смене скина, у игрока будет черный экран, этого конечно он не заметит но для тех кто решит дюпнуть при понижении фпса, будет виден лишь черный экран с надписью "Анти-Дюп : Меняем скин..."... 
       
      После тестов и времени игры игроков на моем сервере, нашлись умельцы которые запоминали место инвентаря на экране и умудрялись ткнуть в слепую, по этому я всем советую дополнить его еще незначительным но эффективным способом. Он всего лишь выполняет блокировку инвентаря на момент смены скина.
       
      Так же добавляем в самый верх кода:
      disableUserInput true; и в самый низ кода:
      disableUserInput false; Теперь Ваш сервер стал лучше.
       
      БЛОКИРУЕМ СМЕНУ СКИНА ПРИ ОДЕТОМ РЮКЗАКЕ
       
      Что он делает?: Просто не дает сменить скин при одетом рюкзаке, это избавляет от многих проблем на самом деле...
       
      Инструкция:
       
      Делаем кастомным player_wearClothes.sqf и находим в нем эту строку:
      if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_9"), "PLAIN DOWN"] }; Заменяем ее на эту: (либо добавляем если она там закомментирована)
      if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [("Анти-Дюп : Необходимо снять рюкзак."), "PLAIN DOWN"] }; Готово!
       
      БЛОКИРУЕМ СБОР СЕЙФА ЕСЛИ РЯДОМ ИГРОК
       
      У меня не было ни когда этих проблем ну или по крайней мере я не знаю о них но скрипт работает хорошо и по этому я тем ни менее решил перестраховаться и добавить его на свой сервер, поскольку способ легкий и эффективный к тому же не нагружает ресурсы сервера, источник я не помню, просто на каком то форуме где то там в середине темы нашел и посчитал это не плохим способом... В общем ка кто так..
       
      Что он делает?: Не дает запаковать сейф, если рядом с вами игрок либо зомби.
       
      Инструкция:
       
      Открываем player_packVault.sqf и находим строку: (разумеется делаем его кастомным)
      if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_15") , "PLAIN DOWN"]; }; После нее добавляем: _countplayers = count nearestObjects [player, ["CAManBase"], 5]; if (_countplayers > 1) exitWith { cutText [format["Анти-Дюп : Вы не можете выполнить это действие, если рядом с Вами игрок или зомби!"], "PLAIN DOWN"]; };
      *********************************************************************
      Я буду описывать свои способы в этой теме на этом замечательном форуме, как я борюсь с этим у себя на сервере RU14 и прошу всех делиться со своими решениями, если вы считаете что они лучше того что предлагаю я. Помните что мы занимаемся общим делом и не стоит это ныкать в своих серверах, делитесь и вместе мы будем сила! Пока что это все что я использую на данный момент.