mirror of
https://github.com/SoDOff-Project/sodoff-mmo.git
synced 2025-10-11 08:18:49 -07:00

client do NOT like ping < 16ms (considers it to be zero and this disables updates to other players' positions) ... so add some delay in PNG handler
43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using sodoffmmo.Attributes;
|
|
using sodoffmmo.Core;
|
|
using sodoffmmo.Data;
|
|
using System.Text;
|
|
using System;
|
|
|
|
namespace sodoffmmo.CommandHandlers;
|
|
|
|
[CommandHandler(0)]
|
|
class HandshakeHandler : CommandHandler
|
|
{
|
|
public override Task Handle(Client client, NetworkObject receivedObject)
|
|
{
|
|
string? token = receivedObject.Get<string>("rt");
|
|
if (token != null) {
|
|
client.Send(NetworkObject.WrapObject(0, 1006, new NetworkObject()).Serialize());
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
NetworkObject obj = new();
|
|
|
|
obj.Add("tk", RandomString(32));
|
|
obj.Add("ct", 1024);
|
|
obj.Add("ms", 1000000);
|
|
|
|
client.Send(NetworkObject.WrapObject(0, 0, obj).Serialize());
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
private string RandomString(int length) {
|
|
Random random = new Random();
|
|
const string pool = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
var builder = new StringBuilder();
|
|
|
|
for (var i = 0; i < length; i++) {
|
|
var c = pool[random.Next(0, pool.Length)];
|
|
builder.Append(c);
|
|
}
|
|
|
|
return builder.ToString();
|
|
}
|
|
}
|