Merge pull request #64 from DeKaN/community
Sync community branch with master
This commit is contained in:
commit
ae4824d869
@ -35,7 +35,7 @@ DiIiS is a fully-functional open-source local server for [Diablo III: Reaper of
|
|||||||
|
|
||||||
Each version of the client includes changes to structures, opcodes and attributes.
|
Each version of the client includes changes to structures, opcodes and attributes.
|
||||||
|
|
||||||
The currently supported version of the client: **2.7.3.82785**
|
The currently supported version of the client: **2.7.4.84161**
|
||||||
|
|
||||||
## Server Deploying
|
## Server Deploying
|
||||||
|
|
||||||
|
|||||||
@ -76,9 +76,9 @@ namespace DiIiS_NA.LoginServer.AccountsSystem
|
|||||||
ParagonLevelHardcore = 0,
|
ParagonLevelHardcore = 0,
|
||||||
Experience = 7200000,
|
Experience = 7200000,
|
||||||
ExperienceHardcore = 7200000,
|
ExperienceHardcore = 7200000,
|
||||||
StashSize = 70,
|
StashSize = 700, // Default stash sizes should be 70 with purchasable upgrades
|
||||||
HardcoreStashSize = 70,
|
HardcoreStashSize = 700,
|
||||||
SeasonStashSize = 70,
|
SeasonStashSize = 700,
|
||||||
BloodShards = 0,
|
BloodShards = 0,
|
||||||
HardcoreBloodShards = 0,
|
HardcoreBloodShards = 0,
|
||||||
BossProgress = new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff },
|
BossProgress = new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff },
|
||||||
|
|||||||
@ -31,7 +31,7 @@ namespace DiIiS_NA.LoginServer.GamesSystem
|
|||||||
|
|
||||||
public D3.OnlineService.GameCreateParams GameCreateParams { get; private set; }
|
public D3.OnlineService.GameCreateParams GameCreateParams { get; private set; }
|
||||||
|
|
||||||
public string Version = "2.7.3";
|
public string Version = "2.7.4";
|
||||||
public ulong FactoryID { get; private set; }
|
public ulong FactoryID { get; private set; }
|
||||||
public KeyValuePair<string, BattleBackend.ServerDescriptor> GServer { get; private set; }
|
public KeyValuePair<string, BattleBackend.ServerDescriptor> GServer { get; private set; }
|
||||||
public ulong RequestId { get; private set; }
|
public ulong RequestId { get; private set; }
|
||||||
|
|||||||
@ -87,18 +87,6 @@ namespace DiIiS_NA.LoginServer.ServicesSystem.Services
|
|||||||
Init.SetGameAccountSettings(GAS);
|
Init.SetGameAccountSettings(GAS);
|
||||||
Init.SetHeroDigests(d);
|
Init.SetHeroDigests(d);
|
||||||
Init.SetAccountDigest(Client.Account.GameAccount.Digest);
|
Init.SetAccountDigest(Client.Account.GameAccount.Digest);
|
||||||
/*Init.SetSyncedVars("OnlineService.Season.EarliestSeasonNum=4" +
|
|
||||||
" OnlineService.Season.Num=1" +
|
|
||||||
" OnlineService.Season.State=1" +
|
|
||||||
" OnlineService.FreeToPlay=true" +
|
|
||||||
" OnlineService.Leaderboard.Era=10" +
|
|
||||||
" OnlineService.AnniversaryEvent.Status=2" +
|
|
||||||
" ChallengeRift.ChallengeNumber=140" +
|
|
||||||
" OnlineService.Store.Status=0" +
|
|
||||||
" OnlineService.Store.ProductCatalogDigest=C42DC6117A7008EDA2006542D6C07EAD096DAD90" +
|
|
||||||
" OnlineService.Store.ProductCatalogVersion=633565800390338000" +
|
|
||||||
" OnlineService.Store.NewestProductTime=516240000000000000" +
|
|
||||||
" OnlineService.Region.Id=5");*/
|
|
||||||
Init.SetSyncedVars(
|
Init.SetSyncedVars(
|
||||||
" OnlineService.Season.Num=1" + //Номер сезона
|
" OnlineService.Season.Num=1" + //Номер сезона
|
||||||
" OnlineService.Season.State=1" + //Статус сезона, 1 - Активирован, 0 - Деактивирован
|
" OnlineService.Season.State=1" + //Статус сезона, 1 - Активирован, 0 - Деактивирован
|
||||||
@ -3791,7 +3779,7 @@ challenge_end_time_unix_seconds: 1583200800
|
|||||||
var gameAccount = client.Account.GameAccount;
|
var gameAccount = client.Account.GameAccount;
|
||||||
return gameAccount.Settings.ToByteString();
|
return gameAccount.Settings.ToByteString();
|
||||||
}
|
}
|
||||||
private ByteString SetGameAccountSettings(D3.GameMessage.SetGameAccountSettings settings, BattleClient client)
|
private ByteString SetGameAccountSettings(SetGameAccountSettings settings, BattleClient client)
|
||||||
{
|
{
|
||||||
Logger.Trace("SetGameAccountSettings()");
|
Logger.Trace("SetGameAccountSettings()");
|
||||||
|
|
||||||
@ -3832,14 +3820,5 @@ challenge_end_time_unix_seconds: 1583200800
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Heroes of The Storm
|
|
||||||
private ByteString FirstRequest(BattleClient Client, ClientRequest request)
|
|
||||||
{
|
|
||||||
|
|
||||||
|
|
||||||
return null;// res.Build().ToByteString();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -847,7 +847,6 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem
|
|||||||
snoAmbientOcclusionOverrideTex = null,
|
snoAmbientOcclusionOverrideTex = null,
|
||||||
MarkerSetSNO = null,
|
MarkerSetSNO = null,
|
||||||
MarkerSetIndex = null,
|
MarkerSetIndex = null,
|
||||||
TimeActorCreated = null,
|
|
||||||
EnterKnownLookOverrides = null
|
EnterKnownLookOverrides = null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -34,6 +34,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ActorSystem.Implementations
|
|||||||
});
|
});
|
||||||
|
|
||||||
player.CheckPointPosition = this.Position;
|
player.CheckPointPosition = this.Position;
|
||||||
|
player.Attributes[GameAttribute.Corpse_Resurrection_Charges] = 3; // Reset corpse resurrection charges
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -928,9 +928,9 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
if (player.Attributes[GameAttribute.Hitpoints_Cur] == player.Attributes[GameAttribute.Hitpoints_Max])
|
if (player.Attributes[GameAttribute.Hitpoints_Cur] == player.Attributes[GameAttribute.Hitpoints_Max])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
player.AddPercentageHP(60);
|
player.World.PowerManager.RunPower(player, 30211);
|
||||||
player.World.BuffManager.AddBuff(this, player, new PowerSystem.Implementations.CooldownBuff(30211, TickTimer.WaitSeconds(player.World.Game, 30f)));
|
|
||||||
|
|
||||||
|
/* Potions are no longer consumable
|
||||||
if (this.Attributes[GameAttribute.ItemStackQuantityLo] <= 1)
|
if (this.Attributes[GameAttribute.ItemStackQuantityLo] <= 1)
|
||||||
player.Inventory.DestroyInventoryItem(this); // No more potions!
|
player.Inventory.DestroyInventoryItem(this); // No more potions!
|
||||||
else
|
else
|
||||||
@ -938,6 +938,8 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
this.UpdateStackCount(--this.Attributes[GameAttribute.ItemStackQuantityLo]); // Just remove one
|
this.UpdateStackCount(--this.Attributes[GameAttribute.ItemStackQuantityLo]); // Just remove one
|
||||||
this.Attributes.SendChangedMessage(player.InGameClient);
|
this.Attributes.SendChangedMessage(player.InGameClient);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1013,7 +1013,7 @@ namespace DiIiS_NA.GameServer.GSSystem.ItemsSystem
|
|||||||
var legaDefinition = GetRandom(AllowedItems.Values
|
var legaDefinition = GetRandom(AllowedItems.Values
|
||||||
.Where(def =>
|
.Where(def =>
|
||||||
def.ItemLevel <= Math.Min(level + 2, 73)
|
def.ItemLevel <= Math.Min(level + 2, 73)
|
||||||
&& !ObsoleteItems.Contains(def.Hash) //obsolete 1.0.3 items
|
&& !ObsoleteItems.Contains(def.Hash)
|
||||||
&& UniqueItems.UniqueItemStats.ContainsKey(def.Hash)
|
&& UniqueItems.UniqueItemStats.ContainsKey(def.Hash)
|
||||||
&& def.Quality != ItemTable.ItemQuality.Special
|
&& def.Quality != ItemTable.ItemQuality.Special
|
||||||
&& (type == null ? true : ItemGroup.HierarchyToHashList(ItemGroup.FromHash(def.ItemTypesGBID)).Contains(type.Hash))
|
&& (type == null ? true : ItemGroup.HierarchyToHashList(ItemGroup.FromHash(def.ItemTypesGBID)).Contains(type.Hash))
|
||||||
|
|||||||
@ -874,7 +874,7 @@ namespace DiIiS_NA.GameServer.GSSystem.MapSystem
|
|||||||
}
|
}
|
||||||
public void SpawnRandomPotion(Actor source, Player player)
|
public void SpawnRandomPotion(Actor source, Player player)
|
||||||
{
|
{
|
||||||
if (player != null && !player.Inventory.HaveEnough(DiIiS_NA.Core.Helpers.Hash.StringHashHelper.HashItemName("HealthPotionBottomless"), 100))
|
if (player != null && !player.Inventory.HaveEnough(DiIiS_NA.Core.Helpers.Hash.StringHashHelper.HashItemName("HealthPotionBottomless"), 1))
|
||||||
{
|
{
|
||||||
var item = ItemGenerator.GenerateRandomPotion(player);
|
var item = ItemGenerator.GenerateRandomPotion(player);
|
||||||
if (item == null) return;
|
if (item == null) return;
|
||||||
|
|||||||
@ -469,7 +469,6 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
Attributes[GameAttribute.Buff_Icon_Count0, 0x00033C40] = 1;
|
Attributes[GameAttribute.Buff_Icon_Count0, 0x00033C40] = 1;
|
||||||
|
|
||||||
Attributes[GameAttribute.Currencies_Discovered] = 0x0011FFF8;
|
Attributes[GameAttribute.Currencies_Discovered] = 0x0011FFF8;
|
||||||
Attributes[GameAttribute.Stash_Tabs_Purchased_With_Gold] = 5;
|
|
||||||
|
|
||||||
this.Attributes[GameAttribute.Skill, 30592] = 1;
|
this.Attributes[GameAttribute.Skill, 30592] = 1;
|
||||||
this.Attributes[GameAttribute.Resource_Degeneration_Prevented] = false;
|
this.Attributes[GameAttribute.Resource_Degeneration_Prevented] = false;
|
||||||
@ -623,7 +622,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
this.Attributes[GameAttribute.Cannot_Dodge] = false;
|
this.Attributes[GameAttribute.Cannot_Dodge] = false;
|
||||||
this.Attributes[GameAttribute.Trait, 0x0000CE11] = 1;
|
this.Attributes[GameAttribute.Trait, 0x0000CE11] = 1;
|
||||||
this.Attributes[GameAttribute.TeamID] = 2;
|
this.Attributes[GameAttribute.TeamID] = 2;
|
||||||
this.Attributes[GameAttribute.Stash_Tabs_Purchased_With_Gold] = 1;
|
this.Attributes[GameAttribute.Stash_Tabs_Purchased_With_Gold] = 5; // what do these do?
|
||||||
|
this.Attributes[GameAttribute.Stash_Tabs_Rewarded_By_Achievements] = 5;
|
||||||
this.Attributes[GameAttribute.Backpack_Slots] = 60;
|
this.Attributes[GameAttribute.Backpack_Slots] = 60;
|
||||||
this.Attributes[GameAttribute.General_Cooldown] = 0;
|
this.Attributes[GameAttribute.General_Cooldown] = 0;
|
||||||
}
|
}
|
||||||
@ -1337,6 +1337,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
|
|
||||||
this.Attributes[GameAttribute.Hitpoints_Cur] = this.Attributes[GameAttribute.Hitpoints_Max_Total];
|
this.Attributes[GameAttribute.Hitpoints_Cur] = this.Attributes[GameAttribute.Hitpoints_Max_Total];
|
||||||
|
|
||||||
|
this.Attributes[GameAttribute.Corpse_Resurrection_Charges] = 3;
|
||||||
|
|
||||||
//TestOutPutItemAttributes(); //Activate this only for finding item stats.
|
//TestOutPutItemAttributes(); //Activate this only for finding item stats.
|
||||||
this.Attributes.BroadcastChangedIfRevealed();
|
this.Attributes.BroadcastChangedIfRevealed();
|
||||||
|
|
||||||
@ -2461,8 +2463,9 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
Logger.Warn("Местополежение игрока {0}, Scene: {1} SNO: {2} LevelArea: {3}", this.Toon.Name, this.CurrentScene.SceneSNO.Name, this.CurrentScene.SceneSNO.Id, this.CurrentScene.Specification.SNOLevelAreas[0]);
|
Logger.Warn("Местоположение игрока {0}, Scene: {1} SNO: {2} LevelArea: {3}", this.Toon.Name, this.CurrentScene.SceneSNO.Name, this.CurrentScene.SceneSNO.Id, this.CurrentScene.Specification.SNOLevelAreas[0]);
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -2653,7 +2656,11 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
this.Revive(this.CheckPointPosition);
|
this.Revive(this.CheckPointPosition);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
//this.Revive(this.Position);
|
if (this.Attributes[GameAttribute.Corpse_Resurrection_Charges] > 0)
|
||||||
|
{
|
||||||
|
this.Revive(this.Position);
|
||||||
|
this.Attributes[GameAttribute.Corpse_Resurrection_Charges]--;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3810,8 +3817,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
this.Attributes[GameAttribute.Resurrect_As_Observer] = state;
|
this.Attributes[GameAttribute.Resurrect_As_Observer] = state;
|
||||||
//this.Attributes[GameAttribute.Observer] = !state;
|
//this.Attributes[GameAttribute.Observer] = !state;
|
||||||
}
|
}
|
||||||
//this.Attributes[GameAttribute.Corpse_Resurrection_Charges] = 1; //enable that to allow resurrecting at corpse
|
//this.Attributes[GameAttribute.Corpse_Resurrection_Charges] = 1; // Enable this to allow unlimited resurrection at corpse
|
||||||
//this.Attributes[GameAttribute.Corpse_Resurrection_Allowed_Game_Time] = this.World.Game.TickCounter + 300; //timer for auto-revive
|
//this.Attributes[GameAttribute.Corpse_Resurrection_Allowed_Game_Time] = this.World.Game.TickCounter + 300; // Timer for auto-revive (seems to be broken?)
|
||||||
this.Attributes.BroadcastChangedIfRevealed();
|
this.Attributes.BroadcastChangedIfRevealed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5912,7 +5919,7 @@ namespace DiIiS_NA.GameServer.GSSystem.PlayerSystem
|
|||||||
minion.SetVisible(true);
|
minion.SetVisible(true);
|
||||||
minion.Hidden = false;
|
minion.Hidden = false;
|
||||||
|
|
||||||
if (minion.SNO == ActorSno._leah)
|
if (minion.SNO == ActorSno._leah) // Act I Leah
|
||||||
{
|
{
|
||||||
(minion.Brain as MinionBrain).PresetPowers.Clear();
|
(minion.Brain as MinionBrain).PresetPowers.Clear();
|
||||||
(minion.Brain as MinionBrain).AddPresetPower(30599);
|
(minion.Brain as MinionBrain).AddPresetPower(30599);
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using DiIiS_NA.GameServer.GSSystem.PlayerSystem;
|
||||||
|
using DiIiS_NA.GameServer.GSSystem.TickerSystem;
|
||||||
|
|
||||||
|
namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations.General
|
||||||
|
{
|
||||||
|
//30211 class DrinkHealthPotion
|
||||||
|
[ImplementsPowerSNO(30211)]
|
||||||
|
public class DrinkHealthPotion : PowerScript
|
||||||
|
{
|
||||||
|
public override IEnumerable<TickTimer> Run()
|
||||||
|
{
|
||||||
|
if (User is Player)
|
||||||
|
{
|
||||||
|
Player player = (Player)User;
|
||||||
|
player.AddPercentageHP(60);
|
||||||
|
AddBuff(player, player, new CooldownBuff(30211, TickTimer.WaitSeconds(player.World.Game, 30f)));
|
||||||
|
}
|
||||||
|
|
||||||
|
yield break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2245,8 +2245,8 @@ namespace DiIiS_NA.GameServer.GSSystem.PowerSystem.Implementations
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
_beamEnd = SpawnEffect(ActorSno._wizard_rayoffrost_target, User.Position, 0, WaitInfinite());
|
_beamEnd = SpawnEffect(ActorSno._wizard_rayoffrost_target, User.Position, 0, WaitInfinite());
|
||||||
User.AddComplexEffect(RuneSelect(19327, 149835, -1, 149836, 149869, 149879), _beamEnd);
|
User.AddComplexEffect((Rune_E > 0) ? 149879 : 19327, _beamEnd); // Rune E uses a special beam
|
||||||
if (Rune_A > 0) User.AddComplexEffect(19327, _beamEnd);
|
User.AddComplexEffect(RuneSelect(-1, 149835, -1, 149836, 149869, -1), _beamEnd); // Runes A, C and D add effects on top of the standard beam
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -137,7 +137,8 @@ namespace DiIiS_NA.GameServer.GSSystem.QuestSystem
|
|||||||
//ListenProximity(85843, new SpawnCultists());
|
//ListenProximity(85843, new SpawnCultists());
|
||||||
script = new SpawnCultists();
|
script = new SpawnCultists();
|
||||||
script.Execute(world);
|
script.Execute(world);
|
||||||
ListenKill(ActorSno._triunecultist_c, 7, new Advance());
|
//ListenKill(ActorSno._triunecultist_c, 7, new Advance());
|
||||||
|
ListenProximity(ActorSno._enchantressnpc, new Advance()); // HACK: Skip ambush
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
|
|
||||||
ScriptedAttributeInitializer.ProcessAttributes(Attributes);
|
ScriptedAttributeInitializer.ProcessAttributes(Attributes);
|
||||||
}
|
}
|
||||||
#region 2.7.1
|
#region 2.7.4
|
||||||
//*
|
//*
|
||||||
public static readonly GameAttributeF Axe_Bad_Data = new GameAttributeF(0, 0, -1, 0, 0, "", "", "Axe_Bad_Data", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Axe_Bad_Data = new GameAttributeF(0, 0, -1, 0, 0, "", "", "Axe_Bad_Data", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Attribute_Timer = new GameAttributeF(1, 0, -1, 0, 0, "", "", "Attribute_Timer", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Attribute_Timer = new GameAttributeF(1, 0, -1, 0, 0, "", "", "Attribute_Timer", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
@ -375,12 +375,12 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
public static readonly GameAttributeF World_Seed = new GameAttributeF(758, 0, -1, 0, 0, "", "", "World_Seed", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF World_Seed = new GameAttributeF(758, 0, -1, 0, 0, "", "", "World_Seed", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Combo_Time_Last_Move = new GameAttributeF(802, 0, -1, 0, 0, "", "", "Combo_Time_Last_Move", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Combo_Time_Last_Move = new GameAttributeF(802, 0, -1, 0, 0, "", "", "Combo_Time_Last_Move", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Death_Replacement_Effect_Group_SNO = new GameAttributeF(804, -1, -1, 0, 0, "", "", "Death_Replacement_Effect_Group_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Death_Replacement_Effect_Group_SNO = new GameAttributeF(804, -1, -1, 0, 0, "", "", "Death_Replacement_Effect_Group_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Checkpoint_Resurrection_Allowed_Game_Time = new GameAttributeF(805, 0, -1, 0, 0, "", "", "Checkpoint_Resurrection_Allowed_Game_Time", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeI Checkpoint_Resurrection_Allowed_Game_Time = new GameAttributeI(805, 0, -1, 0, 0, "", "", "Checkpoint_Resurrection_Allowed_Game_Time", GameAttributeEncoding.Int, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Checkpoint_Resurrection_Forced_Game_Time = new GameAttributeF(806, 0, -1, 0, 0, "", "", "Checkpoint_Resurrection_Forced_Game_Time", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeI Checkpoint_Resurrection_Forced_Game_Time = new GameAttributeI(806, 0, -1, 0, 0, "", "", "Checkpoint_Resurrection_Forced_Game_Time", GameAttributeEncoding.Int, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Corpse_Resurrection_Allowed_Game_Time = new GameAttributeF(807, 0, -1, 0, 0, "", "", "Corpse_Resurrection_Allowed_Game_Time", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeI Corpse_Resurrection_Allowed_Game_Time = new GameAttributeI(807, 0, -1, 0, 0, "", "", "Corpse_Resurrection_Allowed_Game_Time", GameAttributeEncoding.Int, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Controlling_TimedEvent_SNO = new GameAttributeF(810, -1, -1, 0, 0, "", "", "Controlling_TimedEvent_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Controlling_TimedEvent_SNO = new GameAttributeF(810, -1, -1, 0, 0, "", "", "Controlling_TimedEvent_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Spawner_Concurrent_Count_ID = new GameAttributeF(855, -1, -1, 0, 0, "", "", "Spawner_Concurrent_Count_ID", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Spawner_Concurrent_Count_ID = new GameAttributeF(855, -1, -1, 0, 0, "", "", "Spawner_Concurrent_Count_ID", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Skill_Override = new GameAttributeF(857, -1, -1, 0, 0, "", "", "Skill_Override", GameAttributeEncoding.Float32, 136, 0, 0, 32);
|
public static readonly GameAttributeI Skill_Override = new GameAttributeI(857, -1, -1, 0, 0, "", "", "Skill_Override", GameAttributeEncoding.Int, 136, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Walk_Passability_Power_SNO = new GameAttributeF(1057, -1, -1, 0, 0, "", "", "Walk_Passability_Power_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Walk_Passability_Power_SNO = new GameAttributeF(1057, -1, -1, 0, 0, "", "", "Walk_Passability_Power_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Passability_Power_SNO = new GameAttributeF(1058, -1, -1, 0, 0, "", "", "Passability_Power_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Passability_Power_SNO = new GameAttributeF(1058, -1, -1, 0, 0, "", "", "Passability_Power_SNO", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Flippy_ID = new GameAttributeF(1059, -1, -1, 0, 0, "", "", "Flippy_ID", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Flippy_ID = new GameAttributeF(1059, -1, -1, 0, 0, "", "", "Flippy_ID", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
@ -1511,9 +1511,11 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
public static readonly GameAttributeB ForcedMove = new GameAttributeB(1401, 0, -1, 0, 0, "", "", "ForcedMove", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB ForcedMove = new GameAttributeB(1401, 0, -1, 0, 0, "", "", "ForcedMove", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
public static readonly GameAttributeB ReceivedPrimalWhenUnlocking = new GameAttributeB(1474, 0, -1, 0, 0, "", "", "ReceivedPrimalWhenUnlocking", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB ReceivedPrimalWhenUnlocking = new GameAttributeB(1474, 0, -1, 0, 0, "", "", "ReceivedPrimalWhenUnlocking", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
public static readonly GameAttributeB KanaiPowersunlocked = new GameAttributeB(1475, 0, -1, 0, 0, "", "", "KanaiPowersunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB KanaiPowersunlocked = new GameAttributeB(1475, 0, -1, 0, 0, "", "", "KanaiPowersunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
public static readonly GameAttributeB FourthKanaisCubeSlotunlocked = new GameAttributeB(1476, 0, -1, 0, 0, "", "", "Fourth Kanai's Cube Slot unlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB FourthKanaisCubeSlotunlocked = new GameAttributeB(1476, 0, -1, 0, 0, "", "", "FourthKanai'sCubeSlotunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
public static readonly GameAttributeB Seasononlyitemsunlocked = new GameAttributeB(1477, 0, -1, 0, 0, "", "", "Season-onlyitemsunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB Seasononlyitemsunlocked = new GameAttributeB(1477, 0, -1, 0, 0, "", "", "Season-onlyitemsunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
public static readonly GameAttributeB Soul_shards_unlocked = new GameAttributeB(1478, 0, -1, 0, 0, "", "", "Soul shards unlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
public static readonly GameAttributeB Soul_shards_unlocked = new GameAttributeB(1478, 0, -1, 0, 0, "", "", "Soulshardsunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
|
public static readonly GameAttributeB Item_was_sanctified = new GameAttributeB(1479, 0, -1, 0, 0, "", "", "Itemwassanctified", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
|
public static readonly GameAttributeB Sanctified_items_unlocked = new GameAttributeB(1480, 0, -1, 0, 0, "", "", "Sanctifieditemsunlocked", GameAttributeEncoding.IntMinMax, 0, 0, 1, 1);
|
||||||
|
|
||||||
public static readonly GameAttributeF Fiil1 = new GameAttributeF(1223, -1, -1, 0, 0, "", "", "Fiil1", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Fiil1 = new GameAttributeF(1223, -1, -1, 0, 0, "", "", "Fiil1", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
public static readonly GameAttributeF Fiil2 = new GameAttributeF(1224, -1, -1, 0, 0, "", "", "Fiil2", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
public static readonly GameAttributeF Fiil2 = new GameAttributeF(1224, -1, -1, 0, 0, "", "", "Fiil2", GameAttributeEncoding.Float32, 0, 0, 0, 32);
|
||||||
|
|||||||
@ -30,7 +30,7 @@ namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD
|
|||||||
public int? /* sno */ snoAmbientOcclusionOverrideTex;
|
public int? /* sno */ snoAmbientOcclusionOverrideTex;
|
||||||
public int? MarkerSetSNO;
|
public int? MarkerSetSNO;
|
||||||
public int? MarkerSetIndex;
|
public int? MarkerSetIndex;
|
||||||
public uint? TimeActorCreated;
|
public uint? TimeActorCreated = null;
|
||||||
public EnterKnownLookOverrides EnterKnownLookOverrides;
|
public EnterKnownLookOverrides EnterKnownLookOverrides;
|
||||||
|
|
||||||
public ACDEnterKnownMessage() : base(Opcodes.ACDEnterKnownMessage) { }
|
public ACDEnterKnownMessage() : base(Opcodes.ACDEnterKnownMessage) { }
|
||||||
@ -39,7 +39,7 @@ namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD
|
|||||||
{
|
{
|
||||||
ActorID = buffer.ReadUInt(32);
|
ActorID = buffer.ReadUInt(32);
|
||||||
ActorSNOId = buffer.ReadInt(32);
|
ActorSNOId = buffer.ReadInt(32);
|
||||||
Flags = buffer.ReadInt(8);
|
Flags = buffer.ReadInt(9);
|
||||||
LocationType = buffer.ReadInt(2) + (-1);
|
LocationType = buffer.ReadInt(2) + (-1);
|
||||||
if (buffer.ReadBool())
|
if (buffer.ReadBool())
|
||||||
{
|
{
|
||||||
@ -83,7 +83,7 @@ namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.ACD
|
|||||||
{
|
{
|
||||||
buffer.WriteUInt(32, ActorID);
|
buffer.WriteUInt(32, ActorID);
|
||||||
buffer.WriteInt(32, ActorSNOId);
|
buffer.WriteInt(32, ActorSNOId);
|
||||||
buffer.WriteInt(8, Flags);
|
buffer.WriteInt(9, Flags);
|
||||||
buffer.WriteInt(2, LocationType - (-1));
|
buffer.WriteInt(2, LocationType - (-1));
|
||||||
buffer.WriteBool(WorldLocation != null);
|
buffer.WriteBool(WorldLocation != null);
|
||||||
if (WorldLocation != null)
|
if (WorldLocation != null)
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
using DiIiS_NA.GameServer.MessageSystem;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DiIiS_NA.D3_GameServer.MessageSystem.Message.Definitions.Dungeon
|
||||||
|
{
|
||||||
|
[Message(Opcodes.UberBossClosingMessage)]
|
||||||
|
public class UberBossClosingMessage : GameMessage
|
||||||
|
{
|
||||||
|
public int field0;
|
||||||
|
public int field1;
|
||||||
|
|
||||||
|
public UberBossClosingMessage() : base(Opcodes.UberBossClosingMessage) { }
|
||||||
|
|
||||||
|
public override void Parse(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
field0 = buffer.ReadInt(32);
|
||||||
|
field1 = buffer.ReadInt(32);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Encode(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
buffer.WriteInt(32, field0);
|
||||||
|
buffer.WriteInt(32, field1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void AsText(StringBuilder b, int pad)
|
||||||
|
{
|
||||||
|
b.Append(' ', pad);
|
||||||
|
b.AppendLine("SetDungeonJoinMessage:");
|
||||||
|
b.Append(' ', pad++);
|
||||||
|
b.AppendLine("{");
|
||||||
|
b.Append(' ', pad); b.AppendLine("field0: 0x" + field0.ToString("X8"));
|
||||||
|
b.Append(' ', pad); b.AppendLine("field1: 0x" + field1.ToString("X8"));
|
||||||
|
b.Append(' ', --pad);
|
||||||
|
b.AppendLine("}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -22,7 +22,7 @@ namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Game
|
|||||||
{
|
{
|
||||||
this.SNOPackHash = snoPacketHash;
|
this.SNOPackHash = snoPacketHash;
|
||||||
this.ProtocolHash = protocol;
|
this.ProtocolHash = protocol;
|
||||||
this.Version = "DiIiS Server - 2.7.3.82753";
|
this.Version = "DiIiS Server - 2.7.4.84161";
|
||||||
}
|
}
|
||||||
|
|
||||||
public VersionsMessage() : base(Opcodes.VersionsMessage) { }
|
public VersionsMessage() : base(Opcodes.VersionsMessage) { }
|
||||||
|
|||||||
@ -0,0 +1,49 @@
|
|||||||
|
//Blizzless Project 2022
|
||||||
|
using System;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Collections.Generic;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Linq;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Text;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DiIiS_NA.GameServer.MessageSystem.Message.Definitions.Inventory
|
||||||
|
{
|
||||||
|
[Message(Opcodes.UnlockableRandomAffixMessage, Consumers.Inventory)]
|
||||||
|
public class UnlockableRandomAffixMessage : GameMessage
|
||||||
|
{
|
||||||
|
public uint ItemID; // Item's DynamicID
|
||||||
|
public int Field1;
|
||||||
|
public UnlockableRandomAffixMessage Affix;
|
||||||
|
|
||||||
|
public override void Parse(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
ItemID = buffer.ReadUInt(32);
|
||||||
|
Field1 = buffer.ReadInt(32);
|
||||||
|
Affix.Parse(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Encode(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
buffer.WriteUInt(32, ItemID);
|
||||||
|
buffer.WriteInt(32, Field1);
|
||||||
|
Affix.Encode(buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void AsText(StringBuilder b, int pad)
|
||||||
|
{
|
||||||
|
b.Append(' ', pad);
|
||||||
|
b.AppendLine("ChangeUsableItemMessage:");
|
||||||
|
b.Append(' ', pad++);
|
||||||
|
b.AppendLine("{");
|
||||||
|
b.Append(' ', pad); b.AppendLine("ItemID: 0x" + ItemID.ToString("X8") + " (" + ItemID + ")");
|
||||||
|
b.Append(' ', pad); b.AppendLine("Field1: 0x" + Field1.ToString("X8") + " (" + Field1 + ")");
|
||||||
|
b.Append(' ', --pad);
|
||||||
|
b.AppendLine("}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
//Blizzless Project 2022
|
||||||
|
using System;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Collections.Generic;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Linq;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Text;
|
||||||
|
//Blizzless Project 2022
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DiIiS_NA.GameServer.MessageSystem.Message.Fields
|
||||||
|
{
|
||||||
|
public class UnlockableRandomAffixProperties
|
||||||
|
{
|
||||||
|
public int field0;
|
||||||
|
public bool field1;
|
||||||
|
|
||||||
|
public void Parse(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
field0 = buffer.ReadInt(32);
|
||||||
|
field1 = buffer.ReadBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Encode(GameBitBuffer buffer)
|
||||||
|
{
|
||||||
|
buffer.WriteInt(32, field0);
|
||||||
|
buffer.WriteBool(field1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AsText(StringBuilder b, int pad)
|
||||||
|
{
|
||||||
|
b.Append(' ', pad);
|
||||||
|
b.AppendLine("UnlockableRandomAffixProperties:");
|
||||||
|
b.Append(' ', pad++);
|
||||||
|
b.AppendLine("{");
|
||||||
|
b.Append(' ', pad);
|
||||||
|
b.AppendLine("field0: 0x" + field0.ToString("X8"));
|
||||||
|
b.Append(' ', pad);
|
||||||
|
b.AppendLine("field1: 0x" + field1);
|
||||||
|
b.Append(' ', --pad);
|
||||||
|
b.AppendLine("}");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -572,7 +572,7 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
PlayerIndexMessage16 = 550,//SIZE 12
|
PlayerIndexMessage16 = 550,//SIZE 12
|
||||||
//*/
|
//*/
|
||||||
#endregion
|
#endregion
|
||||||
#region 2.7.3
|
#region 2.7.4
|
||||||
ClientTryConsoleCommand = 1,//SIZE 1060 - Client
|
ClientTryConsoleCommand = 1,//SIZE 1060 - Client
|
||||||
ServerTryConsoleCommand = 2,//SIZE 1060 - Server
|
ServerTryConsoleCommand = 2,//SIZE 1060 - Server
|
||||||
QuitGameMessage = 3,//SIZE 12
|
QuitGameMessage = 3,//SIZE 12
|
||||||
@ -1111,10 +1111,10 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
PlayerLoadoutTabIconMessage = 534, // //SIZE16
|
PlayerLoadoutTabIconMessage = 534, // //SIZE16
|
||||||
PlayerLoadoutSaveMessage1 = 535, // //SIZE68
|
PlayerLoadoutSaveMessage1 = 535, // //SIZE68
|
||||||
ANNDataMessage45 = 536, // //SIZE12
|
ANNDataMessage45 = 536, // //SIZE12
|
||||||
PlayerLoadoutDataMessage = 537, // //SIZE592
|
PlayerLoadoutDataMessage = 537, // //SIZE 808 - 2.7.4
|
||||||
PlayerLoadoutDataMessage1 = 538, // //SIZE592
|
PlayerLoadoutDataMessage1 = 538, // //SIZE 808 - 2.7.4
|
||||||
PlayerLoadoutTabIconMessage1 = 539, // //SIZE16
|
PlayerLoadoutTabIconMessage1 = 539, // //SIZE16
|
||||||
PlayerLoadoutEquipmentUpdateMessage = 540, // //SIZE48
|
PlayerLoadoutEquipmentUpdateMessage = 540, // //SIZE 64 - - 2.7.4
|
||||||
PlayerLoadoutEquipResultsMessage = 541, // //SIZE156
|
PlayerLoadoutEquipResultsMessage = 541, // //SIZE156
|
||||||
SwapSkillsMessage = 542, // //SIZE16
|
SwapSkillsMessage = 542, // //SIZE16
|
||||||
GBIDDataMessage5 = 543, // //SIZE12
|
GBIDDataMessage5 = 543, // //SIZE12
|
||||||
@ -1124,7 +1124,11 @@ namespace DiIiS_NA.GameServer.MessageSystem
|
|||||||
DWordDataMessage18 = 547, // //SIZE12
|
DWordDataMessage18 = 547, // //SIZE12
|
||||||
ANNDataMessage46 = 548, // //SIZE12
|
ANNDataMessage46 = 548, // //SIZE12
|
||||||
DungeonFinderCompletionTimeMessage = 549, // //SIZE16
|
DungeonFinderCompletionTimeMessage = 549, // //SIZE16
|
||||||
IntDataMessage26 = 550, // //SIZE12
|
IntDataMessage26 = 550, // //SIZE 12
|
||||||
|
IntDataMessage27 = 551, // //SIZE 12 - 2.7.4
|
||||||
|
UberBossClosingMessage = 552, // //SIZE 16 - 2.7.4
|
||||||
|
PlayerIndexMessage16 = 551, // //SIZE 12 - 2.7.4
|
||||||
|
UnlockableRandomAffixMessage = 553, // //SIZE124 - 2.7.4
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -84,7 +84,7 @@ namespace DiIiS_NA
|
|||||||
public static string RESTSERVERIP = DiIiS_NA.REST.Config.Instance.IP;
|
public static string RESTSERVERIP = DiIiS_NA.REST.Config.Instance.IP;
|
||||||
public static string PUBLICGAMESERVERIP = DiIiS_NA.GameServer.NATConfig.Instance.PublicIP;
|
public static string PUBLICGAMESERVERIP = DiIiS_NA.GameServer.NATConfig.Instance.PublicIP;
|
||||||
|
|
||||||
public static int Build = 11;
|
public static int Build = 29;
|
||||||
public static int Stage = 4;
|
public static int Stage = 4;
|
||||||
public static string TypeBuild = "Beta";
|
public static string TypeBuild = "Beta";
|
||||||
public static bool D3CoreEnabled = DiIiS_NA.GameServer.Config.Instance.CoreActive;
|
public static bool D3CoreEnabled = DiIiS_NA.GameServer.Config.Instance.CoreActive;
|
||||||
@ -100,7 +100,7 @@ namespace DiIiS_NA
|
|||||||
|
|
||||||
string Name = $"Blizzless: Build {Build}, Stage: {Stage} - {TypeBuild}";
|
string Name = $"Blizzless: Build {Build}, Stage: {Stage} - {TypeBuild}";
|
||||||
Console.WriteLine(" " + Name);
|
Console.WriteLine(" " + Name);
|
||||||
Console.WriteLine("Connected Module: 0x00 - Diablo 3 RoS 2.7.3.82785");
|
Console.WriteLine("Connected Module: 0x00 - Diablo 3 RoS 2.7.4.84161");
|
||||||
Console.WriteLine("------------------------------------------------------------------------");
|
Console.WriteLine("------------------------------------------------------------------------");
|
||||||
Console.ResetColor();
|
Console.ResetColor();
|
||||||
Console.Title = Name;
|
Console.Title = Name;
|
||||||
|
|||||||
@ -175,7 +175,7 @@ namespace DiIiS_NA.REST
|
|||||||
{
|
{
|
||||||
loginResult.AuthenticationState = "LOGIN";
|
loginResult.AuthenticationState = "LOGIN";
|
||||||
loginResult.ErrorCode = "UNABLE_TO_DECODE";
|
loginResult.ErrorCode = "UNABLE_TO_DECODE";
|
||||||
loginResult.ErrorMessage = "HEBEPHO! WRONG! English do you speak IT?!";
|
loginResult.ErrorMessage = "The information you have entered is not valid.";
|
||||||
SendResponse(HttpCode.BadRequest, loginResult);
|
SendResponse(HttpCode.BadRequest, loginResult);
|
||||||
Logger.Error("Аутентификация неудалась: Логин - {0}. Cоединение с REST разорвано.", login);
|
Logger.Error("Аутентификация неудалась: Логин - {0}. Cоединение с REST разорвано.", login);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
user.block.title