private bnet.protocol.storage.ExecuteResponse GetToonSettings(bnet.protocol.storage.ExecuteRequest request) { var results = new List <bnet.protocol.storage.OperationResult>(); foreach (var operation in request.OperationsList) { var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder().SetTableId(operation.TableId); operationResult.SetErrorCode(4); //this query returns error 4 in 7728 -Egris operationResult.AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .SetVersion(1) .Build() ); results.Add(operationResult.Build()); } var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); foreach (var result in results) { builder.AddResults(result); } return(builder.Build()); }
private bnet.protocol.storage.ExecuteResponse LoadAccountDigest(bnet.protocol.storage.ExecuteRequest request) { var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); var accountDigest = D3.Account.Digest.CreateBuilder().SetVersion(1) .SetLastPlayedHeroId(D3.OnlineService.EntityId.CreateBuilder().SetIdHigh(0).SetIdLow(0).Build()) .SetBannerConfiguration(D3.Account.BannerConfiguration.CreateBuilder() .SetBackgroundColorIndex(0) .SetBannerIndex(0) .SetPattern(0) .SetPatternColorIndex(0) .SetPlacementIndex(0) .SetSigilAccent(0) .SetSigilMain(0) .SetSigilColorIndex(0) .SetUseSigilVariant(false) .Build()) .SetFlags(0) .Build(); var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder() .SetTableId(request.OperationsList[0].TableId) .AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .SetVersion(1) .SetData(accountDigest.ToByteString()) .Build()) .Build(); builder.AddResults(operationResult); return(builder.Build()); }
private bnet.protocol.storage.ExecuteResponse GameAccountSettings(bnet.protocol.storage.ExecuteRequest request) { var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder() .SetTableId(request.OperationsList[0].TableId) .AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .Build()) .Build(); builder.AddResults(operationResult); return(builder.Build()); }
private bnet.protocol.storage.ExecuteResponse GetHeroDigest(bnet.protocol.storage.ExecuteRequest request) { var op = request.OperationsList[0]; var table_id = op.TableId; var column_id = op.ColumnId; var row_id = op.RowId; Logger.Debug("table_id.Hash:\n{0}", table_id.Hash.ToByteArray().Dump()); Logger.Debug("column_id.Hash:\n{0}", column_id.Hash.ToByteArray().Dump()); Logger.Debug("row_id.Hash:\n{0}", row_id.Hash.ToByteArray().Dump()); /*try { * var stream = CodedInputStream.CreateInstance(row_id.Hash.ToByteArray()); * stream.SkipRawBytes(2); * var tgen=bnet.protocol.toon.ToonHandle.CreateBuilder() * .SetRealm(stream.ReadRawVarint32()) * .SetRegion(stream.ReadRawVarint32()) * .SetProgram(stream.ReadUInt32()) // "D3\0\0" * .SetId(stream.ReadUInt64()) * .Build(); * Logger.Debug("generated:\n{0}", tgen.ToByteArray().Dump()); * Logger.Debug(tgen.ToString()); * //var toonhandle=bnet.protocol.toon.ToonHandle.ParseFrom(eid.ToByteArray()); * //Logger.Debug("row_id.hash as handle:\n{0}", toonhandle.ToString()); * } catch (Exception e) { * Logger.DebugException(e, "row_id"); * }*/ var heroDigest = D3.Hero.Digest.ParseFrom(StorageManager.Tables[table_id].Rows[row_id].Cells[column_id].Data); var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder() .SetTableId(request.OperationsList[0].TableId) .AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .SetVersion(1) .SetData(heroDigest.ToByteString()) .Build() ).Build(); var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); builder.AddResults(operationResult); return(builder.Build()); }
private bnet.protocol.storage.ExecuteResponse GameAccountSettings(bnet.protocol.storage.ExecuteRequest request) { var results = new List <bnet.protocol.storage.OperationResult>(); foreach (var operation in request.OperationsList) { var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder().SetTableId(operation.TableId); operationResult.AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .Build()); results.Add(operationResult.Build()); } var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); foreach (var result in results) { builder.AddResults(result); } return(builder.Build()); }
private bnet.protocol.storage.ExecuteResponse GetHeroDigest(MooNetClient client, bnet.protocol.storage.ExecuteRequest request) { var results = new List <bnet.protocol.storage.OperationResult>(); foreach (var operation in request.OperationsList) { Google.ProtocolBuffers.ByteString data = null; // find the requested toons entity-id. var stream = new MemoryStream(operation.RowId.Hash.ToByteArray()); // contains ToonHandle in field form with one unknown field (which is not in message definition): // int16 unknown; uint8 realm; uint8 region; uint32 program; uint64 id; stream.ReadValueU16(); // unknown stream.ReadValueU8(); // realm stream.ReadValueU8(); // region stream.ReadValueU32(false); // program var toonId = stream.ReadValueU64(false); if (!client.Account.CurrentGameAccount.Toons.ContainsKey(toonId)) { Logger.Error("Can't find the requested toon: {0}", toonId); continue; } var toon = client.Account.CurrentGameAccount.Toons[toonId]; if (operation.ColumnId.Hash.Equals(HeroDigestColumn)) { data = toon.Digest.ToByteString(); } else { Logger.Warn("Unknown ColumndId requested: {0}", operation.ColumnId.Hash.ToByteArray().HexDump()); } //else if (operation.ColumnId.Hash.Equals(HeroNameColumn)) // data = toon.NameText.ToByteString(); var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder().SetTableId(operation.TableId); operationResult.AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .SetVersion(1) .SetData(data) .Build() ); results.Add(operationResult.Build()); } var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); foreach (var result in results) { builder.AddResults(result); } return(builder.Build()); }
public override void Execute(Google.ProtocolBuffers.IRpcController controller, bnet.protocol.storage.ExecuteRequest request, System.Action <bnet.protocol.storage.ExecuteResponse> done) { Logger.Trace("Execute() {0}", this.Client); bnet.protocol.storage.ExecuteResponse response = null; switch (request.QueryName) { case "GetGameAccountSettings": response = GameAccountSettings(request); break; case "LoadAccountDigest": response = LoadAccountDigest(Client, request); break; case "GetHeroDigests": response = GetHeroDigest(Client, request); break; case "GetToonSettings": response = GetToonSettings(request); break; //case "GetAccountProfile": // response = GetAccountProfile(Client, request); // break; //case "GetHeroProfiles": // response = GetHeroProfiles(Client, request); // break; default: Logger.Warn("Unhandled query: {0}", request.QueryName); response = bnet.protocol.storage.ExecuteResponse.CreateBuilder().Build(); break; } done(response); }
private bnet.protocol.storage.ExecuteResponse LoadAccountDigest(MooNetClient client, bnet.protocol.storage.ExecuteRequest request) { var results = new List <bnet.protocol.storage.OperationResult>(); foreach (var operation in request.OperationsList) { var operationResult = bnet.protocol.storage.OperationResult.CreateBuilder().SetTableId(operation.TableId); operationResult.AddData( bnet.protocol.storage.Cell.CreateBuilder() .SetColumnId(request.OperationsList[0].ColumnId) .SetRowId(request.OperationsList[0].RowId) .SetVersion(1) .SetData(client.Account.CurrentGameAccount.Digest.ToByteString()) .Build()); results.Add(operationResult.Build()); } var builder = bnet.protocol.storage.ExecuteResponse.CreateBuilder(); foreach (var result in results) { builder.AddResults(result); } return(builder.Build()); }