ich bekomme ab und zu eine NullReferenceException:
Code:
public class PlayerManager{
public class PlayerData{
string[] PlayerDataString = { "" };
int[] PlayerDataInt = { 0 };
Socket PlayerDataSocket;
/* === PlayerDataString ===
* [0] PlayerName
*
*
* */
/* === PlayerDataInt ===
* [0] Session ID
*
* */
public void SetName(string PlayerName){this.PlayerDataString[0] = PlayerName;}
public void SetSocket(Socket handler){this.PlayerDataSocket = handler;}
public void SetSessionID(int SessionID){this.PlayerDataInt[0] = SessionID;}
public Socket GetSocket(){return this.PlayerDataSocket;}
public int GetSessionID() { return this.PlayerDataInt[0]; }
}
private static List<PlayerData> PlayerDataList = new List<PlayerData>();
public static void CreatePlayerData(Socket PlayerHandler,string PlayerName,int SessionID){
try{
PlayerData CreateNewPlayer = new PlayerData();
//--------------------------------------------
CreateNewPlayer.SetName(PlayerName);
CreateNewPlayer.SetSessionID(SessionID);
CreateNewPlayer.SetSocket(PlayerHandler);
//--------------------------------------------
PlayerDataList.Add(CreateNewPlayer);
}
catch (Exception ex) { GameConsole.WriteConsoleGameParams(System.ConsoleColor.Red, $"ERROR GetPlayerBySocket()", ex.ToString()); }
}
public static PlayerData GetPlayerBySocket(Socket handler){
PlayerData returnPlayerData = null;
try {
for (int i = 0; i <= PlayerDataList.Count-1; i++) {
if (PlayerDataList[i].GetSocket() == handler){
returnPlayerData = PlayerDataList[i];
break;
}
}
return returnPlayerData;
}
catch (Exception ex) { GameConsole.WriteConsoleGameParams(System.ConsoleColor.Red, $"ERROR GetPlayerBySocket()", ex.ToString()); return returnPlayerData; }
}
}
Code:
public static void IncommingPacket(Socket handler,byte[] PacketByte){
try{
PlayerManager.PlayerData PacketPlayer = PlayerManager.GetPlayerBySocket(handler);
if (PacketPlayer.GetSessionID() == 0){
string SessionPacket =
GameCrypto.DecryptCustomParameter(PacketByte);
string[] SessionParts = SessionPacket.Split(' ');
if (SessionParts.Length < 2 || !SessionParts.Any()){
return;
}
int SessionID;
if (int.TryParse(SessionParts[1].Split('\\').FirstOrDefault(), out SessionID))
{
Console.WriteLine("Test .. Session hat sich verbunden: " + SessionID);
}
}
}
catch (Exception ex) { GameConsole.WriteConsoleGameParams(System.ConsoleColor.Red, $"ERROR IncommingPacket", ex.ToString()); }
}
Code:
if (PacketPlayer.GetSessionID() == 0){
Es währe halt wichtig das dieser Exception nicht kommt , weil ich zB. die Session auslesen muss falls sie 0 ist.
Danke für jeden Tipp






