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

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

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

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

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

    As252535

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

    • Автор: paranoyk
      Как, создать ивент по типу StaticPoliceSituation, StaticTrain леГко как сделать если есть две штуки-желание и хотение. (мозги-опционально).
      А)....Создаём ивент в events.xml (далее все примеры это примеры из примеров примерно от багемии)
      <event name="StaticBoy"> <nominal>3</nominal> <min>1</min> <max>0</max> <lifetime>5400</lifetime> <restock>0</restock> <saferadius>500</saferadius> <distanceradius>1000</distanceradius> <cleanupradius>1000</cleanupradius> <secondary>InfectedIndustrial</secondary> <flags deletable="1" init_random="0" remove_damaged="0"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children/> </event> -создано динамическое событие без объектов (спавн зомби вынесем за скобки пока)
      Б) в файле cfgeventspawns.xml задаём что это ивент -"группа объектов" и точки спавна ивента. Так как это "группа обьектов"- точки спавна это ТОЧКИ ОТСЧЕТА ДЛЯ ВСЕЙ ГРУППЫ.
      <event name="StaticBoy"> <zone smin="0" smax="0" dmin="1" dmax="2" r="20" /> <pos x="5587.466" z="2063.353" a="0" y="7.75" group="Boy_1"/> <pos x="3678.228" z="2328.108" a="0" y="6.7" group="Boy_2"/> <pos x="11254.230" z="3290.319" a="0" y="6.65" group="Boy_3"/> бла-бла и так далее.... </event> Координаты X и Z грубо говоря это координаты точки отсчёта ивента. Просто координаты реперной точки, почему?
      Да потому что "а"....поворот её относительно оси координат карты. Советую никогда его не менять, не ломайте себе мозог почему. У -высота этой реперной точки.
      То что это группа - спавнер видит из-за наличия названия.
      (координаты вы берёте при создании события или из админки или из богопротивного дэйзэдитора или из оффлайн режима...вообщем "где у вас будет центр данной го ивента для группы")
      <zone smin="0" smax="0" dmin="1" dmax="2" r="20" /> ИМХО, количество зомби если есть строчка <secondary>I и радиус их спавна
      Вэ) Перемещаемся в файл cfgeventgroups.xml и для каждой группы начинаются страдания.
      Спавнеру теперь не нужно общее название события, только группы....
      <!--pos x="5587.466" z="2063.353" a="0" y="7.591" group="Boy_1"/--> <group name="Boy_1"> <child type="StaticObj_Wreck_Train_742_Red_DE" deloot="0" lootmax="3" lootmin="1" x="0" z="0" a="78.123" y="1.9"/> <child type="StaticObj_Wreck_Train_Wagon_Tanker_DE" deloot="0" lootmax="3" lootmin="1" x="12.085" z="2.740" a="256.739" y="1.789"/> <child type="StaticObj_Wreck_Train_Wagon_Tanker_DE" deloot="0" lootmax="3" lootmin="1" x="23.106" z="5.477" a="255.579" y="1.781"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="34.546" z="8.424" a="255.837" y="1.32"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="46.285" z="11.341" a="255.321" y="1.398"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="69.472" z="18.594" a="250.938" y="1.450"/> <child type="Land_Train_Wagon_Box_DE" deloot="0" lootmax="3" lootmin="2" x="57.966" z="14.737" a="252.227" y="1.411"/> </group> Группа....Boy_1.
      Вы решили что у вас Первый объект у вас StaticObj_Wreck_Train_742_Red_DE . И стоит он на реперной точке (а может и НЕ стоять)...ну раз захотелось так, делаем так.
      X и Z  .....ноль. Потому что расположен в координатах самой точки, без смещения X и Z...значит его координаты ноль. "а" - поворот ОТНОСИТЕЛЬНО ОСИ ПОВОРОТА РЕПЕРНОЙ ТОЧКИ. (помните говорил вам не менять её?), а так её угол поворота совпадает с углом поворота относительно карты (в прошлом файле мы же записали "а"=0), то тут используем угол поворота относительно карты. И как уже понятно, У - это высота объекта ОТНОСИТЕЛЬНО реперной точки. (мы задали в прошлом файле Y=7.75, значит тут высота обьекта в эдиторе будет 7,75+1,9). Записано 1,9
      Ставите ВТОРОЙ ОБЪЕКТ StaticObj_Wreck_Train_Wagon_Tanker_DE .....Его координаты нужно вписать ОТНОСИТЕЛЬНО реперной точки, они вычисляются.
      Поставили объект, смотрите "Х координата обьекта минус координата рэперной точки"  -вписали, "Z координата обьекта минус координата реперной точки".-вписали..."а"-как и в эдиторе.Тут думать не надо.
      У-координата обьекта минус координата реперной точки....вписали. И так для каждого обьекта в группе.
      Сделали одну группу-переходим к другой. И так пока не сделаете необходимое вам число групп.
      Метод дедовский, поэтому если есть более лучший-внимательно слушаю.
       
      Да, есть метод грубо говоря это автоматизирующий на определённом этапе. Видео с описанием. (на буржуйском). Кабан, спасибо за на водку.
      (права у s-platoon.ru. а автора:))
       
    • Автор: Vladislavfaddeevich
      Доброго времени суток форумчане. 
       
      Может кто поделится наводкой. 
       
      Хотелось бы узнать, как сделать уведомление о входе в ту или иную локацию с радиусом. 
      Тоесть то же, что и в моде Трейдер. 
      Вошел в локацию, появилось уведомление, вышел, тоже. 
      Просто уведомление, более ничего не нужно. 
       
      Подскажите пожалуйста, как реализовать данную идею? 
      Есть те, кто может помоч? 
    • Автор: RedLink
      Всем привет.
      Возник один вопрос, который пока не могу догнать как решить.
      Суть следующая. В последней версии Инфистара есть код, который выводит логи в отдельную папку
      Путем нехитрых манипуляций добавляем ему вывод лог в отдельную папку с датой (ибо надоел тот кошмар, что там за 5 дней скапливается)
      А вот теперь сам вопрос.
      Если переменная dayz_ForcefullmoonNights = true;
      то создается папка с датой, которая указана в server_monitor.sqf - т.е. 2012,8,2 - что в принципе логично.
      А вот если dayz_ForcefullmoonNights = false; - то создается папка с датой, которая указана в mission.sqf (в моем случае это 2008,10,1. Хотя по логике должна присваиваться реальная дата, которая берется из того-же server_monitor при проверке на dayz_ForcefullmoonNights, т.к. в логе сервера мы видим, что TIME SYNC текущая дата сервера.
      Почему так происходит и как это можно поправить?
    • Автор: 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; } } } Вот как-то так
       
      На основе этого можно построить свою более развитую систему, например загружая координаты для кастомного спавн лута,  расстановки зданий и тп
       
       
  • Наш выбор

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

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

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