Fix build and loading crashes
Port From (https://github.com/TrinityCore/TrinityCore/commit/)
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
CypherCore is an open source server project for World of Warcraft written in C#.
|
||||
|
||||
The current support game version is: 8.3.7.35662
|
||||
The current support game version is: 9.0.2.36839
|
||||
|
||||
### Prerequisites
|
||||
* Visual Studio 2019 with netcore 3.1 [Download](https://www.visualstudio.com/downloads/)
|
||||
@@ -19,7 +19,7 @@ The current support game version is: 8.3.7.35662
|
||||
* Extract the sql files into the core sql folder (ex: C:\CypherCore\sql)
|
||||
|
||||
### Playing
|
||||
* Must use Arctium WoW Client Launcher [Download](https://arctium.io) (World of Warcraft -> Client Launchers)
|
||||
* Must use Arctium WoW Client Launcher [Download](https://arctium.io) (Downloads -> World of Warcraft -> Client Launcher -> Custom Server)
|
||||
|
||||
### Support / General Info
|
||||
* Check out our channel on Arctium Discord [Here](https://discord.gg/Hac3qn6)
|
||||
|
||||
@@ -261,7 +261,7 @@ namespace Game.Collision
|
||||
parentMapId = vm.GetParentMapId((uint)parentMapId);
|
||||
}
|
||||
|
||||
return null;
|
||||
return result;
|
||||
}
|
||||
|
||||
public static LoadResult CanLoadMap(string vmapPath, uint mapID, uint tileX, uint tileY, VMapManager vm)
|
||||
|
||||
@@ -51,7 +51,7 @@ namespace Game.DataStorage
|
||||
}
|
||||
|
||||
AchievementStorage = ReadDB2<AchievementRecord>("Achievement.db2", HotfixStatements.SEL_ACHIEVEMENT, HotfixStatements.SEL_ACHIEVEMENT_LOCALE);
|
||||
//AnimationDataStorage = ReadDB2<AnimationDataRecord>("AnimationData.db2", HotfixStatements.SEL_ANIMATION_DATA);
|
||||
AnimationDataStorage = ReadDB2<AnimationDataRecord>("AnimationData.db2", HotfixStatements.SEL_ANIMATION_DATA);
|
||||
AnimKitStorage = ReadDB2<AnimKitRecord>("AnimKit.db2", HotfixStatements.SEL_ANIM_KIT);
|
||||
AreaGroupMemberStorage = ReadDB2<AreaGroupMemberRecord>("AreaGroupMember.db2", HotfixStatements.SEL_AREA_GROUP_MEMBER);
|
||||
AreaTableStorage = ReadDB2<AreaTableRecord>("AreaTable.db2", HotfixStatements.SEL_AREA_TABLE, HotfixStatements.SEL_AREA_TABLE_LOCALE);
|
||||
|
||||
@@ -194,14 +194,16 @@ namespace Game.DataStorage
|
||||
// link shapeshift displays to race/gender/form
|
||||
foreach (var shapeshiftOptionsForModel in shapeshiftFormByModel.LookupByKey(model.Id))
|
||||
{
|
||||
ShapeshiftFormModelData data = _chrCustomizationChoicesForShapeshifts[Tuple.Create((byte)raceModel.ChrRacesID, (byte)model.Sex, shapeshiftOptionsForModel.Item2)];
|
||||
ShapeshiftFormModelData data = new ShapeshiftFormModelData();
|
||||
data.OptionID = shapeshiftOptionsForModel.Item2;
|
||||
data.Choices = _chrCustomizationChoicesByOption.LookupByKey(shapeshiftOptionsForModel.Item2);
|
||||
if (!data.Choices.Empty())
|
||||
{
|
||||
for (int i = 0; i < data.Choices.Count; ++i)
|
||||
data.Displays[i] = displayInfoByCustomizationChoice.LookupByKey(data.Choices[i].Id);
|
||||
data.Displays.Add(displayInfoByCustomizationChoice.LookupByKey(data.Choices[i].Id));
|
||||
}
|
||||
|
||||
_chrCustomizationChoicesForShapeshifts[Tuple.Create((byte)raceModel.ChrRacesID, (byte)model.Sex, shapeshiftOptionsForModel.Item2)] = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -905,7 +907,7 @@ namespace Game.DataStorage
|
||||
|
||||
public List<ChrCustomizationOptionRecord> GetCustomiztionOptions(Race race, Gender gender)
|
||||
{
|
||||
return _chrCustomizationOptionsByRaceAndGender.LookupByKey(Tuple.Create(race, gender));
|
||||
return _chrCustomizationOptionsByRaceAndGender.LookupByKey(Tuple.Create((byte)race, (byte)gender));
|
||||
}
|
||||
|
||||
public MultiMap<uint, uint> GetRequiredCustomizationChoices(uint chrCustomizationReqId)
|
||||
@@ -915,7 +917,7 @@ namespace Game.DataStorage
|
||||
|
||||
public ChrModelRecord GetChrModel(Race race, Gender gender)
|
||||
{
|
||||
return _chrModelsByRaceAndGender.LookupByKey(Tuple.Create(race, gender));
|
||||
return _chrModelsByRaceAndGender.LookupByKey(Tuple.Create((byte)race, (byte)gender));
|
||||
}
|
||||
|
||||
public string GetChrRaceName(Race race, Locale locale = Locale.enUS)
|
||||
|
||||
@@ -2276,7 +2276,7 @@ namespace Game.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public struct ChrCustomizationChoice
|
||||
public struct ChrCustomizationChoice : IComparable<ChrCustomizationChoice>
|
||||
{
|
||||
public uint ChrCustomizationOptionID;
|
||||
public uint ChrCustomizationChoiceID;
|
||||
@@ -2298,6 +2298,11 @@ namespace Game.Entities
|
||||
data.WriteUInt32(ChrCustomizationOptionID);
|
||||
data.WriteUInt32(ChrCustomizationChoiceID);
|
||||
}
|
||||
|
||||
public int CompareTo(ChrCustomizationChoice other)
|
||||
{
|
||||
return ChrCustomizationOptionID.CompareTo(other.ChrCustomizationOptionID);
|
||||
}
|
||||
}
|
||||
|
||||
public class QuestLog : BaseUpdateData<Player>
|
||||
|
||||
@@ -2506,7 +2506,7 @@ namespace Game.Entities
|
||||
uint health = result.Read<uint>(fieldIndex++);
|
||||
|
||||
uint[] powers = new uint[(int)PowerType.MaxPerClass];
|
||||
for (var i = 0; fieldIndex < powers.Length; ++i)
|
||||
for (var i = 0; i < powers.Length; ++i)
|
||||
powers[i] = result.Read<uint>(fieldIndex++);
|
||||
|
||||
uint instance_id = result.Read<uint>(fieldIndex++);
|
||||
|
||||
@@ -5491,13 +5491,13 @@ namespace Game
|
||||
float positionZ = result.Read<float>(6);
|
||||
float orientation = result.Read<float>(7);
|
||||
|
||||
if (CliDB.ChrRacesStorage.ContainsKey(currentrace))
|
||||
if (!CliDB.ChrRacesStorage.ContainsKey(currentrace))
|
||||
{
|
||||
Log.outError(LogFilter.Sql, $"Wrong race {currentrace} in `playercreateinfo` table, ignoring.");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CliDB.ChrClassesStorage.ContainsKey(currentclass))
|
||||
if (!CliDB.ChrClassesStorage.ContainsKey(currentclass))
|
||||
{
|
||||
Log.outError(LogFilter.Sql, $"Wrong class {currentclass} in `playercreateinfo` table, ignoring.");
|
||||
continue;
|
||||
|
||||
@@ -68,12 +68,10 @@ namespace Game
|
||||
{
|
||||
do
|
||||
{
|
||||
var customizationsForCharacter = customizations[customizationsResult.Read<ulong>(0)];
|
||||
|
||||
ChrCustomizationChoice choice = new ChrCustomizationChoice();
|
||||
choice.ChrCustomizationOptionID = customizationsResult.Read<uint>(1);
|
||||
choice.ChrCustomizationChoiceID = customizationsResult.Read<uint>(2);
|
||||
customizationsForCharacter.Add(choice);
|
||||
customizations.Add(customizationsResult.Read<ulong>(0), choice);
|
||||
|
||||
} while (customizationsResult.NextRow());
|
||||
}
|
||||
@@ -87,7 +85,7 @@ namespace Game
|
||||
|
||||
var customizationsForChar = customizations.LookupByKey(charInfo.Guid.GetCounter());
|
||||
if (!customizationsForChar.Empty())
|
||||
charInfo.Customizations = (Array<ChrCustomizationChoice>)customizationsForChar.ToList();
|
||||
charInfo.Customizations = new Array<ChrCustomizationChoice>(customizationsForChar.ToArray());
|
||||
|
||||
Log.outInfo(LogFilter.Network, "Loading Character {0} from account {1}.", charInfo.Guid.ToString(), GetAccountId());
|
||||
|
||||
@@ -194,7 +192,7 @@ namespace Game
|
||||
if (checkRequiredDependentChoices)
|
||||
{
|
||||
var requiredChoices = Global.DB2Mgr.GetRequiredCustomizationChoices(req.Id);
|
||||
if (!requiredChoices.Empty())
|
||||
if (requiredChoices != null)
|
||||
{
|
||||
foreach (var key in requiredChoices.Keys)
|
||||
{
|
||||
|
||||
@@ -1784,7 +1784,7 @@ namespace Game.Networking.Packets
|
||||
data.WritePackedGuid(OriginalCastID);
|
||||
data.WriteInt32(SpellID);
|
||||
|
||||
Visual.Read(data);
|
||||
Visual.Write(data);
|
||||
|
||||
data.WriteUInt32((uint)CastFlags);
|
||||
data.WriteUInt32((uint)CastFlagsEx);
|
||||
|
||||
@@ -196,7 +196,7 @@ namespace Game.Networking
|
||||
if (_headerBuffer.GetRemainingSpace() > 0)
|
||||
{
|
||||
// need to receive the header
|
||||
int readHeaderSize = Math.Min(args.BytesTransferred, _headerBuffer.GetRemainingSpace());
|
||||
int readHeaderSize = Math.Min(args.BytesTransferred - currentReadIndex, _headerBuffer.GetRemainingSpace());
|
||||
_headerBuffer.Write(args.Buffer, currentReadIndex, readHeaderSize);
|
||||
currentReadIndex += readHeaderSize;
|
||||
|
||||
@@ -215,7 +215,7 @@ namespace Game.Networking
|
||||
if (_packetBuffer.GetRemainingSpace() > 0)
|
||||
{
|
||||
// need more data in the payload
|
||||
int readDataSize = Math.Min(args.BytesTransferred, _packetBuffer.GetRemainingSpace());
|
||||
int readDataSize = Math.Min(args.BytesTransferred - currentReadIndex, _packetBuffer.GetRemainingSpace());
|
||||
_packetBuffer.Write(args.Buffer, currentReadIndex, readDataSize);
|
||||
currentReadIndex += readDataSize;
|
||||
|
||||
|
||||
@@ -214,7 +214,7 @@ namespace Game.Scenarios
|
||||
|
||||
} while (result.NextRow());
|
||||
|
||||
Log.outInfo(LogFilter.ServerLoading, "Loaded {count} scenario POI definitions in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
|
||||
Log.outInfo(LogFilter.ServerLoading, $"Loaded {count} scenario POI definitions in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
|
||||
}
|
||||
|
||||
public List<ScenarioPOI> GetScenarioPOIs(uint CriteriaTreeID)
|
||||
|
||||
Reference in New Issue
Block a user