Need help?
Create a topic in the appropriate section
Don't write everything in the chat!Take a look at the marketplace
There you can buy
everything related to game serversDon't want a ban?
Please read our rules
Don't disturb the order!Sell or buy?
Use services of the guarantor
We will make your deal safe



-
Similar Content
-
By BorizzK
Собираюсь заняться этим вопросом
На форуме тем не нашел
Может кто решал этот вопрос?
А то как-то 3 бревна неестественно быстро выгорают, минут за 5. Хотелось бы сделать минут 30 хотя бы...
-
By BorizzK
Автор: Виталий Мизев
Для начала в папке профиля сервера которая указана в параметре запуска сервера -profile=
создаем 2 файла
pointPlayerPVP.lst - координаты спавна нового персонажа в формате vector
playersSetUID.ini - Steam UID игроков | номер комплекта стартового лута для выбора
Пример формата файла pointPlayerPVP.lst
6010.40 0 7742.71
6386.92 0 7945.12
6478.50 0 7874.77
6044.73 0 7699.81
Пример формата playersSetUID.ini - STEAMUID|номер
76531195156927007|1
76561838156127001|2
Игроку с Steam UID 6531195156927007 будет выдат комплект 1, 76561838156127001 комплект 2, если в файле UID нет, то рандомно из остальных комплектов
В файле init.c
в теле класса: class CustomMission: MissionServer
сначала обьявим массивы
ref array<string> m_pointPlayerPVP = new array<string>;;
ref map<string, int> m_playersSetUID = new map<string, int>;
это массивы глобальны в классе и могут использоваться во всех функциях класса
в теле override void OnInit() (выполняется при запуске сервера)
Чтение координат спавна из файла в массив m_pointPlayerPVP
string line_content; FileHandle file = OpenFile("$profile:pointPlayerPVP.lst", FileMode.READ); Print("::: OpenFile : pointPlayerPVP.lst : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { m_pointPlayerPVP.Insert( line_content); } CloseFile(file); } m_pointPlayerPVP.Debug();
Чтение Steam UID и номера из файла в массив m_playersSetUID
array<string> strFileParam; file = OpenFile("$profile:playersSetUID.ini", FileMode.READ); Print("::: OpenFile : playersSetUID.ini : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { strFileParam = new array<string>; line_content.Split( "|", strFileParam ); m_playersSetUID.Insert(strFileParam.Get(0), strFileParam.Get(1).ToInt()); } CloseFile(file); }
Далее
При создании НОВОГО обьекта игрока
сначала ему задаются координаты рандомно выбираясь из массива m_pointPlayerPVP
см как идет работа с этим массивом
override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; if (m_pointPlayerPVP.Count()>0) { Print (m_pointPlayerPVP.Count()); int maxNum = m_pointPlayerPVP.Count(); int numPoint = Math.RandomInt(0, maxNum - 1); pos = m_pointPlayerPVP.Get(numPoint).ToVector(); } playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; }
Затем при создании стартового комплекта лута комплект выдается в зависимости от наличия в файле UID и номера после | (комплекта) (в данном случае для номера 1 набор собран (см case :1) , для остальных ничего)
override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { //По умолчанию номер комплекта выбирается рандомно int numSet = Math.RandomInt(2,6); /// 1 - Админ сет, 2-6 сеты для всех пока пусты EntityAI itemEnt; ItemBase itemBs; //Это тут на всякий случай //Получаем UID //PlayerIdentity p_identity = player.GetIdentity(); //p_identity.GetName(); // Получим имя игрока //p_identity.GetPlainId(); // UID в нашем знакомом виде 7656119********** //p_identity.GetId(); // получим UID в не знакомом виде Ue7dyagee34********* //p_identity.GetPlayerId(); // получим порядковый номер объекта типа игрок PlayerIdentity p_identity = player.GetIdentity(); string p_name = p_identity.GetName(); int p_id = p_identity.GetPlayerId(); if( p_identity ) { string uid_pl = p_identity.GetPlainId(); if (m_playersSetUID.Contains(uid_pl)) { numSet = m_playersSetUID.Get(uid_pl); } } itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); switch( numSet ) //Раздаем лут { case 1: //ADMIN { player.RemoveAllItems(); player.GetInventory().CreateInInventory("CoyoteBag_Green"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTSKOPants"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatBoots_Black"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatKnife"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("FNX45"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); itemEnt = player.GetInventory().CreateInInventory( "akm" ); itemEnt.GetInventory().CreateAttachment( "PSO11Optic" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodBttstck" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); itemEnt.GetInventory().CreateAttachment( "AK_Suppressor" ); itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); player.SetHealth("","",1000); //ТЕСТ //SetAllowDamage НЕ РАБОТАЕТ ДЛЯ ОНЛАЙНА - БОГЕМЦЫ ВЫКЛЮЧИЛИ //Тут обсуждение - https://forums.dayz.com/topic/240028-pve-server-disable-pvp-damage/ //Есть идея насчет доработки кода обрабатывающего нанесение урона player.SetAllowDamage(false); break; } case 2: { break; } case 3: { break; } case 4: { break; } case 5: { break; } case 6: { break; } } } Вот как-то так
На основе этого можно построить свою более развитую систему, например загружая координаты для кастомного спавн лута, расстановки зданий и тп
-
By 123new
В данной теме напишу простенький гайд о том, как самому добавить/изменить время существования трупа умершего игрока на своем собственном сервере DayZ.
Гайд пригодится тем, кто сам делает свою сборку сервера, либо по каким-то причинам пользуется не моей сборкой сервера (где это уже сделано), а чьей-либо еще. Обращаю ваше внимание на тот факт, что часть файлов, описанных в гайде, у вас могут уже быть вынесены в другое место или названы несколько иначе (это зависит от сборки сервера, которую вы используете, например, в сборке dankdayz вся mpmissions вынесена в отдельный файл в addons сервера), гайд основывается на чистых серверных файлах игры и отталкивается от них.
Гайд сделан для версий игры с серверной частью 0.60-0.62, но может быть совместим и с другими версиями игры, если файлы серверной части игры не поменяли своего текущего месторасположения и содержания. Гайд составлен по версии серверных файлов игры 0.62 чистой "девственной" и не правленой никем версии игры.
Напоминаю заранее, в моих серверных файлах версий 0.60, 0.61 и 0.62 из моих гайдов на данном форуме это уже сделано и делать это не нужно!!!
Данный гайд с данной темы будет дополнением к гайду из темы
И подразумевает, что данный гайд был вами уже выполнен, процедура event_playerKilled уже обозначена и вынесена в файл event_playerKilled.sqf, а сам файл существует у вас в папке по такому пути: "Mpmissions\{папка с активной "MpMissions}\scripts\events\event_playerKilled.sqf"
Также, он потребует наличия файла event_playerKilled.sqf, вынесенного в MpMissions вами из Addons сервера игры и активированного на вашем сервере.
Если такого файла или папок у вас нет, смотрите выше указанную тему о том, как его вынести!
Нам понадобятся:
1. Notepad++ https://notepad-plus-plus.org/download/
2. Ваши серверные файлы игры с вынесенным в "Mpmissions" файлом "event_playerKilled.sqf"
И так, приступим.
1. Открываем в Notepad++ фаш файл "event_playerKilled.sqf". У меня он находится по пути: "Mpmissions\{папка с активной "MpMissions}\scripts\events\event_playerKilled.sqf"
2. В конце файла находим
dbDestroyCharacter [_uid, _agent]; или
dbDestroyCharacter _agent; или
deletevehicle _agent; и удаляем ее, либо комментируем ее символом "//", так чтобы получилось вот так, например:
//dbDestroyCharacter [_uid, _agent]; 3. На место найденной строки добавляем код:
null = [_agent, DZ_TIME_DELETE_DEAD_PLAYER,_uid ] spawn { private["_agent","_uid","_time_dead_player_delete"]; _agent = (_this select 0); _time_dead_player_delete = (_this select 1); _uid = (_this select 2); sleep _time_dead_player_delete; deletevehicle _agent; diag_log format ["Dead agent %1 player with UID %3 is deleted in timestamp %2!",_agent, time,_uid]; }; 4. Открываем вашу "Mpmissions", далее папку с активной "MpMissions", и открываем файл "init.sqf" в Notepad++. Добавляем в любом месте файла (лучше всего в начале или после после "simulWeatherSync;") следующее:
DZ_TIME_DELETE_DEAD_PLAYER = 300; // Время в секундах до удаления трупов мертвых игроков. Где 300 - 5 минут в секундах
-
By DrTauren
Этот скрипт добавит туман в ночное время. Тот же самый что когда-то добавляли на серверах Arma2.
Он появляется вокруг игроков и машин при условии что игрок сидит внутри.
Инструкция:
1) Создаём файл ground_fog.sqf со следующим содержимым:
// Ground Fog - TorturedChunk - Kaysi - mmmyum @ OpenDayZ.net //Modify By CNSU waitUntil {!isNull player}; doofog = { private ["_obj","_pos","_fog1","_fog2","_fog3","_inVehicle"]; _inVehicle = (vehicle player != player); if (_inVehicle) then { _obj = (vehicle player); } else { _obj = player; }; _pos = position _obj; _fog1 = "#particlesource" createVehicleLocal _pos; _fog1 setParticleParams [ ["\A3\Data_F\ParticleEffects\Universal\universal.p3d" , 16, 12, 13, 0], "", "Billboard", 1, 10, [0, 0, -6], [0, 0, 0], 1, 1.275, 1, 0, [7,6], [[1, 1, 1, 0], [1, 1, 1, 0.04], [1, 1, 1, 0]], [1000], 1, 0, "", "", _obj ]; _fog1 setParticleRandom [3, [55, 55, 0.2], [0, 0, -0.1], 2, 0.45, [0, 0, 0, 0.1], 0, 0]; _fog1 setParticleCircle [0.001, [0, 0, -0.12]]; _fog1 setDropInterval 0.01; _fog2 = "#particlesource" createVehicleLocal _pos; _fog2 setParticleParams [ ["\A3\Data_F\ParticleEffects\Universal\universal.p3d" , 16, 12, 13, 0], "", "Billboard", 1, 10, [0, 0, -6], [0, 0, 0], 1, 1.275, 1, 0, [7,6], [[1, 1, 1, 0], [1, 1, 1, 0.04], [1, 1, 1, 0]], [1000], 1, 0, "", "", _obj ]; _fog2 setParticleRandom [3, [55, 55, 0.2], [0, 0, -0.1], 2, 0.45, [0, 0, 0, 0.1], 0, 0]; _fog2 setParticleCircle [0.001, [0, 0, -0.12]]; _fog2 setDropInterval 0.01; _fog3 = "#particlesource" createVehicleLocal _pos; _fog3 setParticleParams [ ["\A3\Data_F\ParticleEffects\Universal\universal.p3d" , 16, 12, 13, 0], "", "Billboard", 1, 10, [0, 0, -6], [0, 0, 0], 1, 1.275, 1, 0, [7,6], [[1, 1, 1, 0], [1, 1, 1, 0.04], [1, 1, 1, 0]], [1000], 1, 0, "", "", _obj ]; _fog3 setParticleRandom [3, [55, 55, 0.2], [0, 0, -0.1], 2, 0.45, [0, 0, 0, 0.1], 0, 0]; _fog3 setParticleCircle [0.001, [0, 0, -0.12]]; _fog3 setDropInterval 0.01; _this setVariable ["playerfog", floor time + 5]; sleep 120; deleteVehicle _fog1; deleteVehicle _fog2; deleteVehicle _fog3; }; [] spawn { while {true} do { if(daytime < 7 || daytime > 19) then { if (player getVariable ["playerfog", -1] < time) then { player setVariable ["playerfog", floor time + 5]; player spawn doofog; sleep 120; }; }; }; }; 2) Сохраняем его в любое место в папке вашей миссии. Например в корневую папку миссии
3) Открываем файл init.sqf и добавляем эту строку:
_GF = [] execVM "ground_fog.sqf";
-
-
Our picks
Сразу после рестарта сервера очень долго загружается миссия.
Кусок лога для примера:
10:57:51 Player dimquea connecting.
10:57:51 Mission DayZ Epoch Chernarus read from directory.
10:57:55 Roles assigned.
10:57:55 Reading mission ...
10:58:20 Mission read.
10:59:19 Game started.
всё это время либо сижу в лобби с пустой полосой загрузки, либо кидает в брифинг.
и только после этого прогружается миссия (полоса загрузки в игре) и начинается загрузка.
если ещё какие то логи нужны, скажите прикрпелю.
Edited by dimquea (see edit history)Share this post
Link to post
Share on other sites