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
- 0
-
Similar Content
-
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 игрока на сервере ваш файл с данными по игрокам будет присутствовать и заполняться информацией, а в случае их отсутствия удаляться.
-
By BorizzK
Нашел где и как она задается
Файл MissionServer.c
Функция
void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime)
Вызывается по эвенту PreloadEventTypeID: - при подключении игрока и постановке его в очередь
Она возвращает queueTime в которой и будут те самые 15 сек
Тк он возвращается пустой, сервер использует значение по умолчанию
Если внутри функции изменить значение
queueTime = 5;
то будет нужное Вам время
Соответственно переопределяем эту функцию в init.c или Вашем файле миссии в моде (или нет)
override void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime) { if (GetHive()) { // Preload data on client by character from database useDB = true; queueTime = 1; //Делаем 1 сек } else { // Preload data on client without database //Вот это я не понял зачем useDB = false; pos = "1189.3 0.0 5392.48"; yaw = 0; queueTime = 1; //Делаем 1 сек } } Делаем 1 сек
Вуаля...
-
By korolev824
Здравствуйте ,не могу найти где настраивается время поднятия игрока дефибриллятором ,по умолчанию стоит 2 минуты как увиличить до 8 ?
-
-
Our picks
Пишу мод для стримеров и сериальщиков (наши оч попросили и пара ютьюберов)
Управление камерой с регулированием fov и тп включая углы итп
Все почти отлично
Столкнулись с проблемой
С фрикамеры когда крупным планом беседу снимаешь не видно (нет анимации) движения губ. Жестикуляция и голос есть, а движения губ нет, только если перса оператора прям рядом поставить, тогда есть, но он в кадр в некоторых моментах попадает, а этого не нужно. Если удалить обьект перса оператора, то норм, но иногда сервак с ума сходит.
А когда операторов 2 - 3, то ваще фигня иногда начинается вплоть до краша...
Может кто в курсе, где расстояние, радиус синхры настроить можно?
Share this post
Link to post
Share on other sites