Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
-
Объявления
-
⚙️ Новые онлайн-инструменты для DayZ 26.07.2026
-
- 0
Wai 2.2.0 миссии не закрываются или не появляются
Спросил
dok379
-
Похожие публикации
-
Автор: Miduznya
Всем привет, чет не нашел не где как можно в ручную обновить через .bat или .cmd файл
если есть у кого такой поделитесь плиз. Прошу сильно не пинать если есть такая тема дайте ссылку
-
Автор: BorizzK
Поскольку штатный чат бегемоты сломали, а чат-одминка лучший способ тестирования функций и параметров/значений на стороне сервера
Реши сначала на клиенте чат отмоддидь, но потом обнаружил что Даон в VPP своей это уже сделал и мне остается только отмоддидь одну его функцию на стороне сервера, что я и сделал
Посмотрел
На клиенте моддинг строки чата с перехватом 5_Mission\GUI
ChatInputMenu.c
modded class ChatInputMenu { override bool OnChange(Widget w, int x, int y, bool finished) { if (!finished) return false; string text = m_edit_box.GetText(); if (text != "" && (text.Substring(0,1)) == "/") { GetRPCManager().SendRPC( "RPC_MissionServer", "HandleChatCommand", new Param1<string>(text), true); m_close_timer.Run(0.1, this, "Close"); //Exit out as we don't want to send commands in chat for others to see. return true; } return super.OnChange(w, x, y, finished); } }; если строка начинается на / то через RPC засылаем на сервер RPC передавая ей текст и завершаем функцию
ну а если не на / вызываем нативную функцию
На сервере в классе MissionServer зареген RPC "RPC_MissionServer" (используя функционал мода CF)
void MissionServer() { GetRPCManager().AddRPC( "RPC_MissionServer", "RequestLockServer", this, SingeplayerExecutionType.Server ); m_DEXML = new DEXML; //=============RPC's==================== GetRPCManager().AddRPC( "RPC_ReadFromXML", "GetTypesXML", this, SingeplayerExecutionType.Server ); GetRPCManager().AddRPC( "RPC_MissionServer", "HandleChatCommand", this, SingeplayerExecutionType.Server ); //====================================== } Сервер получая RPC "RPC_MissionServer" вызывает из этого класса функцию HandleChatCommand (собственно так же используется функционал мода CF)
Как и что вдаваться в подробности смысла нет
Вот собственно она
void HandleChatCommand( CallType type, ParamsReadContext ctx, PlayerIdentity sender, Object target) { Param1<string> data; //chat string if ( !ctx.Read( data ) ) return; if (type == CallType.Server) { GetChatCommandManager().ParseCommand(data.param1,sender.GetPlainId()); } } Ну а нам осталось только перехватить то что прилетает в эту функцию и забрать себе
override void HandleChatCommand(CallType type, ParamsReadContext ctx, PlayerIdentity sender, Object target) { Param1<string> data; //chat string if (!ctx.Read(data)) return; if (type == CallType.Server && sender && data.param1) { AdminMod.OnAdminChatRequestVPP(sender, data.param1); return; } } Все получили, все прилетело улетело куда надо
Но!
нам в нашей одминке нужно получить перса отправителя
Попытка сделать это так:
class AdminMod { void OnAdminChatRequestVPP(Playeridentity sender, string command) { PlayerBase player = GetAdminPlayerByIdentity(sender); if (player) { AdminCommand(player, command); } } PlayerBase GetAdminPlayerByIdentity(PlayerIdentity sender) { array<Man> players = new array<Man>; GetGame().GetPlayers(players); for ( int i = 0; i < players.Count(); ++i ) { if (players[i].GetIdentity() == sender && IsAdmin(sender)) { return PlayerBase.Cast(players[i]); } } return NULL; } bool IsAdmin(PlayerIdentity sender) { if (m_AdminsList.Contains(sender.GetPlainId())) { return true; } return false; } AdminCommand(PlayerBase player, string command); { //тут обрабочик и тп } }
Почти все норм
Но условие
if (players.GetIdentity() == sender)
НИКОГДА НЕ РАБОТАЕТ
ВООБЩЕ
по итогам логгирования выяснил что у одного и того же клиента players.GetIdentity() != sender - хотя в sender прилетает как бы Identity
Сделал проверку так
PlayerBase GetAdminPlayerByIdentity(PlayerIdentity sender) { array<Man> players = new array<Man>; GetGame().GetPlayers(players); for ( int i = 0; i < players.Count(); ++i ) { if (players[i].GetIdentity().GetPlainId() == sender.GetPlainId() && IsAdmin(sender)) { return PlayerBase.Cast(players[i]); } } return NULL; } И все взлетело!
НО!
Как?
Два разных Identity и функция GetPlainId() возвращает одинаковые steam UID
Вот как я Вас спрашиваю?
Или это CF гадит...
-
Автор: Akie
Никак не могу разобраться как заставить ВАИ выводить миникарту при старте миссии, скрипт есть, просто как заставить его выводить её не могу понять, подскажите пожалуйста господа. Знаю что сообщения выводятся через mission_winorfail.sqf, но как оттуда сделать вызов вариабла сообщения я не знаю.
-
Автор: Gromillla
Доброго времени суток дамы и господа, и сразу к вопросу, в миссиях 2.2.5 версии, если боты "бандиты", то они скин игрока видят и реагируют на него, а если миссии с ботами "героями", то они скин игрока не видят. Скин "RUS_Soldier_Marksman". Как соответственно решить эту проблему? Ошибок в РПТ нет.
-
-
Наш выбор

ZigoFrend
Миссии не закрываются. Столкнулся с проблемой, что миссии или не появляются или не закрываются. Сервер работает уже 3 дня полноценно но миссии появляются не на каждом рестарте, могут за целый рестарт не появится вообще. Так же если ботов оттянуть на тот или иной радиус от миссии они просто пропадают и миссию не возможно закрыть. Как это поправить ? помогите пожалуйста.
В RPT логах ничего нету про миссии кроме...
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах