Translating and cleanup
This commit is contained in:
parent
ee39d0586a
commit
df29776fb7
@ -1,4 +1,5 @@
|
||||
//Blizzless Project 2022
|
||||
#define LOG_KEEP_ALIVE
|
||||
|
||||
//Blizzless Project 2022
|
||||
using bgs.protocol;
|
||||
//Blizzless Project 2022
|
||||
@ -40,7 +41,6 @@ using System.Net.Security;
|
||||
//Blizzless Project 2022
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace DiIiS_NA.LoginServer.Battle
|
||||
{
|
||||
public class BattleClient : SimpleChannelInboundHandler<BNetPacket>, IRpcChannel
|
||||
@ -55,19 +55,16 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
public IRpcController ListenerController;
|
||||
private uint _tokenCounter = 0;
|
||||
public static bgs.protocol.NO_RESPONSE NO_RESPONSE = bgs.protocol.NO_RESPONSE.CreateBuilder().Build();
|
||||
private Dictionary<int, RPCCallBack> pendingResponses = new Dictionary<int, RPCCallBack>();
|
||||
private readonly Dictionary<int, RPCCallBack> _pendingResponses = new Dictionary<int, RPCCallBack>();
|
||||
public bgs.protocol.v2.Attribute AttributeOfServer { get; set; }
|
||||
|
||||
public Account Account { get; set; }
|
||||
public bool MMJoined = false;
|
||||
public const byte ServiceReply = 0xFE;
|
||||
public SslStream ssl = null;
|
||||
private static int REQUEST_SERVICE_ID = 0;
|
||||
private static int RESPONSE_SERVICE_ID = 254;
|
||||
public ulong LastPartitionIdHigh = 0; //HACK: fix it later
|
||||
public ulong LastPartitionIdLow = 0;
|
||||
//public object clientLock = new object();
|
||||
public object serviceLock = new object();
|
||||
public object _serviceLock = new object();
|
||||
public object messageLock = new object();
|
||||
private ulong _listenerId; // last targeted rpc object.
|
||||
public bool MOTDSent { get; private set; }
|
||||
@ -172,8 +169,8 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
if (msg.GetHeader().ServiceId == RESPONSE_SERVICE_ID)
|
||||
{
|
||||
if (pendingResponses.Count == 0) return;
|
||||
RPCCallBack done = pendingResponses[(int)header.Token];
|
||||
if (_pendingResponses.Count == 0) return;
|
||||
RPCCallBack done = _pendingResponses[(int)header.Token];
|
||||
if (done != null)
|
||||
{
|
||||
var service = Service.GetByID(header.ServiceId);
|
||||
@ -181,7 +178,7 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
{
|
||||
IMessage message = DescriptorProto.ParseFrom(payload);
|
||||
done.Action(message);
|
||||
pendingResponses.Remove((int)header.Token);
|
||||
_pendingResponses.Remove((int)header.Token);
|
||||
}
|
||||
else
|
||||
Logger.Debug(
|
||||
@ -283,8 +280,13 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
ListenerId = 0
|
||||
};
|
||||
#if DEBUG
|
||||
Logger.Warn("Call: {0}, Service hash: {1}, Method: {2}, ID: {3}",
|
||||
service.GetType().Name, header.ServiceHash, method.Name, header.MethodId);
|
||||
#if !LOG_KEEP_ALIVE
|
||||
if (method.Name != "KeepAlive")
|
||||
#endif
|
||||
{
|
||||
Logger.Warn("Call: {0}, Service hash: {1}, Method: {2}, ID: {3}",
|
||||
service.GetType().Name, header.ServiceHash, method.Name, header.MethodId);
|
||||
}
|
||||
#endif
|
||||
|
||||
service.CallMethod(method, controller, message,
|
||||
@ -445,7 +447,8 @@ namespace DiIiS_NA.LoginServer.Battle
|
||||
|
||||
if (!this.Services.ContainsKey(serviceHash))
|
||||
{
|
||||
Logger.Warn("Не найден сервис привязанный к клиенту {0} [0x{1}].", serviceName, serviceHash.ToString("X8"));
|
||||
Logger.Warn("Service not found for client {0} [0x{1}].", serviceName, serviceHash.ToString("X8"));
|
||||
// in english: "Service not found for client {0} [0x{1}]."
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -248,19 +248,20 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
||||
|
||||
switch (request.Partition)
|
||||
{
|
||||
case 1: //Кампания
|
||||
case 1: //"Campaign"
|
||||
|
||||
handicap = request.HandicapLevel;
|
||||
Difficulty = request.MonsterLevel;
|
||||
GameTag = request.GameTag;
|
||||
GameAct = request.GameAct;
|
||||
GameQuest = request.GameQuest;
|
||||
break;
|
||||
case 2: //Приключения
|
||||
case 2: //"Adventure"
|
||||
|
||||
Difficulty = request.HandicapLevel;
|
||||
GameTag = request.GameTag;
|
||||
break;
|
||||
case 3: //Порталы дерзаний
|
||||
|
||||
case 3: //"Adventure"
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -48,19 +48,19 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
|
||||
public override void Logon(IRpcController controller, LogonRequest request, Action<NoData> done)
|
||||
{
|
||||
//Error 28 - Появилось обновление Diablo III, клиент закрывается.
|
||||
//Error 33 - Профилактические работы
|
||||
//Error 35 - Служба Battle.net - Отключена
|
||||
//Error 36 - Не удалось загрузить модуль аутентификации
|
||||
//Error 37 - Служба аутентификации получает слишком много обращений.
|
||||
//Error 38 - Для игры требуется получить BattleTag
|
||||
//Error 42 - Вы подключаетесь к неверному серверу (Неверная последовательность действий)
|
||||
//Error 43 - Вы заблокировали свою учетную запись с мобильного телефона.
|
||||
//Error 44 - Невозможно выполнить это действие. Учетная запись лишена функции голосового общения.
|
||||
//Error 50 - Предоплаченное для учетной записи время игры истекло.
|
||||
//Error 51 - Подписка для данной учетной записи истекла.
|
||||
//Error 52 - Данная учетная запись была заблокирована в связи с многочисленными нарушениями условий использования службы Battle.net
|
||||
//Error 53 - Действие данной учетной записи было приостановлено в связи с нарушениями условий использования службы Batle.net.
|
||||
//Error 28 - There is an update for Diablo III, the client is closing.
|
||||
//Error 33 - Maintenance
|
||||
//Error 35 - Battle.net service - Disabled
|
||||
//Error 36 - Failed to load authentication module
|
||||
//Error 37 - Authentication service is receiving too many requests.
|
||||
//Error 38 - To play you need to get BattleTag
|
||||
//Error 42 - You are connecting to the wrong server (Wrong sequence of actions)
|
||||
//Error 43 - You blocked your account from your mobile phone.
|
||||
//Error 44 - Unable to perform this action. The account is deprived of the function of voice communication.
|
||||
//Error 50 - Prepaid time for the account has expired.
|
||||
//Error 51 - Subscription for this account has expired.
|
||||
//Error 52 - This account has been blocked due to numerous violations of the terms of use of the Battle.net service
|
||||
//Error 53: Action of this account has been suspended due to violations of the terms of use of the Batle.net service
|
||||
|
||||
int VersionRetail = 81850; //74291 - 2.7.0, 76761 - 2.7.1, 79575 - 2.7.2;
|
||||
int VersionPTR = 79151;
|
||||
@ -82,9 +82,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
}
|
||||
if (request.ApplicationVersion == 0)
|
||||
{
|
||||
var Parts = request.Version.Split('"');
|
||||
if (Parts.Length > 1)
|
||||
version = Parts[1];
|
||||
var parts = request.Version.Split('"');
|
||||
if (parts.Length > 1)
|
||||
version = parts[1];
|
||||
}
|
||||
else
|
||||
version = request.ApplicationVersion.ToString();
|
||||
@ -92,27 +92,27 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
if (request.Program.ToLower() == "d3")
|
||||
if (request.ApplicationVersion != VersionRetail & request.ApplicationVersion != VersionPTR)
|
||||
{
|
||||
//Logger.Error("Подключение не правильной версии клиента!");
|
||||
//Logger.Error("Connecting the wrong client version!");
|
||||
var ercomplete = LogonResult.CreateBuilder().SetErrorCode(28);
|
||||
//(controller as HandlerController).Client.MakeRPC((lid) => AuthenticationListener.CreateStub((controller as HandlerController).Client).OnLogonComplete(controller, ercomplete.Build(), callback => { }));
|
||||
//((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, ercomplete.Build(), callback => { }));
|
||||
}
|
||||
switch (request.Locale)
|
||||
{
|
||||
case "deDE": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.deDE; break;
|
||||
case "enGB": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enGB; break;
|
||||
case "enSG": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enSG; break;
|
||||
case "enUS": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enUS; break;
|
||||
case "esES": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.esES; break;
|
||||
case "esMX": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.esMX; break;
|
||||
case "frFR": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.frFR; break;
|
||||
case "itIT": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.itIT; break;
|
||||
case "koKR": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.koKR; break;
|
||||
case "plPL": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.plPL; break;
|
||||
case "ptBR": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ptBR; break;
|
||||
case "ptPT": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ptPT; break;
|
||||
case "ruRU": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ruRU; break;
|
||||
case "trTR": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.trTR; break;
|
||||
case "zhCN": (controller as HandlerController).Client.ClientLanguage = Battle.BattleClient.ClientLocale.zhCN; break;
|
||||
case "deDE": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.deDE; break;
|
||||
case "enGB": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enGB; break;
|
||||
case "enSG": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enSG; break;
|
||||
case "enUS": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.enUS; break;
|
||||
case "esES": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.esES; break;
|
||||
case "esMX": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.esMX; break;
|
||||
case "frFR": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.frFR; break;
|
||||
case "itIT": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.itIT; break;
|
||||
case "koKR": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.koKR; break;
|
||||
case "plPL": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.plPL; break;
|
||||
case "ptBR": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ptBR; break;
|
||||
case "ptPT": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ptPT; break;
|
||||
case "ruRU": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.ruRU; break;
|
||||
case "trTR": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.trTR; break;
|
||||
case "zhCN": ((HandlerController)controller).Client.ClientLanguage = Battle.BattleClient.ClientLocale.zhCN; break;
|
||||
}
|
||||
done(NoData.CreateBuilder().Build());
|
||||
Logger.Info("----------------------------------------------------------------");
|
||||
@ -123,21 +123,23 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
case "d3":
|
||||
//if (!request.HasCachedWebCredentials)
|
||||
{
|
||||
#region Процедура аутентификации через WEB
|
||||
#region Authentication procedure through WEB
|
||||
if (request.HasCachedWebCredentials)
|
||||
VerifyWebCredentials(controller, VerifyWebCredentialsRequest.CreateBuilder().SetWebCredentials(request.CachedWebCredentials).Build(), callback => { });
|
||||
builder.SetPayloadType("web_auth_url");
|
||||
if (REST.Config.Instance.Public)
|
||||
builder.SetPayload(ByteString.CopyFromUtf8(String.Format("http://{0}:{1}/battlenet/login", REST.Config.Instance.PublicIP, REST.Config.Instance.PORT)));
|
||||
builder.SetPayload(ByteString.CopyFromUtf8(
|
||||
$"http://{REST.Config.Instance.PublicIP}:{REST.Config.Instance.PORT}/battlenet/login"));
|
||||
else
|
||||
builder.SetPayload(ByteString.CopyFromUtf8(String.Format("http://{0}:{1}/battlenet/login", Program.RESTSERVERIP, REST.Config.Instance.PORT)));
|
||||
builder.SetPayload(ByteString.CopyFromUtf8(
|
||||
$"http://{Program.RESTSERVERIP}:{REST.Config.Instance.PORT}/battlenet/login"));
|
||||
|
||||
(controller as HandlerController).Client.MakeRPC((lid) => ChallengeListener.CreateStub((controller as HandlerController).Client).OnExternalChallenge(controller, builder.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => ChallengeListener.CreateStub(((HandlerController)controller).Client).OnExternalChallenge(controller, builder.Build(), callback => { }));
|
||||
#endregion
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Logger.Error("Authorization not implemeted for Game: {0}", game);
|
||||
Logger.Error("Authorization not implemented for Game: {0}", game);
|
||||
Logger.Info("----------------------------------------------------------------");
|
||||
break;
|
||||
}
|
||||
@ -167,13 +169,13 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
public override void VerifyWebCredentials(IRpcController controller, VerifyWebCredentialsRequest request, Action<NoData> done)
|
||||
{
|
||||
done(NoData.CreateBuilder().Build());
|
||||
#region Завершение аутентификации
|
||||
#region Authentication completion
|
||||
if (request.WebCredentials.ToStringUtf8().ToLower().Contains("eu-"))
|
||||
{
|
||||
(controller as HandlerController).Client.Account = AccountManager.GetAccountByPersistentID(1);
|
||||
((HandlerController)controller).Client.Account = AccountManager.GetAccountByPersistentID(1);
|
||||
|
||||
var comple = LogonResult.CreateBuilder()
|
||||
.SetAccountId((controller as HandlerController).Client.Account.BnetEntityId)
|
||||
.SetAccountId(((HandlerController)controller).Client.Account.BnetEntityId)
|
||||
.SetEmail("TEST@MAIL.DU")
|
||||
.SetBattleTag("Test#0000")
|
||||
.SetSessionKey(ByteString.CopyFrom("7CB18EDA470F96A4DD70C70B9307CBBA2A4131043075648D8B2F55EE0E383132025D3CC3BA43406DC0740D776B1E5C366BD1123D16E6D6759075B475C28C4022".ToByteArray()))
|
||||
@ -184,49 +186,49 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
||||
.SetGeoipCountry("RU")
|
||||
.SetRestrictedMode(false)
|
||||
.SetErrorCode(0);
|
||||
comple.AddGameAccountId((controller as HandlerController).Client.Account.GameAccount.BnetEntityId);
|
||||
(controller as HandlerController).Client.Account.GameAccount.LoggedInClient = (controller as HandlerController).Client;
|
||||
(controller as HandlerController).Client.MakeRPC((lid) => AuthenticationListener.CreateStub((controller as HandlerController).Client).OnLogonComplete(controller, comple.Build(), callback => { }));
|
||||
(controller as HandlerController).Client.Account.GameAccount.ProgramField.Value = "FEN";
|
||||
PlayerManager.PlayerConnected((controller as HandlerController).Client);
|
||||
var ga1selected = GameAccountSelectedRequest.CreateBuilder().SetResult(0).SetGameAccountId((controller as HandlerController).Client.Account.GameAccount.BnetEntityId);
|
||||
(controller as HandlerController).Client.MakeRPC((lid) =>
|
||||
AuthenticationListener.CreateStub((controller as HandlerController).Client).OnGameAccountSelected(new HandlerController() { ListenerId = lid }, ga1selected.Build(), callback => { }));
|
||||
comple.AddGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId);
|
||||
((HandlerController)controller).Client.Account.GameAccount.LoggedInClient = ((HandlerController)controller).Client;
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, comple.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.Account.GameAccount.ProgramField.Value = "FEN";
|
||||
PlayerManager.PlayerConnected(((HandlerController)controller).Client);
|
||||
var ga1selected = GameAccountSelectedRequest.CreateBuilder().SetResult(0).SetGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId);
|
||||
((HandlerController)controller).Client.MakeRPC((lid) =>
|
||||
AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnGameAccountSelected(new HandlerController() { ListenerId = lid }, ga1selected.Build(), callback => { }));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
(controller as HandlerController).Client.Account = AccountManager.GetAccountBySaltTicket(request.WebCredentials.ToStringUtf8());
|
||||
((HandlerController)controller).Client.Account = AccountManager.GetAccountBySaltTicket(request.WebCredentials.ToStringUtf8());
|
||||
|
||||
if ((controller as HandlerController).Client.Account == null)
|
||||
if (((HandlerController)controller).Client.Account == null)
|
||||
{
|
||||
var complete = LogonResult.CreateBuilder().SetErrorCode(2);
|
||||
(controller as HandlerController).Client.MakeRPC((lid) => AuthenticationListener.CreateStub((controller as HandlerController).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
(controller as HandlerController).Client.SocketConnection.CloseAsync();
|
||||
(controller as HandlerController).Client.Connect.CloseAsync();
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
((HandlerController)controller).Client.SocketConnection.CloseAsync();
|
||||
((HandlerController)controller).Client.Connect.CloseAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Info("Client connected - {0}#{1}", (controller as HandlerController).Client.Account.DBAccount.BattleTagName, (controller as HandlerController).Client.Account.HashCode);
|
||||
Logger.Info("Client connected - {0}#{1}", ((HandlerController)controller).Client.Account.DBAccount.BattleTagName, ((HandlerController)controller).Client.Account.HashCode);
|
||||
Logger.Info("----------------------------------------------------------------");
|
||||
var complete = LogonResult.CreateBuilder()
|
||||
.SetAccountId((controller as HandlerController).Client.Account.BnetEntityId)
|
||||
.SetEmail((controller as HandlerController).Client.Account.Email)
|
||||
.SetBattleTag((controller as HandlerController).Client.Account.BattleTag)
|
||||
.SetAccountId(((HandlerController)controller).Client.Account.BnetEntityId)
|
||||
.SetEmail(((HandlerController)controller).Client.Account.Email)
|
||||
.SetBattleTag(((HandlerController)controller).Client.Account.BattleTag)
|
||||
.AddAvailableRegion(1)
|
||||
.SetConnectedRegion(1)
|
||||
.SetGeoipCountry("RU")
|
||||
.SetRestrictedMode(false)
|
||||
.SetErrorCode(0);
|
||||
complete.AddGameAccountId((controller as HandlerController).Client.Account.GameAccount.BnetEntityId); //D3
|
||||
(controller as HandlerController).Client.Account.GameAccount.LoggedInClient = (controller as HandlerController).Client;
|
||||
(controller as HandlerController).Client.MakeRPC((lid) => AuthenticationListener.CreateStub((controller as HandlerController).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
complete.AddGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId); //D3
|
||||
((HandlerController)controller).Client.Account.GameAccount.LoggedInClient = ((HandlerController)controller).Client;
|
||||
((HandlerController)controller).Client.MakeRPC((lid) => AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnLogonComplete(controller, complete.Build(), callback => { }));
|
||||
|
||||
PlayerManager.PlayerConnected((controller as HandlerController).Client);
|
||||
PlayerManager.PlayerConnected(((HandlerController)controller).Client);
|
||||
|
||||
var gaselected = GameAccountSelectedRequest.CreateBuilder().SetResult(0).SetGameAccountId((controller as HandlerController).Client.Account.GameAccount.BnetEntityId);
|
||||
(controller as HandlerController).Client.MakeRPC((lid) =>
|
||||
AuthenticationListener.CreateStub((controller as HandlerController).Client).OnGameAccountSelected(new HandlerController() { ListenerId = lid }, gaselected.Build(), callback => { }));
|
||||
var gaselected = GameAccountSelectedRequest.CreateBuilder().SetResult(0).SetGameAccountId(((HandlerController)controller).Client.Account.GameAccount.BnetEntityId);
|
||||
((HandlerController)controller).Client.MakeRPC((lid) =>
|
||||
AuthenticationListener.CreateStub(((HandlerController)controller).Client).OnGameAccountSelected(new HandlerController() { ListenerId = lid }, gaselected.Build(), callback => { }));
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -42,7 +42,7 @@ namespace DiIiS_NA.Core.MPQ
|
||||
return;
|
||||
}
|
||||
this.BaseMPQFiles.Add(mpqFile);
|
||||
Logger.Trace("Добавлено хранилище MPQ: {0}.", file);
|
||||
Logger.Trace("Added MPQ storage: {0}.", file);
|
||||
}
|
||||
|
||||
this.PatchPattern = patchPattern;
|
||||
@ -93,11 +93,11 @@ namespace DiIiS_NA.Core.MPQ
|
||||
{
|
||||
foreach (var mpq in pair.Value)
|
||||
{
|
||||
Logger.Trace("Архив: {0}, включен в систему.", System.IO.Path.GetFileName(mpq));
|
||||
Logger.Trace("MPQ: {0}, added to the system.", System.IO.Path.GetFileName(mpq));
|
||||
this.FileSystem.Archives.Add(new MpqArchive(new FileStream(mpq, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), true));
|
||||
}
|
||||
}
|
||||
Logger.Trace("Система сконструирована.");
|
||||
Logger.Trace("MPQ system constructed.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,11 +32,11 @@ namespace DiIiS_NA.Core.MPQ
|
||||
|
||||
if (!Directory.Exists(MpqRoot))
|
||||
{
|
||||
Logger.Error("MPQ арихивы не найдены: {0}.", MpqRoot);
|
||||
Logger.Error("MPQ archives not found: {0}.", MpqRoot);
|
||||
return;
|
||||
}
|
||||
|
||||
Logger.Info("Initializating of data..");
|
||||
Logger.Info("Initializing of data..");
|
||||
MPQList = FileHelpers.GetFilesByExtensionRecursive(MpqRoot, ".mpq");
|
||||
|
||||
Data = new Data();
|
||||
|
||||
@ -181,7 +181,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client.serviceLock)
|
||||
lock (client._serviceLock)
|
||||
{
|
||||
Logger.Trace("GrantAchievement(): id {0}", achievementId);
|
||||
if (client.Account.GameAccount.Achievements.Where(a => a.AchievementId == achievementId && a.Completion != -1).Count() > 0) return;
|
||||
@ -246,7 +246,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client.serviceLock)
|
||||
lock (client._serviceLock)
|
||||
{
|
||||
Logger.Trace("GrantCriteria(): id {0}", criteriaId);
|
||||
D3.AchievementsStaticData.StaticCriteriaDefinition definition = null;
|
||||
@ -381,7 +381,7 @@ namespace DiIiS_NA.GameServer.AchievementSystem
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
lock (client.serviceLock)
|
||||
lock (client._serviceLock)
|
||||
{
|
||||
if (additionalQuantity == 0) return;
|
||||
Logger.Trace("UpdateQuantity(): id {0}", achievementId);
|
||||
|
||||
Loading…
Reference in New Issue
user.block.title