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
mrDante
Проблема с принудетьной перезагрузка сервера с помощью Bec..
Консоль закрывается, но в Подробностях висит процесс DayzServer_x64.exe и не убивается полностью, что вызывает зависание.
Как решить?
-
By DrTauren
Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье
Скачать серверные файлы через Steam: steam://rungameid/223350
На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс
-
By 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 гадит...
-
By petpoleoo
[arma3life]
IP = 127.0.0.1
Port = 3306
Username = root
Password = nthhjh23
Database = arma3life
часов 10 думаем чё не так с базой везде ж ведь всё прописано сервер на хостинге windows 2002 standart помогите или тс там скайп просто реально всё работало и бац
Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
-
-
Our picks
Проблема заключается в следующем: никто не может войти, ожидание на "Загрузке персонажа"
Epoch 1.0.5.1, NAPF
RPT:
ID каждый раз разный, далее загружаются миссии, боты, все визуально работает, но войти никто не может, после 120 секунд выбрасывает в лобби...
Помогите, пожалуйста, разобраться с этой проблемой...
Share this post
Link to post
Share on other sites