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);
|
||||
ulong uniqueItemId = reader.GetUInt16(1);
|
||||
InventoryItem item = player.GetInventory(Inventory.NORMAL).GetItemById(uniqueItemId);
|
||||
InventoryItem item = player.GetInventory(Inventory.NORMAL).GetItemByUniqueId(uniqueItemId);
|
||||
equipment[equipSlot] = item;
|
||||
}
|
||||
}
|
||||
@ -1247,10 +1247,11 @@ namespace FFXIVClassic_Map_Server
|
||||
return cheevosPacket.BuildPacket(player.actorId);
|
||||
}
|
||||
|
||||
public static void SaveSupportTicket(GMSupportTicketPacket gmTicket)
|
||||
public static bool SaveSupportTicket(GMSupportTicketPacket gmTicket, string playerName)
|
||||
{
|
||||
string query;
|
||||
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)))
|
||||
{
|
||||
@ -1260,11 +1261,12 @@ namespace FFXIVClassic_Map_Server
|
||||
|
||||
query = @"
|
||||
INSERT INTO supportdesk_tickets
|
||||
(title, body, langCode)
|
||||
(name, title, body, langCode)
|
||||
VALUES
|
||||
(@title, @body, @langCode)";
|
||||
(@name, @title, @body, @langCode)";
|
||||
|
||||
cmd = new MySqlCommand(query, conn);
|
||||
cmd.Parameters.AddWithValue("@name", playerName);
|
||||
cmd.Parameters.AddWithValue("@title", gmTicket.ticketTitle);
|
||||
cmd.Parameters.AddWithValue("@body", gmTicket.ticketBody);
|
||||
cmd.Parameters.AddWithValue("@langCode", gmTicket.langCode);
|
||||
@ -1272,6 +1274,81 @@ namespace FFXIVClassic_Map_Server
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
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());
|
||||
}
|
||||
@ -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;
|
||||
//Request if GM ticket exists
|
||||
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;
|
||||
//Request for GM response message
|
||||
case 0x01D4:
|
||||
@ -398,11 +398,16 @@ namespace FFXIVClassic_Map_Server
|
||||
case 0x01D5:
|
||||
GMSupportTicketPacket gmTicket = new GMSupportTicketPacket(subpacket.data);
|
||||
Program.Log.Info("Got GM Ticket: \n" + gmTicket.ticketTitle + "\n" + gmTicket.ticketBody);
|
||||
Database.SaveSupportTicket(gmTicket);
|
||||
client.QueuePacket(BasePacket.CreatePacket(GMTicketSentResponsePacket.BuildPacket(player.actorID, true), true, false));
|
||||
bool wasError = Database.SaveSupportTicket(gmTicket, player.GetActor().customDisplayName);
|
||||
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;
|
||||
//Request to end ticket
|
||||
case 0x01D6:
|
||||
Database.closeTicket(player.GetActor().customDisplayName);
|
||||
client.QueuePacket(BasePacket.CreatePacket(EndGMTicketPacket.BuildPacket(player.actorID), true, false));
|
||||
break;
|
||||
default:
|
||||
|
@ -46,14 +46,24 @@ namespace FFXIVClassic_Map_Server.actors.chara.player
|
||||
return null;
|
||||
}
|
||||
|
||||
public InventoryItem GetItemById(ulong itemId)
|
||||
public InventoryItem GetItemByUniqueId(ulong uniqueItemId)
|
||||
{
|
||||
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 null;
|
||||
}
|
||||
|
||||
public void RefreshItem(InventoryItem item)
|
||||
|
@ -959,6 +959,14 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
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)
|
||||
{
|
||||
foreach (Actor a in playerSession.actorInstanceList)
|
||||
@ -1270,5 +1278,11 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
chocoboAppearance = appearanceId;
|
||||
chocoboName = nameResponse;
|
||||
}
|
||||
|
||||
public void ChangeChocoboAppearance(byte appearanceId)
|
||||
{
|
||||
Database.ChangePlayerChocoboAppearance(this, appearanceId);
|
||||
chocoboAppearance = appearanceId;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user