but new problem appeared
Code:
System.NullReferenceException: Object reference not set to an instance of an object. at COServer_Project.InternalDatabase.GetCharInfo(Character Charr, String UserName)
2.Sometimes Players char is seted to 0 and the char is gone!
how can I fix it ?
Btw
heres the codeline
Code:
public static void GetCharInfo(Character Charr, string UserName)
{
MySqlDataAdapter DataAdapter = null;
DataSet DSet = new DataSet();
try
{
DataAdapter = new MySqlDataAdapter("SELECT * FROM `Characters` WHERE `Account` = '" + UserName + "'", ExternalDatabase.Connection);
DataAdapter.Fill(DSet, "Character");
if (DSet != null && DSet.Tables["Character"].Rows.Count > 0)
{
DataRow DR = DSet.Tables["Character"].Rows[0];
Charr.UID = (uint)DR["UID"];
Charr.Name = (string)DR["CharName"];
Charr.Job = Convert.ToByte((uint)DR["Job"]);
Charr.Level = Convert.ToByte((uint)DR["Level"]);
Charr.Exp = (uint)DR["Exp"];
Charr.Model = Convert.ToUInt16((uint)DR["Model"]);
Charr.Avatar = Convert.ToUInt16((uint)DR["Avatar"]);
Charr.Hair = Convert.ToUInt16((uint)DR["Hair"]);
Charr.LocX = Convert.ToUInt16((uint)DR["LocationX"]);
Charr.LocY = Convert.ToUInt16((uint)DR["LocationY"]);
Charr.LocMap = Convert.ToUInt16((uint)DR["LocationMap"]);
Charr.Str = Convert.ToUInt16((uint)DR["Strength"]);
Charr.Agi = Convert.ToUInt16((uint)DR["Agility"]);
Charr.Vit = Convert.ToUInt16((uint)DR["Vitality"]);
Charr.Spi = Convert.ToUInt16((uint)DR["Spirit"]);
Charr.Silvers = (uint)DR["Money"];
Charr.CPs = (uint)DR["CPs"];
Charr.CurHP = Convert.ToUInt16((uint)DR["CurrentHP"]);
Charr.PKPoints = Convert.ToUInt16((uint)DR["PKPoints"]);
Charr.RBCount = Convert.ToByte((uint)DR["RBCount"]);
Charr.PackedInventory = (string)DR["Inventory"];
Charr.PackedEquips = (string)DR["Equipment"];
Charr.PackedSkills = (string)DR["Skills"];
Charr.PackedProfs = (string)DR["Profs"];
Charr.WHSilvers = (uint)DR["WHMoney"];
Charr.QuestKO = (uint)DR["QuestKO"];
Charr.PackedWHs = (string)DR["Warehouses"];
Charr.PackedFriends = (string)DR["Friends"];
Charr.PackedEnemies = (string)DR["Enemies"];
Charr.QuestMob = (string)DR["QuestMob"];
Charr.VP = (uint)DR["VP"];
Charr.GuildDonation = (uint)DR["GuildDonation"];
Charr.StatP = Convert.ToUInt16((uint)DR["StatPoints"]);
Charr.GuildID = Convert.ToUInt16((uint)DR["MyGuild"]);
Charr.GuildPosition = Convert.ToByte((uint)DR["GuildPos"]);
Charr.PrevMap = Convert.ToUInt16((uint)DR["PrevMap"]);
if (Guilds.AllGuilds.Contains(Charr.GuildID))
Charr.MyGuild = (Guild)Guilds.AllGuilds[Charr.GuildID];
Charr.MinAtk = Charr.Str;
Charr.MaxAtk = Charr.Str;
Charr.Potency = Charr.Level;
Charr.RealModel = Charr.Model;
Charr.RealAvatar = Charr.Avatar;
Charr.MaxHP = Charr.BaseMaxHP();
Charr.RealAgi = Charr.Agi;
}
else
General.WriteLine("Char not found.");
}
catch (Exception Exc) { General.WriteLine(Convert.ToString(Exc)); }
}
Code:
public static byte Authenticate(string UserName, string Password)
{
try
{
MySqlDataAdapter DataAdapter = new MySqlDataAdapter("SELECT * FROM `Accounts` WHERE `AccountID` = '" + UserName + "'", Connection);
DataSet DSet = new DataSet();
DataAdapter.Fill(DSet, "Account");
if (DSet == null)
return 0;
if (DSet.Tables.Count == 0)
return 0;
if (DSet.Tables["Account"].Rows.Count > 0)
{
DataRow DR = DSet.Tables["Account"].Rows[0];
string Pass = (string)DR["Password"];
if (Pass == Password || Pass == "")
{
if (Pass == "")
{
if (ExternalDatabase.AllowQuerys)
DatabaseQueue.Enqueue(new MySqlCommand("UPDATE `Accounts` SET `Password` = '" + Password + "' WHERE `AccountID` = '" + UserName + "'", Connection));
}
uint LogonCount = (uint)DR["LogonCount"];
LogonCount++;
if (ExternalDatabase.AllowQuerys)
DatabaseQueue.Enqueue(new MySqlCommand("UPDATE `Accounts` SET `LogonCount` = " + LogonCount + " WHERE `AccountID` = '" + UserName + "'", Connection));
return Convert.ToByte((uint)DR["LogonType"]);
}
else
return 0;
}
else
return 0;
}
catch (Exception Exc) { Console.WriteLine(Exc.ToString()); return 0; }
}






