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

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

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

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

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

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией на 11/22/18 в Сообщения

  1. 3 балла
    DrTauren

    Готовая сборка DayZ Standalone 0.63 от DaOne v0.2

    Ниже можно бесплатно скачать сборку сервера DayZ Standalone 0.63, о которой мечтает каждый новичок или просто ленивый админ Практически все основные функции уже есть тут и вы можете легко их изменять Особенности сборки: Включение\отключение сообщений о входе\выходе игроков на сервер (файл Settings.C) Включение\отключение кастомного стартового лута для игроков Эта функция позволяет настроить спавны с предустановленным рандомным снаряжением. Для настройки типа предметов для спавна используйте папку "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/LoadOuts". Каждая категория в отдельном .txt-файле. Если вы хотите удалить элемент или добавить, убедитесь, что вы следуете тому же макету кода, что и в файле. Скрипт будет случайным образом выбирать элемент из каждой категории. Если вы хотите удалить определенную категорию, просто оставьте файл пустым или удалите его. Вы можете изменять стартовый лут во время работы сервера! После внесения правок просто войдите в игру как администратор и используйте команду администратора /Update Loadouts Включение\отключение спавна сразу с оружием Эта функция позволяет дать оружие при появлении. Для редактирования типов оружия, зайдите в следующий файл: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/DayZSurvival.C" (строка 352). Эта функция является рандомизатором. Это может быть полезно: SpawnGunIn( PlayerBase player, string ClassName, bool isPrimary, TstringArray Attachments, TstringArray Extras). Примечание: значение типа bool isPrimary стоит выставлять как 'true' если вы желаете сделать оружие основным Включение отключение усталости (стамины) В строку запуска добавьте -DisableStamina чтобы отключить усталость Кастомные сейфзоны с бессмертием Эта функция позволяет разместить безопасную зону в любом месте на карте с радиусом, который вы хотите. Для изменения сейфзон вам нужен этот файл: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/SafeZoneFunctions" Возможность добавлять свои здания на карту Эта функция - простой способ разместить свой собственный код зданий в определённом месте, а не в главном блоке, дабы его не засорять. Редактировать это дело в файле: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/BuildingSpawner.c".Не имеет значения, как вы создаете свои здания или устанавливаете их направление и т. д. Просто убедитесь, что скрипт находится внутри Void (), чтобы он выполнялся при запуске сервера. Хороший способ получить импортированные здания - использовать COM (Community Offline Mode). Вы можете размещать здания и извлекать их информацию. Админка через чат Просто добавьте свой steam64ID в файл "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/Admins.txt". Установить пароль администратора сервера в файле server.cfg, в игре войти в систему, используя пароль. #login myPassword Система отслеживания очков игроков и трекер активности убийств с временными метками Эта функция создает два файла в профиле сервера (если вы используете командную строку -instance, она будет размещена там), профиль сервера находится в папке Documents по умолчанию (там, где находятся ваши логи). Эта фича обеспечивает подробный журнал убийств и записывает статистику игроков, такую как общее количество смертей и общее количество убийств на сервере. Данная функция реализована в рамках мода. Сообщения об убийствах и смертях в чате Свои сообщения при входе Случайные предустановленные сообщения всплывающие для всех игроков. Для изменения сообщений используйте файл "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/MOTDMessages.c" Установка: 1) Качаем архив: DZMods-master.zip 2) Открываем папку с сервером и создаём в ней папку с любым вашим названием 3) Открываем папку mpmissions и копируем туда файл DayZSurvival.chernarusplus из архива. Если вы изменяли xml файлы с лутом, то убедитесь что вы заменили те, что в DayZSurvival.chernarusplus на свои. Папка db не содержит модифицированных файлов 4) Конфиг сервера serverDZ.cfg находится в корневой папке, скопируйте его в папку, созданную в первом шаге установки. Открываем конфиг и в самом низу видим: dayzOffline.chernarusplus. Заменяем на DayZSurvival.chernarusplus и сохраняем файл. 5) Копируем файл ModdedScripts из архива в корневую папку сервера (где .exe файл). 6) Добавляем в командную строку сервера это: -mod=ModdedScripts -config=NameOfFolderFromStep1\serverDZ.cfg -profiles=NameOfFolderFromStep1 -name=myServerName Параметр -name меняет название сервера и выводит его в чате когда игрок умирает\заходит\выходит, а также в прочих сообщениях. Если вы хотите активировать любые другие моды, указанные в списке функций, просто добавьте командную строку к тому, что запускает ваш сервер. На этом всё Не забываем про + Таким образом бесплатно получаете сборку сервера, в то время как за практически то же самое люди требуют деньги. https://github.com/Da0ne/DZMods
  2. 1 балл
    123new

    'Перемотка' игрового времени

    В данной теме опубликую скриптик, который уже давно лежит на форуме в разделе помощи. Установка: 1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c 2. В самом начале файла добавляем: #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Correct_InGame_time.c" И после строки weather.SetWindFunctionParams(0, 0, 0); добавляем: GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Correct_InGame_time, 1000, true); где 1000 - 1 секунда 3. Создаем вручную файл с именем "Correct_InGame_time.c" и заполняем его следующим текстом: static void Correct_InGame_time() { private int year, month, day, hour, minute; GetGame().GetWorld().GetDate( year, month, day, hour, minute ); if (hour < 7) { GetGame().GetWorld().SetDate(year, month, day, 7, 3); } if (hour >= 20) { GetGame().GetWorld().SetDate(year, month, (day + 1), 7, 3); } } 4. Настраиваем файл как нам нужно. Т.е. как видим, с 7 утра и до 8 вечера время на сервере внутриигровое не трогается, при наступлении от 20:00 и до 7 утра у нес автопромотка на 7:03 утра идет. Тупо, банально, дешево, но работает.
  3. 1 балл
    Обновленный вариант моих скриптиков при проверке машинок рядом с координатами заодно можно грохать дубли что бы на координате осталась только одна // Spawn car scripts for server init phase. // Author: Borizz.K (s-platoon.ru) int CheckNearObjects(vector pos, int radius, string objectClass, bool delmultiplied) //Проверка обьектов поблизости //+ возможность удаления размноженных { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; Object object; string className; int objectcount = 0; pos[1] = GetGame().SurfaceY( pos[0], pos[2] ); GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); Print("::: CheckNearObjects (vector pos, int radius, string objectClass) ::: Radius: " + radius.ToString() + ", all nearest_objects: " + nearest_objects.Count().ToString()); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( className == objectClass ) { if (delmultiplied && object.GetPosition()[0] == pos[0] && object.GetPosition()[2] == pos[2]) { Print("::: CheckNearestObjects ::: found and delete multiplied object " + objectcount + ": " + object.ToString() + ", Type/Class: " + className + ", Pos: " + object.GetPosition().ToString()); GetGame().ObjectDelete(object); if (objectcount > 0) { objectcount--;; } } else { objectcount++; Print("::: CheckNearObjects: found object " + objectcount + ": " + object.ToString() + ", Type/Class: " + className + ", Pos: " + object.GetPosition().ToString()); } } } return objectcount; } void DelMultipliedObjects(vector pos, int radius, string objectClass) //Cleanup multiple nested objects with same class! { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; array<Object> scan_objects = new array<Object>; array<Object> removable_objects = new array<Object>; Object object; string className; vector objectPos; Object m_object; string m_className; vector m_objectPos; int objectcount = 0; int m_objectcount = 0; bool m_contains; pos[1] = GetGame().SurfaceY( pos[0], pos[2] ); GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); Print("::: DelMultipliedObjects (vector pos, int radius, string objectClass) ::: Radius: " + radius + ", all nearest_objects: " + nearest_objects.Count().ToString()); //Find objects like objectClass and put in to array for future compare for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if (className == objectClass) { objectcount++; Print("::: DelMultipliedObjects: found object " + objectcount + ": " + object.ToString() + ", Type/Class: " + className + ", Pos: " + object.GetPosition().ToString()); scan_objects.Insert(object); } } //scan_objects.Debug(); //Compare objects, find multiple objects with same position and put in to array for future delete for ( i = 0; i < scan_objects.Count(); i++ ) { object = scan_objects.Get(i); objectPos = object.GetPosition(); for ( int j = i + 1; j < scan_objects.Count(); j++ ) { m_object = scan_objects.Get(j); for ( int k = 0; k < removable_objects.Count(); k++ ) { if (removable_objects.Get(k) == m_object) { m_contains = true; //Print("::: DelMultipliedObjects: object " + j + ": " + m_object.ToString() + " already in removable_objects!"); break; } else { m_contains = false; } } if (!m_contains) { m_objectPos = m_object.GetPosition(); //Print("::: DelMultipliedObjects: compare object " + (i + 1) + ": " + object.ToString() + " => object " + j + ": " + m_object.ToString()); if ((object != m_object) && (objectPos[0] == m_objectPos[0] && objectPos[2] == m_objectPos[2])) { m_objectcount++; Print("::: DelMultipliedObjects: found multiplied object " + m_objectcount + ": " + m_object.ToString() + ",Pos: " + m_objectPos.ToString()); removable_objects.Insert(m_object); } } } } //removable_objects.Debug(); //Delete finded multiplied objects for ( i = 0; i < removable_objects.Count(); i++ ) { m_object = removable_objects.Get(i); Print("::: DelMultipliedObjects: delete multiplied object " + (i + 1) + ": " + m_object.ToString() + ",Pos: " + m_object.GetPosition().ToString()); GetGame().ObjectDelete(m_object); } } int SpawnCar(string m_Car_Class, TVectorArray spawn_Points, int max_Car_Count, float min_Car_Health, float max_Car_Health, bool damageallow, bool checkdoubles, bool delmultiplied) //Спавн машины по заданным параметрам { Print("::: SpawnCars.c ::: SpawnCar(" + m_Car_Class + ", " + spawn_Points.ToString() + ") :::"); vector m_Car_Pos; EntityAI m_Car; int n_Car_Count = 0; int all_Car_Count = 0; int s_Car_Count = 0; array<string> m_Car_Equip_Array = new array<string>; array<string> m_Car_Adds_Array = new array<string>; float flamount =0; //All cars check parameters! vector w_Center = "7500 0 7500"; w_Center[1] = GetGame().SurfaceY( w_Center[0], w_Center[2] ); int w_ScanRadius = 20000; if (m_Car_Class == "OffroadHatchback") { m_Car_Equip_Array = {"HatchbackWheel","HatchbackWheel","HatchbackWheel","HatchbackWheel","CarBattery","SparkPlug","SparkPlug","EngineBelt","CarRadiator","HatchbackDoors_Driver","HatchbackDoors_CoDriver","HatchbackHood","HatchbackTrunk","HeadlightH7","HeadlightH7"}; m_Car_Adds_Array = {"CanisterGasoline"}; flamount = 1000; //fluid amount } else if (m_Car_Class == "M3S") { //Тут заполняем массив комплектующими M3S flamount = 1000; } else { Print("::: SpawnCars.c ::: SpawnCar() ::: NO CAR / WRONG CLASS SPECIFIED :::"); return s_Car_Count; } if (m_Car_Equip_Array.Count() < 1) { return s_Car_Count; } all_Car_Count = CheckNearObjects(w_Center, w_ScanRadius, m_Car_Class, false); //Warinig! Very heavy load ram of your server. Need additional 8Gb RAM !!! DelMultipliedObjects(w_Center, w_ScanRadius, m_Car_Class); Print("::: SpawnCars.c ::: SpawnCar() ::: All cars " + m_Car_Class + " on server: " + all_Car_Count); for ( int i = 0; i < spawn_Points.Count(); i++ ) { m_Car_Pos = spawn_Points.Get(i); if (checkdoubles) { n_Car_Count = CheckNearObjects(m_Car_Pos, 10, m_Car_Class, delmultiplied); } else { n_Car_Count = CheckNearObjects(m_Car_Pos, 10, m_Car_Class, false); } if (n_Car_Count > 0) { Print("::: SpawnCars.c ::: Near cars " + m_Car_Class + " at selected pos " + m_Car_Pos.ToString() + ": " + n_Car_Count); } if (s_Car_Count + all_Car_Count < max_Car_Count) { if (n_Car_Count < 1) { Print("::: SpawnCars.c ::: Spawn: " + m_Car_Class + ", Pos: " + m_Car_Pos.ToString()); m_Car = EntityAI.Cast(GetGame().CreateObject(m_Car_Class, m_Car_Pos, false, true)); for ( int e = 0; e < m_Car_Equip_Array.Count(); e++ ) //Attachments { m_Car.GetInventory().CreateAttachment( m_Car_Equip_Array.Get(e) ); } for ( int a = 0; a < m_Car_Adds_Array.Count(); a++ ) //Adds //TEST { m_Car.GetInventory().CreateAttachment( m_Car_Adds_Array.Get(a) ); } if (m_Car) { Car car = Car.Cast(m_Car); car.Fill(CarFluid.FUEL, flamount); //add fuel car.Fill(CarFluid.COOLANT, flamount); //add antifreeze car.Fill(CarFluid.OIL, flamount); //add engine oil car.Fill(CarFluid.BRAKE, flamount);//add brake fluid m_Car.SetAllowDamage(damageallow); m_Car.SetHealth("","",Math.RandomInt(min_Car_Health,max_Car_Health)); s_Car_Count++; } } else { Print("::: SpawnCars.c ::: Car spawn not allowed at position: " + m_Car_Pos.ToString() + ", becouse nearest car with same class " + m_Car_Class + " found."); } } else { Print("::: SpawnCars.c ::: Car spawn not allowed becouse cars with same class " + m_Car_Class + " >= " + max_Car_Count); } } return s_Car_Count; } void SpawnCars() //Вызов спавна машин { TVectorArray spawn_Points_Niva = {"6063 0 7871"}; //array with positions, for more cars write more positios in to array int SpawnCarsCarsCount = SpawnCar("OffroadHatchback", spawn_Points_Niva, 34, 100, 100, false, true, false); //Class, Positions, Max count, min health, max health, damage allow - true/false, check duplicates - true/false, delete dublicates - true/false Print("::: SpawnCars.c ::: SpawnCars() ::: Spawned cars: " + SpawnCarsCarsCount); SpawnCarsCarsCount = SpawnCar("M3S", {"6000 0 6000"}, 34, 100, 100, false, true, false); //Class, Positions, Max count, min health, max health, damage allow - true/false Print("::: SpawnCars.c ::: SpawnCars() ::: Spawned cars: " + SpawnCarsCarsCount); } Кроме того накатал обещанную ранее функцию которая проверяет в радиусе обьекты, ищет обьекты определенного класса, затем проверяет сколько одинаковых обьектов с одинаковыми координатами и если их более 1, грохает все оставляя только один. void DelMultipliedObjects(vector pos, int radius, string objectClass) //Cleanup multiple nested objects with same class! { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; array<Object> scan_objects = new array<Object>; array<Object> removable_objects = new array<Object>; Object object; string className; vector objectPos; Object m_object; string m_className; vector m_objectPos; int objectcount = 0; int m_objectcount = 0; bool m_contains; pos[1] = GetGame().SurfaceY( pos[0], pos[2] ); GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); Print("::: DelMultipliedObjects (vector pos, int radius, string objectClass) ::: Radius: " + radius + ", all nearest_objects: " + nearest_objects.Count().ToString()); //Find objects like objectClass and put in to array for future compare for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if (className == objectClass) { objectcount++; Print("::: DelMultipliedObjects: found object " + objectcount + ": " + object.ToString() + ", Type/Class: " + className + ", Pos: " + object.GetPosition().ToString()); scan_objects.Insert(object); } } //scan_objects.Debug(); //Compare objects, find multiple objects with same position and put in to array for future delete for ( i = 0; i < scan_objects.Count(); i++ ) { object = scan_objects.Get(i); objectPos = object.GetPosition(); for ( int j = i + 1; j < scan_objects.Count(); j++ ) { m_object = scan_objects.Get(j); for ( int k = 0; k < removable_objects.Count(); k++ ) { if (removable_objects.Get(k) == m_object) { m_contains = true; //Print("::: DelMultipliedObjects: object " + j + ": " + m_object.ToString() + " already in removable_objects!"); break; } else { m_contains = false; } } if (!m_contains) { m_objectPos = m_object.GetPosition(); //Print("::: DelMultipliedObjects: compare object " + (i + 1) + ": " + object.ToString() + " => object " + j + ": " + m_object.ToString()); if ((object != m_object) && (objectPos[0] == m_objectPos[0] && objectPos[2] == m_objectPos[2])) { m_objectcount++; Print("::: DelMultipliedObjects: found multiplied object " + m_objectcount + ": " + m_object.ToString() + ",Pos: " + m_objectPos.ToString()); removable_objects.Insert(m_object); } } } } //removable_objects.Debug(); //Delete finded multiplied objects for ( i = 0; i < removable_objects.Count(); i++ ) { m_object = removable_objects.Get(i); Print("::: DelMultipliedObjects: delete multiplied object " + (i + 1) + ": " + m_object.ToString() + ",Pos: " + m_object.GetPosition().ToString()); GetGame().ObjectDelete(m_object); } } Вызывается просто например нам надо найти все нивы стоящие друг в друге на всем сервере и грохнуть все лишние, оставив на позиции только одну vector w_Center = "7500 0 7500"; w_Center[1] = GetGame().SurfaceY( w_Center[0], w_Center[2] ); int w_ScanRadius = 20000; m_Car_Class = "OffroadHatchback"; DelMultipliedObjects(w_Center, w_ScanRadius, m_Car_Class); Результаты работы выводятся в script.log Вроде работает... Нужна правда доработка циклов сравнения элементов массива, но чет голова не варит, пртому займусь позже
  4. 1 балл
    Обновил пост и файлы выше, добавил более корректный выборщик координат спавна, параметры минимум-максимум жидкостей для авто. Спасибо BorizK за информацию о необходимых функциях.
×
×
  • Создать...

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

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

Поддержка