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

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

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

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

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

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

Как и обещал, буду обновлять скрипт, добавил защиту от понижения ФПС. Первый пост к сожалению не могу обновить  :bad:  если администраторы читают эту тему, дайте мне пожалуйста модерку в этой теме если это возможно.

 

Что добавил? Все просто, если игрок открывает инвентарь и понижает свой ФПС то ему выводится черный экран с надписью "Анти-Дюп : У Вас слишком низкий ФПС, Вы заблокированы...". По окончанию времени экран снимается с блокировки либо если ФПС станет выше заданной нормы. На данный момент если ФПС ниже 5ти то происходит блокировка. Эта функция написана сегодня и я еще не протестировал ее у себя на сервере но не вижу ни каких причин что бы переживать, я не думаю что кто то играет с ФПС меньше чем 5. Потом я подумаю как оптимизировать по лучше в коде эту функцию а пока вот так:

/////////////////////////////////////////////////////
//////////////* 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;
};

Скажем нет дюперам  :tongue:

Укажи еще куда поставить) новый файл подключать? 

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


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

 

Укажи еще куда поставить) новый файл подключать? 

 

 

 

В файл GearBlock.sqf, убедись что он подключен в dayz_spaceInterrupt.sqf:

/* anti-dupe by JustBullet */
if (_dikCode in actionKeys "Gear") then {
    _nill = execvm "Scripts\GearBlock.sqf";
};  

И перечитай первое сообщение, там более подробная инструкция.

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


Ссылка на сообщение
Поделиться на других сайтах
Что он делает?: Функция проста, блокирует меню выхода ескейп, после открытия инвентаря.
 
Что было добавлено в Обновлении 1.0.2 ?: Все просто, если игрок открывает инвентарь и понижает свой ФПС то ему выводится черный экран с надписью "Анти-Дюп : У Вас слишком низкий ФПС, Вы заблокированы...". По окончанию времени экран снимается с блокировки либо если ФПС станет выше заданной нормы. На данный момент если ФПС ниже 5ти то происходит блокировка. Эта функция написана сегодня и я еще не протестировал ее у себя на сервере но не вижу ни каких причин что бы переживать, я не думаю что кто то играет с ФПС меньше чем 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";
}; 

В общем решил написать что бы не приходилось первый пост перечитывать и вникать людям.

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

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


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

Еще нашел дюп с сейфом или техникой и переодеванием. Расписывать не буду, прошу скрипт с запретом смены скина у сейфов/техники/локбоксов.

Это элементарно, просто откройте player_wearClothes.sqf и добавте в private новые пременные:
private ["_block_change_clothes","_typeOf","_stop"]; 

после private вставьте этот блок:

_stop = false;
_block_change_clothes = ["НАИМЕНОВАНИЕ ТЕХНИКИ","И ЧТО ТАМ ВАМ НАДО"];
{
    _typeOf = typeOf _x;
    if (_typeOf in _block_change_clothes ) exitWith {_stop = true;};
} foreach (nearestObjects [player, ["All"], 30]);
if (_stop) exitWith {systemchat "ТУТ НАПИШИТЕ ИЗ ЗА ЧЕГО НЕЛЬЗЯ МЕНЯТЬ СКИН.";};

сам не проверял да и проверять тут не чего, 30 это радиус запрета...

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

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


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

Не получилось

что именно? Не получилось встать с кровати и сделать? :D

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


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

что именно? Не получилось встать с кровати и сделать? :D

именно персонаж переоделся около сейфа, палатки, локбокса. Класснеймы вписал, не спрашивай)

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


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

именно персонаж переоделся около сейфа, палатки, локбокса. Класснеймы вписал, не спрашивай)

Ну хорошо, давайте попробуем так, сразу после private вставьте этот код:

{
    if (typeOf _x in DZE_LockableStorage) exitWith {DZE_ActionInProgress = true;};
} foreach (nearestObjects [player, ["All"], 10]);
if (DZE_ActionInProgress) exitWith {systemchat "Запрещено переодеваться рядом с местами хранения."; DZE_ActionInProgress = false;};

Это что касается сейфов. Попробуйте и отпишитесь...

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


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

Я забыл что Вы просили еще про технику, в общем забудьте все что до этого писал, ловите:

 

1. Делаете кастомным player_wearClothes.sqf, открываете его и сразу под private вставляете этот код:

_AllVehicles = count nearestObjects [player, ["AllVehicles"], 10];
{
    if (typeOf _x in DZE_LockableStorage) exitWith {DZE_ActionInProgress = true;};
} foreach (nearestObjects [player, ["All"], 10]);
if ((DZE_ActionInProgress) || (_AllVehicles > 1)) exitWith {systemchat "Запрещено переодеваться рядом с местами хранения или техникой."; DZE_ActionInProgress = false;};

10 это расстояние запрета на переодевание от игрока до сейфов или техники.

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


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

 

Я забыл что Вы просили еще про технику, в общем забудьте все что до этого писал, ловите:

 

1. Делаете кастомным player_wearClothes.sqf, открываете его и сразу под private вставляете этот код:

_AllVehicles = count nearestObjects [player, ["AllVehicles"], 10];
{
    if (typeOf _x in DZE_LockableStorage) exitWith {DZE_ActionInProgress = true;};
} foreach (nearestObjects [player, ["All"], 10]);
if ((DZE_ActionInProgress) || (_AllVehicles > 1)) exitWith {systemchat "Запрещено переодеваться рядом с местами хранения или техникой."; DZE_ActionInProgress = false;};

10 это расстояние запрета на переодевание от игрока до сейфов или техники.

Спасибо! Очень помогло!

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


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

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



кстати первый пост обновлен.

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


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

а он не будет конфликтовать с антидюпом от инфи?

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


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

а он не будет конфликтовать с антидюпом от инфи?

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

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


Ссылка на сообщение
Поделиться на других сайтах
Решил официально дописать функционал, поскольку обращаются многие форумчане по этой проблеме. Ловите:
 
 
ЗАПРЕТ НА СМЕНУ ОДЕЖДЫ РЯДОМ С МЕСТАМИ ХРАНЕНИЯ, ТЕХНИКОЙ, ТРУПАМИ, РЮКЗАКАМИ
 
Что он делает: Скрипт запрещает переодеваться рядом с трупами игроков или зомби, рюкзаками, сейфами, техникой и любыми мне известными местами хранения на расстоянии 10 метров.
 
От себя: Я добавил массив _storage, для того что бы каждый мог добавить индекс если это необходимо, потому что сервера разные и может у Вас есть что то не стандартное, добавляйте по примеру в массиве. Если Вы нашли не перечисленный индекс в массиве то попрошу сообщить мне об этом. Если вы захотите изменить расстояние проверки то обратите внимание на число 10 в коде, это расстояние в игровых метрах, просто поменяйте её на то что Вам нужно.
 
Инструкция:
1. Делаете кастомным player_wearClothes.sqf, открываете его и сразу под private вставляете этот код:
//////////////////////////////////////////////////
///////////// Antidupe By JustBullet /////////////
//                 ver. 1.0.3                   //
//////////////////////////////////////////////////
// Скрипт запрещает переодеваться рядом с       //
// трупами игроков или зомби, сейфами, рюкзаками//
// техникой и любыми мне известными местами     //
// хранения на расстоянии 10 метров,            //
// на своё усмотрение Вы можете добавить        //
// в массив _storage еще что Вам нужно.         //
//////////////////////////////////////////////////

_storage = [
"TentStorage","TentStorageDomed","TentStorageDomed2","Wooden_shed_DZ",
"WoodShack_DZ","StorageShed_DZ","WoodCrate_DZ","DebugBoxPlayer_DZ","OutHouse_DZ",
"GunRack_DZ","DZ_Patrol_Pack_EP1","CZ_VestPouch_EP1","DZ_ALICE_Pack_EP1",
"DZ_Assault_Pack_EP1","DZ_Backpack_EP1","DZ_British_ACU","DZ_CivilBackpack_EP1",
"DZ_Czech_Vest_Puch","DZ_TK_Assault_Pack_EP1","DZ_TerminalPack_EP1",
"DZ_GunBag_EP1","DZ_LargeGunBag_EP1"
];
_AllVehicles = count nearestObjects [player, ["AllVehicles"], 10];
{
    if ((typeOf _x in DZE_LockableStorage) || (typeOf _x in _storage)) exitWith {DZE_ActionInProgress = true;};
} foreach (nearestObjects [player, ["All"], 10]);
if ((DZE_ActionInProgress) || (_AllVehicles > 1)) exitWith {systemchat "Запрещено переодеваться рядом с местами хранения или техникой."; DZE_ActionInProgress = false;};

Лайк не повредит  :good: ...

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

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


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

А как насчет дюпа с обрывом связи? Уверен, от этого дюпа страдают 90% серверов. За основу решения можно взять бота отсюда но сделать как то чтоб он появлялся при выходе

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


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

А как насчет дюпа с обрывом связи? Уверен, от этого дюпа страдают 90% серверов. За основу решения можно взять бота отсюда но сделать как то чтоб он появлялся при выходе

По моему мой первый скрипт не дает это сделать, ведь что бы оборвать связь нужно выйти а для того что бы выйти нужно нажать выход в меню, а что бы успеть нажать выход, нужно понизить ФПС, а если понизить ФПС то будет черный экран и заблокируется инвентарь... Возможно еще какой способ есть, напишите конкретный порядок действий.

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

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


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

Порядок действий:

1. Скинуть лут

2. Сразу выдернуть шнур инета

3. ???????

4. PROFIT

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


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

Порядок действий:

1. Скинуть лут

2. Сразу выдернуть шнур инета

3. ???????

4. PROFIT

что б**ть?

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


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

что б**ть?

Да есть такое, таким часто пользовались. На форуме есть скрипт от F507DMT. Хоть его не все любят, но по сути он должен лочить потерю инета.

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


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

Да есть такое, таким часто пользовались. На форуме есть скрипт от F507DMT. Хоть его не все любят, но по сути он должен лочить потерю инета.

ааа, я вспоминаю, это тот из за которого не могут выйти?

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


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

ааа, я вспоминаю, это тот из за которого не могут выйти?

Угу.

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


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

Но тот скрипт тоже не совсем правильное решение. Под раздачу попадают даже те, кто не дюпает.

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


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

Но тот скрипт тоже не совсем правильное решение. Под раздачу попадают даже те, кто не дюпает.

Как мне кажется вся сложность что бы проверить разрыв связи усилиями движка армы, если я не ошибаюсь, по этому тот скрипт вроде как лучшее решение на сегодняшний день из публичных скриптов но буду думать как будет время, что можно придумать.

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


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

Как мне кажется вся сложность что бы проверить разрыв связи усилиями движка армы, если я не ошибаюсь, по этому тот скрипт вроде как лучшее решение на сегодняшний день из публичных скриптов но буду думать как будет время, что можно придумать.

Повторюсь, на мой взгляд лучше всего оставлять бота при любом выходе из игры и синхронизировать его с бд.

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


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

1. Оптимизировал код, улучшено логическое построение.

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

 

В двух словах, меньше проверок, значительно лучше функционал при той же защите. Приятной игры, ловите:

 

БЛОКИРУЕМ МЕНЮ ЕСК ПОСЛЕ ПОСЕЩЕНИЯ ИНВЕНТАРЯ

 

/////////////////////////////////////////////////////
//////////////* author by JustBullet *///////////////
///////////* Block ESC Menu ver. 1.0.3 */////////////
/////////////////////////////////////////////////////

if (isNil "JustBlock") then {
    private ["_timer","_fps"];
    JustBlock = true;
    disableSerialization;
    waituntil{!isnull (finddisplay 46)};
    _timer = 30;
    _trigger = false;
    while {_timer > 0} do {
        _timer = _timer - 0.1;
        if !(isnull (finddisplay 49)) then {
            findDisplay 106 closeDisplay 1;
            finddisplay 49 closeDisplay 2;
            _fps = round(diag_fps);

            switch true do {
                case (!(_trigger) && (_fps <= 4)): {_trigger = true; disableUserInput true;};
                case ((_trigger) && (_fps > 4)): {endLoadingScreen; _trigger = false; disableUserInput false;};
            };

            if (_trigger) then {startLoadingScreen ["Анти-Дюп : Cлишком низкий ФПС, Вы заблокированы...", "DayZ_loadingScreen"];}
            else {systemchat format["Анти-Дюп : Вы не cможете выйти еще: %1 сек. после доступа к инвентарю.", round(_timer)];};
        };
        uiSleep 0.1;
    };
    if (_trigger) then {endLoadingScreen; disableUserInput false;};
    JustBlock = nil;
};

Нет предела черт побери совершенству...

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

       
      Прошу вас помочь, пришлось даже сервер отключать, т.к. это все не дело. =(
    • Автор: Kotmajor
      Доброго времени суток! и с праздником ребят!

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

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

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

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

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

Поддержка