mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Fixed "getServer" bug in DB class. Cleaned up chara creator function. Fixed bug in error packet.
This commit is contained in:
parent
754f14862a
commit
f566c14ea0
@ -41,7 +41,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool reserveCharacter(uint userId, uint slot, uint serverId, String name)
|
public static bool reserveCharacter(uint userId, uint slot, uint serverId, String name, out uint pid, out uint cid)
|
||||||
{
|
{
|
||||||
bool alreadyExists = false;
|
bool alreadyExists = false;
|
||||||
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)))
|
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)))
|
||||||
@ -57,8 +57,10 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
using (MySqlDataReader Reader = cmd.ExecuteReader())
|
using (MySqlDataReader Reader = cmd.ExecuteReader())
|
||||||
{
|
{
|
||||||
if (Reader.HasRows)
|
if (Reader.HasRows)
|
||||||
|
{
|
||||||
alreadyExists = true;
|
alreadyExists = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Reserve
|
//Reserve
|
||||||
if (!alreadyExists)
|
if (!alreadyExists)
|
||||||
@ -72,12 +74,20 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
cmd2.Parameters.AddWithValue("@serverId", serverId);
|
cmd2.Parameters.AddWithValue("@serverId", serverId);
|
||||||
cmd2.Parameters.AddWithValue("@name", name);
|
cmd2.Parameters.AddWithValue("@name", name);
|
||||||
cmd2.ExecuteNonQuery();
|
cmd2.ExecuteNonQuery();
|
||||||
}
|
|
||||||
|
|
||||||
|
pid = 1;
|
||||||
|
cid = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pid = 0;
|
||||||
|
cid = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
{
|
{
|
||||||
|
pid = 0;
|
||||||
|
cid = 0;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -181,7 +191,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
conn.Open();
|
conn.Open();
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
cmd.Connection = conn;
|
cmd.Connection = conn;
|
||||||
cmd.CommandText = "SELECT * FROM ffxiv_servers WHERE isActive=true";
|
cmd.CommandText = "SELECT * FROM servers WHERE isActive=true";
|
||||||
cmd.Prepare();
|
cmd.Prepare();
|
||||||
MySqlDataReader Reader = cmd.ExecuteReader();
|
MySqlDataReader Reader = cmd.ExecuteReader();
|
||||||
|
|
||||||
@ -236,7 +246,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
conn.Open();
|
conn.Open();
|
||||||
MySqlCommand cmd = new MySqlCommand();
|
MySqlCommand cmd = new MySqlCommand();
|
||||||
cmd.Connection = conn;
|
cmd.Connection = conn;
|
||||||
cmd.CommandText = "SELECT * FROM ffxiv_servers WHERE id=%serverId";
|
cmd.CommandText = "SELECT * FROM servers WHERE id='%serverId'";
|
||||||
cmd.Prepare();
|
cmd.Prepare();
|
||||||
cmd.Parameters.AddWithValue("@serverId", serverId);
|
cmd.Parameters.AddWithValue("@serverId", serverId);
|
||||||
|
|
||||||
@ -271,11 +281,10 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
conn.Close();
|
conn.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
return world;
|
return world;
|
||||||
|
@ -63,8 +63,7 @@
|
|||||||
<Compile Include="dataobjects\World.cs" />
|
<Compile Include="dataobjects\World.cs" />
|
||||||
<Compile Include="PacketProcessor.cs" />
|
<Compile Include="PacketProcessor.cs" />
|
||||||
<Compile Include="packets\BasePacket.cs" />
|
<Compile Include="packets\BasePacket.cs" />
|
||||||
<Compile Include="packets\MakeCharaPacket.cs" />
|
<Compile Include="packets\CharaCreatorPacket.cs" />
|
||||||
<Compile Include="packets\ReserveCharaPacket.cs" />
|
|
||||||
<Compile Include="packets\RetainerListPacket.cs" />
|
<Compile Include="packets\RetainerListPacket.cs" />
|
||||||
<Compile Include="packets\ErrorPacket.cs" />
|
<Compile Include="packets\ErrorPacket.cs" />
|
||||||
<Compile Include="packets\HardCoded_Packets.cs" />
|
<Compile Include="packets\HardCoded_Packets.cs" />
|
||||||
|
@ -198,17 +198,37 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
var name = charaReq.characterName;
|
var name = charaReq.characterName;
|
||||||
var worldId = charaReq.worldId;
|
var worldId = charaReq.worldId;
|
||||||
|
|
||||||
|
uint pid = 0, cid = 0;
|
||||||
|
|
||||||
|
World world = Database.getServer(worldId);
|
||||||
|
string worldName = null;
|
||||||
|
|
||||||
|
if (world != null)
|
||||||
|
worldName = world.name;
|
||||||
|
|
||||||
|
if (worldName == null)
|
||||||
|
{
|
||||||
|
ErrorPacket errorPacket = new ErrorPacket(charaReq.sequence, 0, 0, 13001, "World does not exist or is inactive.");
|
||||||
|
SubPacket subpacket = errorPacket.buildPacket();
|
||||||
|
BasePacket basePacket = BasePacket.createPacket(subpacket, true, false);
|
||||||
|
BasePacket.encryptPacket(client.blowfish, basePacket);
|
||||||
|
client.queuePacket(basePacket);
|
||||||
|
|
||||||
|
Console.WriteLine("User {0} => Error; invalid server id: \"{1}\"", client.currentUserId, worldId);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case 0x01://Reserve
|
case 0x01://Reserve
|
||||||
var alreadyTaken = Database.reserveCharacter(client.currentUserId, slot, worldId, name);
|
|
||||||
|
var alreadyTaken = Database.reserveCharacter(client.currentUserId, slot, worldId, name, out pid, out cid);
|
||||||
|
|
||||||
if (alreadyTaken)
|
if (alreadyTaken)
|
||||||
{
|
{
|
||||||
ErrorPacket errorPacket = new ErrorPacket(charaReq.sequence, 13005, 0, 0, "");
|
ErrorPacket errorPacket = new ErrorPacket(charaReq.sequence, 0, 0, 13005, "");
|
||||||
SubPacket subpacket = errorPacket.buildPacket();
|
SubPacket subpacket = errorPacket.buildPacket();
|
||||||
BasePacket basePacket = BasePacket.createPacket(subpacket, true, false);
|
BasePacket basePacket = BasePacket.createPacket(subpacket, true, false);
|
||||||
basePacket.debugPrintPacket();
|
|
||||||
BasePacket.encryptPacket(client.blowfish, basePacket);
|
BasePacket.encryptPacket(client.blowfish, basePacket);
|
||||||
client.queuePacket(basePacket);
|
client.queuePacket(basePacket);
|
||||||
|
|
||||||
@ -216,57 +236,36 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Confirm Reserve
|
Console.WriteLine("User {0} => Character reserved \"{1}\"", client.currentUserId, charaReq.characterName);
|
||||||
CharaCreatorPacket confirmReserve = new CharaCreatorPacket(charaReq.sequence, CharaCreatorPacket.RESERVE, 1, 1, 1, name, "World Name");
|
|
||||||
BasePacket confirmReservePacket = BasePacket.createPacket(confirmReserve.buildPacket(), true, false);
|
|
||||||
BasePacket.encryptPacket(client.blowfish, confirmReservePacket);
|
|
||||||
client.queuePacket(confirmReservePacket);
|
|
||||||
|
|
||||||
Console.WriteLine("User {0} => Reserving character \"{1}\"", client.currentUserId, charaReq.characterName);
|
|
||||||
break;
|
break;
|
||||||
case 0x02://Make
|
case 0x02://Make
|
||||||
Character character = Character.EncodedToCharacter(charaReq.characterInfoEncoded);
|
Character character = Character.EncodedToCharacter(charaReq.characterInfoEncoded);
|
||||||
|
|
||||||
Database.makeCharacter(client.currentUserId, name, character);
|
Database.makeCharacter(client.currentUserId, name, character);
|
||||||
|
|
||||||
//Confirm
|
Console.WriteLine("User {0} => Character created \"{1}\"", client.currentUserId, charaReq.characterName);
|
||||||
CharaCreatorPacket makeChara = new CharaCreatorPacket(charaReq.sequence, CharaCreatorPacket.MAKE, 1, 1, 1, name, "World Name");
|
|
||||||
BasePacket confirmMakePacket = BasePacket.createPacket(makeChara.buildPacket(), true, false);
|
|
||||||
BasePacket.encryptPacket(client.blowfish, confirmMakePacket);
|
|
||||||
client.queuePacket(confirmMakePacket);
|
|
||||||
|
|
||||||
Console.WriteLine("User {0} => Character created!", client.currentUserId);
|
|
||||||
break;
|
break;
|
||||||
case 0x03://Rename
|
case 0x03://Rename
|
||||||
|
|
||||||
//Confirm
|
Console.WriteLine("User {0} => Character renamed \"{1}\"", client.currentUserId, charaReq.characterName);
|
||||||
CharaCreatorPacket renameChara = new CharaCreatorPacket(charaReq.sequence, CharaCreatorPacket.RENAME, 1, 1, 1, name, "World Name");
|
|
||||||
BasePacket confirmRenamePacket = BasePacket.createPacket(renameChara.buildPacket(), true, false);
|
|
||||||
BasePacket.encryptPacket(client.blowfish, confirmRenamePacket);
|
|
||||||
client.queuePacket(confirmRenamePacket);
|
|
||||||
|
|
||||||
Console.WriteLine("User {0} => Character renamed to \"{1}\"", client.currentUserId, charaReq.characterName);
|
|
||||||
break;
|
break;
|
||||||
case 0x04://Delete
|
case 0x04://Delete
|
||||||
Database.deleteCharacter(charaReq.characterId, charaReq.characterName);
|
Database.deleteCharacter(charaReq.characterId, charaReq.characterName);
|
||||||
|
|
||||||
//Confirm
|
|
||||||
CharaCreatorPacket deleteChara = new CharaCreatorPacket(charaReq.sequence, CharaCreatorPacket.MAKE, 1, 1, 1, name, "World Name");
|
|
||||||
BasePacket confirmDeletePacket = BasePacket.createPacket(deleteChara.buildPacket(), true, false);
|
|
||||||
BasePacket.encryptPacket(client.blowfish, confirmDeletePacket);
|
|
||||||
client.queuePacket(confirmDeletePacket);
|
|
||||||
|
|
||||||
Console.WriteLine("User {0} => Character deleted \"{1}\"", client.currentUserId, charaReq.characterName);
|
Console.WriteLine("User {0} => Character deleted \"{1}\"", client.currentUserId, charaReq.characterName);
|
||||||
break;
|
break;
|
||||||
case 0x06://Rename Retainer
|
case 0x06://Rename Retainer
|
||||||
|
|
||||||
//Confirm
|
Console.WriteLine("User {0} => Retainer renamed \"{1}\"", client.currentUserId, charaReq.characterName);
|
||||||
CharaCreatorPacket renameRetainerChara = new CharaCreatorPacket(charaReq.sequence, CharaCreatorPacket.RENAME_RETAINER, 1, 1, 1, name, "World Name");
|
|
||||||
BasePacket confirmRenameRetainerPacket = BasePacket.createPacket(renameRetainerChara.buildPacket(), true, false);
|
|
||||||
BasePacket.encryptPacket(client.blowfish, confirmRenameRetainerPacket);
|
|
||||||
client.queuePacket(confirmRenameRetainerPacket);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CharaCreatorPacket charaCreator = new CharaCreatorPacket(charaReq.sequence, code, pid, cid, 1, name, worldName);
|
||||||
|
BasePacket charaCreatorPacket = BasePacket.createPacket(charaCreator.buildPacket(), true, false);
|
||||||
|
charaCreatorPacket.debugPrintPacket();
|
||||||
|
BasePacket.encryptPacket(client.blowfish, charaCreatorPacket);
|
||||||
|
client.queuePacket(charaCreatorPacket);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendWorldList(ClientConnection client, SubPacket packet)
|
private void sendWorldList(ClientConnection client, SubPacket packet)
|
||||||
@ -281,7 +280,7 @@ namespace FFXIVClassic_Lobby_Server
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendUnknownList(ClientConnection client, SubPacket packet)
|
private void sendImportList(ClientConnection client, SubPacket packet)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ namespace FFXIVClassic_Lobby_Server.packets
|
|||||||
binWriter.Write(errorCode);
|
binWriter.Write(errorCode);
|
||||||
binWriter.Write(statusCode);
|
binWriter.Write(statusCode);
|
||||||
binWriter.Write(textId);
|
binWriter.Write(textId);
|
||||||
binWriter.Write(message);
|
binWriter.Write(Encoding.ASCII.GetBytes(message));
|
||||||
|
|
||||||
byte[] data = memStream.GetBuffer();
|
byte[] data = memStream.GetBuffer();
|
||||||
binWriter.Dispose();
|
binWriter.Dispose();
|
||||||
|
Loading…
Reference in New Issue
Block a user