Я работаю на серверной стороне своей игры, это почти закончено, но сегодня у меня была проблема ... В этой игре базируются 2 модальности, приземление и deathmatch, в конце игры сервер должен знать результаты. Это онлайн-игра. Когда я заканчиваю матч или игрок выходит, сервер падает, это не должно быть, ему просто нужно было вернуться в комнату. Это дает мне эту ошибку:Невозможно лить объект типа '' on type ''
[ERROR]: Unable to cast object of type 'FagNet.Core.Data.GameScore' to type 'FagNet.Core.Data.TDGameScore'.
in FagNet.Core.Data.Player.SetNewTDStats(Boolean win)
in FagNet.Core.Data.Room.BroadcastBriefing(Boolean result)
in FagNet.Core.Data.Room.<BeginResult>d__2b.MoveNext()
--- End of stack trace ---
in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state)
in System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
in System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
in System.Threading.ThreadPoolWorkQueue.Dispatch()
in System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
Может кто-нибудь мне помочь !? мне нужна помощь :(
Это источник FagNet.Core.Data.GameScore:
public class GameScore
{
public DateTime JoinTime { get; set; }
public uint TotalPoints { get; set; }
public virtual uint CalculateEXP()
{
return 0;
}
}
И это источник FagNet.Core.Data.TDGameScore:
public class TDGameScore : GameScore
{
public uint TDScore { get; set; }
public uint TDAssists { get; set; }
public uint Kills { get; set; }
public uint KillAssists { get; set; }
public uint Offense { get; set; }
public uint OffenseAssists { get; set; }
public uint Defense { get; set; }
public uint DefenseAssists { get; set; }
public uint Recovery { get; set; }
public override uint CalculateEXP()
{
var ts = DateTime.Now - JoinTime;
if (ts.TotalSeconds < 0 || TotalPoints == 0)
return 0;
return (uint)ts.TotalSeconds/4 + (TDScore * 15) + (100 * TotalPoints/(500 + 2 * TotalPoints) * 14);
}
}
Можете ли вы показать код для 'SetNewTDStats (Boolean win)'? Похоже, вы пытаетесь что-то неправильно нарисовать – Sayse