public ModelInfo WorldLoad() { Loger.Log("Client WorldLoad (GetInfo 3)"); var packet = new ModelInt() { Value = (long)ServerInfoType.SendSave }; var stat = TransObject <ModelInfo>(packet, (int)PackageType.Request5UserInfo, (int)PackageType.Response6UserInfo); return(stat); }
public ModelInfo WorldLoad() { Loger.Log("Client WorldLoad (GetInfo 3)"); var packet = new ModelInt() { Value = 3 }; var stat = TransObject <ModelInfo>(packet, 5, 6); return(stat); }
private ModelGameServerInfo GetWorldObjectUpdate(ModelInt packet, ServiceContext context) { var data = Repository.GetData; var toClientGServerInfo = new ModelGameServerInfo(); if (packet != null) { toClientGServerInfo.WObjectOnlineList = data.WorldObjectOnlineList; toClientGServerInfo.FactionOnlineList = data.FactionOnlineList; } return(toClientGServerInfo); }
public ModelInt GetInfo(ModelInt packet, ServiceContext context) { var reason = (DisconnectReason)packet.Value; lock (context.Player) { context.Player.ExitReason = reason; var result = new ModelInt() { Value = (int)DisconnectReason.CloseConnection }; return(result); } }
public void Can_serialize_custom_ints() { //JsConfig<int>.IncludeDefaultValue = true; JsConfig<int>.RawSerializeFn = i => i == 0 ? "-1" : i.ToString(); var dto = new ModelInt { Int = 0 }; using (JsConfig.With(includeNullValues: true)) { Assert.That(dto.ToJson(), Is.EqualTo("{\"Int\":-1}")); } JsConfig.Reset(); }
public ModelInfo GetInfo(ModelInt packet) { if (Player == null) { return(null); } lock (Player) { var saveData = Player.SaveDataPacket; if (packet.Value == 1) { //полная информация fullInfo = true var data = Repository.GetData; var result = new ModelInfo() { My = Player.Public, IsAdmin = Player.IsAdmin, VersionInfo = MainHelper.VersionInfo, VersionNum = MainHelper.VersionNum, Seed = data.WorldSeed ?? "", MapSize = data.WorldMapSize, PlanetCoverage = data.WorldPlanetCoverage, Difficulty = data.WorldDifficulty, NeedCreateWorld = saveData == null, ServerTime = DateTime.UtcNow, }; return(result); } else if (packet.Value == 3) { //передача файла игры, для загрузки WorldLoad(); var result = new ModelInfo(); result.SaveFileData = saveData; return(result); } else { //краткая (зарезервированно, пока не используется) fullInfo = false var result = new ModelInfo(); return(result); } } }
private ModelModsFiles checkFiles(ModelInt packet, ServiceContext context) { return(ServerManager.ServerSettings.AppovedFolderAndConfig); }
public ModelInfo GetInfo(ModelInt packet, ServiceContext context) { lock (context.Player) { switch (packet.Value) { case (long)ServerInfoType.Full: { var result = GetModelInfo(context.Player); return(result); } case (long)ServerInfoType.SendSave: { if (context.PossiblyIntruder) { context.Disconnect("Possibly intruder"); return(null); } var result = new ModelInfo(); //передача файла игры, для загрузки WorldLoad(); // файл передать можно только в том случае если файлы прошли проверку //!Для Pvp проверка нужна всегда, в PvE нет if (ServerManager.ServerSettings.IsModsWhitelisted) { if ((int)context.Player.ApproveLoadWorldReason > 0) { context.Player.ExitReason = DisconnectReason.FilesMods; Loger.Log($"Login : {context.Player.Public.Login} not all files checked,{context.Player.ApproveLoadWorldReason.ToString() } Disconnect"); result.SaveFileData = null; return(result); } } result.SaveFileData = Repository.GetSaveData.LoadPlayerData(context.Player.Public.Login, 1); if (result.SaveFileData != null) { if (context.Player.MailsConfirmationSave.Count > 0) { for (int i = 0; i < context.Player.MailsConfirmationSave.Count; i++) { context.Player.MailsConfirmationSave[i].NeedSaveGame = false; } Loger.Log($"MailsConfirmationSave add {context.Player.MailsConfirmationSave.Count} (mails={context.Player.Mails.Count})"); //Ого! Игрок не сохранился после приема письма, с обязательным сохранением после получения //Отправляем письма ещё раз if (context.Player.Mails.Count == 0) { context.Player.Mails = context.Player.MailsConfirmationSave.ToList(); } else { var ms = context.Player.MailsConfirmationSave .Where(mcs => context.Player.Mails.Any(m => m.GetHashBase() != mcs.GetHashBase())) .ToList(); context.Player.Mails.AddRange(ms); } Loger.Log($"MailsConfirmationSave (mails={context.Player.Mails.Count})"); } } Loger.Log($"Load World for {context.Player.Public.Login}. (mails={context.Player.Mails.Count}, fMails={context.Player.FunctionMails.Count})"); return(result); } case (long)ServerInfoType.FullWithDescription: { var result = GetModelInfo(context.Player); //result.Description = ""; var displayAttributes = new List <Tuple <int, string> >(); foreach (var prop in typeof(ServerSettings).GetFields()) { var attribute = prop.GetCustomAttributes(typeof(DisplayAttribute)).FirstOrDefault(); if (attribute is null || !prop.IsPublic) { continue; } var dispAtr = (DisplayAttribute)attribute; var strvalue = string.IsNullOrEmpty(dispAtr.GetDescription()) ? prop.Name : dispAtr.GetDescription(); strvalue = strvalue + "=" + prop.GetValue(ServerManager.ServerSettings).ToString(); var order = dispAtr.GetOrder().HasValue ? dispAtr.GetOrder().Value : 0; displayAttributes.Add(Tuple.Create(order, strvalue)); } var sb = new StringBuilder(); var sorte = new List <string>(displayAttributes.OrderBy(x => x.Item1).Select(y => y.Item2)).AsReadOnly(); foreach (var prop in sorte) { sb.AppendLine(prop); } //result.Description = sb.ToString(); return(result); } case (long)ServerInfoType.Short: default: { // краткая (зарезервированно, пока не используется) fullInfo = false var result = new ModelInfo(); return(result); } } } }
public ModelInfo GetInfo(ModelInt packet, ServiceContext context) { lock (context.Player) { switch (packet.Value) { case 1: { var result = GetModelInfo(context.Player); return(result); } case 3: { var result = new ModelInfo(); //передача файла игры, для загрузки WorldLoad(); // файл передать можно только в том случае если файлы прошли проверку //!Для Pvp проверка нужна всегда, в PvE нет if (ServerManager.ServerSettings.IsModsWhitelisted) { if ((int)context.Player.ApproveLoadWorldReason > 0) { context.Player.ExitReason = DisconnectReason.FilesMods; Loger.Log($"Login : {context.Player.Public.Login} not all files checked,{context.Player.ApproveLoadWorldReason.ToString() } Disconnect"); result.SaveFileData = null; return(result); } } Loger.Log($"Load World for {context.Player.Public.Login}"); result.SaveFileData = Repository.GetSaveData.LoadPlayerData(context.Player.Public.Login, 1); return(result); } case 4: { var result = GetModelInfo(context.Player); //result.Description = ""; var displayAttributes = new List <Tuple <int, string> >(); foreach (var prop in typeof(ServerSettings).GetFields()) { var attribute = prop.GetCustomAttributes(typeof(DisplayAttribute)).FirstOrDefault(); if (attribute is null || !prop.IsPublic) { continue; } var dispAtr = (DisplayAttribute)attribute; var strvalue = string.IsNullOrEmpty(dispAtr.GetDescription()) ? prop.Name : dispAtr.GetDescription(); strvalue = strvalue + "=" + prop.GetValue(ServerManager.ServerSettings).ToString(); var order = dispAtr.GetOrder().HasValue ? dispAtr.GetOrder().Value : 0; displayAttributes.Add(Tuple.Create(order, strvalue)); } var sb = new StringBuilder(); var sorte = new List <string>(displayAttributes.OrderBy(x => x.Item1).Select(y => y.Item2)).AsReadOnly(); foreach (var prop in sorte) { sb.AppendLine(prop); } //result.Description = sb.ToString(); return(result); } default: { // краткая (зарезервированно, пока не используется) fullInfo = false var result = new ModelInfo(); return(result); } } } }