Added !info and !followers <dismiss> commands
Improved commands; Lowered more logger outputs from Info/Trace to Debug.
This commit is contained in:
parent
54f135eac1
commit
9ef1ec0a6a
@ -1495,17 +1495,17 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
{
|
{
|
||||||
CurrentActivity = (int)field.Value.IntValue;
|
CurrentActivity = (int)field.Value.IntValue;
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set CurrentActivity to {1}", this, field.Value.IntValue);
|
Logger.Debug("{0} set CurrentActivity to {1}", this, field.Value.IntValue);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 2 && field.Key.Field == 4) //Unknown bool
|
else if (field.Key.Group == 2 && field.Key.Field == 4) //Unknown bool
|
||||||
{
|
{
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set CurrentActivity to {1}", this, field.Value.BoolValue);
|
Logger.Debug("{0} set CurrentActivity to {1}", this, field.Value.BoolValue);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 2 && field.Key.Field == 6) //Flags
|
else if (field.Key.Group == 2 && field.Key.Field == 6) //Flags
|
||||||
{
|
{
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set Flags to {1}", this, field.Value.UintValue);
|
Logger.Debug("{0} set Flags to {1}", this, field.Value.UintValue);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 2 && field.Key.Field == 8) //?
|
else if (field.Key.Group == 2 && field.Key.Field == 8) //?
|
||||||
{
|
{
|
||||||
@ -1514,7 +1514,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
else if (field.Key.Group == 2 && field.Key.Field == 11) //Version
|
else if (field.Key.Group == 2 && field.Key.Field == 11) //Version
|
||||||
{
|
{
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set Version to {1}", this, field.Value.StringValue);
|
Logger.Debug("{0} set Version to {1}", this, field.Value.StringValue);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 4 && field.Key.Field == 1) //PartyId
|
else if (field.Key.Group == 4 && field.Key.Field == 1) //PartyId
|
||||||
{
|
{
|
||||||
@ -1532,7 +1532,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Logger.Trace("{0} set channel to {1}", this, channel);
|
Logger.Debug("{0} set channel to {1}", this, channel);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1541,7 +1541,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
// returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(PartyChannelId.ToByteString()).Build());
|
// returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(PartyChannelId.ToByteString()).Build());
|
||||||
//else
|
//else
|
||||||
returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(ByteString.Empty).Build());
|
returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(ByteString.Empty).Build());
|
||||||
Logger.Trace("Emtpy-field: {0}, {1}, {2}", field.Key.Program, field.Key.Group, field.Key.Field);
|
Logger.Debug("Empty-field: {0}, {1}, {2}", field.Key.Program, field.Key.Group, field.Key.Field);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 4 && field.Key.Field == 2) //JoinPermission
|
else if (field.Key.Group == 4 && field.Key.Field == 2) //JoinPermission
|
||||||
@ -1549,13 +1549,13 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
if (ScreenStatus.Screen != field.Value.IntValue)
|
if (ScreenStatus.Screen != field.Value.IntValue)
|
||||||
{
|
{
|
||||||
ScreenStatus = ScreenStatus.CreateBuilder().SetScreen((int)field.Value.IntValue).SetStatus(0).Build();
|
ScreenStatus = ScreenStatus.CreateBuilder().SetScreen((int)field.Value.IntValue).SetStatus(0).Build();
|
||||||
Logger.Trace("{0} set current screen to {1}.", this, field.Value.IntValue);
|
Logger.Debug("{0} set current screen to {1}.", this, field.Value.IntValue);
|
||||||
}
|
}
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 4 && field.Key.Field == 3) //CallToArmsMessage
|
else if (field.Key.Group == 4 && field.Key.Field == 3) //CallToArmsMessage
|
||||||
{
|
{
|
||||||
Logger.Trace("CallToArmsMessage: {0}, {1}, {2}", field.Key.Group, field.Key.Field, field.Value);
|
Logger.Debug("CallToArmsMessage: {0}, {1}, {2}", field.Key.Group, field.Key.Field, field.Value);
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 4 && field.Key.Field == 4) //Party IsFull
|
else if (field.Key.Group == 4 && field.Key.Field == 4) //Party IsFull
|
||||||
@ -1566,7 +1566,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
{
|
{
|
||||||
//returnField.SetValue(Variant.CreateBuilder().SetBoolValue(false).Build());
|
//returnField.SetValue(Variant.CreateBuilder().SetBoolValue(false).Build());
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set Game IsPrivate {1}.", this, field.Value.ToString());
|
Logger.Debug("{0} set Game IsPrivate {1}.", this, field.Value.ToString());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1579,7 +1579,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
{
|
{
|
||||||
AwayStatus = (AwayStatusFlag)field.Value.IntValue;
|
AwayStatus = (AwayStatusFlag)field.Value.IntValue;
|
||||||
returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetIntValue((long)AwayStatus).Build());
|
returnField.SetValue(bgs.protocol.Variant.CreateBuilder().SetIntValue((long)AwayStatus).Build());
|
||||||
Logger.Trace("{0} set AwayStatus to {1}.", this, AwayStatus);
|
Logger.Debug("{0} set AwayStatus to {1}.", this, AwayStatus);
|
||||||
}
|
}
|
||||||
else if (field.Key.Group == 2 && field.Key.Field == 8)// RichPresence
|
else if (field.Key.Group == 2 && field.Key.Field == 8)// RichPresence
|
||||||
{
|
{
|
||||||
@ -1588,7 +1588,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
else if (field.Key.Group == 2 && field.Key.Field == 10) // AFK
|
else if (field.Key.Group == 2 && field.Key.Field == 10) // AFK
|
||||||
{
|
{
|
||||||
returnField.SetValue(field.Value);
|
returnField.SetValue(field.Value);
|
||||||
Logger.Trace("{0} set AFK to {1}.", this, field.Value.BoolValue);
|
Logger.Debug("{0} set AFK to {1}.", this, field.Value.BoolValue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1740,7 +1740,7 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
return String.Format("{{ GameAccount: {0} [lowId: {1}] }}", Owner.BattleTag, BnetEntityId.Low);
|
return $"{{ GameAccount: {Owner.BattleTag} [lowId: {BnetEntityId.Low}] }}";
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: figure out what 1 and 3 represent, or if it is a flag since all observed values are powers of 2 so far /dustinconrad
|
//TODO: figure out what 1 and 3 represent, or if it is a flag since all observed values are powers of 2 so far /dustinconrad
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
#define LOG_KEEP_ALIVE
|
//#define LOG_KEEP_ALIVE
|
||||||
|
|
||||||
//Blizzless Project 2022
|
//Blizzless Project 2022
|
||||||
using bgs.protocol;
|
using bgs.protocol;
|
||||||
|
|||||||
@ -189,7 +189,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
{
|
{
|
||||||
// TODO: Find a game that fits the clients params and join /raist.
|
// TODO: Find a game that fits the clients params and join /raist.
|
||||||
var publicGameParams = D3.PartyMessage.SearchForPublicGameParams.ParseFrom(attribute.Value.MessageValue);
|
var publicGameParams = D3.PartyMessage.SearchForPublicGameParams.ParseFrom(attribute.Value.MessageValue);
|
||||||
Logger.Trace("SearchForPublicGameParams: {0}", publicGameParams.ToString());
|
Logger.Debug("SearchForPublicGameParams: {0}", publicGameParams.ToString());
|
||||||
var attr = bgs.protocol.Attribute.CreateBuilder()
|
var attr = bgs.protocol.Attribute.CreateBuilder()
|
||||||
.SetName("D3.Party.SearchForPublicGame.Params")
|
.SetName("D3.Party.SearchForPublicGame.Params")
|
||||||
.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(publicGameParams.ToByteString()).Build());
|
.SetValue(bgs.protocol.Variant.CreateBuilder().SetMessageValue(publicGameParams.ToByteString()).Build());
|
||||||
|
|||||||
@ -221,7 +221,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
if (messageId != 270)
|
if (messageId != 270)
|
||||||
Logger.Info("ProcessClientRequest() ID: {0}", messageId);
|
Logger.Debug("ProcessClientRequest() ID: {0}", messageId);
|
||||||
#endif
|
#endif
|
||||||
switch (((HandlerController)controller).Client.Account.GameAccount.ProgramField.Value)
|
switch (((HandlerController)controller).Client.Account.GameAccount.ProgramField.Value)
|
||||||
{
|
{
|
||||||
@ -243,9 +243,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
ByteString hero1 = OnHeroDeleteParams(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
ByteString hero1 = OnHeroDeleteParams(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
||||||
attr.SetValue(Variant.CreateBuilder().SetMessageValue(hero1));
|
attr.SetValue(Variant.CreateBuilder().SetMessageValue(hero1));
|
||||||
break;
|
break;
|
||||||
case 3: // Выбор Персонажа
|
case 3: // Hero Select
|
||||||
ByteString SwitchHero = SwitchCharRequest(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
ByteString switchHero = SwitchCharRequest(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
||||||
attr.SetValue(Variant.CreateBuilder().SetMessageValue(SwitchHero));
|
attr.SetValue(Variant.CreateBuilder().SetMessageValue(switchHero));
|
||||||
break;
|
break;
|
||||||
case 4: //D3.GameMessages.SaveBannerConfiguration -> return MessageId with no Message
|
case 4: //D3.GameMessages.SaveBannerConfiguration -> return MessageId with no Message
|
||||||
SaveBanner(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
SaveBanner(((HandlerController)controller).Client, request.GetAttribute(2).Value.MessageValue);
|
||||||
@ -497,20 +497,20 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
{
|
{
|
||||||
var request = D3.GameMessage.LeaderboardGetHeroSnapshot.ParseFrom(data);
|
var request = D3.GameMessage.LeaderboardGetHeroSnapshot.ParseFrom(data);
|
||||||
var response = D3.GameMessage.LeaderboardGetHeroSnapshotResponse.CreateBuilder();
|
var response = D3.GameMessage.LeaderboardGetHeroSnapshotResponse.CreateBuilder();
|
||||||
bool Season = false;
|
bool season = false;
|
||||||
bool Hardcore = false;
|
bool hardcore = false;
|
||||||
ToonClass NeededClass = 0;
|
ToonClass neededClass = 0;
|
||||||
switch (request.LeaderboardId)
|
switch (request.LeaderboardId)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
case 2: NeededClass = ToonClass.Barbarian; break; // Barbarian
|
case 2: neededClass = ToonClass.Barbarian; break; // Barbarian
|
||||||
case 3: NeededClass = ToonClass.Crusader; break; // Crusader
|
case 3: neededClass = ToonClass.Crusader; break; // Crusader
|
||||||
case 4: NeededClass = ToonClass.DemonHunter; break; // Demon Hunter
|
case 4: neededClass = ToonClass.DemonHunter; break; // Demon Hunter
|
||||||
case 5: NeededClass = ToonClass.Monk; break; // Monk
|
case 5: neededClass = ToonClass.Monk; break; // Monk
|
||||||
case 6: NeededClass = ToonClass.WitchDoctor; break; // Witch Doctor
|
case 6: neededClass = ToonClass.WitchDoctor; break; // Witch Doctor
|
||||||
case 7: NeededClass = ToonClass.Wizard; break; // Wizard
|
case 7: neededClass = ToonClass.Wizard; break; // Wizard
|
||||||
case 8: NeededClass = ToonClass.Necromancer; break; // Necromancer
|
case 8: neededClass = ToonClass.Necromancer; break; // Necromancer
|
||||||
|
|
||||||
case 10: // deuces
|
case 10: // deuces
|
||||||
break;
|
break;
|
||||||
@ -532,48 +532,48 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
switch (request.ScopeId)
|
switch (request.ScopeId)
|
||||||
{
|
{
|
||||||
case 3: break; //Normal
|
case 3: break; //Normal
|
||||||
case 2: Hardcore = true; break; //Hardcore
|
case 2: hardcore = true; break; //Hardcore
|
||||||
case 5: Season = true; break; //Seasonal
|
case 5: season = true; break; //Seasonal
|
||||||
case 4: Season = true; Hardcore = true; break; //Hardcore and Seasonal
|
case 4: season = true; hardcore = true; break; //Hardcore and Seasonal
|
||||||
}
|
}
|
||||||
|
|
||||||
List<DBGameAccount> GA = DBSessions.SessionQuery<DBGameAccount>().Where(a => a.Id == request.GameAccountId).ToList();
|
List<DBGameAccount> gameAccounts = DBSessions.SessionQuery<DBGameAccount>().Where(a => a.Id == request.GameAccountId).ToList();
|
||||||
var Heroes = ToonManager.GetToonsForGameAccount(GameAccountManager.GetGameAccountByDBGameAccount(GA[0]));
|
var heroes = ToonManager.GetToonsForGameAccount(GameAccountManager.GetGameAccountByDBGameAccount(gameAccounts[0]));
|
||||||
Toon Hero = null;
|
Toon hero = null;
|
||||||
byte upLevel = 0;
|
byte upLevel = 0;
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
if (Heroes.Count > 0)
|
if (heroes.Count > 0)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < Heroes.Count; i++)
|
for (int i = 0; i < heroes.Count; i++)
|
||||||
{
|
{
|
||||||
if (Season && !Heroes[i].isSeassoned) continue;
|
if (season && !heroes[i].isSeassoned) continue;
|
||||||
if (Hardcore && !Heroes[i].IsHardcore) continue;
|
if (hardcore && !heroes[i].IsHardcore) continue;
|
||||||
if (Heroes[i].Class != NeededClass && (uint)NeededClass != 0) continue;
|
if (heroes[i].Class != neededClass && (uint)neededClass != 0) continue;
|
||||||
if (upLevel > Heroes[i].Level) continue;
|
if (upLevel > heroes[i].Level) continue;
|
||||||
upLevel = Heroes[i].Level;
|
upLevel = heroes[i].Level;
|
||||||
idx = i;
|
idx = i;
|
||||||
}
|
}
|
||||||
if (idx > -1)
|
if (idx > -1)
|
||||||
Hero = Heroes[idx];
|
hero = heroes[idx];
|
||||||
}
|
}
|
||||||
if (Hero != null)
|
if (hero != null)
|
||||||
{
|
{
|
||||||
var Snapshot = D3.Leaderboard.HeroSnapshot.CreateBuilder()
|
var Snapshot = D3.Leaderboard.HeroSnapshot.CreateBuilder()
|
||||||
.SetHeroId(Hero.D3EntityID)
|
.SetHeroId(hero.D3EntityID)
|
||||||
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(1).SetGbid(Hero.Cosmetic1))
|
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(1).SetGbid(hero.Cosmetic1))
|
||||||
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(2).SetGbid(Hero.Cosmetic2))
|
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(2).SetGbid(hero.Cosmetic2))
|
||||||
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(3).SetGbid(Hero.Cosmetic3))
|
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(3).SetGbid(hero.Cosmetic3))
|
||||||
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(4).SetGbid(Hero.Cosmetic4))
|
.AddCosmeticItems(D3.Leaderboard.HeroCosmeticItem.CreateBuilder().SetCosmeticVisualInventorySlot(4).SetGbid(hero.Cosmetic4))
|
||||||
.SetActiveSkills(SkillsWithRunes.CreateBuilder()
|
.SetActiveSkills(SkillsWithRunes.CreateBuilder()
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill0).SetRuneType(Hero.DBActiveSkills.Rune0))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill0).SetRuneType(hero.DBActiveSkills.Rune0))
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill1).SetRuneType(Hero.DBActiveSkills.Rune1))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill1).SetRuneType(hero.DBActiveSkills.Rune1))
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill2).SetRuneType(Hero.DBActiveSkills.Rune2))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill2).SetRuneType(hero.DBActiveSkills.Rune2))
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill3).SetRuneType(Hero.DBActiveSkills.Rune3))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill3).SetRuneType(hero.DBActiveSkills.Rune3))
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill4).SetRuneType(Hero.DBActiveSkills.Rune4))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill4).SetRuneType(hero.DBActiveSkills.Rune4))
|
||||||
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(Hero.DBActiveSkills.Skill5).SetRuneType(Hero.DBActiveSkills.Rune5)))
|
.AddRunes(SkillWithRune.CreateBuilder().SetSkill(hero.DBActiveSkills.Skill5).SetRuneType(hero.DBActiveSkills.Rune5)))
|
||||||
.SetActiveTraits(PassiveSkills.CreateBuilder().AddSnoTraits(Hero.DBActiveSkills.Passive0).AddSnoTraits(Hero.DBActiveSkills.Passive1).AddSnoTraits(Hero.DBActiveSkills.Passive2).AddSnoTraits(Hero.DBActiveSkills.Passive3));
|
.SetActiveTraits(PassiveSkills.CreateBuilder().AddSnoTraits(hero.DBActiveSkills.Passive0).AddSnoTraits(hero.DBActiveSkills.Passive1).AddSnoTraits(hero.DBActiveSkills.Passive2).AddSnoTraits(hero.DBActiveSkills.Passive3));
|
||||||
|
|
||||||
foreach (var item in Hero.Profile.Equipment.ItemsList)
|
foreach (var item in hero.Profile.Equipment.ItemsList)
|
||||||
{
|
{
|
||||||
int pos = 0;
|
int pos = 0;
|
||||||
switch ((item.ItemSlot - 272) / 16)
|
switch ((item.ItemSlot - 272) / 16)
|
||||||
@ -611,18 +611,18 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
var response = LeaderboardFetchScoresResponse.CreateBuilder();
|
var response = LeaderboardFetchScoresResponse.CreateBuilder();
|
||||||
bool season = false;
|
bool season = false;
|
||||||
bool hardcore = false;
|
bool hardcore = false;
|
||||||
ToonClass NeededClass = ToonClass.Unknown;
|
ToonClass neededClass = ToonClass.Unknown;
|
||||||
switch (request.LeaderboardId)
|
switch (request.LeaderboardId)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
case 2: NeededClass = ToonClass.Barbarian; break; // Barbarian.
|
case 2: neededClass = ToonClass.Barbarian; break; // Barbarian.
|
||||||
case 3: NeededClass = ToonClass.Crusader; break; // Crusader.
|
case 3: neededClass = ToonClass.Crusader; break; // Crusader.
|
||||||
case 4: NeededClass = ToonClass.DemonHunter; break; // Demon Hunter.
|
case 4: neededClass = ToonClass.DemonHunter; break; // Demon Hunter.
|
||||||
case 5: NeededClass = ToonClass.Monk; break; // Monk.
|
case 5: neededClass = ToonClass.Monk; break; // Monk.
|
||||||
case 6: NeededClass = ToonClass.WitchDoctor; break; // Warlock.
|
case 6: neededClass = ToonClass.WitchDoctor; break; // Warlock.
|
||||||
case 7: NeededClass = ToonClass.Wizard; break; // Wizard.
|
case 7: neededClass = ToonClass.Wizard; break; // Wizard.
|
||||||
case 8: NeededClass = ToonClass.Necromancer; break; // Necromancer.
|
case 8: neededClass = ToonClass.Necromancer; break; // Necromancer.
|
||||||
|
|
||||||
case 10: // ToonClass.
|
case 10: // ToonClass.
|
||||||
break;
|
break;
|
||||||
@ -665,7 +665,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
{
|
{
|
||||||
if (season && !Heroes[i].isSeassoned) continue;
|
if (season && !Heroes[i].isSeassoned) continue;
|
||||||
if (hardcore && !Heroes[i].IsHardcore) continue;
|
if (hardcore && !Heroes[i].IsHardcore) continue;
|
||||||
if (Heroes[i].Class != NeededClass && NeededClass != ToonClass.Unknown) continue;
|
if (Heroes[i].Class != neededClass && neededClass != ToonClass.Unknown) continue;
|
||||||
if (upLevel > Heroes[i].Level) continue;
|
if (upLevel > Heroes[i].Level) continue;
|
||||||
upLevel = Heroes[i].Level;
|
upLevel = Heroes[i].Level;
|
||||||
idx = i;
|
idx = i;
|
||||||
@ -676,27 +676,27 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
if (Hero != null)
|
if (Hero != null)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
GameAccount Gaccount = GameAccountManager.GetGameAccountByDBGameAccount(gameAccount);
|
GameAccount gameAccount2 = GameAccountManager.GetGameAccountByDBGameAccount(gameAccount);
|
||||||
Account account = AccountManager.GetAccountByPersistentID(Gaccount.AccountId);
|
Account account = AccountManager.GetAccountByPersistentID(gameAccount2.AccountId);
|
||||||
var Memb = D3.Leaderboard.Member.CreateBuilder()
|
var member = D3.Leaderboard.Member.CreateBuilder()
|
||||||
.SetAccountId(Gaccount.AccountId)
|
.SetAccountId(gameAccount2.AccountId)
|
||||||
.SetHeroSeasonCreated((uint)Hero.SeasonCreated)
|
.SetHeroSeasonCreated((uint)Hero.SeasonCreated)
|
||||||
.SetBattleTag(account.BattleTagName)
|
.SetBattleTag(account.BattleTagName)
|
||||||
.SetHeroAltLevel((uint)Gaccount.DBGameAccount.ParagonLevel)
|
.SetHeroAltLevel((uint)gameAccount2.DBGameAccount.ParagonLevel)
|
||||||
.SetHeroFlags((uint)Hero.Flags)
|
.SetHeroFlags((uint)Hero.Flags)
|
||||||
.SetHeroLevel((uint)Hero.Level)
|
.SetHeroLevel((uint)Hero.Level)
|
||||||
.SetHeroGbidClass((uint)Hero.ClassID)
|
.SetHeroGbidClass((uint)Hero.ClassID)
|
||||||
.SetHeroName(Hero.Name)
|
.SetHeroName(Hero.Name)
|
||||||
.SetHeroSnapshotAvailable(true)
|
.SetHeroSnapshotAvailable(true)
|
||||||
.SetHeroVisualEquipment(Gaccount.Toons[0].Digest.VisualEquipment);
|
.SetHeroVisualEquipment(gameAccount2.Toons[0].Digest.VisualEquipment);
|
||||||
if (Gaccount.Clan != null)
|
if (gameAccount2.Clan != null)
|
||||||
{
|
{
|
||||||
Memb.SetClanId(Gaccount.Clan.GuildId.GuildId_).SetClanTag(Gaccount.Clan.Prefix).SetClanName(Gaccount.Clan.Name);
|
member.SetClanId(gameAccount2.Clan.GuildId.GuildId_).SetClanTag(gameAccount2.Clan.Prefix).SetClanName(gameAccount2.Clan.Name);
|
||||||
}
|
}
|
||||||
response
|
response
|
||||||
.AddEntry(D3.Leaderboard.Score.CreateBuilder()
|
.AddEntry(D3.Leaderboard.Score.CreateBuilder()
|
||||||
.SetGameAccountId(Gaccount.AccountId)
|
.SetGameAccountId(gameAccount2.AccountId)
|
||||||
.SetScore_((ulong)Hero.Level + (ushort)Gaccount.DBGameAccount.ParagonLevel) // Temporary Separation.
|
.SetScore_((ulong)Hero.Level + (ushort)gameAccount2.DBGameAccount.ParagonLevel) // Temporary Separation.
|
||||||
.SetScoreBand(5)
|
.SetScoreBand(5)
|
||||||
.SetLeaderboardId(5)
|
.SetLeaderboardId(5)
|
||||||
.SetScopeId(5)
|
.SetScopeId(5)
|
||||||
@ -709,15 +709,15 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
.SetAct5TimeMs(0)
|
.SetAct5TimeMs(0)
|
||||||
.SetLevelSeed(0)
|
.SetLevelSeed(0)
|
||||||
.SetCheated(false)
|
.SetCheated(false)
|
||||||
.AddTeamMember(Memb)
|
.AddTeamMember(member)
|
||||||
.SetChallengeData(D3.Leaderboard.WeeklyChallengeData.CreateBuilder()
|
.SetChallengeData(D3.Leaderboard.WeeklyChallengeData.CreateBuilder()
|
||||||
.SetBnetAccountId(unchecked((uint)account.BnetEntityId.Low))
|
.SetBnetAccountId(unchecked((uint)account.BnetEntityId.Low))
|
||||||
.SetGameAccountId(GameAccountHandle.CreateBuilder().SetId(unchecked((uint)Gaccount.BnetEntityId.Low)).SetProgram(17459).SetRegion(1))
|
.SetGameAccountId(GameAccountHandle.CreateBuilder().SetId(unchecked((uint)gameAccount2.BnetEntityId.Low)).SetProgram(17459).SetRegion(1))
|
||||||
.SetHeroSnapshot(D3.Hero.SavedDefinition.CreateBuilder().SetVersion(905)
|
.SetHeroSnapshot(D3.Hero.SavedDefinition.CreateBuilder().SetVersion(905)
|
||||||
.SetDigest(Hero.Digest)
|
.SetDigest(Hero.Digest)
|
||||||
.SetSavedAttributes(D3.AttributeSerializer.SavedAttributes.CreateBuilder()))
|
.SetSavedAttributes(D3.AttributeSerializer.SavedAttributes.CreateBuilder()))
|
||||||
.SetAccountSnapshot(D3.Account.SavedDefinition.CreateBuilder().SetVersion(905)
|
.SetAccountSnapshot(D3.Account.SavedDefinition.CreateBuilder().SetVersion(905)
|
||||||
.SetDigest(Gaccount.Digest))
|
.SetDigest(gameAccount2.Digest))
|
||||||
.SetRiftSnapshot(D3.Leaderboard.RiftSnapshot.CreateBuilder()
|
.SetRiftSnapshot(D3.Leaderboard.RiftSnapshot.CreateBuilder()
|
||||||
.SetRiftSeed(2342341)
|
.SetRiftSeed(2342341)
|
||||||
.SetRiftTier(1)
|
.SetRiftTier(1)
|
||||||
@ -729,8 +729,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Logger.ErrorException(ex, "Error while creating leaderboard entry");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return response.Build().ToByteString();
|
return response.Build().ToByteString();
|
||||||
@ -738,20 +739,20 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
private ByteString GetRating(BattleClient client, ByteString data)
|
private ByteString GetRating(BattleClient client, ByteString data)
|
||||||
{
|
{
|
||||||
LeaderboardList request = LeaderboardList.ParseFrom(data);
|
LeaderboardList request = LeaderboardList.ParseFrom(data);
|
||||||
bool Season = false;
|
bool season = false;
|
||||||
bool Hardcore = false;
|
bool hardcore = false;
|
||||||
ToonClass NeededClass = ToonClass.Unknown;
|
ToonClass neededClass = ToonClass.Unknown;
|
||||||
switch (request.LeaderboardId)
|
switch (request.LeaderboardId)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
break;
|
break;
|
||||||
case 2: NeededClass = ToonClass.Barbarian; break; // Barbarian
|
case 2: neededClass = ToonClass.Barbarian; break; // Barbarian
|
||||||
case 3: NeededClass = ToonClass.Crusader; break; // Crusader
|
case 3: neededClass = ToonClass.Crusader; break; // Crusader
|
||||||
case 4: NeededClass = ToonClass.DemonHunter; break; // Demon Hunter
|
case 4: neededClass = ToonClass.DemonHunter; break; // Demon Hunter
|
||||||
case 5: NeededClass = ToonClass.Monk; break; // Monk
|
case 5: neededClass = ToonClass.Monk; break; // Monk
|
||||||
case 6: NeededClass = ToonClass.WitchDoctor; break; // Witch Doctor
|
case 6: neededClass = ToonClass.WitchDoctor; break; // Witch Doctor
|
||||||
case 7: NeededClass = ToonClass.Wizard; break; // Wizard
|
case 7: neededClass = ToonClass.Wizard; break; // Wizard
|
||||||
case 8: NeededClass = ToonClass.Necromancer; break; // Necromancer
|
case 8: neededClass = ToonClass.Necromancer; break; // Necromancer
|
||||||
|
|
||||||
case 10: // Duples
|
case 10: // Duples
|
||||||
break;
|
break;
|
||||||
@ -769,9 +770,9 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
switch (request.ScopeId)
|
switch (request.ScopeId)
|
||||||
{
|
{
|
||||||
case 3: break; //Normal
|
case 3: break; //Normal
|
||||||
case 2: Hardcore = true; break; //Hardcore
|
case 2: hardcore = true; break; //Hardcore
|
||||||
case 5: Season = true; break; //Seasonal
|
case 5: season = true; break; //Seasonal
|
||||||
case 4: Season = true; Hardcore = true; break; //Seasonal + Harcore
|
case 4: season = true; hardcore = true; break; //Seasonal + Harcore
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = LeaderboardListResponse.CreateBuilder()
|
var result = LeaderboardListResponse.CreateBuilder()
|
||||||
@ -785,39 +786,39 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
{
|
{
|
||||||
var toons = ToonManager.GetToonsForGameAccount(
|
var toons = ToonManager.GetToonsForGameAccount(
|
||||||
GameAccountManager.GetGameAccountByDBGameAccount(gameAccountId));
|
GameAccountManager.GetGameAccountByDBGameAccount(gameAccountId));
|
||||||
Toon Hero = null;
|
Toon hero = null;
|
||||||
byte uplvl = 0;
|
byte upLevel = 0;
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
if (toons.Count > 0)
|
if (toons.Count > 0)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < toons.Count; i++)
|
for (int i = 0; i < toons.Count; i++)
|
||||||
{
|
{
|
||||||
if (Season && !toons[i].isSeassoned) continue;
|
if (season && !toons[i].isSeassoned) continue;
|
||||||
if (Hardcore && !toons[i].IsHardcore) continue;
|
if (hardcore && !toons[i].IsHardcore) continue;
|
||||||
if (toons[i].Class != NeededClass && NeededClass != ToonClass.Unknown) continue;
|
if (toons[i].Class != neededClass && neededClass != ToonClass.Unknown) continue;
|
||||||
if (uplvl > toons[i].Level) continue;
|
if (upLevel > toons[i].Level) continue;
|
||||||
uplvl = toons[i].Level;
|
upLevel = toons[i].Level;
|
||||||
idx = i;
|
idx = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (idx > -1)
|
if (idx > -1)
|
||||||
Hero = toons[idx];
|
hero = toons[idx];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Hero != null)
|
if (hero != null)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
GameAccount gameAccount = GameAccountManager.GetGameAccountByDBGameAccount(gameAccountId);
|
GameAccount gameAccount = GameAccountManager.GetGameAccountByDBGameAccount(gameAccountId);
|
||||||
Account account = AccountManager.GetAccountByPersistentID(gameAccount.AccountId);
|
Account account = AccountManager.GetAccountByPersistentID(gameAccount.AccountId);
|
||||||
var member = D3.Leaderboard.Member.CreateBuilder()
|
var member = D3.Leaderboard.Member.CreateBuilder()
|
||||||
.SetAccountId((uint)gameAccount.D3GameAccountId.IdLow)
|
.SetAccountId((uint)gameAccount.D3GameAccountId.IdLow)
|
||||||
.SetHeroSeasonCreated((uint)Hero.SeasonCreated)
|
.SetHeroSeasonCreated((uint)hero.SeasonCreated)
|
||||||
.SetBattleTag(account.BattleTagName)
|
.SetBattleTag(account.BattleTagName)
|
||||||
.SetHeroAltLevel((uint)gameAccount.DBGameAccount.ParagonLevel)
|
.SetHeroAltLevel((uint)gameAccount.DBGameAccount.ParagonLevel)
|
||||||
.SetHeroFlags((uint)Hero.Flags)
|
.SetHeroFlags((uint)hero.Flags)
|
||||||
.SetHeroLevel((uint)Hero.Level)
|
.SetHeroLevel((uint)hero.Level)
|
||||||
.SetHeroGbidClass((uint)Hero.ClassID)
|
.SetHeroGbidClass((uint)hero.ClassID)
|
||||||
.SetHeroName(Hero.Name)
|
.SetHeroName(hero.Name)
|
||||||
.SetHeroSnapshotAvailable(true)
|
.SetHeroSnapshotAvailable(true)
|
||||||
.SetHeroVisualEquipment(gameAccount.Toons[0].Digest.VisualEquipment);
|
.SetHeroVisualEquipment(gameAccount.Toons[0].Digest.VisualEquipment);
|
||||||
if (gameAccount.Clan != null)
|
if (gameAccount.Clan != null)
|
||||||
@ -830,7 +831,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
.AddEntry(D3.Leaderboard.Slot.CreateBuilder()
|
.AddEntry(D3.Leaderboard.Slot.CreateBuilder()
|
||||||
.SetGameAccountId(gameAccount.AccountId)
|
.SetGameAccountId(gameAccount.AccountId)
|
||||||
//TODO: Need to implement the calculation from the time of passage of the portal!
|
//TODO: Need to implement the calculation from the time of passage of the portal!
|
||||||
.SetScore((ulong)Hero.Level +
|
.SetScore((ulong)hero.Level +
|
||||||
(ulong)gameAccount.DBGameAccount.ParagonLevel) //temporary separation
|
(ulong)gameAccount.DBGameAccount.ParagonLevel) //temporary separation
|
||||||
.SetTimestamp(DateTime.UtcNow.ToUnixTime())
|
.SetTimestamp(DateTime.UtcNow.ToUnixTime())
|
||||||
.SetMetadata(D3.Leaderboard.Metadata.CreateBuilder()
|
.SetMetadata(D3.Leaderboard.Metadata.CreateBuilder()
|
||||||
@ -847,7 +848,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
.SetId(unchecked((uint)gameAccount.BnetEntityId.Low)).SetProgram(17459)
|
.SetId(unchecked((uint)gameAccount.BnetEntityId.Low)).SetProgram(17459)
|
||||||
.SetRegion(1))
|
.SetRegion(1))
|
||||||
.SetHeroSnapshot(D3.Hero.SavedDefinition.CreateBuilder().SetVersion(905)
|
.SetHeroSnapshot(D3.Hero.SavedDefinition.CreateBuilder().SetVersion(905)
|
||||||
.SetDigest(Hero.Digest)
|
.SetDigest(hero.Digest)
|
||||||
.SetSavedAttributes(D3.AttributeSerializer.SavedAttributes.CreateBuilder()))
|
.SetSavedAttributes(D3.AttributeSerializer.SavedAttributes.CreateBuilder()))
|
||||||
.SetAccountSnapshot(D3.Account.SavedDefinition.CreateBuilder().SetVersion(905)
|
.SetAccountSnapshot(D3.Account.SavedDefinition.CreateBuilder().SetVersion(905)
|
||||||
.SetDigest(gameAccount.Digest)
|
.SetDigest(gameAccount.Digest)
|
||||||
@ -908,8 +909,8 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
}
|
}
|
||||||
private ByteString OnHeroDeleteParams(BattleClient client, ByteString data)
|
private ByteString OnHeroDeleteParams(BattleClient client, ByteString data)
|
||||||
{
|
{
|
||||||
var DeleteParams = DeleteHero.ParseFrom(data);
|
var deleteParams = DeleteHero.ParseFrom(data);
|
||||||
var toon = ToonManager.GetToonByLowID(DeleteParams.HeroId);
|
var toon = ToonManager.GetToonByLowID(deleteParams.HeroId);
|
||||||
ToonManager.DeleteToon(toon);
|
ToonManager.DeleteToon(toon);
|
||||||
return ByteString.Empty;
|
return ByteString.Empty;
|
||||||
}
|
}
|
||||||
@ -918,11 +919,11 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
var request = D3.GameMessage.GetToonSettings.ParseFrom(data);
|
var request = D3.GameMessage.GetToonSettings.ParseFrom(data);
|
||||||
|
|
||||||
var oldToon = client.Account.GameAccount.CurrentToon;
|
var oldToon = client.Account.GameAccount.CurrentToon;
|
||||||
var newtoon = ToonManager.GetToonByLowID(request.HeroId);
|
var newToon = ToonManager.GetToonByLowID(request.HeroId);
|
||||||
|
|
||||||
if (oldToon != newtoon)
|
if (oldToon != newToon)
|
||||||
{
|
{
|
||||||
client.Account.GameAccount.CurrentToon = newtoon;
|
client.Account.GameAccount.CurrentToon = newToon;
|
||||||
client.Account.GameAccount.NotifyUpdate();
|
client.Account.GameAccount.NotifyUpdate();
|
||||||
//AccountManager.SaveToDB(Client.Account);
|
//AccountManager.SaveToDB(Client.Account);
|
||||||
//Client.Account.GameAccount.Setted = true;
|
//Client.Account.GameAccount.Setted = true;
|
||||||
@ -947,7 +948,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
#region Banner editing
|
#region Banner editing
|
||||||
private bool SaveBanner(BattleClient client, ByteString data)
|
private bool SaveBanner(BattleClient client, ByteString data)
|
||||||
{
|
{
|
||||||
Logger.Trace("SaveBannerConfiguration()");
|
Logger.Debug("SaveBannerConfiguration()");
|
||||||
//var bannerConfig = HeroDigestBanner.ParseFrom(data);
|
//var bannerConfig = HeroDigestBanner.ParseFrom(data);
|
||||||
var bannerConfig = SaveBannerConfiguration.ParseFrom(data);
|
var bannerConfig = SaveBannerConfiguration.ParseFrom(data);
|
||||||
|
|
||||||
@ -979,7 +980,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
private ByteString SearchGuilds(BattleClient client, ByteString data)
|
private ByteString SearchGuilds(BattleClient client, ByteString data)
|
||||||
{
|
{
|
||||||
GuildSearch request = GuildSearch.ParseFrom(data);
|
GuildSearch request = GuildSearch.ParseFrom(data);
|
||||||
Logger.Trace("GuildSearch(): {0}", request.ToString());
|
Logger.Debug("GuildSearch(): {0}", request.ToString());
|
||||||
var builder = D3.Guild.GuildSearchResultList.CreateBuilder();
|
var builder = D3.Guild.GuildSearchResultList.CreateBuilder();
|
||||||
|
|
||||||
List<Guild> allGuilds = request.ClanOrGroup == 1 ? GuildManager.GetCommunities() : GuildManager.GetClans();
|
List<Guild> allGuilds = request.ClanOrGroup == 1 ? GuildManager.GetCommunities() : GuildManager.GetClans();
|
||||||
@ -1053,7 +1054,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
}
|
}
|
||||||
private void GuildKickMemberP(BattleClient client, D3.GameMessage.GuildKickMember request)
|
private void GuildKickMemberP(BattleClient client, D3.GameMessage.GuildKickMember request)
|
||||||
{
|
{
|
||||||
Logger.Trace("GuildKickMember(): {0}", request.ToString());
|
Logger.Debug("GuildKickMember(): {0}", request.ToString());
|
||||||
|
|
||||||
var guild = GuildManager.GetGuildById(request.GuildId);
|
var guild = GuildManager.GetGuildById(request.GuildId);
|
||||||
if (guild != null && client.Account.GameAccount.PersistentID == guild.Owner.PersistentID)
|
if (guild != null && client.Account.GameAccount.PersistentID == guild.Owner.PersistentID)
|
||||||
@ -1065,7 +1066,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
}
|
}
|
||||||
private void GuildDisband(BattleClient client, D3.GameMessage.GuildId request)
|
private void GuildDisband(BattleClient client, D3.GameMessage.GuildId request)
|
||||||
{
|
{
|
||||||
Logger.Trace("GuildDisband(): {0}", request.ToString());
|
Logger.Debug("GuildDisband(): {0}", request.ToString());
|
||||||
|
|
||||||
var guild = GuildManager.GetGuildById(request.GuildId_);
|
var guild = GuildManager.GetGuildById(request.GuildId_);
|
||||||
if (guild != null && client.Account.GameAccount.PersistentID == guild.Owner.PersistentID)
|
if (guild != null && client.Account.GameAccount.PersistentID == guild.Owner.PersistentID)
|
||||||
@ -1080,7 +1081,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
}
|
}
|
||||||
private ByteString GuildFetchNews(BattleClient client, D3.GameMessage.GuildFetchNews request)
|
private ByteString GuildFetchNews(BattleClient client, D3.GameMessage.GuildFetchNews request)
|
||||||
{
|
{
|
||||||
Logger.Trace("GuildFetchNews(): {0}", request.ToString());
|
Logger.Debug("GuildFetchNews(): {0}", request.ToString());
|
||||||
var builder = D3.Guild.NewsList.CreateBuilder();
|
var builder = D3.Guild.NewsList.CreateBuilder();
|
||||||
|
|
||||||
/* news types:
|
/* news types:
|
||||||
@ -1115,7 +1116,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
|
|
||||||
private ByteString GuildPromoteMember(BattleClient client, D3.GameMessage.GuildPromoteMember request)
|
private ByteString GuildPromoteMember(BattleClient client, D3.GameMessage.GuildPromoteMember request)
|
||||||
{
|
{
|
||||||
Logger.Trace("GuildPromoteMember(): {0}", request.ToString());
|
Logger.Debug("GuildPromoteMember(): {0}", request.ToString());
|
||||||
|
|
||||||
var guild = GuildManager.GetGuildById(request.GuildId);
|
var guild = GuildManager.GetGuildById(request.GuildId);
|
||||||
var account = GameAccountManager.GetAccountByPersistentID(request.MemberId);
|
var account = GameAccountManager.GetAccountByPersistentID(request.MemberId);
|
||||||
@ -1136,7 +1137,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
|
|
||||||
private ByteString GuildDemoteMember(BattleClient client, D3.GameMessage.GuildDemoteMember request)
|
private ByteString GuildDemoteMember(BattleClient client, D3.GameMessage.GuildDemoteMember request)
|
||||||
{
|
{
|
||||||
Logger.Trace("GuildDemoteMember(): {0}", request.ToString());
|
Logger.Debug("GuildDemoteMember(): {0}", request.ToString());
|
||||||
|
|
||||||
var guild = GuildManager.GetGuildById(request.GuildId);
|
var guild = GuildManager.GetGuildById(request.GuildId);
|
||||||
var account = GameAccountManager.GetAccountByPersistentID(request.MemberId);
|
var account = GameAccountManager.GetAccountByPersistentID(request.MemberId);
|
||||||
@ -1294,7 +1295,7 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
private ByteString CreateCommunity(BattleClient client, ByteString data)
|
private ByteString CreateCommunity(BattleClient client, ByteString data)
|
||||||
{
|
{
|
||||||
var request = GroupCreate.ParseFrom(data);
|
var request = GroupCreate.ParseFrom(data);
|
||||||
Logger.Trace("CreateCommunity(): {0}", request.ToString());
|
Logger.Debug("CreateCommunity(): {0}", request.ToString());
|
||||||
|
|
||||||
var guild = GuildManager.CreateNewGuild(client.Account.GameAccount, request.Name, "", false, request.SearchCategory, false, request.Language);
|
var guild = GuildManager.CreateNewGuild(client.Account.GameAccount, request.Name, "", false, request.SearchCategory, false, request.Language);
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
@ -2300,14 +2301,12 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
}
|
}
|
||||||
private ByteString SelectToon(BattleClient Client, ByteString data)
|
private ByteString SelectToon(BattleClient Client, ByteString data)
|
||||||
{
|
{
|
||||||
|
|
||||||
var request = D3.GameMessage.HeroDigestListRequest.ParseFrom(data);
|
var request = D3.GameMessage.HeroDigestListRequest.ParseFrom(data);
|
||||||
var builder = HeroDigestListResponse.CreateBuilder();
|
var builder = HeroDigestListResponse.CreateBuilder();
|
||||||
foreach (var toon in request.ToonIdList)
|
foreach (var toon in request.ToonIdList)
|
||||||
builder.AddDigestList(ToonManager.GetToonByLowID(toon).Digest);
|
builder.AddDigestList(ToonManager.GetToonByLowID(toon).Digest);
|
||||||
|
|
||||||
return builder.Build().ToByteString();
|
return builder.Build().ToByteString();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ByteString SendWarden3Custom(BattleClient client, ByteString data)
|
private ByteString SendWarden3Custom(BattleClient client, ByteString data)
|
||||||
@ -3778,14 +3777,14 @@ challenge_end_time_unix_seconds: 1583200800
|
|||||||
}
|
}
|
||||||
private ByteString GetGameAccountSettings(BattleClient client)
|
private ByteString GetGameAccountSettings(BattleClient client)
|
||||||
{
|
{
|
||||||
Logger.Trace("GetGameAccountSettings()");
|
Logger.Debug("GetGameAccountSettings()");
|
||||||
|
|
||||||
var gameAccount = client.Account.GameAccount;
|
var gameAccount = client.Account.GameAccount;
|
||||||
return gameAccount.Settings.ToByteString();
|
return gameAccount.Settings.ToByteString();
|
||||||
}
|
}
|
||||||
private ByteString SetGameAccountSettings(SetGameAccountSettings settings, BattleClient client)
|
private ByteString SetGameAccountSettings(SetGameAccountSettings settings, BattleClient client)
|
||||||
{
|
{
|
||||||
Logger.Trace("SetGameAccountSettings()");
|
Logger.Debug("SetGameAccountSettings()");
|
||||||
|
|
||||||
client.Account.GameAccount.Settings = settings.Settings;
|
client.Account.GameAccount.Settings = settings.Settings;
|
||||||
return ByteString.Empty;
|
return ByteString.Empty;
|
||||||
|
|||||||
@ -37,13 +37,83 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
//Blizzless Project 2022
|
//Blizzless Project 2022
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using DiIiS_NA.GameServer.GSSystem.GameSystem;
|
||||||
using DiIiS_NA.GameServer.GSSystem.ObjectsSystem;
|
using DiIiS_NA.GameServer.GSSystem.ObjectsSystem;
|
||||||
|
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||||
using DiIiS_NA.LoginServer.AccountsSystem;
|
using DiIiS_NA.LoginServer.AccountsSystem;
|
||||||
//Blizzless Project 2022
|
//Blizzless Project 2022
|
||||||
using static DiIiS_NA.Core.MPQ.FileFormats.GameBalance;
|
using static DiIiS_NA.Core.MPQ.FileFormats.GameBalance;
|
||||||
|
|
||||||
namespace DiIiS_NA.GameServer.CommandManager
|
namespace DiIiS_NA.GameServer.CommandManager
|
||||||
{
|
{
|
||||||
|
[CommandGroup("info", "Get current game information.")]
|
||||||
|
public class InfoCommand : CommandGroup
|
||||||
|
{
|
||||||
|
[DefaultCommand]
|
||||||
|
public string Info(string[] @params, BattleClient invokerClient)
|
||||||
|
{
|
||||||
|
if (invokerClient?.InGameClient?.Game is not { } game || invokerClient.InGameClient.Player is not { } player || invokerClient.Account is not{} account)
|
||||||
|
return "You are not in game.";
|
||||||
|
return GetInfo(account, player, game);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string GetInfo(Account account, Player player, Game game)
|
||||||
|
{
|
||||||
|
List<string> info = new()
|
||||||
|
{
|
||||||
|
$"Game: {game.GameId}",
|
||||||
|
$"Difficulty: {game.Difficulty}",
|
||||||
|
$"Worlds: {game.Worlds.Count}",
|
||||||
|
$"Players: {game.Players.Count}",
|
||||||
|
$"Monsters: {game.Worlds.Sum(w => w.Monsters.Count)}"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (account.UserLevel >= Account.UserLevels.GM)
|
||||||
|
{
|
||||||
|
foreach (var world in game.Worlds)
|
||||||
|
{
|
||||||
|
info.Add("");
|
||||||
|
info.Add($" World: {world.SNO.ToString()} - {(int)world.SNO}");
|
||||||
|
info.Add($" Players: {world.Players.Count}");
|
||||||
|
info.Add($" Monsters: {world.Monsters.Count}");
|
||||||
|
foreach (var playerInWorld in world.Players)
|
||||||
|
{
|
||||||
|
info.Add($">>>>> Player[{playerInWorld.Value.PlayerIndex}] <<<<<");
|
||||||
|
info.Add($" Id: {playerInWorld.Value.GlobalID}");
|
||||||
|
info.Add($" Index: {playerInWorld.Value.PlayerIndex}");
|
||||||
|
info.Add($" Name: {playerInWorld.Value.Name}");
|
||||||
|
info.Add($" Class: {playerInWorld.Value.Toon.Class.ToString()}");
|
||||||
|
info.Add($" Level: {playerInWorld.Value.Toon.Level}");
|
||||||
|
info.Add(
|
||||||
|
$" Health: {playerInWorld.Value.Attributes[GameAttribute.Hitpoints_Cur]} / {playerInWorld.Value.Attributes[GameAttribute.Hitpoints_Max]}");
|
||||||
|
info.Add($" Damage: {playerInWorld.Value.Attributes[GameAttribute.Damage_Min, 0]}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return string.Join('\n', info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[CommandGroup("followers", "Manage your followers.", Account.UserLevels.Tester)]
|
||||||
|
public class FollowersCommand : CommandGroup
|
||||||
|
{
|
||||||
|
[Command("dismiss", "Dismisses all followers.")]
|
||||||
|
public string DismissAllCommand(string[] @params, BattleClient invokerClient)
|
||||||
|
{
|
||||||
|
if (invokerClient?.InGameClient?.Player is not {} player)
|
||||||
|
return "You are not in game.";
|
||||||
|
|
||||||
|
var followers = player.Followers.ToArray();
|
||||||
|
// destroy followers
|
||||||
|
foreach (var follower in followers)
|
||||||
|
{
|
||||||
|
player.DestroyFollower(follower.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"Dismissed {followers.Length} followers.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[CommandGroup("difficulty", "Changes difficulty of the game", Account.UserLevels.GM)]
|
[CommandGroup("difficulty", "Changes difficulty of the game", Account.UserLevels.GM)]
|
||||||
public class DifficultyCommand : CommandGroup
|
public class DifficultyCommand : CommandGroup
|
||||||
|
|||||||
Loading…
Reference in New Issue
user.block.title