Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 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 servers
  • Don'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
Sign in to follow this  
NoVa41rus

[Плагин] mProMessage v1.8 - Настройка сообщений входа/выхода игрока [1.7.*]

Recommended Posts

mProMessage: Настройка сообщений входа/выхода игрока

Версия: 1.8.1

 

Простенький плагин для настройки сообщений, уведомляющих о входе/выходе игрока.

 

Особенности:

  • Кастомизация сообщений
  • Полное форматирование сообщений
  • Включение/выключение появления сообщений
Команды:

  • /mpm reload - перезагружает конфиг плагина.
 

Permissions:

  • mpm.reload - позволяет использовать команду /mpm reload
 

Стандартный конфиг:



  1. isShowntrue # [true] || [false] - включить/выключить отображение сообщений



  2. message:



  3.   onJoin"&b%PLAYER.NAME% &aвошёл." # Сообщение при входе игрока



  4.   onFirstJoin"&aИгрок &b%PLAYER.NAME% &aвошёл на сервер первый раз. Добро пожаловать!" # Сообщение при первом входе игрока



  5.   onQuit"&b%PLAYER.NAME% &cвышел." # Сообщение при выходе игрока



Доступные переменные:

  • %PLAYER.NAME% - Имя игрока
  • %PLAYER.IP% - IP игрока
  • %WORLD.NAME% - Имя мира, в котором находится игрок
  • %SERVER.NAME% - Имя сервера
Ахтунг! Если вы перешли на версию 1.8 со старой версии, вам необходимо обновить переменные в конфиге!

 

Скачать:



Share this post


Link to post
Share on other sites



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By paranoyk
      ©
      Инструкция по базовой установке животных на сервер. (базовые понятия)
      Задача дать начальные понятия в установке животных  на сервер. Вопросы лута, поведения, расстановки-не рассматриваем.
      (визги и смешочки "олдфагов" вынесем за скобки, мы в курсе что когда вы начинали даже Богемии ещё не было)
      Будем всё делать на основе примера мода, карты Чернорусь и согласно простому правилу "не думай что ты умнее бегемотов".
      Берём общедоступный мод Radioactive Animals
      Для начала просто подключаем мод к серверу (тестовому , то же правило-имейте сервер для тестов), после чего пытаемся заспавнить животных админкой. Получилось, животные ведут себя после спавна адекватно, нормально выглядят - идём дальше, если нет-жалуемся автору мода.
      Открываем папку dayzOffline.chernarusplus и создаём папку mod (или как захотите, но без кириллицы). Открываем созданную папку.
      Первая задача-создать файл "types" с новыми объектами. Иногда с модом идёт уже готовый файл. Если он есть-копируем его в папку. Можете переименовать его как хотите. (остальные действия настройки как при создании его с нуля).
      Если его нет-не беда, нам нужно только узнать ID обьектов, а вот они то всегда есть в описании или в стиме или в папке с модом. (если нет, то только вскрыв мод или переписав значения при спавне админкой).
      Мод из примера НЕ имеет готового тайпса. Но есть ID (класснеймы) в отдельном файле.
      Создаём в папке mod файл Atypes.xml . Отрываем его, вставляем
       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> </types> Верхней строчкой файл тайпс начинается, нижней заканчивается.
      Список класснеймов мода
      Radioactive_Bear_juggernaut
      Radioactive_Bear_Beast
      Radioactive_Bear_Tough
      Radioactive_bear_pelt
      Radioactive_Wolf_juggernaut
      Radioactive_Wolf_Beast
      Radioactive_Wolf_Tough
      Radioactive_wolf_pelt
      Radioactive_bear_Meat
      Radioactive_wolf_Meat
      Их нам внести в нами созданный файл, плохо что нет описания, что куда, но....ясно что у нас животные, их шкуры и мясо. С начало вносим животных. Из ванильного, серверного тайпс копируем значения для любого животного, к примеру
       
      <type name="Animal_BosTaurusF_Brown"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> и подставляя класснеймы модовых животных заполняем созданный тайпс. В конце концов он примет вид

       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> <type name="Radioactive_Bear_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> </types> Можно изменить <lifetime>1800</lifetime> на любое значение какое захотите (максимум 3888000). Это время жизни вашего животного когда рядом нет игрока на дистанции из <saferadius> файла events.
      После таким же способом добавляем шкуру и мясо. (опять таки копируем ванильное значение и меняем класснейм на модовый). В результате файл придёт к виду:
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <types> <type name="Radioactive_Bear_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Bear_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_juggernaut"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Beast"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_Wolf_Tough"> <nominal>0</nominal> <lifetime>1800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> </type> <type name="Radioactive_bear_pelt"> <nominal>0</nominal> <lifetime>28800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="tools"/> </type> <type name="Radioactive_wolf_pelt"> <nominal>0</nominal> <lifetime>28800</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="tools"/> </type> <type name="Radioactive_bear_Meat"> <nominal>0</nominal> <lifetime>14400</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="food"/> </type> <type name="Radioactive_wolf_Meat"> <nominal>0</nominal> <lifetime>14400</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="1" deloot="0"/> <category name="food"/> </type> </types>
      Проверяем кодировку, проверяем валидатором, (добавление-лично я проверяю окончания строчек что бы они совпадали с ванильным файлом).
      Основной файл для спавна создан. Теперь создаём файл событий.
      Создаём в папке mod файл Aevents.xml . Отрываем его, вставляем
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> </events> Верхней строчкой файл ивент начинается, нижней заканчивается.
      У нас два вида животных-медведь и волк, в каждом из которых три класса. Тут важно сразу решить, какие у нас будут "ивенты". Один для одного вида или несколько для одного вида и каждого класса. Для примера делаем по событию для каждого вида. Открываем ванильный events.xml и копируем в созданный файл два ивента - медведя и волка.
       
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> <event name="AnimalBear"> <nominal>0</nominal> <min>2</min> <max>2</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>custom</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="1" min="1" type="Animal_UrsusArctos"/> </children> </event> <event name="AnimalWolf"> <nominal>8</nominal> <min>4</min> <max>6</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="6" min="2" type="Animal_CanisLupus_Grey"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Animal_CanisLupus_White"/> </children> </event> </events> Теперь меняем event name. Для животных он всегда должно начинаться с "Animal" . Называем соответственно (пример) AnimalBearA и AnimalWolfA .
      Далее количество событий <nominal> котрое вам требуется.
      Количество особей в "отряде". <min>  <max>.
      Дистанции - расстояние до игрока, расстояние до другого "события", расстояние "уборки" события от игрока (начало отсчёта времени жизни или начало уборки трупов животных).
      Позиция. Оставляем , если хотим что бы событие спавнилось вне зависимости есть ли игрок рядом. Или делаем <position>player как у зомби, тогда спавн будет при приблежениии игрока.
      Лимит....Приведу просто выдержку из одного описания
      custom-limit refer to an external file like for animals territories.
      child-limit refer to the min and max attributes of the each child.
      parent-limit refer to the min and max attributes of the event itself.
      mixed-limit is a mix of both child et parent.
      То есть если берём что нужно (проще-для медведя что в ванили,для стайных-как у волков)
      Актив-1 конечно...
      Переделываем под модовые и получаем,
      <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <events> <event name="AnimalBearA"> <nominal>5</nominal> <min>1</min> <max>3</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>10</distanceradius> <cleanupradius>300</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>custom</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_juggernaut"/> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_Beast"/> <child lootmax="0" lootmin="0" max="1" min="1" type="Radioactive_Bear_Tough"/> </children> </event> <event name="AnimalWolfA"> <nominal>8</nominal> <min>4</min> <max>6</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="6" min="2" type="Radioactive_Wolf_juggernaut"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Radioactive_Wolf_Beast"/> <child lootmax="0" lootmin="0" max="4" min="0" type="Radioactive_Wolf_Tough"/> </children> </event> </events> Опять таки проверяем кодировку,валидатором и на соответствие с ванильным файлом. Даже если есть предоставленный автором мода готовый- просмотрите, поправите, исправите.
      Теперь подключаем созданные файлы.
      Открываем ванильный файл cfgeconomycore.xml
      И вписываем между </defaults> и </economycore>
      <ce folder="mod"> <file name="Atypes.xml" type="types" /> <file name="Aevents.xml" type="events" /> </ce> Мы создали два подключаемых файла с тайпс и событиями и подключили их.
      Открываем папку env и создаём два файла bearA_territories.xml и wolfA_territories.xml 
      Это файлы территорий спавна. Один из способов их заполнить-работа через СE Editor. (здесь нет описания) Другой-вручную спавнится к каждой точке спавна и снимать координаты, в не зависимости как вы поступаете нужно сделать следующее.
      ОТкрываем файл , к примеру , bearA_territories.xml
      Заполняем его следующем образом.
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> </territory-type> Так начинается и заканчивается этот файл, между ними вбиваем точки спавна. Для примера приведу ДВЕ точки спавна для ДВУХ событий.
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="4822.5" z="13657.5" r="60"/> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="4897.5" z="13815" r="60"/> <zone name="Rest" smin="0" smax="0" dmin="0" dmax="0" x="4997.5" z="13127.5" r="232.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="4960" z="13105" r="292.5"/> </territory> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="6030" z="11485" r="45"/> <zone name="Rest" smin="0" smax="0" dmin="0" dmax="0" x="7477.5" z="11970" r="180"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="7462.5" z="11970" r="217.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="6457.5" z="12210" r="210"/> </territory> </territory-type> territory color="4291611852" - цветовой код для СЕ. Совет делать его не разным для всего события и уникальным.
      zone name="Water" - название зоны спавна (разные названия влияют на поведение животных после спавна, "Water","Rest","HuntingGround",Graze". использование зон куриц и кроликов и их действие на животных-непроверено)
      далее идёт количество статических и динамических обьектов при спавне (если в ивенте "лимит" ссылается на эти значения -сделать отличными от нуля)
      Далее координаты точки и радиус в котором произойдёт спавн.
      Ещё для примера wolfA_territories.xml
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4290666866"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4822.5" z="13657.5" r="100"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="4997.5" z="12927.5" r="200"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="5060" z="12805" r="292.5"/> </territory> <territory color="4290666866"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="7897.5" z="7515" r="100"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="7477.5" z="7070" r="150"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="7560" z="7105" r="250.5"/> </territory> </territory-type> Опять всё проверяем,кодировка, проверка, схожесть, проверяем, сохраняем
      (не делайте ошибки по типу 
      <?xml version="1.0" encoding="UTF-8"?> <territory-type> <territory color="4291611852"> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4822.5" z="13657.5" r="60"/> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="4897.5" z="13815" r="60"/> <zone name="Water" smin="0" smax="0" dmin="3" dmax="4" x="6030" z="13485" r="45"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="6997.5" z="12127.5" r="232.5"/> <zone name="Rest" smin="0" smax="0" dmin="3" dmax="4" x="7477.5" z="11970" r="180"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="6960" z="12105" r="292.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="7462.5" z="11970" r="217.5"/> <zone name="HuntingGround" smin="0" smax="0" dmin="3" dmax="4" x="6457.5" z="12210" r="210"/> </territory> </territory-type> в таком виде это блок точек для ОДНОГО события. Но если у вас в планах именно так, то....почему и нет?)))
      Теперь подключаем наши события из файла инит
      Открываем ванильный файл cfgeventspawns.xml
      И между <event name="AnimalRoeDeer" /> и <event name="AnimalWolf" /> вписываем
          <event name="AnimalBearA" />
          <event name="AnimalWolfA" />
      Названия для ивента взяты из созданного нами файла Aevents.xml
      (кодировка, проверка, схожесть, проверяем, сохраняем)
      Открываем ванильный файл cfgenvironment.xml
      В блок file path
      <file path="env/wolfA_territories.xml" /> <file path="env/bearA_territories.xml" /> Мы указали на путь к файлам с точками спавна.
      В блок с territory type вписываем
      <territory type="Herd" name="WolfA" behavior="DZWolfGroupBeh"> <file usable="wolfA_territories" /> </territory> <territory type="Herd" name="BearA" behavior="BlissBearGroupBeh"> <file usable="bearA_territories"/> </territory> Где
      name= - общее имя для территорий животного (использую всегда окончание названия ивента -подобие ваниле ибо там так)
      behavior="DZWolfGroupBeh" - подключение поведения. должен совпадать с установками в самом моде. Да, можно попробовать волкам прописать модель поведения коровы.Не проверял.
      file usable="bearA_territories подключение файла территории.
      Проверяем, сохраняем, вайпаем сервер.
       Далее.....Всё. Быстрее сделать чем рассказать.

      Почему файлы тайпс и ивент создаём сами и подключаем отдельно.
      Одна цитата от "богемии"
      because of a limit on xml file-size
      Да и проще работать когда всё разложено по полкам.
      Кому не удобно и просто лень-мешайте в одну кучу.


      Все права принадлежат на публикацию данного материала принадлежат и автору  ©





       
    • By BorizzK
      Пишу мод для стримеров и сериальщиков (наши оч попросили и пара ютьюберов)
      Управление камерой с регулированием fov и тп включая углы итп
      Все почти отлично
      Столкнулись с проблемой
      С фрикамеры когда крупным планом беседу снимаешь не видно (нет анимации) движения губ. Жестикуляция и голос есть, а движения губ нет, только если перса оператора прям рядом поставить, тогда есть, но он в кадр в некоторых моментах попадает, а этого не нужно. Если удалить обьект перса оператора, то норм, но иногда сервак с ума сходит.
      А когда операторов 2 - 3, то ваще фигня иногда начинается вплоть до краша...
       
      Может кто в курсе, где расстояние, радиус синхры настроить можно?
       
       
    • By 123new
      В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о присоединении и отсоединении игроков, а также логировать их данные.
       
      Нам понадобится:
      1. Сервер DayZ 1.0, сделанный по одному из гайдов:
      2. Notepad++
      3. Немножечко трезвого ума
       
      Приступим:
      1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c
      2. В самом начале файла добавляем:
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\ConnectDisconnectMessagesInChat.c" Обратите внимание, имя папки с активной mpmissions сервера у вас может отличаться от стандартного названия  dayzOffline.chernarusplus - в таком случае в ссылке выше имя этой папки также надо заменить (это актуально в основном для серверов аренды)
      3. Помещаем в папку файл
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Либо создаем вручную этот файл с именем " "ConnectDisconnectMessagesInChat.c" и заполняем его следующим текстом:
      modded class CustomMission { void SendGlobalChatMessage(string message) { private array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { SendPersonalMessage(message, player); } //GetGame().ChatPlayer(message); } } void SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } override void InvokeOnDisconnect( PlayerBase player ) { private PlayerIdentity identity = NULL; identity = player.GetIdentity(); if (player && identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } super.InvokeOnDisconnect( player ); } override void InvokeOnConnect(PlayerBase player, PlayerIdentity identity) { super.InvokeOnConnect(player, identity); private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server."; //GetGame().ChatPlayer(message); SendGlobalChatMessage(message); Print(log_message); } } 4. Настраиваем текст как нам нужно. Т.е. в строках для чата
      private string message = "[Информация] Игрок " + Name_P + " отключился от сервера."; и
      private string message = "[Информация] Игрок " + Name_P + " Зашёл на сервер."; а также для логов
      private string log_message = "[Disconnect] Player " + Name_P + " with Steam64ID: " + UID_P + " disconnected from server."; и
      private string log_message = "[Connect] Player " + Name_P + " with Steam64ID: " + UID_P + "connected to server."; P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
       
    • By BorizzK
      Есть игрок
      Есть его координаты X и Y
      Нужно получить координаты точки X1 и X2 на расстоянии 2м слева от игрока
       
      ...
      Угол (из GetOrientation()) мы знаем
       
      Те банально надо получить координаты точки на окружности зная угол, радиус и координаты центра окружности
       
      мне видится следующее решение
       
      float dist = 2;
      float A = player.GetOrientation()[0] - 45;
      float x1 = dist * Math.Cos(A);
      float y1 = dist * Math.Sin(A);
       
      vector finpos = Vector(player.GetPosition()[0] + x1, player.GetPosition()[1], player.GetPosition()[2] + y1);
       
      или я не прав?
       
      может в Math enscript'а есть готовая функция?
       
       
      Спасибо!
       
       
       
    • By 123new
      Нам понадобится:
      1. Сервер DayZ Standalone (см. тему вот эту)
      2. Notepad++: бесплатно на оф. сайте
      3. Немного времени и настойчивости (обычно бывает в комплекте и так)
       
      И так, начинаем:
      1. Открываем блокнотом mpmissions\dayzOffline.chernarusplus\init.c
      P.S. Имя папки dayzOffline.chernarusplus у вас может отличаться, будьте внимательны
      2. В начале файла добавляем:
      static int time_repeat_info_players = 10; //in seconds static string file_name_info_players = "$profile:PlayersLogFile.txt"; static void WriteFile(string file_name, string text) { private FileHandle fhandle; if ( !FileExist(file_name) ) { fhandle = OpenFile(file_name, FileMode.WRITE); } else { fhandle = OpenFile(file_name, FileMode.APPEND); } if ( fhandle == 0 ) { Print("[#Запись_в_файл]: Не удалось открыть файл для записи: " + file_name); Print("[#Запись_в_файл]: [Запись]: " + text); return; } FPrintln(fhandle, text); CloseFile(fhandle); } static void WritePlayersInfo() { array<Man> players = new array<Man>; Man player; Man player_test; GetGame().GetPlayers( players ); if (players.Count() > 0) { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } for ( int i = 0; i < players.Count(); ++i ) { player_test = players.Get(i); if( player_test ) { PlayerIdentity p_identity = player_test.GetIdentity(); private string coord_pl = player_test.GetPosition().ToString(); private string Name_P = p_identity.GetName(); private string UID_P = p_identity.GetPlainId(); WriteFile(file_name_info_players, "User name: " + Name_P + " UID: " + UID_P + " Coords: " + coord_pl); } } } else { if ( FileExist(file_name_info_players) ) { DeleteFile(file_name_info_players); } } } Где 'PlayersLogFile.txt' меняем на нужное вам имя файла, а в 'time_repeat_info_players' настраиваем время повтора проверки списка игроков для перезаписи файла
      3. Находим в файле блок 'void main()' и в его конце перед закрывающей '}', поумолчанию это строка
      weather.SetWindFunctionParams(0.1, 0.3, 50); добавляем ниже строку:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(WritePlayersInfo, (time_repeat_info_players * 1000), true); 4. Готово, если не допустили ошибок, при наличии хотя бы 1 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.