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

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

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

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

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

[Pause bot on mission] - Паузим ботов на миссиях

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

MagicByte MagicByte MagicByte

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

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

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


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

Спасибо за скрипт! Теперь и у меня будет нормальный фпс)

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


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

косяк с телепортом 1 бота (!) во время заморозки тут исправлен? ) 

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


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

косяк с телепортом 1 бота (!) во время заморозки тут исправлен? ) 

а в чем заключался косяк?

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


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

в техническом плане не в курсе. визуально, когда мисиия появляется,и она заморожена, 1 бот тп каждую секудну так же как админ в инфике на "5".

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

это видят не только админы, это видят и простые игроки.

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

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


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

в техническом плане не в курсе. визуально, когда мисиия появляется,и она заморожена, 1 бот тп каждую секудну так же как админ в инфике на "5".

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

это видят не только админы, это видят и простые игроки.

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

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


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

Всё работает отилчно)хорогая вещь :good:

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


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

У меня с этой фичей боты начали то появляться, то исчезать во время захвата миссии. Игроки жалуются. На секторе боты вообще оказываются таинственным образом в 500 м. от своего изначального местоположения, и зачистить его становится ту изи. Никто не встречался с таким?

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


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

У меня с этой фичей боты начали то появляться, то исчезать во время захвата миссии. Игроки жалуются. На секторе боты вообще оказываются таинственным образом в 500 м. от своего изначального местоположения, и зачистить его становится ту изи. Никто не встречался с таким?

а какую дальность вы выставили?

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


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

По мне, так проще по другому, вместо этого -

После старта миссии -

Создать только маркер.

Ждать появления игроков в радиусе  ~2км.

Если игроки есть - создать миссию полноценно.

 

Если миссия создана полноценно, проверять -

Если игроки вышли из пределов ~2км - удалить миссию, оставив только маркер.

 

Можно еще подсчет ботов убитых вести, но это уже на любителя..

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


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

а какую дальность вы выставили?

Ничего не менял, оставил 800.

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


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

Ничего не менял, оставил 800.

я ставил 1200, проблем не было

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


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

я ставил 1200, проблем не было

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

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

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


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

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

вполне возможно, при хорошем онлайне проявляется очень много косяков

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


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

печаль беда... дикий спам в рпт вот этим :

 

10:04:37   Error position: <_matchingObjectsArray);

if (_numberOfMa>
10:04:37   Error Undefined variable in expression: _matchingobjectsarray
10:04:37 File z\addons\dayz_server\WAI\compile\cache_units.sqf, line 168
10:04:37 Error in expression <_numberOfMatchingObjectsNumber = (count _matchingObjectsArray);

if (_numberOfMa>

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


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

Переменная не определена.

так определена же в private [

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


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

В секции привата, ты указываешь какие переменные в данном скрипте, будут использоваться только внутри данного скрипта.

А еще есть такое понятие, как - инициализация переменной.

Если переменной не существует (не инициализирована), будь она хоть 100 раз перечислена в секции привата, никого не волнует.

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


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

У меня с этой фичей боты начали то появляться, то исчезать во время захвата миссии. Игроки жалуются. На секторе боты вообще оказываются таинственным образом в 500 м. от своего изначального местоположения, и зачистить его становится ту изи. Никто не встречался с таким?

Тоже столкнулся с такой проблемой. Они у меня ещё после смерти передвигаються.

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


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

В секции привата, ты указываешь какие переменные в данном скрипте, будут использоваться только внутри данного скрипта.

А еще есть такое понятие, как - инициализация переменной.

Если переменной не существует (не инициализирована), будь она хоть 100 раз перечислена в секции привата, никого не волнует.

подскажи пожалуйста как ее инициализировать?

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


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

подскажи пожалуйста как ее инициализировать?

для массива так -

if (isNil "_matchingobjectsarray") then

{_matchingobjectsarray = [];};

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


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

печаль беда... дикий спам в рпт вот этим :

 

10:04:37   Error position: <_matchingObjectsArray);

if (_numberOfMa>

10:04:37   Error Undefined variable in expression: _matchingobjectsarray

10:04:37 File z\addons\dayz_server\WAI\compile\cache_units.sqf, line 168

10:04:37 Error in expression <_numberOfMatchingObjectsNumber = (count _matchingObjectsArray);

if (_numberOfMa>

Я В самом низу поставил и логи чисты!

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

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


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

для массива так -

if (isNil "_matchingobjectsarray") then

{_matchingobjectsarray = [];};

спасибо! +

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


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

печаль беда... дикий спам в рпт вот этим :

 

10:04:37   Error position: <_matchingObjectsArray);

if (_numberOfMa>

10:04:37   Error Undefined variable in expression: _matchingobjectsarray

10:04:37 File z\addons\dayz_server\WAI\compile\cache_units.sqf, line 168

10:04:37 Error in expression <_numberOfMatchingObjectsNumber = (count _matchingObjectsArray);

if (_numberOfMa>

Вот исправление:

/**
 
Please take my Special Thanks,
- RimBlock ( http://epochmod.com/forum/index.php?/user/12612-rimblock/ ) ***
- MGM ( http://epochmod.com/forum/index.php?/user/16852-mgm/ )
 
Author: Martin ( http://epochmod.com/forum/index.php?/user/30755-ukmartin/ )
 
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 1 of the License, or
(at your option) any later version.
 
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
 
**/
private ["_unitGroup","_countRange","_timeTillFreeze","_state","_stateFroze","_timeFroze","_matchingObjectsArray","_numberOfMatchingObjectsNumber","_playerCount"];
 
_unitGroup = _this select 0;
 
/**************************************/
/**Range for Re-Activation*************/
/****** Default: 800 ******************/
_countRange = 800;
/**************************************/
/**************************************/
/**Time untill units are Frozen again**/
/************* Default: 30 ************/
_timeTillFreeze = 30;
/**************************************/
/**************************************/
/****** Log Actions to RPT File? ******/
/*********** Default: true ************/
freeze_log = true;
/**************************************/
/**************************************/
 
 
/**
fnc_freeze: Used to Freeze the Units of the Group
Parameters: Unit Group (Type: Object / Group)
Behaviour: For Each Unit of the given Group the AI will be disabled (force them to freeze)
Addition: Set's a Variable with the time the AI is frozen and the state
**/
fnc_freeze = {
    private ["_unitGroup"];
    _unitGroup = _this select 0;
    
    if (freeze_log) then {
        diag_log(format["[DEBUG] Freezing Units of Group: %1", _unitGroup]);
    };
    
    {
        _x disableAI "TARGET";
        sleep 0.05;
        _x disableAI "AUTOTARGET";
        sleep 0.05;
        _x disableAI "MOVE";
        sleep 0.05;
        _x disableAI "ANIM";
        sleep 0.05;
        _x disableAI "FSM";
        sleep 0.05;
    } foreach units _unitGroup;
    
    _unitGroup setVariable["FrozenState",[time,true],true];
};
 
/**
fnc_unfreeze: Used to Unfreeze the Units of the Group
Parameters: Unit Group (Type: Object / Group)
Behaviour: For Each Unit of the given Group the AI will be enabled
Addition: Set's a Variable with the time the AI is Unfrozen and the state
**/
fnc_unfreeze = {
    private ["_unitGroup"];
    _unitGroup = _this select 0;
    
    if (freeze_log) then {
        diag_log(format["[DEBUG] Un-Freezing Units of Group: %1", _unitGroup]);
    };
    
    {
        _x enableAI "TARGET";
        sleep 0.05;
        _x enableAI "AUTOTARGET";
        sleep 0.05;
        _x enableAI "MOVE";
        sleep 0.05;
        _x enableAI "ANIM";
        sleep 0.05;
        _x enableAI "FSM";
        sleep 0.05;
    } foreach units _unitGroup;
    
    _unitGroup setVariable["FrozenState",[time,false],true];
};
 
//Call the Freeze Function, in Order to make the Units freeze
[_unitGroup] spawn fnc_freeze;
 
 
/**
While {true}: Infinite Loop, that runs every 15 Seconds
Parameters: None
Behaviour: Counts nearby Units, if it found a Unit it will check if the Unit is a Player
Behaviour: If the Unit is a Player, the Frozen Group will be defrosted.
Behaviour: If there is no Player near that Group for _timeTillFreeze the AI will be frozen again
Addition: None
**/
while {true} do {
	_matchingObjectsArray = ((units _unitGroup) select 0) nearEntities ["CAManBase",_countRange];
	if(!isnil "_matchingObjectsArray") then {
		_numberOfMatchingObjectsNumber = (count _matchingObjectsArray);
		
		if (_numberOfMatchingObjectsNumber >= 1) then {
			
			_state = _unitGroup getVariable["FrozenState",[time,true]];
			_timeFroze = _state select 0;
			_stateFroze = _state select 1;
			
			if (_stateFroze) then {
			
				{
					if (isPlayer _x) then {
						
						if (freeze_log) then {
							diag_log(format["[DEBUG] %1 Triggered Un-Freezing of Group: %2", _x, _unitGroup]);
						};
						[_unitGroup] spawn fnc_unfreeze;
						
					} else {
					
						if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then {
				
							if (freeze_log) then {
								diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]);
							};
							
							[_unitGroup] spawn fnc_freeze;
						
						};
					};
					
				} foreach _matchingObjectsArray;
				
			} else {
			
				if (!_stateFroze && ((time - _timeFroze) > _timeTillFreeze)) then {
				
					if (freeze_log) then {
						diag_log(format["[DEBUG] Re-Freezing Group: %1", _unitGroup]);
					};
					[_unitGroup] spawn fnc_freeze;
					
				};
				
			};
			
		};
	};
	
	sleep 15;
	
};

После этого у вас не будет спама в RPT

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton v2.7 -конвертер в интернете, например: https://onecompiler.com/python2/3ycz55xew
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      [Альтернатива] Метод на основе PHP:
      <?php /** * This is how you get user id (bohemia id) like you see in .ADM files from steam id. */ $steam_id = "76514925976798981"; $user_id = base64url_encode(hash('sha256', $steam_id, true)); function base64url_encode($data) { $b64 = base64_encode($data); if ($b64 === false) { return false; } $url = strtr($b64, '+/', '-_'); return $url; } echo $user_id; [Альтернатива] Метод для javascript - node.js:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result);  
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() Код для PHP:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result); '2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • Автор: vitacite
      Бесплатные проекты - "пацаны собрались и замутили сервачок" долго не живут.  В этом я убеждался много раз. Нет сначала на интузиазме эффективность неплохая, но затем все это затухает управляемость команды падает.  Начинаются вопросы - "а почему это должен делать я?",  отмазки "да я на даче сегодня", "да у меня командировка" и тд...  + кто-то должен спонсировать оплату сервера, антидудосов и прочей лобуды, а такого человека интерес тоже может пропасть в любой момент. А чтобы проект был хороший - кому-то надо реально "въебывать", как на второй работе, и  кому-то постоянно вливать туда бабло.
      Поэтому, лично я, считаю любой некоммерческий проект заранее проваленным!  Побегать недельку другую с друзьями это да. Что-то более серьезное, не тратьте свои силы и время! Как минимум на  тему сталкера я таких проектов видел 10 штук и в некоторых даже сам поучаствовал. Начиналось все амбициозно и даже набирало онлайн до 100 человек. Но заканчивалось все одинаково 3-4 месяца и с десято скучающих тел, на безлюдном сервере.  С точки зрения администации, игроки ведут себя как проститутки, бегая с сервера на сервер, друзья перешли, или потому что на том добавили новый прикольный скрип, или прикольную тачку, или тут плохой пинг, а там хороший, или админ козел забанил за читы и тд.  а все эти приколюхи требуют денег, а игровое сообщество не очень расположено их платить за некачественный контент. Да и сама администрация достаточно быстро забивает и расслабляется.
      (я сейчас не говорю о конкретном проекте, скорее это собирательный образ халявы).
       
      А теперь по-существу.  Так сколько должен стоить контент с хотя бы приемлемым качеством?  

      Свое мнение я написал ниже.
       
       
      Спасибо за внимание.
       
      А что думаете Вы напишите ниже в комментариях!
       
       
    • Автор: DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • Автор: Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
  • Наш выбор

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

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

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

Поддержка