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

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

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

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

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

История изменений

Здесь нет истории для отображения или этот комментарий был изменён модератором

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

    • Автор: paranoyk
      Осветим вопрос по спавну плодо-овощной продукции и яблонево-грушевым деревьям.
      Делаю мелкую инструкцию как сам выполняю нечто подобное если потребуется. Сразу оговорюсь-данное буквопечатание не является истиной в последний инстанции, вариантов исполнения может быть несколько, но старался привести всё как можно ближе к ванильному состоянию. Ибо Бегемоты должны быть повешены, но ваниль свята.
      Для понимания как, что и зачем влияет на спавн яблоко-груш, мухоморов-рыжиков-начнём издалёка.
       
      Все начинается и подчиняется своему ивенту из файла  events.xml . Как и некоторые текстуры для спавна камней. Для яблонь это будет -
      <event name="TrajectoryApple"> - название ивента <nominal>140</nominal> - одновременное колличество ивентов на карту <min>2</min> <max>4</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>25</saferadius> <distanceradius>100</distanceradius> <cleanupradius>25</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="0"/> <position>player</position> <limit>mixed</limit> <active>1</active> - вкл/выкл ивента <children> <child lootmax="0" lootmin="0" max="0" min="0" type="Apple"/> - что именно будет спавнить ивент. </children> </event> (лутом могут быть как плоды, так и грибы или другое)
      Как видим эти ивенты начинаются на Trajectory, то есть если захотите спавнить под сломанными дубами помидор - начинаем TrajectoryDubb....и так далее.
       
      Все эти ивенты включают спавн "сеток лута" (массива координат для определённой точки) в файле mapclusterproto.xml
      В самом начале идёт перечисление по типу
      <export name="PathD10" shape="dz\structures\Roads\Parts\path_dirt_10.p3d" /> <export name="PathD10" имя сетки лута в этом файле shape="dz\structures\Roads\Parts\path_dirt_10.p3d" ID объекта к которому привязана данная сетка лута /> То есть если делаем что то новое, то прописываем в этом начальном блоке.
      Яблони там прописаны как
       
      <export name="AppleTree1" shape="dz\plants\tree\t_malusDomestica_1s.p3d" /> <export name="AppleTree2" shape="dz\plants\tree\t_malusDomestica_2s.p3d" /> <export name="AppleTree3" shape="dz\plants\tree\t_malusDomestica_3s.p3d" /> Переводим.... Для обьекта на карте t_malusDomestica_1s.p3d соответсвует массив координат спавна лута AppleTree1 и т.д. И видим ниже где яблони, где груши, где грибы....
      <cluster name="AppleTree1" lootmax="2" maxinstances="150"> имя кластера котрое зарегестрировано выше с привязкой к объекту, колличество лута на нём и максимальное количество экземпляров <de name="TrajectoryApple" /> Имя ивента из events.xml <container name="branch" lootmax="1"> - (чисто догадка) название того что можно срезать с дерева за раз, именно срезать. <point pos="-1.86 -2.40 0.12" range="0.55" height="1.63" flags="32" /> - точки спавна "дочерних обьектов" в данном случае яблок-прописано опять таки events.xml. Флаг 32 указывает спавн на поверхности без учёта вертикальной координаты обьекта <point pos="0.51 -2.40 0.85" range="0.55" height="1.63" flags="32" /> <point pos="0.15 -2.40 -0.57" range="0.55" height="1.63" flags="32" /> <point pos="-1.09 -2.40 1.47" range="0.55" height="1.63" flags="32" /> </container> </cluster> Так это наш ивент с "траекторией! И ему соответствует целых три дерева зарегистрированных выше -
      То есть по ними и будут спанится дочерние объекты,яблоки...

      А где именно эти деревья?...Открываем, не не открываем, чисто поверьте, они все в файлах
      mapgroupcluster01.xml
      mapgroupcluster02.xml
      mapgroupcluster03.xml
      mapgroupcluster04.xml
      Так и называются AppleTree1,AppleTree2 и т.д.
      То есть хотите ввести новые точки-открываете 04 (советую именно его, остальные забиты по максимуму) и вписываете, принцип тот что и для обычного лута и mapgrouppos.

      Это теория "что, где, когда и за что". Но вы же хотите "рощи грибов и поля яблок"....

       Спавн деревьев и кустарника с шиповником и прочей бузиной.
      Самый сложный вопрос, так как что и каким способом делать предрешает некоторые последующие шаги. Но...по ванили.
      Используемые объекты для ванили
      t_malusDomestica_1s.p3d - яблоня
      t_malusDomestica_2s.p3d- яблоня
      t_malusDomestica_3s.p3d- яблоня          
      t_pyrusCommunis_3sb.p3d - груша
      t_pyrusCommunis_2s.p3d - груша
      t_pyrusCommunis_3s.p3d - груша
      t_prunusDomestica_2s.p3d -слива
      b_rosaCanina_1s.p3d- шиповник
      b_rosaCanina_2s.p3d - шиповник
      b_sambucusNigra_1s.p3d - чёрная....бузина, смородина, вообщем поняли
      b_sambucusNigra_2s.p3d - чёрная бузина.
       
      Но заспавнить их эдитором будет....немного геморройно ввиду отсутствия присутствия их в списке. Запускаем эдитор с модом Builderitems.
      Спавним к примеру bldr_plnt_t_malusDomestica_1s. Всё норм...(в принцепе если вам не нужно это дерево рубить, или сдирать с него кору можно так и оставить, всё что ниже-для перфекционистов)

       
       
      Вроде всё красиво, сохраняем в формат json. Получаем нечто похожее на
       
      { "name": "bldr_plnt_t_malusDomestica_1s", "pos": [ 4639.68017578125, 341.9044494628906, 10087.6708984375 ], "ypr": [ 0.0, -0.0, -0.0 ], "scale": 0.9999998807907105, "enableCEPersistency": 0 } Но нам же нужен p3d. Меняем bldr_plnt_t_malusDomestica_1s на полный ванильный аналог DZ\\plants\\tree\\t_malusDomestica_1s.p3d
      Получаем
       
      { "name": "DZ\\plants\\tree\\t_malusDomestica_1s.p3d", "pos": [ 4639.68017578125, 341.9044494628906, 10087.6708984375 ], "ypr": [ 0.0, -0.0, -0.0 ], "scale": 0.9999998807907105, "enableCEPersistency": 0 } Что ж попробуем заспавнить....

      слева - bldr , справа - что получится после замены.

      Дерево "подпрыгнуло", да, это недоработка мода bilderitems и эдитора -не соответствие координат деревьев, камней и прочего. (ну и бегемоты конечно копыто своё приложили). Как его опустить- ваш выбор, кто вручную каждому дереву отнимает вертикальную координату, ( примечательно что для каждого обьекта она может быть своя), кто ищет сторонние программы-не суть, главное его приземлить. Вот три вида яблони "после приземления", грубо говоря от вертикали у каждой вычитаем 2,8. В ФАЙЛЕ!!!! и там же сохраняем.

       
      Но стоит вам к примеру удалить левое дерево и СОХРАНИТЬ файл в Эдиторе по новой-деревья опять стартуют в небо. "Великий Эдитор" как был кривой, так и остался..... Как бы то не было вы спавните нужны вам деревья.

      "DZ\\plants\\tree\\t_malusDomestica_2s.p3d"
      "DZ\\plants\\tree\\t_malusDomestica_3s.p3d"
      "DZ\\plants\\tree\\t_malusDomestica_1s.p3d"
      "DZ\\plants\\tree\\t_pyrusCommunis_3sb.p3d"
      "DZ\\plants\\tree\\t_pyrusCommunis_3s.p3d"
      "DZ\\plants\\tree\\t_pyrusCommunis_2s.p3d"
      "DZ\\plants\\tree\\t_prunusDomestica_2s.p3d"
      "DZ\\plants\\bush\\b_rosacanina_1s.p3d"
      DZ\\plants\\bush\\b_rosacanina_2s.p3d"
      "DZ\\plants\\bush\\b_sambucusnigra_1s.p3d"
      "DZ\\plants\\bush\\b_sambucusnigra_2s.p3d"

      Почему ИМЕННО эти.  Потому что они прописаны в mapclusterproto.xml, захотите другие-придётся их прописать. (не пробовал прописать bldr-деревья, но думаю возможно).
       
      В результате Вы получили файл json c спавном, подключили его....Осталось или вручную вписывать в mapgroupcluster координаты деревьев
      по типу
      <group name="AppleTree2" pos="12641.767578 184.586121 4363.043457" a="90.000000" /> AppleTree2 название массива координат соответсвующее обьекту 12641.767578 184.586121 4363.043457- координаты этого объкта "а"....угол поворота массива координат лута относительно объекта....вычисление описано во многих источниках (имхо-для деревьев как то до лампады)  
      или вписать по типу как делали экспорт для обычного лута, (подробней- Справка Багемии )  

      GetCEApi().ExportClusterData(); // cluster-type map groups export (fruit trees etc.)
       
      Не проверял, но возможно опять таки прописать центр круга и радиус где считают координаты, что может облегчить задачу.
      Получаем в папке "экспорт" (подождите, процесс немного долгий) готовые файлы mapgroupcluster  с вашими координатам, вставляем их на сервер, стриаем строчку из инит, вайпаем сервер...Всё.
      (проверено, ванильные кастомные деревья так же работают и в моде на тряску деревьев).
      А теперь заслушаем начальника транспортного цеха....


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

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

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

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

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

Поддержка