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)
|
public void PrepareClassChange(byte classId)
|
||||||
{
|
{
|
||||||
//If new class, init abilties and level
|
//If new class, init abilties and level
|
||||||
|
if (charaWork.battleSave.skillLevel[classId - 1] <= 0)
|
||||||
|
UpdateClassLevel(classId, 1);
|
||||||
|
|
||||||
SendCharaExpInfo();
|
SendCharaExpInfo();
|
||||||
}
|
}
|
||||||
@ -1038,6 +1040,16 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
Database.SavePlayerCurrentClass(this);
|
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)
|
public void GraphicChange(int slot, InventoryItem invItem)
|
||||||
{
|
{
|
||||||
if (invItem == null)
|
if (invItem == null)
|
||||||
|
Loading…
Reference in New Issue
Block a user