Skip to content
This repository was archived by the owner on Jun 17, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Prima.Server/Handlers/CharacterHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ public async Task OnPacketReceived(NetworkSession session, CharacterCreation pac

playerMobile.Name = packet.Name;

session.SetProperty(playerMobile);


_worldManagerService.AddWorldEntity(playerMobile);

Expand Down
2 changes: 1 addition & 1 deletion src/Prima.Server/Handlers/LoginCompleteHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public async Task HandleAsync(LoginCompleteEvent @event, CancellationToken cance

await session.SendPacketAsync(new GlobalLightLevel(0xFF));
await session.SendPacketAsync(new PersonalLightLevel(mobile, 0xFF));
await session.SendPacketAsync(new FeatureFlagsResponse(FeatureFlags.UOR | FeatureFlags.AOS));
await session.SendPacketAsync(new FeatureFlagsResponse(FeatureFlags.T2A | FeatureFlags.UOR));
await session.SendPacketAsync(new CharacterWarMode(false));
await session.SendPacketAsync(new LoginComplete());
}
Expand Down
9 changes: 8 additions & 1 deletion src/Prima.Server/Handlers/LoginHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,14 @@ public async Task OnPacketReceived(NetworkSession session, GameServerLogin packe
var character = characters.ToList()[i];
var mobile = _worldManagerService.GetEntityBySerial<MobileEntity>(character.MobileId);

charactersAndCities.Characters[i] = new CharacterEntry(mobile.Name);
if (mobile != null)
{
charactersAndCities.Characters[i] = new CharacterEntry(mobile.Name);
}
else
{
Logger.LogWarning("Character {CharacterId} not found", character.Id);
}
}


Expand Down
1 change: 1 addition & 0 deletions src/Prima.Server/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ static async Task Main(string[] args)
.AddService<ConnectionHandler>()
.AddService<PingPongHandler>()
.AddService<CharacterHandler>()
.AddService<LoginCompleteHandler>()
.AddService<LoginHandler>();

builder.Services.AddHostedService<PrimaHostedService>();
Expand Down
2 changes: 1 addition & 1 deletion src/Prima.Server/Services/AccountManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ private async Task CheckDefaultAdminUserAsync()
return;
}

var generatedPassword = HashUtils.GenerateRandomRefreshToken(8);
var generatedPassword = "admin";

var defaultAdminUser = new AccountEntity
{
Expand Down
16 changes: 9 additions & 7 deletions src/Prima.Server/Services/NetworkService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,6 @@ DirectoriesConfig directoriesConfig
{
var transport = _networkTransportManager.GetTransport(transportId);

_logger.LogDebug(
"-> {Session} ({Size} bytes) {Transport} {Data}",
id.ToShortSessionId(),
data.Length,
transport.Id,
data.HumanizedContent(20)
);
};
}

Expand Down Expand Up @@ -233,6 +226,15 @@ private async Task SendPacketInternal(string sessionId, IUoNetworkPacket packet)
}



_logger.LogDebug(
"-> {PacketType} {Session} ({Size} bytes) {Data}",
packet.GetType().Name,
sessionId.ToShortSessionId(),
data.Length,
data.ToArray().HumanizedContent(20)
);

await _networkTransportManager.EnqueueMessageAsync(
new NetworkMessageData(sessionId, data.ToArray(), ServerNetworkType.None)
);
Expand Down
22 changes: 17 additions & 5 deletions src/Prima.Server/Services/PersistenceManager.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System.Security.Cryptography;
using Orion.Core.Server.Data.Directories;
using Orion.Foundations.Utils;
using Prima.Core.Server.Data.Serialization;
using Prima.UOData.Interfaces.Persistence;
using Prima.UOData.Interfaces.Persistence.Entities;
Expand All @@ -24,9 +22,23 @@ public PersistenceManager(ILogger<PersistenceManager> logger)
}


public async Task<SerializationEntryData> SerializeAsync<TEntity>(TEntity entity) where TEntity : ISerializableEntity
{
ArgumentNullException.ThrowIfNull(entity);

var serializer = _entitySerializersAsType[entity.GetType()];

public async Task<SerializationEntryData> SerializeAsync<TEntity>(TEntity entity) where TEntity : ISerializableEntity
if (serializer is null)
{
throw new InvalidOperationException($"No serializer registered for entity type {entity.GetType()}");
}

var serializerData = serializer.Serialize(entity, this);

return new SerializationEntryData(serializer.Header, serializerData);
}

public SerializationEntryData Serialize<TEntity>(TEntity entity) where TEntity : ISerializableEntity
{
ArgumentNullException.ThrowIfNull(entity);

Expand All @@ -37,7 +49,7 @@ public async Task<SerializationEntryData> SerializeAsync<TEntity>(TEntity entity
throw new InvalidOperationException($"No serializer registered for entity type {entity.GetType()}");
}

var serializerData = serializer.Serialize(entity);
var serializerData = serializer.Serialize(entity, this);

return new SerializationEntryData(serializer.Header, serializerData);
}
Expand Down Expand Up @@ -120,7 +132,7 @@ public async Task<List<TEntity>> DeserializeAsync<TEntity>(string fileName) wher

if (_entitySerializers.TryGetValue(header, out var serializer))
{
entries.Add((TEntity)serializer.Deserialize(data));
entries.Add((TEntity)serializer.Deserialize(data, this));
}
else
{
Expand Down
Loading
Loading