mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Fixed the crash when class change is to a level 0 class. Now autosets to level 1.
This commit is contained in:
parent
0b13b590a0
commit
880b1f3066
@ -2352,5 +2352,85 @@ namespace FFXIVClassic_Map_Server
|
||||
}
|
||||
}
|
||||
|
||||
public static void PlayerCharacterUpdateClassLevel(Player player, byte classId, short level)
|
||||
{
|
||||
string query;
|
||||
MySqlCommand cmd;
|
||||
|
||||
string[] classNames = {
|
||||
"",
|
||||
"",
|
||||
"pug",
|
||||
"gla",
|
||||
"mrd",
|
||||
"",
|
||||
"",
|
||||
"arc",
|
||||
"lnc",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"thm",
|
||||
"cnj",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"crp",
|
||||
"bsm",
|
||||
"arm",
|
||||
"gsm",
|
||||
"ltw",
|
||||
"wvr",
|
||||
"alc",
|
||||
"cul",
|
||||
"",
|
||||
"",
|
||||
"min",
|
||||
"btn",
|
||||
"fsh"
|
||||
};
|
||||
|
||||
using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD)))
|
||||
{
|
||||
try
|
||||
{
|
||||
conn.Open();
|
||||
|
||||
query = String.Format(@"
|
||||
UPDATE characters_class_levels
|
||||
SET
|
||||
{0}=@level
|
||||
WHERE
|
||||
characterId = @characterId", classNames[classId]);
|
||||
|
||||
cmd = new MySqlCommand(query, conn);
|
||||
cmd.Parameters.AddWithValue("@level", level);
|
||||
cmd.Parameters.AddWithValue("@characterId", player.actorId);
|
||||
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
catch (MySqlException e)
|
||||
{
|
||||
Program.Log.Error(e.ToString());
|
||||
}
|
||||
finally
|
||||
{
|
||||
conn.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -990,6 +990,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
public void PrepareClassChange(byte classId)
|
||||
{
|
||||
//If new class, init abilties and level
|
||||
if (charaWork.battleSave.skillLevel[classId - 1] <= 0)
|
||||
UpdateClassLevel(classId, 1);
|
||||
|
||||
SendCharaExpInfo();
|
||||
}
|
||||
@ -1038,6 +1040,16 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
Database.SavePlayerCurrentClass(this);
|
||||
}
|
||||
|
||||
public void UpdateClassLevel(byte classId, short level)
|
||||
{
|
||||
Database.PlayerCharacterUpdateClassLevel(this, classId, level);
|
||||
charaWork.battleSave.skillLevel[classId - 1] = level;
|
||||
ActorPropertyPacketUtil propertyBuilder = new ActorPropertyPacketUtil("charaWork/exp", this);
|
||||
propertyBuilder.AddProperty(String.Format("charaWork.battleSave.skillLevel[{0}]", classId-1));
|
||||
List<SubPacket> packets = propertyBuilder.Done();
|
||||
QueuePackets(packets);
|
||||
}
|
||||
|
||||
public void GraphicChange(int slot, InventoryItem invItem)
|
||||
{
|
||||
if (invItem == null)
|
||||
|
Loading…
Reference in New Issue
Block a user