Sapphire
Sapphire copied to clipboard
Moogle Post/Mail Implementation
Putting mail implementation details here so it's not lost in conversation
database structure
CREATE TABLE `mooglemail` (
`letter_id` int(11) NOT NULL DEFAULT '0',
`mail_body` varchar(200) COLLATE latin1_general_ci NOT NULL,
`mail_author` varchar(30) COLLATE latin1_general_ci NOT NULL,
`gil` int(11) NULL DEFAULT '0',
`attachment_0` int(11) NULL DEFAULT '0',
`attachment_1` int(11) NULL DEFAULT '0',
`attachment_2` int(11) NULL DEFAULT '0',
`attachment_3` int(11) NULL DEFAULT '0',
`attachment_4` int(11) NULL DEFAULT '0',
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`letter_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
CREATE TABLE `mooglemailattachment` (
`attachment_id` int(11) NOT NULL AUTO_INCREMENT,
`item_id` int(11) NOT NULL,
`quantity` int(11) NOT NULL,
`catalog_id` int(11) NOT NULL,
`UPDATE_DATE` DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`attachment_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
opcodes
CD = MailDeleteRequest
CE = SendMoogleMailLetter
DE = ReqMoogleMailList
DF = ReqMoogleMailLetter
D1 = MailRequestRewardDelivery
E0 = MailDeliveredNotification
Structures
MailDeleteRequest
todo
SendMoogleMailLetter
struct _mail {
uint unknown_00[10];
struct _item {
uint itemId;
uint quantity;
uint catalogId;
} item[5];
uint unknown_64;
uint gil;
uint unknown_6C;
char message[200];
} mail;
ReqMoogleMailList
todo
ReqMoogleMailLetter
todo
MailRequestRewardDelivery
todo
MailDeliveredNotification
struct _mail_notification {
byte unknown_00[36];
short unreadCount;
short flags; // I think...
} notification;
Just wanted to point out that opcodes listed here no longer apply.
Some updated opcodes for this seem to be
F9 = MailDeleteRequest
FA = ReqMoogleMailList
FB = ReqMoogleMailLetter