- Joined
- Aug 25, 2006
- Messages
- 124
- Reaction score
- 24
Can anyone tell me why characters dont save on the CoEmu source,
Because i used the source of ron.
I hope i give enough information to solve this probleme
Command:
this is a simple command but its effective i think
SynchronizeCharacter:
ALL in character.cs
Saveinventory:
SaveEquipments:
Saveskills:
SaveQuests:
Because i used the source of ron.
I hope i give enough information to solve this probleme
Command:
Code:
else if (Splitter[0] == "/save")
{
BackendDB.SynchronizeCharacter(Client.Char);
}
SynchronizeCharacter:
Code:
public static void SynchronizeCharacter(Character Char)
{
string save_inv = Char.SaveInventory();
string save_equip = Char.SaveEquipment();
string save_skill = Char.SaveSkills();
string save_quest = Char.SaveQuests();
string SQL = "UPDATE \"Characters\" SET \"Class\" = '" + (uint)(Char.Class) + "', \"Model\" = " + Char.Model +
", \"Name\" = '" + Char.Name + "', \"PKPoints\" = " + Char.PKPoints + ", \"Level\" = " + Char.Level +
", \"LocationX\" = " + Char.CurrentLoc.X + ", \"LocationY\" = " + Char.CurrentLoc.Y + ", \"Money\" = "
+ Char.Money + ", \"Map\" = " + (uint)(Char.Map) + ", \"Experience\" = " + Char.Exp + ", \"HP\" = " + Char.HP +
", \"MP\" = " + Char.MP + ", \"StatPoints\" = " + Char.StatPoints + ", \"Strength\" = " + Char.Strength +
", \"Spirit\" = " + Char.Mana + ", \"Agility\" = " + Char.Dexterity + ", \"Vitality\" = " + Char.Vitality +
", \"Inventory\" = " + save_inv +
", \"Equipment\" = " + save_equip + ", \"Skills\" = " + save_skill + ", \"Quests\" = " + save_quest +
" WHERE \"CharacterID\" = " + (uint)(Char.CharID - 0x00120000);
//SQL = MakeSafeString(SQL);
NpgsqlCommand Com = new NpgsqlCommand(SQL, m_Database);
Com.ExecuteNonQuery();
}
Saveinventory:
Code:
public string SaveInventory()
{
// define which character is seperating field
int a = 0;
string retrnsave = "";
foreach (int[] items in Inv_items)
{
string i1 = "";
string i2b = "";
string i3b = "";
string i4b = "";
string i5b = "";
string i6b = "";
string i7b = "";
string i8b = "";
string i9b = "";
string i10 = "";
string i11 = "";
string i12 = "";
if (items[0] != 0)
{
i1 = items[0].ToString("X"); i1 = i1.PadLeft(6, '0');
i2b = items[1].ToString("X"); i2b = i2b.PadLeft(2, '0');
i3b = items[2].ToString("X"); i3b = i3b.PadLeft(2, '0');
i4b = items[3].ToString("X"); i4b = i4b.PadLeft(2, '0');
i5b = items[4].ToString("X"); i5b = i5b.PadLeft(2, '0');
i6b = items[5].ToString("X"); i6b = i6b.PadLeft(2, '0');
i7b = items[6].ToString("X"); i7b = i7b.PadLeft(2, '0');
i8b = items[7].ToString("X"); i8b = i8b.PadLeft(5, '0');
i9b = items[8].ToString("X"); i9b = i9b.PadLeft(5, '0');
i10 = items[9].ToString("X"); i10 = i10.PadLeft(6, '0');
i11 = items[10].ToString("X"); i11 = i11.PadLeft(2, '0');
i12 = items[11].ToString("X"); i12 = i12.PadLeft(2, '0');
retrnsave += (i1 + i2b + i3b + i4b + i5b + i6b + i7b + i8b + i9b + i10 + i11 + i12);
if (a <= 38) { retrnsave += "~"; }
}
else
{
retrnsave += "00000000000000000000000000000000000000";
if (a <= 38) { retrnsave += "~"; }
}
a++;
}
retrnsave = "'" + retrnsave + "'";
return retrnsave;
}
Code:
public string SaveEquipment()
{
// define which char acter is seperating field
int a = 0;
string retrnsave = "";
foreach (int[] items in Equip_items)
{
string i1 = "";
string i2b = "";
string i3b = "";
string i4b = "";
string i5b = "";
string i6b = "";
string i7b = "";
string i8b = "";
string i9b = "";
string i10 = "";
string i11 = "";
string i12 = "";
if (items[0] != 0)
{
i1 = items[0].ToString("X"); i1 = i1.PadLeft(6, '0');
i2b = items[1].ToString("X"); i2b = i2b.PadLeft(2, '0');
i3b = items[2].ToString("X"); i3b = i3b.PadLeft(2, '0');
i4b = items[3].ToString("X"); i4b = i4b.PadLeft(2, '0');
i5b = items[4].ToString("X"); i5b = i5b.PadLeft(2, '0');
i6b = items[5].ToString("X"); i6b = i6b.PadLeft(2, '0');
i7b = items[6].ToString("X"); i7b = i7b.PadLeft(2, '0');
i8b = items[7].ToString("X"); i8b = i8b.PadLeft(5, '0');
i9b = items[8].ToString("X"); i9b = i9b.PadLeft(5, '0');
i10 = items[9].ToString("X"); i10 = i10.PadLeft(6, '0');
i11 = items[10].ToString("X"); i11 = i11.PadLeft(2, '0');
i12 = items[11].ToString("X"); i12 = i12.PadLeft(2, '0');
retrnsave += i1 + i2b + i3b + i4b + i5b + i6b + i7b + i8b + i9b + i10 + i11 + i12;
if (a <= 7) { retrnsave += "~"; }
}
else
{
retrnsave += "00000000000000000000000000000000000000";
if (a <=7) { retrnsave += "~"; }
}
a++;
}
retrnsave = "'" + retrnsave + "'";
return retrnsave;
}
Code:
public string SaveSkills()
{
int a = 0;
string s_skill = "";
int[] ska = new int[3];
string sk1 = "";
string sk2 = "";
string sk3 = "";
foreach (DictionaryEntry DE in m_Skills)
{
//Console.WriteLine(m_Skills[DE].ToString());
ska[0] = Convert.ToInt32(((CO_Full_Server.Instances.NewSkill)(DE.Value))._SkillID); sk1 = ska[0].ToString("X"); sk1 = sk1.PadLeft(4, '0');
ska[1] = Convert.ToInt32(((CO_Full_Server.Instances.NewSkill)(DE.Value))._SkillLVL); sk2 = ska[1].ToString("X"); sk2 = sk2.PadLeft(1, '0');
ska[2] = Convert.ToInt32(((CO_Full_Server.Instances.NewSkill)(DE.Value))._SkillEXP); sk3 = ska[2].ToString("X"); sk3 = sk3.PadLeft(5, '0');
a++;
s_skill += sk1 + sk2 + sk3;
if (a < m_Skills.Keys.Count)
s_skill += "~";
}
if (s_skill == "")
s_skill = "0";
s_skill = "'" + s_skill + "'";
return s_skill;
}
Code:
public string SaveQuests()
{
int a = 0;
string q_qst = "";
int[] qst1 = new int[2];
string[] qst = new string[2];
foreach (DictionaryEntry DE in m_Quests)
{
//Console.WriteLine("Hi",DE);
qst1[0] = Convert.ToInt32(DE.Key);
qst1[1] = Convert.ToInt32(DE.Value);
a++;
q_qst += qst1[0] + "," + qst1[1];
if (a < m_Quests.Keys.Count)
q_qst += "~";
}
if (q_qst == "")
q_qst = "0";
q_qst = "'" + q_qst + "'";
return q_qst;
}

