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

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

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

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

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

DayZ Standalone v0.62.142963 Server Files + рабочий респавн персонажа и лута

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

BorizzK запускает она вполне себе отлично на самом деле, видимо настроена не верно. В личку оставьте скайп или дискорд свой, вечером добавлю, помогу настроить софтинку.
По поводу BEC. Попробуйте "DayZServer_0.62_Public\!Other_from_server\BEC" отсюда BEC. Если снова не выйдет, также через скайп или дискорд помогу

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

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


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

123new Спасибо!

Ни скайпа ни дискорда у меня нет

Дискорд теперь наверное есть - я зарегился вроде - но не разбирался еще что к чему

Всю жизнь пользуюсь только аськой и электронной почтой )))

 

BEC пробовал все какие найти смог

Вчера просто уставший был, потому что-то не пошло наверное

Однако у Server Manager интерфейс просто ужасен - такое впечатление, что писал школьник по шаблонам

Нафиг в разных строках указывать пути, в отдельной имя исполняемого файла причем расширение она сама подставляет

нафиг было такое городить, в упор не пойму

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


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

BorizzK сколько людей, столько и мнений. Вы бы составили список того, что на ваш взгляд было бы лучше, удобнее и функциональнее на ваш взгляд в Server Manager, и я уверен, разработчик этой программы учтет это.
По поводу BEC. Так заработал он или нет в конечном счете то? Попробуйте на свежую голову не торопясь никуда, как правило проблем с ним нету.
Сразу напомню, что сервер игры использует 64-х битный exe и battleye dll BEServer_x64.dll с настройками BEServer_x64.cfg, а вот BEС по указываемому в настройках пути использует лишь конфиг BEServer.cfg. И если данные в этих файлах у вас отличаются, разумеется, Bec не сконнектится.
Также, порекоммендовал бы обратить внимание на параметр --dsc в параметрах запуска bec, он интересно влияет на сам BEC, можете поиграться с его добавлением и убиранием. Особенно актуально на актуальной версии BEC.
Если всетаки ничего не выйдет, скину свою настройку BEC вечером.

По поводу дискорда. Чтобы вас добавить нужен ваш идентификатор в сети дискорда, пишется он в левом нижнем его углу рядом с кнопками микрофона, звука и настроек. Например Juse#73642

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


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

123new 

Ок

Принял

До дома доеду часов через 5

 

А пока разбираюсь с переменными

 

Есть затык

 

в Init.sqf определил глобальную переменную

DZ_PVP_MISSON_LOCATION = "SZ";

 

в dbLoadPlayer.sqf в зависимости от вышеуказанной переменной мне нужно вызвать создание соответствующего массива с координатами спавна на СЗ, СОБОР и тп

 

В dbLoadPlayer.sqf пытаюсь сделать так

1 присвоить локальной переменной значение глобальной

_DZ_PVP_MISSON_LOCATION = missionNamespace getVariable "DZ_PVP_MISSON_LOCATION";

 

2 опередлить массивы с координатами

posFromSpawnPlayerSZ =
[
 [4959.93,10108.76],
 [4030.00,10750.00]
 ];

posFromSpawnPlayerSOB =
[
 [6010.52,7742.64,0.0],
 [6053.10,7044.12,0.0]
 ];

 

3. В зависимости от значения переменной _DZ_PVP_MISSON_LOCATION присвоить переменной posFromSpawnPlayer значение соответствующего массива

 

if ( _DZ_PVP_MISSON_LOCATION == "SZ" ) then {

posFromSpawnPlayer = posFromSpawnPlayerSZ; - это не правильно - а как правильно?

}

 

...Правда я не все еще перелопатил про переменные в скриптинге АРМА...

Кстати, есть ли варианты задать переменную в файле конфига сервера и получить доступ к этой переменной из всех скриптов миссии?

 

Спасибо!

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


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

BorizzK делаем проще.
в init

DZ_PVP_MISSON_LOCATION = "SZ"; 

в dbLoadPlayer.sqf

 if ( _DZ_PVP_MISSON_LOCATION == "SZ" ) then {
	posFromSpawnPlayerSOB =
    [
     [6010.52,7742.64,0.0],
     [6053.10,7044.12,0.0]
    ];
	_pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
};

 

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


Ссылка на сообщение
Поделиться на других сайтах
4 часа назад, BorizzK сказал:

...Правда я не все еще перелопатил про переменные в скриптинге АРМА...

Кстати, есть ли варианты задать переменную в файле конфига сервера и получить доступ к этой переменной из всех скриптов миссии?

не знаю такой возможности

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


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

123new 

 

ошибочка )))

_pos = posFromSpawnPlayerSOB select (floor random (count posFromSpawnPlayerSOB));

 

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


event_playerKilled.sqf

Цитата

 

private["_agent","_uid"];
_agent = _this select 0;
_killer = _this select 1;
_uid = getClientUID (owner _agent);
_uid2 = getClientUID(owner _killer);

if ( vehicle _agent != _agent ) then
{
    _agent action ["Eject", vehicle _agent];
};

_textToAll   = "";
if (isNull _killer) then
{
 _textToAll   = format["%1 kill yourself",(name _agent)];
}
else
{
 if (_agent == _killer) then
 {
  _textToAll   = format["%1 kill yourself",(name _agent)];
 }
 else
 {
  _killer setVariable ["kplayers",_kplayers];  
  _name_gun_killer = displayName (itemInHands _killer);
  _textToAll   = format["%1 kill player %2 with %3",(name _killer),(name _agent),_name_gun_killer];
 };
};

 

Это в лог выводит нормально

Цитата

diag_log _textToAll;

 

А  вызов _send_message_rpt_and_log; не приводит к выводу сообщения в чат игры - [_x, _message_kill, "colorStatusChannel"] call fnc_playerMessage;

DZ_Enable_Kill_Messages в init.sqf конечно же true

Цитата

_send_message_rpt_and_log = { 
 {
  [_x, _message_kill, "colorStatusChannel"] call fnc_playerMessage;
 } foreach players; 
};

 

if (DZ_Enable_Kill_Messages) then
{
 _message_kill = _textToAll;
 [_message_kill] spawn _send_message_rpt_and_log;
};

 

 

 

Цитата

_agent setVariable ["bleedingsources","[]"];
_agent setVariable ["timeOfDeath",diag_tickTime];

respawningPlayer = _agent getVariable["respawningPlayer", false];

//if (_uid == "") exitWith
//{
// diag_log format["Disconnected player %1 was killed by %2",typeOf _agent, name _killer];
//};

//diag_log format["Player %1 was killed by %2 at %3",name _agent, name _killer,diag_tickTime];
//admin_log format["%1(uid=%2) was KILLED by %3(uid=%4).",name _agent, getPlayerUID _agent, name _killer, getPlayerUID _killer];

// respawn calls dbDestroyCharacter on it's own
if (DZ_MP_CONNECT and not respawningPlayer) then
{
 dbDestroyCharacter [_uid, _agent];
};

null = [_agent, DZ_TIME_DELETE_DEAD_PLAYER ] spawn {
    sleep (_this select 1);
    deletevehicle (_this select 0);
 diag_log format ["Dead agent %1 player is deleted in timestamp %2!",(_this select 1), time];
};

 

 

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

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


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

BorizzK потому как у вас скрипт устаревший. Я эту ошибку исправил в последней сборке, вот event_playerkilled.sqf текущий

private["_agent","_uid"];
_agent = _this select 0;
_killer = _this select 1;
_uid = getClientUID (owner _agent);
_uid2 = getClientUID(owner _killer);

if ( vehicle _agent != _agent ) then 
{ 
    _agent action ["Eject", vehicle _agent]; 
};

_textToAll   = "";
if (isNull _killer) then 
{
	_textToAll   = format["%1 kill yourself",(name _agent)];
}
else
{
	if (isNull _agent) then 
	{
		_textToAll   = format["Disconnected %1 kill yourself",(name _agent)];
	} else 
	{
		if (_agent == _killer) then 
		{
			_textToAll   = format["%1 kill yourself",(name _agent)];
		}
		else
		{
			if (_killer isKindOf "ZombieBase") then 
			{
				_textToAll   = format["%1 killed zombie",(name _agent)];
			} else
			{
				_kplayers = (_killer getVariable ["kplayers",0]);	
				_killer setVariable ["kplayers",(_kplayers + 1)];		
				_name_gun_killer = displayName (itemInHands _killer);
				if (_name_gun_killer == "") then { _name_gun_killer = "punch(hands)";};
				_dist_kill = ((position _killer) distance _agent);
				_textToAll   = format["%1 kill player %2 with [%3] form distance %4",(name _killer),(name _agent),_name_gun_killer,_dist_kill];
			};
		};
	};
}; 

diag_log format["KIL LOG: %1",_textToAll];

if (DZ_Enable_Kill_Messages) then
{
	{
		[_x, _textToAll, "colorStatusChannel"] call fnc_playerMessage;
	} foreach players;
};

_agent setVariable ["bleedingsources","[]"];
_agent setVariable ["timeOfDeath",diag_tickTime];

respawningPlayer = _agent getVariable["respawningPlayer", false];

// respawn calls dbDestroyCharacter on it's own
if (DZ_MP_CONNECT and not respawningPlayer) then
{
	dbDestroyCharacter [_uid, _agent];
};

null = [_agent, DZ_TIME_DELETE_DEAD_PLAYER ] spawn {
    sleep (_this select 1);
    deletevehicle (_this select 0); 
	diag_log format ["Dead agent %1 player is deleted in timestamp %2!",(_this select 0), time];
};

 

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


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

123new Хотелось бы разобрать ситуацию )))

 

И вообще, давайте на ты

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

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


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

после перезахода на сервер копия персонажа остается что делать ?

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


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

BorizzK а что разбирать, должно быть как минимум вот так по правильному

 _send_message_rpt_and_log = { 
 {
  [_x, _this, "colorStatusChannel"] call fnc_playerMessage;
 } foreach players; 
};
if (DZ_Enable_Kill_Messages) then
{
 _textToAll spawn _send_message_rpt_and_log;
}; 

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

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


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

urengoy88 если вы dbloadplayer меняли, разумеется будет оставаться, т.к. бог знает что вы там наизменяли

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


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

    _v = _agent createInInventory "HuntingKnife";
    _v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
    _v = _agent createInInventory "Food_CanTacticalBacon";

только эти добавил и все

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


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

123new 

Обратил внимание, что в Вашей новой сборке Вы добавили ожидание при спавне в dbLoad_Player.sqf

Оно правда корявое немного, но работает вроде

 

Так же заметил - при респавне игрока который unconscious иногда игрок респавнится нормально, а иногда после респавна сразу you are dead, можно бегат и итп - но нет взаимодействия с инвентарем и respawn неактивен и приходится перезаходить...

 

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


Ссылка на сообщение
Поделиться на других сайтах
7 часов назад, BorizzK сказал:

123new 

Обратил внимание, что в Вашей новой сборке Вы добавили ожидание при спавне в dbLoad_Player.sqf

Оно правда корявое немного, но работает вроде

 

Так же заметил - при респавне игрока который unconscious иногда игрок респавнится нормально, а иногда после респавна сразу you are dead, можно бегат и итп - но нет взаимодействия с инвентарем и respawn неактивен и приходится перезаходить...

 

Мертвый он после появления , это потому что стоит респаун 30 секунд и за это время его убивает зомби 

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


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

linucks Привет

Я это понял

 

Игрок ванкунси

Жмем респавн

Выпоняется код из dbLoad_Player.sqf

Конкретно по событию onClientRespawn - выполняется процедура _clientRespawn; опиаснная в этом скрипте

 

Но агент-то с таким уид все еще есть на  сервере и умирает - и событие конечно же влияет и на отреспавневшегося игрока

 

Мое мнение - нужно принудительно грохать игрока если он ванкунси и жмет респавн

Те  в начале процедуры _clientRespawn нужно прописать его смерть - если он ванкунси от зомби - то его убил зомби, если от игрока, то убийство от игрока

 

Времени сейчас нет заняться поплотнее - урывками ковыряюсь

 

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


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

urengoy88 скиньте ваш dbloadplayer.sqf посмотрю
 

7 часов назад, BorizzK сказал:

linucks

Мое мнение - нужно принудительно грохать игрока если он ванкунси и жмет респавн

Те  в начале процедуры _clientRespawn нужно прописать его смерть - если он ванкунси от зомби - то его убил зомби, если от игрока, то убийство от игрока

 

 

это и так есть

_uid = getClientUID _id;
[_uid, _agent] call fnc_dbDestroyProfile;

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

17 часов назад, BorizzK сказал:

123new 

Обратил внимание, что в Вашей новой сборке Вы добавили ожидание при спавне в dbLoad_Player.sqf

Оно правда корявое немного, но работает вроде

 

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

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


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

Alex39 сборка dankdayz? Смешно, смешно, да еще и с рекламой, и хрен поймешь как ставить))

особенно мне нравится в ней

dbInitEconomy ["http://62.hive.dankdayz.org:8080/"];

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

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

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


Ссылка на сообщение
Поделиться на других сайтах
36 минут назад, 123new сказал:

Alex39 сборка dankdayz? Смешно, смешно, да еще и с рекламой, и хрен поймешь как ставить))

особенно мне нравится в ней


dbInitEconomy ["http://62.hive.dankdayz.org:8080/"];

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

Ну реклама есть, вырежи ее, а так хорошая сборка, весь спавн  и скрипты в PBO лежит, в аддоне, щас тестируем, и всем нравится

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


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

//thanks 123new
posFromSpawnPlayer = 
[
    [12978.985352,9727.786133,0.0],
    [12991.748047,7287.136719,0.0],
    [12891.515625,3673.904785,0.0],
    [13905.519531,12489.755859,0.0],
    [10294.267578,2822.940918,0.0],
    [13676.062500,12262.099609,0.0],
    [10757.389648,2662.214844,0.0],
    [13099.121094,6393.073242,0.0],
    [13048.381836,3867.787354,0.0],
    [12983.053711,5539.139160,0.0],
    [13337.080078,5120.864258,0.0],
    [12942.089844,8393.175781,0.0],
    [13326.754883,5489.095703,0.0],
    [12628.758789,10495.178711,0.0],
    [9529.755859,1791.217529,0.0],
    [12566.361328,6682.603027,0.0],
    [13395.850586,5902.893555,0.0],
    [13400.793945,4120.798340,0.0],
    [13520.839844,4223.753906,0.0],
    [13552.681641,4653.762695,0.0],
    [13159.864258,5401.762695,0.0],
    [13594.320313,4064.055176,0.0],
    [13476.730469,6136.301270,0.0],
    [11709.407227,3388.221191,0.0],
    [13441.593750,5262.234375,0.0],
    [13426.652344,5747.389160,0.0],
    [12574.364258,3592.838623,0.0],
    [13155.216797,5475.265625,0.0],
    [9691.710938,1750.488647,0.0],
    [13529.917969,3968.353760,0.0],
    [10875.846680,2518.956543,0.0],
    [11578.048828,3159.044922,0.0],
    [10820.407227,2257.452393,0.0],
    [12465.262695,8009.000977,0.0],
    [13617.405273,12759.806641,0.0],
    [12354.499023,3480.040283,0.0],
    [13571.149414,3056.800293,0.0],
    [13384.993164,3946.686768,0.0],
    [11846.833008,3477.815918,0.0],
    [11049.366211,2801.670654,0.0],
    [13504.011719,5004.529297,0.0],
    [13587.850586,6026.528320,0.0],
    [11075.847656,3031.246826,0.0],
    [9823.205078,2712.662354,0.0],
    [11439.040039,3315.189453,0.0],
    [12950.263672,5226.752930,0.0],
    [9193.719727,1935.760254,0.0],
    [9479.743164,2373.589111,0.0],
    [13170.000000,7406.352051,0.0],
    [13262.844727,7225.861328,0.0],
    [12789.221680,10918.727539,0.0],
    [12800.711914,10542.708008,0.0],
    [14172.258789,12304.997070,0.0],
    [12343.653320,10169.873047,0.0],
    [14263.791016,12748.735352,0.0],
    [13610.134766,11223.590820,0.0],
    [13846.640625,12050.081055,0.0],
    [12135.720703,10209.888672,0.0],
    [13416.827148,11840.477539,0.0],
    [12929.765625,8578.303711,0.0],
    [13288.770508,11415.183594,0.0],
    [13101.216797,7657.375488,0.0],
    [13138.783203,6737.337891,0.0],
    [13171.646484,6534.843262,0.0],
    [12917.356445,9356.586914,0.0],
    [13048.117188,8357.667969,0.0],
    [13312.712891,6771.159668,0.0],
    [12689.791016,8256.066406,0.0],
    [12773.998047,7792.608398,0.0],
    [12889.967773,8792.861328,0.0],
    [12651.287109,8914.446289,0.0],
    [12796.349609,10361.371094,0.0],
    [13084.968750,7938.640137,0.0],
    [12614.712891,7304.662598,0.0],
    [13367.192383,10837.138672,0.0],
    [12868.693359,9054.500000,0.0],
    [12729.841797,11285.530273,0.0],
    [14054.989258,11341.375000,0.0],
    [13374.454102,6454.316895,0.0],
    [13852.414063,11686.062500,0.0],
    [13366.394531,4905.995605,0.0],
    [14749.782227,13248.712891,0.0],
    [13261.652344,11785.191406,0.0],
    [13056.826172,4848.545410,0.0],
    [15135.173828,13901.139648,0.0],
    [11201.583984,3186.677246,0.0],
    [14338.071289,12859.577148,0.0],
    [14071.417969,12033.381836,0.0],
    [13112.375000,11280.756836,0.0],
    [13111.719727,10975.507813,0.0],
    [11914.292969,3402.007080,0.0],
    [14415.284180,14025.288086,0.0],
    [14697.602539,13418.411133,0.0],
    [12936.726563,10734.027344,0.0],
    [14537.363281,14755.781250,0.0],
    [15017.886719,13892.493164,0.0],
    [14887.168945,14547.986328,0.0],
    [12332.004883,8170.038574,0.0],
    [10032.810547,2446.574219,0.0],
    [12221.616211,8693.677734,0.0],
    [10969.238281,2895.127197,0.0],
    [9460.575195,2171.624756,0.0],
    [14017.8,2959.1,0.0]
 ];
_clientNew =
{
    diag_log format["CONNECTION: _id: %1 _uid: %2 _name: %3",_id,_uid,_name];
    _id spawnForClient { titleText ["Please wait!","BLACK IN",3];};
    
    if (DZ_Enable_Login_Disconnect_Messages) then
    {
        {
            [_x, format["Player %1 connected to server",_name], "colorStatusChannel"] call fnc_playerMessage;
        } foreach players;
    };
    
    _savedChar = _uid call fnc_dbFindInProfile;
    _isAlive = _savedChar select 0;
    _isOnline = true;
    _pos = _savedChar select 2;
    diag_log format["CONNECTION DEBUG INFO: _isAlive: %1 _isOnline: %2 _pos: %3 _savedChar: %4 ",_isAlive,_isOnline,_pos,_savedChar];
    if (_isAlive) then
    {
        diag_log format ["CONNECTION: TRY LOAD PLAYER!"];        
            _uid = getClientUID _id;        
            _uidFound = 0;
            for "_i" from 0 to count players - 1 do
            {
                _actPlayer = players select _i;
                _actPlayerUid = getPlayerUID _actPlayer;
                if ( _actPlayerUid == _uid ) then { _uidFound = 1; };
            };
            if ( _uidFound == 0 ) then 
            { 
                    _agent = _uid call fnc_dbLoadFromProfile;                            
                        call init_newBody;
            
                        //----- simple scheduler part -----
                        _freePos = connectedPlayers find 0;
                        connectedPlayers set [_freePos,_id];    

                        
                        null = _agent call fnc_reloadWeaponOnSpawn;                        
                        null = [_agent,call compile callFunction ["DataBaseRead","QUICKBAR",format["UID_%1",_uid]]] call fnc_addQuickBarItems;
            } else
            {
                diag_log format["CONNECTION: Player %1 has double UID on connect server, we are don't load him!",_uid];
                _id statusChat ["Your have double UID on connect server, we are don't load this.","ColorImportant"];
            };
    };
    if (!_isAlive) then 
    {
        diag_log format["CONNECTION: SPAWN NEW PLAYER!"];

        //load data
        _top = getArray(configFile >> "cfgCharacterCreation" >> "top");
        _bottom = getArray(configFile >> "cfgCharacterCreation" >> "bottom");
        _shoe = getArray(configFile >> "cfgCharacterCreation" >> "shoe");
        
        _myTop = _top select (floor random (count _top));  
        _myBottom = _bottom select (floor random (count _bottom));  
        _myShoe = _shoe select (floor random (count _shoe));  
        _mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
        
        _pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
        
        _agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];
        {null = _agent createInInventory _x} forEach [_myTop,_myBottom,_myShoe];
        //_v = _agent createInInventory "tool_flashlight";
        //_v = _agent createInInventory "tool_transmitter";
        //_v = _agent createInInventory "consumable_battery9V";_v setVariable ["power",30000];
        //_v = _agent createInInventory "Consumable_Chemlight_White";
        _v = _agent createInInventory "HuntingKnife";
        _v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
        _v = _agent createInInventory "Food_CanTacticalBacon";
        _v = _agent createInInventory "Food_CanTacticalBacon";
        _v = _agent createInInventory "Food_CanTacticalBacon";
        _v = _agent createInInventory "Consumable_Rags"; _v setQuantity 3;
           if (_uid in array_donategroup_ADMIN) then
           {
                _isdonate = true; 
                _v = _agent createInInventory "Gorka_pants_summer";
                _v = _agent createInInventory "Gorka_up_summer";
                _v = _agent createInInventory "BagTortilla";
                _v = _agent createInInventory "MilitaryBoots_Black";
                _v = _agent createInInventory "GorkaHelmet_complete_Green";
                _v = _agent createInInventory "HighCapacityVest_Olive";
                _v = _agent createInInventory "WorkingGloves_Brown";
                _v = _agent createInInventory "BalaclavaMask_Green";
                _v = _agent createInInventory "Medical_Morphine";
                _v = _agent createInInventory "Medical_BandageDressing";_v setVariable ["quantity",1];
                _v = _agent createInInventory "Medical_TransfusionKit";
                _v = _agent createInInventory "AKM";
                _v = _agent createInInventory "Att_Bipod_Atlas";
                _v = _agent createInInventory "Att_Light_Universal";
                _v = _agent createInInventory "Att_Buttstock_AK_Wood";
                _v = _agent createInInventory "Att_Optic_PSO1";
                _v = _agent createInInventory "Att_Handguard_AK_Rail_Black";
                _v = _agent createInInventory "Att_Suppressor_AK";
                _v = _agent createInInventory "M_AKM_drum_Black";
                _v = _agent createInInventory "M_AKM_drum_Black";
                _v = _agent createInInventory "M_AKM_drum_Black";
                _v = _agent createInInventory "FireFighterAxe";
                _v = _agent createInInventory "glock19";
                _v = _agent createInInventory "Att_Suppressor_Pistol";
                _v = _agent createInInventory "M_Glock_15Rnd";
                _v = _agent createInInventory "M_Glock_15Rnd";
                _v = _agent createInInventory "CombatKnife";
                _v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
                _v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
                _v = _agent createInInventory "Food_Rice";_v setVariable ["quantity",1];
                _v = _agent createInInventory "Consumable_Matchbox";_v setVariable ["quantity",100];
                _v = _agent createInInventory "Tool_LeatherSewingKit";
                _v = _agent createInInventory "Tool_SewingKit";            
           };
        _agent call init_newPlayer;
        call init_newBody;
    };
    diag_log format ["CONNECT: FINISHED!"];    
};

_clientRespawn = 
{
    _uid = getClientUID _id;
    [_uid, _agent] call fnc_dbDestroyProfile;
    _id spawnForClient { titleText ["Respawning....","BLACK IN",3];};
    diag_log format["RESPAWN: NEW PLAYER! UID: %1",_uid];

    //load data
    _top = getArray(configFile >> "cfgCharacterCreation" >> "top");
    _bottom = getArray(configFile >> "cfgCharacterCreation" >> "bottom");
    _shoe = getArray(configFile >> "cfgCharacterCreation" >> "shoe");
        
    _myTop = _top select (floor random (count _top));  
    _myBottom = _bottom select (floor random (count _bottom));  
    _myShoe = _shoe select (floor random (count _shoe));  
    _mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
        
    _pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
        
    _agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];
    {null = _agent createInInventory _x} forEach [_myTop,_myBottom,_myShoe];
    _v = _agent createInInventory "HuntingKnife";
    _v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
    _v = _agent createInInventory "Food_CanTacticalBacon";
    _v = _agent createInInventory "Food_CanTacticalBacon";
    _v = _agent createInInventory "Food_CanTacticalBacon";
    _v = _agent createInInventory "Consumable_Rags"; _v setQuantity 3;
    _agent call init_newPlayer;
    call init_newBody;
};

_disconnectPlayer =
{
    _uid = getClientUID _id;
    _killed = [0,_uid,_agent] call dbSavePlayer;
    _vm = [_agent,_id,_name,_queueTime,_killed,_uid,DZ_Enable_Login_Disconnect_Messages,DZ_TIME_EXIT_AGENT] spawn 
    {
        private ["_agent","_id","_uid","Enable_Login_Disconnect_Messages","TIME_EXIT_AGENT"];
        _agent = _this select 0;
        _id = _this select 1; 
        _name = _this select 2;
        _queueTime = _this select 3;
        _killed = _this select 4;
        _uid = _this select 5;
        Enable_Login_Disconnect_Messages = _this select 6;
        TIME_EXIT_AGENT = _this select 7;
        
        if (Enable_Login_Disconnect_Messages) then
        {
            {
                [_x, format["Player %1 disconnected from server",_name], "colorStatusChannel"] call fnc_playerMessage;
            } foreach players;
        };
    
        diag_log format ["DISCONNECT: Player %1 name %2 UID %3 try disconnect from server.", _agent, _name, _uid];    
        
        if (vehicle _agent != _agent) then
        {
            moveOut _agent;
        };
        if (!isNull _agent) then
        {
            sleep 1;
            _agent playAction "SitDown";
            sleep TIME_EXIT_AGENT;

            if ( !_killed ) then {
                [1,_uid,_agent] call dbSavePlayer;
            };
            if ((lifeState _agent == "ALIVE") and (not captive _agent)) then
            {
                _agent call dbSavePlayerPrep;
                _result = [_uid, _agent] call fnc_dbSaveToProfile;
                diag_log format ["DISCONNECT: Player %1 name %2 UID %3 saved server when him disconnect!", _agent, _name, _uid];    
            };
        };
        if (!isNull _agent) then
        {
            endDisconnectPlayer [ _agent, _uid ];
        };
    
    };
};
// Create player on connection
onClientRespawn _clientRespawn;
onPlayerConnecting _clientNew;
onPlayerDisconnected _disconnectPlayer;

 

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

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


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

Alex39 ну не знаю, не знаю, без официальной системы спавна сервера и подспавна-переспавна лута, машин, зомби и животных вешать все на скрипты это не то что 19 век, а как кастрированного кота разомножаться заставлять) как по мне это тот еще бред. Да и в моей сборке вполне все работает нормально, пока проблем не вижу. А перемещать скрипты в пбо можно и у меня, это проблемы не составляет, только зачем? Делать лишний геморой себе же на жопу в виде постоянных распаковок и запаковок?
urengoy88 разумеется он у вас остается при перезаходе, т.к. при выходе с сервера у вас он стоит на сервере время, указанное в DZ_TIME_EXIT_AGENT

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

Вот поглядите мой dbloadplayer.sqf с актуального пакета сервера в теме:

//thanks 123new
posFromSpawnPlayer = 
[
	[12978.985352,9727.786133,0.0],
	[12991.748047,7287.136719,0.0],
	[12891.515625,3673.904785,0.0],
	[13905.519531,12489.755859,0.0],
	[10294.267578,2822.940918,0.0],
	[13676.062500,12262.099609,0.0],
	[10757.389648,2662.214844,0.0],
	[13099.121094,6393.073242,0.0],
	[13048.381836,3867.787354,0.0],
	[12983.053711,5539.139160,0.0],
	[13337.080078,5120.864258,0.0],
	[12942.089844,8393.175781,0.0],
	[13326.754883,5489.095703,0.0],
	[12628.758789,10495.178711,0.0],
	[9529.755859,1791.217529,0.0],
	[12566.361328,6682.603027,0.0],
	[13395.850586,5902.893555,0.0],
	[13400.793945,4120.798340,0.0],
	[13520.839844,4223.753906,0.0],
	[13552.681641,4653.762695,0.0],
	[13159.864258,5401.762695,0.0],
	[13594.320313,4064.055176,0.0],
	[13476.730469,6136.301270,0.0],
	[11709.407227,3388.221191,0.0],
	[13441.593750,5262.234375,0.0],
	[13426.652344,5747.389160,0.0],
	[12574.364258,3592.838623,0.0],
	[13155.216797,5475.265625,0.0],
	[9691.710938,1750.488647,0.0],
	[13529.917969,3968.353760,0.0],
	[10875.846680,2518.956543,0.0],
	[11578.048828,3159.044922,0.0],
	[10820.407227,2257.452393,0.0],
	[12465.262695,8009.000977,0.0],
	[13617.405273,12759.806641,0.0],
	[12354.499023,3480.040283,0.0],
	[13571.149414,3056.800293,0.0],
	[13384.993164,3946.686768,0.0],
	[11846.833008,3477.815918,0.0],
	[11049.366211,2801.670654,0.0],
	[13504.011719,5004.529297,0.0],
	[13587.850586,6026.528320,0.0],
	[11075.847656,3031.246826,0.0],
	[9823.205078,2712.662354,0.0],
	[11439.040039,3315.189453,0.0],
	[12950.263672,5226.752930,0.0],
	[9193.719727,1935.760254,0.0],
	[9479.743164,2373.589111,0.0],
	[13170.000000,7406.352051,0.0],
	[13262.844727,7225.861328,0.0],
	[12789.221680,10918.727539,0.0],
	[12800.711914,10542.708008,0.0],
	[14172.258789,12304.997070,0.0],
	[12343.653320,10169.873047,0.0],
	[14263.791016,12748.735352,0.0],
	[13610.134766,11223.590820,0.0],
	[13846.640625,12050.081055,0.0],
	[12135.720703,10209.888672,0.0],
	[13416.827148,11840.477539,0.0],
	[12929.765625,8578.303711,0.0],
	[13288.770508,11415.183594,0.0],
	[13101.216797,7657.375488,0.0],
	[13138.783203,6737.337891,0.0],
	[13171.646484,6534.843262,0.0],
	[12917.356445,9356.586914,0.0],
	[13048.117188,8357.667969,0.0],
	[13312.712891,6771.159668,0.0],
	[12689.791016,8256.066406,0.0],
	[12773.998047,7792.608398,0.0],
	[12889.967773,8792.861328,0.0],
	[12651.287109,8914.446289,0.0],
	[12796.349609,10361.371094,0.0],
	[13084.968750,7938.640137,0.0],
	[12614.712891,7304.662598,0.0],
	[13367.192383,10837.138672,0.0],
	[12868.693359,9054.500000,0.0],
	[12729.841797,11285.530273,0.0],
	[14054.989258,11341.375000,0.0],
	[13374.454102,6454.316895,0.0],
	[13852.414063,11686.062500,0.0],
	[13366.394531,4905.995605,0.0],
	[14749.782227,13248.712891,0.0],
	[13261.652344,11785.191406,0.0],
	[13056.826172,4848.545410,0.0],
	[15135.173828,13901.139648,0.0],
	[11201.583984,3186.677246,0.0],
	[14338.071289,12859.577148,0.0],
	[14071.417969,12033.381836,0.0],
	[13112.375000,11280.756836,0.0],
	[13111.719727,10975.507813,0.0],
	[11914.292969,3402.007080,0.0],
	[14415.284180,14025.288086,0.0],
	[14697.602539,13418.411133,0.0],
	[12936.726563,10734.027344,0.0],
	[14537.363281,14755.781250,0.0],
	[15017.886719,13892.493164,0.0],
	[14887.168945,14547.986328,0.0],
	[12332.004883,8170.038574,0.0],
	[10032.810547,2446.574219,0.0],
	[12221.616211,8693.677734,0.0],
	[10969.238281,2895.127197,0.0],
	[9460.575195,2171.624756,0.0],
	[14017.8,2959.1,0.0]
 ];
_clientNew =
{
	diag_log format["CONNECTION: _id: %1 _uid: %2 _name: %3",_id,_uid,_name];
	_id spawnForClient { titleText ["Please wait!","BLACK IN",3];};
	
	if (DZ_Enable_Login_Disconnect_Messages) then
	{
		{
			[_x, format["Player %1 connected to server",_name], "colorStatusChannel"] call fnc_playerMessage;
		} foreach players;
	};
	
	_savedChar = _uid call fnc_dbFindInProfile;
	_isAlive = _savedChar select 0;
	_isOnline = true;
	_pos = _savedChar select 2;
	diag_log format["CONNECTION DEBUG INFO: _isAlive: %1 _isOnline: %2 _pos: %3 _savedChar: %4 ",_isAlive,_isOnline,_pos,_savedChar];
	if (_isAlive) then
	{
		diag_log format ["CONNECTION: TRY LOAD PLAYER!"];		
			_uid = getClientUID _id;		
			_uidFound = 0;
			for "_i" from 0 to count players - 1 do
			{
				_actPlayer = players select _i;
				_actPlayerUid = getPlayerUID _actPlayer;
				if ( _actPlayerUid == _uid ) then { _uidFound = 1; };
			};
			if ( _uidFound == 0 ) then 
			{ 
					_agent = _uid call fnc_dbLoadFromProfile;							
						call init_newBody;
			
						//----- simple scheduler part -----
						_freePos = connectedPlayers find 0;
						connectedPlayers set [_freePos,_id];	

						
						null = _agent call fnc_reloadWeaponOnSpawn;						
						null = [_agent,call compile callFunction ["DataBaseRead","QUICKBAR",format["UID_%1",_uid]]] call fnc_addQuickBarItems;
			} else
			{
				diag_log format["CONNECTION: Player %1 has double UID on connect server, we are don't load him!",_uid];
				_id statusChat ["Your have double UID on connect server, we are don't load this.","ColorImportant"];
			};
	};
	if (!_isAlive) then 
	{
		diag_log format["CONNECTION: SPAWN NEW PLAYER!"];

		//load data
		_top = getArray(configFile >> "cfgCharacterCreation" >> "top");
		_bottom = getArray(configFile >> "cfgCharacterCreation" >> "bottom");
		_shoe = getArray(configFile >> "cfgCharacterCreation" >> "shoe");
		
		_myTop = _top select (floor random (count _top));  
		_myBottom = _bottom select (floor random (count _bottom));  
		_myShoe = _shoe select (floor random (count _shoe));  
		_mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
		
		_pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
		
		_agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];
		{null = _agent createInInventory _x} forEach [_myTop,_myBottom,_myShoe];
		//_v = _agent createInInventory "tool_flashlight";
		//_v = _agent createInInventory "tool_transmitter";
		//_v = _agent createInInventory "consumable_battery9V";_v setVariable ["power",30000];
		//_v = _agent createInInventory "Consumable_Chemlight_White";
		_v = _agent createInInventory "Consumable_Roadflare";
		_v = _agent createInInventory "Consumable_Rags"; _v setQuantity 1;
		   if (_uid in array_donategroup_ADMIN) then
		   {
				_isdonate = true; 
				_v = _agent createInInventory "Gorka_pants_summer";
				_v = _agent createInInventory "Gorka_up_summer";
				_v = _agent createInInventory "BagTortilla";
				_v = _agent createInInventory "MilitaryBoots_Black";
				_v = _agent createInInventory "GorkaHelmet_complete_Green";
				_v = _agent createInInventory "HighCapacityVest_Olive";
				_v = _agent createInInventory "WorkingGloves_Brown";
				_v = _agent createInInventory "BalaclavaMask_Green";
				_v = _agent createInInventory "Medical_Morphine";
				_v = _agent createInInventory "Medical_BandageDressing";_v setVariable ["quantity",1];
				_v = _agent createInInventory "Medical_TransfusionKit";
				_v = _agent createInInventory "AKM";
				_v = _agent createInInventory "Att_Bipod_Atlas";
				_v = _agent createInInventory "Att_Light_Universal";
				_v = _agent createInInventory "Att_Buttstock_AK_Wood";
				_v = _agent createInInventory "Att_Optic_PSO1";
				_v = _agent createInInventory "Att_Handguard_AK_Rail_Black";
				_v = _agent createInInventory "Att_Suppressor_AK";
				_v = _agent createInInventory "M_AKM_drum_Black";
				_v = _agent createInInventory "M_AKM_drum_Black";
				_v = _agent createInInventory "M_AKM_drum_Black";
				_v = _agent createInInventory "FireFighterAxe";
				_v = _agent createInInventory "glock19";
				_v = _agent createInInventory "Att_Suppressor_Pistol";
				_v = _agent createInInventory "M_Glock_15Rnd";
				_v = _agent createInInventory "M_Glock_15Rnd";
				_v = _agent createInInventory "CombatKnife";
				_v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
				_v = _agent createInInventory "Drink_Canteen";_v setVariable ["quantity",1000];
				_v = _agent createInInventory "Food_Rice";_v setVariable ["quantity",1];
				_v = _agent createInInventory "Consumable_Matchbox";_v setVariable ["quantity",100];
				_v = _agent createInInventory "Tool_LeatherSewingKit";
				_v = _agent createInInventory "Tool_SewingKit";        	
		   };
		_agent call init_newPlayer;
		call init_newBody;
	};
	if (DZ_TIME_WAITING_SPAWN_PLAYER > 0) then 
    {
		[_id,DZ_TIME_WAITING_SPAWN_PLAYER] spawnForClient {
		
				sTIMER = _this select 1;
				null = [] spawn { while {sTIMER > -1} do {setEVUser -5;};};

				disableUserInput true;
				
				while {sTIMER > -1} do {
					titleText[format["Spawning in %1 seconds... Please wait...",sTIMER],"PLAIN",10e10];
					sTIMER = sTIMER - 1;
					sleep 1;    
				};
				
				disableUserInput false;    
			
				titleText["","PLAIN",10e10];
			};
    };
	diag_log format ["CONNECT: FINISHED!"];	
};

_clientRespawn = 
{
	_uid = getClientUID _id;
	[_uid, _agent] call fnc_dbDestroyProfile;
	_id spawnForClient { titleText ["Respawning....","BLACK IN",3];};
	diag_log format["RESPAWN: NEW PLAYER! UID: %1",_uid];

	//load data
	_top = getArray(configFile >> "cfgCharacterCreation" >> "top");
	_bottom = getArray(configFile >> "cfgCharacterCreation" >> "bottom");
	_shoe = getArray(configFile >> "cfgCharacterCreation" >> "shoe");
		
	_myTop = _top select (floor random (count _top));  
	_myBottom = _bottom select (floor random (count _bottom));  
	_myShoe = _shoe select (floor random (count _shoe));  
	_mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
		
	_pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
		
	_agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];
	{null = _agent createInInventory _x} forEach [_myTop,_myBottom,_myShoe];
	_v = _agent createInInventory "Consumable_Roadflare";
	_v = _agent createInInventory "Consumable_Rags"; _v setQuantity 1;
	_agent call init_newPlayer;
	call init_newBody;
};

_disconnectPlayer =
{
	_uid = getClientUID _id;
	_killed = [0,_uid,_agent] call dbSavePlayer;
	_vm = [_agent,_id,_name,_queueTime,_killed,_uid,DZ_Enable_Login_Disconnect_Messages,DZ_TIME_EXIT_AGENT] spawn 
	{
		private ["_agent","_id","_uid","Enable_Login_Disconnect_Messages","TIME_EXIT_AGENT"];
		_agent = _this select 0;
		_id = _this select 1; 
		_name = _this select 2;
		_queueTime = _this select 3;
		_killed = _this select 4;
		_uid = _this select 5;
		Enable_Login_Disconnect_Messages = _this select 6;
		TIME_EXIT_AGENT = _this select 7;
		
		if (Enable_Login_Disconnect_Messages) then
		{
			{
				[_x, format["Player %1 disconnected from server",_name], "colorStatusChannel"] call fnc_playerMessage;
			} foreach players;
		};
	
		diag_log format ["DISCONNECT: Player %1 name %2 UID %3 try disconnect from server.", _agent, _name, _uid];	
		
		if (vehicle _agent != _agent) then
		{
			moveOut _agent;
		};
		if (!isNull _agent) then
		{
			sleep 1;
			_agent playAction "SitDown";
			sleep TIME_EXIT_AGENT;

			if ( !_killed ) then {
				[1,_uid,_agent] call dbSavePlayer;
			};
			if ((lifeState _agent == "ALIVE") and (not captive _agent)) then
			{
				_agent call dbSavePlayerPrep;
				_result = [_uid, _agent] call fnc_dbSaveToProfile;
				diag_log format ["DISCONNECT: Player %1 name %2 UID %3 saved server when him disconnect!", _agent, _name, _uid];	
			};
		};
		if (!isNull _agent) then
		{
			endDisconnectPlayer [ _agent, _uid ];
		};
	
	};
};
// Create player on connection
onClientRespawn _clientRespawn;
onPlayerConnecting _clientNew;
onPlayerDisconnected _disconnectPlayer;

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

Замечу сразу, что в нем если DZ_TIME_EXIT_AGENT выставить больше чем DZ_TIME_WAITING_SPAWN_PLAYER то при заходе на сервер вы будете видеть персонажа на сервере своего, который выходил оттуда.

В init миссии сервера у меня стоят настройки так, если кому интересно

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

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


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

Немного подправленный dbLoad_Player.sqf

 

Ошибочка - ; забыл в конце одного условия поставить )))

поправил

 

//thanks 123new

_DZ_PVP_MISSON_LOCATION = missionNamespace getVariable "DZ_PVP_MISSON_LOCATION"; 

if ( _DZ_PVP_MISSON_LOCATION == "SZ" ) then {
posFromSpawnPlayer = 
[
	[4959.93,10108.76],
	[4030.00,10750.00],
	[4630.69,10483.01],
	[5090.47,9811.48],
	[4312.64,10349.27],
	[4781.96,10571.71],
	[5206.82,9870.85],
	[4743.94,9445.59],
	[5159.30,9989.97],
	[4887.04,10686.55],
	[5122.33,10080.00],
	[4827.05,10853.81],
	[5242.59,10223.49],
	[4928.99,10324.03],
	[4824.70,10364.45],
	[4488.14,10020.55],
	[4748.23,10535.18],
	[4673.25,10583.48],
	[4524.51,10897.56],
	[5331.00,10923.01]
];
};
 
if ( _DZ_PVP_MISSON_LOCATION == "OLDSOBOR" ) then {
posFromSpawnPlayer = 
[
	[6010.52,7742.64,0.0],
	[6053.10,7044.12,0.0]
];
};

diag_log format["dbLoadPlayer.sqf: Spawn coordinates set for mission - %1",_DZ_PVP_MISSON_LOCATION];

_clientNew =
{
	diag_log format["CONNECTION: _id: %1 _uid: %2 _name: %3",_id,_uid,_name];
	_id spawnForClient { titleText ["Please wait!","BLACK IN",3];};
	
	if (DZ_Enable_Login_Disconnect_Messages) then
	{
		{
			[_x, format["Player %1 connected to server",_name], "colorStatusChannel"] call fnc_playerMessage;
		} foreach players;
	};
	
	_savedChar = _uid call fnc_dbFindInProfile;
	_isAlive = _savedChar select 0;
	_isOnline = true;
	_pos = _savedChar select 2;
	diag_log format["CONNECTION DEBUG INFO: _isAlive: %1 _isOnline: %2 _pos: %3 _savedChar: %4 ",_isAlive,_isOnline,_pos,_savedChar];
	if (_isAlive) then
	{
		diag_log format ["CONNECTION: TRY LOAD PLAYER!"];		
			_uid = getClientUID _id;		
			_uidFound = 0;
			for "_i" from 0 to count players - 1 do
			{
				_actPlayer = players select _i;
				_actPlayerUid = getPlayerUID _actPlayer;
				if ( _actPlayerUid == _uid ) then { _uidFound = 1; };
			};
			if ( _uidFound == 0 ) then 
			{ 
					_agent = _uid call fnc_dbLoadFromProfile;							
						call init_newBody;
			
						//----- simple scheduler part -----
						_freePos = connectedPlayers find 0;
						connectedPlayers set [_freePos,_id];	

						
						null = _agent call fnc_reloadWeaponOnSpawn;						
						null = [_agent,call compile callFunction ["DataBaseRead","QUICKBAR",format["UID_%1",_uid]]] call fnc_addQuickBarItems;
			} else
			{
				diag_log format["CONNECTION: Player %1 has double UID on connect server, we are don't load him!",_uid];
				_id statusChat ["Your have double UID on connect server, we are don't load this.","ColorImportant"];
			};
	};
	if (!_isAlive) then 
	{
		diag_log format["CONNECTION: SPAWN NEW PLAYER!"];

		_mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
		_pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
		_agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];

		call createFullEquipment;

		_agent call init_newPlayer;
		call init_newBody;
	};

	if (DZ_TIME_WAITING_SPAWN_PLAYER > 0) then 
    {
		[_id,DZ_TIME_WAITING_SPAWN_PLAYER] spawnForClient {
		
				sTIMER = _this select 1;
				null = [] spawn { while {sTIMER > -1} do {setEVUser -5;};};

				disableUserInput true;
				
				while {sTIMER > -1} do {
					titleText[format["Spawning in %1 seconds... Please wait...",sTIMER],"PLAIN",10e10];
					sTIMER = sTIMER - 1;
					sleep 1;    
				};
				
				disableUserInput false;    
			
				titleText["","PLAIN",10e10];
			};
    };
	
	diag_log format ["CONNECT: FINISHED!"];	
};

_clientRespawn = 
{
	_uid = getClientUID _id;
	[_uid, _agent] call fnc_dbDestroyProfile;
	_id spawnForClient { titleText ["Respawning....","BLACK IN",3];};
	diag_log format["RESPAWN: NEW PLAYER! UID: %1",_uid];

	sleep DZ_TIME_WAITING_SPAWN_PLAYER;

	_mySkin = DZ_SkinsArray select (floor random (count DZ_SkinsArray));  
	_pos = posFromSpawnPlayer select (floor random (count posFromSpawnPlayer));
	_agent = createAgent [_mySkin,  _pos, [], 0, "NONE"];

	call createFullEquipment;

	_agent call init_newPlayer;
	call init_newBody;
};

_disconnectPlayer =
{
	_uid = getClientUID _id;
	_killed = [0,_uid,_agent] call dbSavePlayer;
	_vm = [_agent,_id,_name,_queueTime,_killed,_uid,DZ_Enable_Login_Disconnect_Messages,DZ_TIME_EXIT_AGENT] spawn 
	{
		private ["_agent","_id","_uid","Enable_Login_Disconnect_Messages","TIME_EXIT_AGENT"];
		_agent = _this select 0;
		_id = _this select 1; 
		_name = _this select 2;
		_queueTime = _this select 3;
		_killed = _this select 4;
		_uid = _this select 5;
		Enable_Login_Disconnect_Messages = _this select 6;
		TIME_EXIT_AGENT = _this select 7;
		
		if (Enable_Login_Disconnect_Messages) then
		{
			{
				[_x, format["Player %1 disconnected from server",_name], "colorStatusChannel"] call fnc_playerMessage;
			} foreach players;
		};
	
		diag_log format ["DISCONNECT: Player %1 name %2 UID %3 try disconnect from server.", _agent, _name, _uid];	
		
		if (vehicle _agent != _agent) then
		{
			moveOut _agent;
		};
		
		if (DZ_PLAYER_SAVE) then
		{
			if (!isNull _agent) then
			{
				sleep 1;
				_agent playAction "SitDown";
				sleep TIME_EXIT_AGENT;

				if ( !_killed ) then {
					[1,_uid,_agent] call dbSavePlayer;
				};
				if ((lifeState _agent == "ALIVE") and (not captive _agent)) then
				{
					_agent call dbSavePlayerPrep;
					_result = [_uid, _agent] call fnc_dbSaveToProfile;
					diag_log format ["DISCONNECT: Player %1 name %2 UID %3 saved server when him disconnect!", _agent, _name, _uid];	
				};
			};
		} else
		{
			[_uid, _agent] call fnc_dbDestroyProfile;
			diag_log format ["DISCONNECT: Player %1 name %2 UID %3 destroy player data.", _agent, _name, _uid];	
		//вот тут забыл поставить ; после }
		};
		
		if (!isNull _agent) then
		{
			endDisconnectPlayer [ _agent, _uid ];
		};
	
	};
};

// Create player on connection
	onClientRespawn _clientRespawn;
	onPlayerConnecting _clientNew;
	onPlayerDisconnected _disconnectPlayer;

 

 

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

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


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

123new 

 

Про респавн из ванкунси

 

Ник в игре  - QQQ

 

Если меня побили зомби и я ванкунси - жму esc, затем респавн - вхожу - бегу

И через неск сек появляется you are dead и все - взаимодействия перса с инвентарем НЕТ - могу только бегать и получать пули/быть побитым зомбарями

Остается ток exit и снова подключаться к серверу

В РПТ такое (я кстати в MPMissions\dayz_Auto.ChernarusPlus  в event_playerKilled.sqf исправил KIL LOG на KILL LOG

 

Если зомби меня убивают сразу то

"KILL LOG: QQQ kill yourself" (вот енто почему?)
"KILL LOG: QQQ killed zombie"

 

Далее

Меня бьют зомби

Я ванкунси

Жму esc и респавн

 

В логе такое

 

2018/03/19, 18:27:15 "RESPAWN: NEW PLAYER! UID: 76561198156927007"
2018/03/19, 18:27:15 "Recording player QQQ with 76561198156927007 and agent SurvivorPartsMaleDean:2:38386"
2018/03/19, 18:27:15 "KILL LOG: Error: No unit kill yourself"
 

И усе - мой перс без профиля

 

Надо что-то с этим делать...

 

 

 

 

 

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: Troy1
      Всем привет. пишу мод и столкнулся с проблемой в реализации.
      Суть: Пытаюсь сделать проверку, если игрок стоит прям у окна или у дверного проёма он должен получать урон.
      Делал вот так.
      int wallHits = 0; float d = 2.2; // Дистанция до стены. Если стена дальше — считаем, что там окно или проем. // 8 направлений "снежинкой" для проверки стен вокруг игрока // Используем Vector(x, y, z) для точности ref array<vector> checkDirs = { Vector(d,0,0), Vector(-d,0,0), Vector(0,0,d), Vector(0,0,-d), Vector(d,0,d), Vector(-d,0,-d), Vector(d,0,-d), Vector(-d,0,d) }; foreach (vector dir : checkDirs) { // Пускаем горизонтальные лучи от позиции игрока (from) if (DayZPhysics.RayCastBullet(from, from + dir, collisionLayerMask, this, hitObject, hitPosition, hitNormal, hitFraction)) { // ПРОВЕРКА: Это должна быть вертикальная стена (Y нормали < 0.5) // Чтобы не засчитать низкий потолок за стену if (Math.AbsFloat(hitNormal[1]) < 0.5) { wallHits++; } } } // УСЛОВИЕ БЕЗОПАСНОСТИ: // В комнате wallHits будет 6-8. У окна или в проеме — 1-4. if (wallHits < 5) { hasSafeCeiling = false; // Слишком открытое пространство (окно/дверь) } Пытался менять дистанции, но всё ровно не как не хочет работать.
      Что я делаю не так, или я вообще делаю не то?
      Мне нужно проверять игрока, в укрытии он или нет.
      С высотой я разобрался, а вот с боковыми лучами у меня траблы и не во всех помещениях работает как нужно.
      В некоторых помещениях вообще не работает, удаляешь строки проверки, начинает работать и то по высоте.
      Просто забегаешь по навес и игрок под защитой, так не должно быть.
      Помогите пожалуйста  решить задачу.
    • Автор: Troy1
      Всем привет. Суть в чём, пишу мод на событие и когда происходит событие, параллельно должна меняться скорость ветра, не могу понять как заставить скрипт управлять силой ветра. Понижать силу ветра получилось сделать, а вот повышать не как. Только после перезагрузки сервера сила ветра задаётся в нужном значение.
      Как сделать, что бы по вызову функции менялась сила ветра в большую или в меньшую сторону?
      protected void SetWind(float wind, float time) { if (!g_Game) return; Weather m_Weather = g_Game.GetWeather(); if (!m_Weather) return; m_Weather.SetWindMaximumSpeed(wind); m_Weather.SetWind(Vector(1/Math.Sqrt(3), 1/Math.Sqrt(3), 1/Math.Sqrt(3)) * wind); m_Weather.SetWindSpeed(wind); m_Weather.SetWindFunctionParams(1.0, 1.0, -1); } Это скрипт на понижение силы ветра.
      Работает понижение силы ветра в том случае, если до этого сила ветра была выше.
      Пример:
      Изначально на сервере сила ветра = 20 m/s А нужно понизить до 10 m/s
      Только в этом случае сработает скрипт который я приложил выше.
      Помогите пожалуйста решить этот вопрос.
      За ранние благодарю.
    • Автор: Troy1
      Пока ждал помощи, решил вопрос!
      Тема закрыта!!!
    • Автор: magliner
      Привет ! Ну вот моя история с вопросом в конце.. Я фанат Дэйз ванилы черноруси, заколебало сидеть на бездушных серверах со слабой админкой и терять лут от софтеров, решил создать под свои скромные запросы около ванильный сервер.. Нашел хорошего исполнителя, быстро и четко запустили отладили и ВОТ я имею СВОЙ сервер.. клас! вечер восторга и изучения
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

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

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

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

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

Поддержка