mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
GM tickets can now be in an open/closed state. Added some helper functions for currancy, and added functions to allow changing chocobo appearance.
This commit is contained in:
parent
685fe7dd5a
commit
316e326d71
@ -829,7 +829,7 @@ namespace FFXIVClassic_Map_Server
|
|||||||
{
|
{
|
||||||
ushort equipSlot = reader.GetUInt16(0);
|
ushort equipSlot = reader.GetUInt16(0);
|
||||||
ulong uniqueItemId = reader.GetUInt16(1);
|
ulong uniqueItemId = reader.GetUInt16(1);
|
||||||
InventoryItem item = player.GetInventory(Inventory.NORMAL).GetItemById(uniqueItemId);
|
InventoryItem item = player.GetInventory(Inventory.NORMAL).GetItemByUniqueId(uniqueItemId);
|
||||||
equipment[equipSlot] = item;
|
equipment[equipSlot] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1247,10 +1247,11 @@ namespace FFXIVClassic_Map_Server
|
|||||||
return cheevosPacket.BuildPacket(player.actorId);
|
return cheevosPacket.BuildPacket(player.actorId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SaveSupportTicket(GMSupportTicketPacket gmTicket)
|
public static bool SaveSupportTicket(GMSupportTicketPacket gmTicket, string playerName)
|
||||||
{
|
{
|
||||||
string query;
|
string query;
|
||||||
MySqlCommand cmd;
|
MySqlCommand cmd;
|
||||||
|
bool wasError = 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)))
|
||||||
{
|
{
|
||||||
@ -1260,11 +1261,12 @@ namespace FFXIVClassic_Map_Server
|
|||||||
|
|
||||||
query = @"
|
query = @"
|
||||||
INSERT INTO supportdesk_tickets
|
INSERT INTO supportdesk_tickets
|
||||||
(title, body, langCode)
|
(name, title, body, langCode)
|
||||||
VALUES
|
VALUES
|
||||||
(@title, @body, @langCode)";
|
(@name, @title, @body, @langCode)";
|
||||||
|
|
||||||
cmd = new MySqlCommand(query, conn);
|
cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@name", playerName);
|
||||||
cmd.Parameters.AddWithValue("@title", gmTicket.ticketTitle);
|
cmd.Parameters.AddWithValue("@title", gmTicket.ticketTitle);
|
||||||
cmd.Parameters.AddWithValue("@body", gmTicket.ticketBody);
|
cmd.Parameters.AddWithValue("@body", gmTicket.ticketBody);
|
||||||
cmd.Parameters.AddWithValue("@langCode", gmTicket.langCode);
|
cmd.Parameters.AddWithValue("@langCode", gmTicket.langCode);
|
||||||
@ -1272,6 +1274,81 @@ namespace FFXIVClassic_Map_Server
|
|||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
}
|
}
|
||||||
catch (MySqlException e)
|
catch (MySqlException e)
|
||||||
|
{
|
||||||
|
Program.Log.Error(e.ToString());
|
||||||
|
wasError = true;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return wasError;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool isTicketOpen(string playerName)
|
||||||
|
{
|
||||||
|
bool isOpen = 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)))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
string query = @"
|
||||||
|
SELECT
|
||||||
|
isOpen
|
||||||
|
FROM supportdesk_tickets
|
||||||
|
WHERE name = @name
|
||||||
|
";
|
||||||
|
|
||||||
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
|
|
||||||
|
cmd.Parameters.AddWithValue("@name", playerName);
|
||||||
|
|
||||||
|
using (MySqlDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
isOpen = reader.GetBoolean(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (MySqlException e)
|
||||||
|
{
|
||||||
|
Program.Log.Error(e.ToString());
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return isOpen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void closeTicket(string playerName)
|
||||||
|
{
|
||||||
|
bool isOpen = 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)))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
conn.Open();
|
||||||
|
|
||||||
|
string query = @"
|
||||||
|
UPDATE
|
||||||
|
supportdesk_tickets
|
||||||
|
SET isOpen = 0
|
||||||
|
WHERE name = @name
|
||||||
|
";
|
||||||
|
|
||||||
|
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@name", playerName);
|
||||||
|
cmd.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
catch (MySqlException e)
|
||||||
{
|
{
|
||||||
Program.Log.Error(e.ToString());
|
Program.Log.Error(e.ToString());
|
||||||
}
|
}
|
||||||
@ -1442,5 +1519,41 @@ namespace FFXIVClassic_Map_Server
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void ChangePlayerChocoboAppearance(Player player, byte appearanceId)
|
||||||
|
{
|
||||||
|
string query;
|
||||||
|
MySqlCommand cmd;
|
||||||
|
|
||||||
|
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 = @"
|
||||||
|
UPDATE characters_chocobo
|
||||||
|
SET
|
||||||
|
chocoboAppearance=@chocoboAppearance
|
||||||
|
WHERE
|
||||||
|
characterId = @characterId";
|
||||||
|
|
||||||
|
cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@characterId", player.actorId);
|
||||||
|
cmd.Parameters.AddWithValue("@chocoboAppearance", appearanceId);
|
||||||
|
|
||||||
|
cmd.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
catch (MySqlException e)
|
||||||
|
{
|
||||||
|
Program.Log.Error(e.ToString());
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
conn.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -388,7 +388,7 @@ namespace FFXIVClassic_Map_Server
|
|||||||
break;
|
break;
|
||||||
//Request if GM ticket exists
|
//Request if GM ticket exists
|
||||||
case 0x01D3:
|
case 0x01D3:
|
||||||
client.QueuePacket(BasePacket.CreatePacket(StartGMTicketPacket.BuildPacket(player.actorID, false), true, false));
|
client.QueuePacket(BasePacket.CreatePacket(StartGMTicketPacket.BuildPacket(player.actorID, Database.isTicketOpen(player.GetActor().customDisplayName)), true, false));
|
||||||
break;
|
break;
|
||||||
//Request for GM response message
|
//Request for GM response message
|
||||||
case 0x01D4:
|
case 0x01D4:
|
||||||
@ -398,11 +398,16 @@ namespace FFXIVClassic_Map_Server
|
|||||||
case 0x01D5:
|
case 0x01D5:
|
||||||
GMSupportTicketPacket gmTicket = new GMSupportTicketPacket(subpacket.data);
|
GMSupportTicketPacket gmTicket = new GMSupportTicketPacket(subpacket.data);
|
||||||
Program.Log.Info("Got GM Ticket: \n" + gmTicket.ticketTitle + "\n" + gmTicket.ticketBody);
|
Program.Log.Info("Got GM Ticket: \n" + gmTicket.ticketTitle + "\n" + gmTicket.ticketBody);
|
||||||
Database.SaveSupportTicket(gmTicket);
|
bool wasError = Database.SaveSupportTicket(gmTicket, player.GetActor().customDisplayName);
|
||||||
client.QueuePacket(BasePacket.CreatePacket(GMTicketSentResponsePacket.BuildPacket(player.actorID, true), true, false));
|
client.QueuePacket(BasePacket.CreatePacket(GMTicketSentResponsePacket.BuildPacket(player.actorID, !wasError), true, false));
|
||||||
|
|
||||||
|
if (!wasError)
|
||||||
|
client.QueuePacket(BasePacket.CreatePacket(StartGMTicketPacket.BuildPacket(player.actorID, true), true, false));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
//Request to end ticket
|
//Request to end ticket
|
||||||
case 0x01D6:
|
case 0x01D6:
|
||||||
|
Database.closeTicket(player.GetActor().customDisplayName);
|
||||||
client.QueuePacket(BasePacket.CreatePacket(EndGMTicketPacket.BuildPacket(player.actorID), true, false));
|
client.QueuePacket(BasePacket.CreatePacket(EndGMTicketPacket.BuildPacket(player.actorID), true, false));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -46,11 +46,21 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InventoryItem GetItemById(ulong itemId)
|
public InventoryItem GetItemByUniqueId(ulong uniqueItemId)
|
||||||
{
|
{
|
||||||
foreach (InventoryItem item in list)
|
foreach (InventoryItem item in list)
|
||||||
{
|
{
|
||||||
if (item.uniqueId == itemId)
|
if (item.uniqueId == uniqueItemId)
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public InventoryItem GetItemByCatelogId(ulong catelogId)
|
||||||
|
{
|
||||||
|
foreach (InventoryItem item in list)
|
||||||
|
{
|
||||||
|
if (item.itemId == catelogId)
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -959,6 +959,14 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GetCurrentGil()
|
||||||
|
{
|
||||||
|
if (GetInventory(Inventory.CURRENCY).HasItem(1000001))
|
||||||
|
return GetInventory(Inventory.CURRENCY).GetItemByCatelogId(1000001).quantity;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
public Actor GetActorInInstance(uint actorId)
|
public Actor GetActorInInstance(uint actorId)
|
||||||
{
|
{
|
||||||
foreach (Actor a in playerSession.actorInstanceList)
|
foreach (Actor a in playerSession.actorInstanceList)
|
||||||
@ -1270,5 +1278,11 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||||||
chocoboAppearance = appearanceId;
|
chocoboAppearance = appearanceId;
|
||||||
chocoboName = nameResponse;
|
chocoboName = nameResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeChocoboAppearance(byte appearanceId)
|
||||||
|
{
|
||||||
|
Database.ChangePlayerChocoboAppearance(this, appearanceId);
|
||||||
|
chocoboAppearance = appearanceId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user