Initial support for enchantgrade (#5445)
Thanks to @LunarSHINING, @idk-whoami and @attackjom
This commit is contained in:
parent
12cfe31bf1
commit
d01b718cc0
@ -86,6 +86,7 @@ CREATE TABLE IF NOT EXISTS `auction` (
|
||||
`option_val4` smallint(5) NOT NULL default '0',
|
||||
`option_parm4` tinyint(3) NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`auction_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
@ -185,6 +186,7 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` (
|
||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `char_id` (`char_id`)
|
||||
) ENGINE=MyISAM;
|
||||
@ -576,6 +578,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage` (
|
||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `guild_id` (`guild_id`)
|
||||
) ENGINE=MyISAM;
|
||||
@ -617,6 +620,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage_log` (
|
||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`bound` tinyint(1) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
INDEX (`guild_id`)
|
||||
) ENGINE=MyISAM AUTO_INCREMENT=1;
|
||||
@ -715,6 +719,7 @@ CREATE TABLE IF NOT EXISTS `inventory` (
|
||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`equip_switch` int(11) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `char_id` (`char_id`)
|
||||
) ENGINE=MyISAM;
|
||||
@ -818,6 +823,7 @@ CREATE TABLE IF NOT EXISTS `mail_attachments` (
|
||||
`option_parm4` tinyint(3) NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||
`bound` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`,`index`)
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
@ -1038,6 +1044,7 @@ CREATE TABLE IF NOT EXISTS `storage` (
|
||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `account_id` (`account_id`)
|
||||
) ENGINE=MyISAM;
|
||||
|
20
sql-files/upgrades/upgrade_20201105.sql
Normal file
20
sql-files/upgrades/upgrade_20201105.sql
Normal file
@ -0,0 +1,20 @@
|
||||
ALTER TABLE `auction`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `cart_inventory`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `guild_storage`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `guild_storage_log`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `inventory`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `mail_attachments`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
||||
|
||||
ALTER TABLE `storage`
|
||||
ADD COLUMN `enchantgrade` tinyint unsigned NOT NULL default '0';
|
@ -560,7 +560,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
// it significantly reduces cpu load on the database server.
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
|
||||
StringBuf_AppendStr(&buf, "SELECT `id`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`, `enchantgrade`");
|
||||
if (tableswitch == TABLE_INVENTORY) {
|
||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||
offset = 2;
|
||||
@ -586,7 +586,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
}
|
||||
|
||||
SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 1, SQLDT_UINT, &item.nameid, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 1, SQLDT_UINT, &item.nameid, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL);
|
||||
@ -595,16 +595,17 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
SqlStmt_BindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 8, SQLDT_UINT, &item.bound, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 9, SQLDT_UINT64, &item.unique_id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt,10, SQLDT_INT8, &item.enchantgrade,0, NULL, NULL);
|
||||
if (tableswitch == TABLE_INVENTORY){
|
||||
SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||
}
|
||||
for( i = 0; i < MAX_SLOTS; ++i )
|
||||
SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
|
||||
for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) {
|
||||
SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 13+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
|
||||
}
|
||||
// bit array indicating which inventory items have already been matched
|
||||
flag = (bool*) aCalloc(max, sizeof(bool));
|
||||
@ -639,14 +640,15 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
items[i].attribute == item.attribute &&
|
||||
items[i].expire_time == item.expire_time &&
|
||||
items[i].bound == item.bound &&
|
||||
items[i].enchantgrade == item.enchantgrade &&
|
||||
(tableswitch != TABLE_INVENTORY || (items[i].favorite == item.favorite && items[i].equipSwitch == item.equipSwitch)) )
|
||||
; //Do nothing.
|
||||
else
|
||||
{
|
||||
// update all fields.
|
||||
StringBuf_Clear(&buf);
|
||||
StringBuf_Printf(&buf, "UPDATE `%s` SET `amount`='%d', `equip`='%u', `identify`='%d', `refine`='%d',`attribute`='%d', `expire_time`='%u', `bound`='%d', `unique_id`='%" PRIu64 "'",
|
||||
tablename, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id);
|
||||
StringBuf_Printf(&buf, "UPDATE `%s` SET `amount`='%d', `equip`='%u', `identify`='%d', `refine`='%d',`attribute`='%d', `expire_time`='%u', `bound`='%d', `unique_id`='%" PRIu64 "', `enchantgrade`='%d'",
|
||||
tablename, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id, items[i].enchantgrade);
|
||||
if (tableswitch == TABLE_INVENTORY)
|
||||
StringBuf_Printf(&buf, ", `favorite`='%d', `equip_switch`='%u'", items[i].favorite, items[i].equipSwitch);
|
||||
for( j = 0; j < MAX_SLOTS; ++j )
|
||||
@ -681,7 +683,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
SqlStmt_Free(stmt);
|
||||
|
||||
StringBuf_Clear(&buf);
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s`(`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`", tablename, selectoption);
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s`(`%s`, `nameid`, `amount`, `equip`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`, `enchantgrade`", tablename, selectoption);
|
||||
if (tableswitch == TABLE_INVENTORY)
|
||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||
for( j = 0; j < MAX_SLOTS; ++j )
|
||||
@ -706,8 +708,8 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto
|
||||
else
|
||||
found = true;
|
||||
|
||||
StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "'",
|
||||
id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id);
|
||||
StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "', '%d'",
|
||||
id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id, items[i].enchantgrade);
|
||||
if (tableswitch == TABLE_INVENTORY)
|
||||
StringBuf_Printf(&buf, ", '%d', '%u'", items[i].favorite, items[i].equipSwitch);
|
||||
for( j = 0; j < MAX_SLOTS; ++j )
|
||||
@ -787,7 +789,7 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag
|
||||
}
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`");
|
||||
StringBuf_AppendStr(&buf, "SELECT `id`,`nameid`,`amount`,`equip`,`identify`,`refine`,`attribute`,`expire_time`,`bound`,`unique_id`,`enchantgrade`");
|
||||
if (tableswitch == TABLE_INVENTORY) {
|
||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||
offset = 2;
|
||||
@ -821,16 +823,17 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag
|
||||
SqlStmt_BindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 8, SQLDT_CHAR, &item.bound, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 9, SQLDT_ULONGLONG, &item.unique_id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt,10, SQLDT_INT8, &item.enchantgrade, 0, NULL, NULL);
|
||||
if (tableswitch == TABLE_INVENTORY){
|
||||
SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||
}
|
||||
for( i = 0; i < MAX_SLOTS; ++i )
|
||||
SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL);
|
||||
for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) {
|
||||
SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 13+offset+MAX_SLOTS+i*3, SQLDT_CHAR, &item.option[i].param, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
for( i = 0; i < max && SQL_SUCCESS == SqlStmt_NextRow(stmt); ++i )
|
||||
@ -2439,7 +2442,7 @@ bool char_checkdb(void){
|
||||
}
|
||||
//checking mail_attachment_db
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`index`,`nameid`,`amount`,`refine`,`attribute`,`identify`,"
|
||||
"`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `bound`"
|
||||
"`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `bound`, `enchantgrade`"
|
||||
" FROM `%s` LIMIT 1;", schema_config.mail_attachment_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return false;
|
||||
@ -2448,7 +2451,7 @@ bool char_checkdb(void){
|
||||
//checking auction_db
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
|
||||
"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`card0`,`card1`,"
|
||||
"`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id` "
|
||||
"`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`unique_id`, `enchantgrade` "
|
||||
"FROM `%s` LIMIT 1;", schema_config.auction_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return false;
|
||||
@ -2501,14 +2504,14 @@ bool char_checkdb(void){
|
||||
}
|
||||
//checking cart_db
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
|
||||
" FROM `%s` LIMIT 1;", schema_config.cart_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return false;
|
||||
}
|
||||
//checking inventory_db
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
|
||||
",`favorite`,`equip_switch`"
|
||||
" FROM `%s` LIMIT 1;", schema_config.inventory_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
@ -2516,7 +2519,7 @@ bool char_checkdb(void){
|
||||
}
|
||||
//checking guild_storage_db
|
||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`"
|
||||
"`attribute`,`card0`,`card1`,`card2`,`card3`,`option_id0`,`option_val0`,`option_parm0`,`option_id1`,`option_val1`,`option_parm1`,`option_id2`,`option_val2`,`option_parm2`,`option_id3`,`option_val3`,`option_parm3`,`option_id4`,`option_val4`,`option_parm4`,`expire_time`,`bound`,`unique_id`,`enchantgrade`"
|
||||
" FROM `%s` LIMIT 1;", schema_config.guild_storage_db) ){
|
||||
Sql_ShowDebug(sql_handle);
|
||||
return false;
|
||||
|
@ -51,8 +51,8 @@ void auction_save(struct auction_data *auction)
|
||||
return;
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%u', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'",
|
||||
schema_config.auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute);
|
||||
StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%u', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d', `enchantgrade`",
|
||||
schema_config.auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.enchantgrade);
|
||||
for( j = 0; j < MAX_SLOTS; j++ )
|
||||
StringBuf_Printf(&buf, ", `card%d` = '%u'", j, auction->item.card[j]);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; j++) {
|
||||
@ -88,7 +88,7 @@ unsigned int auction_create(struct auction_data *auction)
|
||||
auction->timestamp = time(NULL) + (auction->hours * 3600);
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`", schema_config.auction_db);
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s` (`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`,`enchantgrade`", schema_config.auction_db);
|
||||
for( j = 0; j < MAX_SLOTS; j++ )
|
||||
StringBuf_Printf(&buf, ",`card%d`", j);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -96,8 +96,8 @@ unsigned int auction_create(struct auction_data *auction)
|
||||
StringBuf_Printf(&buf, ", `option_val%d`", j);
|
||||
StringBuf_Printf(&buf, ", `option_parm%d`", j);
|
||||
}
|
||||
StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "'",
|
||||
auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id);
|
||||
StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "','%d'",
|
||||
auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id, auction->item.enchantgrade);
|
||||
for( j = 0; j < MAX_SLOTS; j++ )
|
||||
StringBuf_Printf(&buf, ",'%u'", auction->item.card[j]);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -196,7 +196,7 @@ void inter_auctions_fromsql(void)
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_AppendStr(&buf, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
|
||||
"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`");
|
||||
"`price`,`buynow`,`hours`,`timestamp`,`nameid`,`item_name`,`type`,`refine`,`attribute`,`unique_id`,`enchantgrade`");
|
||||
for( i = 0; i < MAX_SLOTS; i++ )
|
||||
StringBuf_Printf(&buf, ",`card%d`", i);
|
||||
for (i = 0; i < MAX_ITEM_RDM_OPT; ++i) {
|
||||
@ -234,6 +234,7 @@ void inter_auctions_fromsql(void)
|
||||
Sql_GetData(sql_handle,12, &data, NULL); item->refine = atoi(data);
|
||||
Sql_GetData(sql_handle,13, &data, NULL); item->attribute = atoi(data);
|
||||
Sql_GetData(sql_handle,14, &data, NULL); item->unique_id = strtoull(data, NULL, 10);
|
||||
Sql_GetData(sql_handle,15, &data, NULL); item->enchantgrade = atoi(data);
|
||||
|
||||
item->identify = 1;
|
||||
item->amount = 1;
|
||||
@ -241,16 +242,16 @@ void inter_auctions_fromsql(void)
|
||||
|
||||
for( i = 0; i < MAX_SLOTS; i++ )
|
||||
{
|
||||
Sql_GetData(sql_handle, 15 + i, &data, NULL);
|
||||
Sql_GetData(sql_handle, 16 + i, &data, NULL);
|
||||
item->card[i] = strtoul(data, nullptr, 10);
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_ITEM_RDM_OPT; i++) {
|
||||
Sql_GetData(sql_handle, 15 + MAX_SLOTS + i*3, &data, NULL);
|
||||
item->option[i].id = atoi(data);
|
||||
Sql_GetData(sql_handle, 16 + MAX_SLOTS + i*3, &data, NULL);
|
||||
item->option[i].value = atoi(data);
|
||||
item->option[i].id = atoi(data);
|
||||
Sql_GetData(sql_handle, 17 + MAX_SLOTS + i*3, &data, NULL);
|
||||
item->option[i].value = atoi(data);
|
||||
Sql_GetData(sql_handle, 18 + MAX_SLOTS + i*3, &data, NULL);
|
||||
item->option[i].param = atoi(data);
|
||||
}
|
||||
|
||||
|
@ -106,7 +106,7 @@ int mail_savemessage(struct mail_message* msg)
|
||||
SqlStmt_Free(stmt);
|
||||
|
||||
StringBuf_Clear(&buf);
|
||||
StringBuf_Printf(&buf,"INSERT INTO `%s` (`id`, `index`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`, `bound`", schema_config.mail_attachment_db);
|
||||
StringBuf_Printf(&buf,"INSERT INTO `%s` (`id`, `index`, `amount`, `nameid`, `refine`, `attribute`, `identify`, `unique_id`, `bound`, `enchantgrade`", schema_config.mail_attachment_db);
|
||||
for (j = 0; j < MAX_SLOTS; j++)
|
||||
StringBuf_Printf(&buf, ", `card%d`", j);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -127,7 +127,7 @@ int mail_savemessage(struct mail_message* msg)
|
||||
found = true;
|
||||
}
|
||||
|
||||
StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%u', '%d', '%d', '%d', '%" PRIu64 "', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound);
|
||||
StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%u', '%d', '%d', '%d', '%" PRIu64 "', '%d', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound, msg->item[i].enchantgrade);
|
||||
for (j = 0; j < MAX_SLOTS; j++)
|
||||
StringBuf_Printf(&buf, ", '%u'", msg->item[i].card[j]);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -185,7 +185,7 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg)
|
||||
}
|
||||
|
||||
StringBuf_Init(&buf);
|
||||
StringBuf_AppendStr(&buf, "SELECT `amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`,`bound`");
|
||||
StringBuf_AppendStr(&buf, "SELECT `amount`,`nameid`,`refine`,`attribute`,`identify`,`unique_id`,`bound`,`enchantgrade`");
|
||||
for (j = 0; j < MAX_SLOTS; j++)
|
||||
StringBuf_Printf(&buf, ",`card%d`", j);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -215,16 +215,17 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg)
|
||||
Sql_GetData(sql_handle,4, &data, NULL); msg->item[i].identify = atoi(data);
|
||||
Sql_GetData(sql_handle,5, &data, NULL); msg->item[i].unique_id = strtoull(data, NULL, 10);
|
||||
Sql_GetData(sql_handle,6, &data, NULL); msg->item[i].bound = atoi(data);
|
||||
Sql_GetData(sql_handle,7, &data, NULL); msg->item[i].enchantgrade = atoi(data);
|
||||
msg->item[i].expire_time = 0;
|
||||
|
||||
for( j = 0; j < MAX_SLOTS; j++ ){
|
||||
Sql_GetData(sql_handle,7 + j, &data, NULL); msg->item[i].card[j] = strtoul(data, nullptr, 10);
|
||||
Sql_GetData(sql_handle,8 + j, &data, NULL); msg->item[i].card[j] = strtoul(data, nullptr, 10);
|
||||
}
|
||||
|
||||
for( j = 0; j < MAX_ITEM_RDM_OPT; j++ ){
|
||||
Sql_GetData(sql_handle, 7 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].id = atoi(data);
|
||||
Sql_GetData(sql_handle, 8 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].value = atoi(data);
|
||||
Sql_GetData(sql_handle, 9 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].param = atoi(data);
|
||||
Sql_GetData(sql_handle, 8 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].id = atoi(data);
|
||||
Sql_GetData(sql_handle, 9 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].value = atoi(data);
|
||||
Sql_GetData(sql_handle,10 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].param = atoi(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -263,6 +263,7 @@ struct item {
|
||||
char favorite, bound;
|
||||
uint64 unique_id;
|
||||
unsigned int equipSwitch; // location(s) where item is equipped for equip switching (using enum equip_pos for bitmasking)
|
||||
uint8 enchantgrade;
|
||||
};
|
||||
|
||||
//Equip position constants
|
||||
|
@ -568,7 +568,7 @@ bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_st
|
||||
;
|
||||
}
|
||||
|
||||
if( !searchstore_result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore_blankslots, 0) )
|
||||
if( !searchstore_result(s->search_sd, sd->buyer_id, sd->status.account_id, sd->message, it->nameid, it->amount, it->price, buyingstore_blankslots, 0, 0) )
|
||||
{// result set full
|
||||
return false;
|
||||
}
|
||||
|
@ -2727,19 +2727,22 @@ void clif_additem( struct map_session_data *sd, int n, int amount, unsigned char
|
||||
p.type = itemtype( sd->inventory.u.items_inventory[n].nameid );
|
||||
#if PACKETVER >= 20061218
|
||||
p.HireExpireDate = sd->inventory.u.items_inventory[n].expire_time;
|
||||
#endif
|
||||
#if PACKETVER >= 20071002
|
||||
/* why restrict the flag to non-stackable? because this is the only packet allows stackable to,
|
||||
* show the color, and therefore it'd be inconsistent with the rest (aka it'd show yellow, you relog/refresh and boom its gone)
|
||||
*/
|
||||
p.bindOnEquipType = sd->inventory.u.items_inventory[n].bound && !itemdb_isstackable2( sd->inventory_data[n] ) ? 2 : sd->inventory_data[n]->flag.bindOnEquip ? 1 : 0;
|
||||
#endif
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[n] );
|
||||
#endif
|
||||
#if PACKETVER >= 20160921
|
||||
p.favorite = sd->inventory.u.items_inventory[n].favorite;
|
||||
p.look = sd->inventory_data[n]->look;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.enchantgrade = sd->inventory.u.items_inventory[n].enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -2847,6 +2850,10 @@ static void clif_item_equip( short idx, struct EQUIPITEM_INFO *p, struct item *i
|
||||
#if PACKETVER >= 20150226
|
||||
p->option_count = clif_add_random_options( p->option_data, it );
|
||||
#endif
|
||||
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p->enchantgrade = it->enchantgrade;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void clif_item_normal( short idx, struct NORMALITEM_INFO *p, struct item *i, struct item_data *id ){
|
||||
@ -4491,6 +4498,11 @@ void clif_tradeadditem( struct map_session_data* sd, struct map_session_data* ts
|
||||
clif_addcards( &p.slot, &sd->inventory.u.items_inventory[index] );
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[index] );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.location = pc_equippoint_sub( sd, sd->inventory_data[index] );
|
||||
p.viewSprite = sd->inventory_data[index]->look;
|
||||
p.enchantgrade = sd->inventory.u.items_inventory[index].enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
}else{
|
||||
p = {};
|
||||
@ -4633,6 +4645,9 @@ void clif_storageitemadded( struct map_session_data* sd, struct item* i, int ind
|
||||
clif_addcards( &p.slot, i );
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p.option_data, i );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.enchantgrade = i->enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
||||
@ -7046,6 +7061,9 @@ void clif_cart_additem( struct map_session_data *sd, int n, int amount ){
|
||||
clif_addcards( &p.slot, &sd->cart.u.items_cart[n] );
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p.option_data, &sd->cart.u.items_cart[n] );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.enchantgrade = sd->cart.u.items_cart[n].enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
||||
@ -7404,6 +7422,9 @@ void clif_vendinglist( struct map_session_data* sd, struct map_session_data* vsd
|
||||
#if PACKETVER >= 20160921
|
||||
p->items[i].location = pc_equippoint_sub( sd, data );
|
||||
p->items[i].viewSprite = data->look;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p->items[i].enchantgrade = vsd->cart.u.items_cart[index].enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
@ -7473,7 +7494,7 @@ void clif_openvending( struct map_session_data* sd, int id, struct s_vending* ve
|
||||
|
||||
struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *p = (struct PACKET_ZC_PC_PURCHASE_MYITEMLIST *)WFIFOP( fd, 0 );
|
||||
|
||||
p->packetType = 0x136;
|
||||
p->packetType = openvendingType;
|
||||
p->packetLength = len;
|
||||
p->AID = id;
|
||||
|
||||
@ -7491,6 +7512,9 @@ void clif_openvending( struct map_session_data* sd, int id, struct s_vending* ve
|
||||
clif_addcards( &p->items[i].slot, &sd->cart.u.items_cart[index] );
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p->items[i].option_data, &sd->cart.u.items_cart[index] );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p->items[i].enchantgrade = sd->cart.u.items_cart[index].enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -15383,6 +15407,9 @@ void clif_Mail_setattachment( struct map_session_data* sd, int index, int amount
|
||||
}
|
||||
p.favorite = item->favorite;
|
||||
p.location = pc_equippoint( sd, server_index( index ) );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.enchantgrade = item->enchantgrade;
|
||||
#endif
|
||||
}
|
||||
|
||||
p.PacketType = rodexadditem;
|
||||
@ -15888,6 +15915,9 @@ void clif_Mail_read( struct map_session_data *sd, int mail_id ){
|
||||
mailitem->bindOnEquip = item->bound ? 2 : data->flag.bindOnEquip ? 1 : 0;
|
||||
clif_addcards( &mailitem->slot, item );
|
||||
clif_add_random_options( mailitem->optionData, item );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
mailitem->enchantgrade = item->enchantgrade;
|
||||
#endif
|
||||
|
||||
offset += sizeof( struct mail_item );
|
||||
count++;
|
||||
@ -18231,6 +18261,9 @@ void clif_party_show_picker( struct map_session_data* sd, struct item* item_data
|
||||
clif_addcards( &p.slot, item_data );
|
||||
p.location = id->equip; // equip location
|
||||
p.itemType = itemtype( id->nameid ); // item type
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p.enchantgrade = item_data->enchantgrade;
|
||||
#endif
|
||||
|
||||
clif_send( &p, sizeof( p ), &sd->bl, PARTY_SAMEMAP_WOS );
|
||||
#endif
|
||||
@ -18762,7 +18795,7 @@ void clif_search_store_info_ack( struct map_session_data* sd ){
|
||||
|
||||
struct PACKET_ZC_SEARCH_STORE_INFO_ACK *p = (struct PACKET_ZC_SEARCH_STORE_INFO_ACK *)WFIFOP( fd, 0 );
|
||||
|
||||
p->packetType = 0x836;
|
||||
p->packetType = HEADER_ZC_SEARCH_STORE_INFO_ACK;
|
||||
p->packetLength = len;
|
||||
p->firstPage = !sd->searchstore.pages;
|
||||
p->nextPage = searchstore_querynext( sd );
|
||||
@ -18791,6 +18824,9 @@ void clif_search_store_info_ack( struct map_session_data* sd ){
|
||||
clif_addcards( &p->items[i].slot, &it );
|
||||
#if PACKETVER >= 20150226
|
||||
clif_add_random_options( p->items[i].option_data, &it );
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
p->items[i].enchantgrade = ssitem->enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -70,13 +70,13 @@
|
||||
packet( HEADER_ZC_ITEM_ENTRY, sizeof( struct PACKET_ZC_ITEM_ENTRY ) );
|
||||
packet(0x009e,17);
|
||||
parseable_packet(0x009f,6,clif_parse_TakeItem,2);
|
||||
packet(0x00a0,23);
|
||||
packet( additemType, sizeof( struct packet_additem ) );
|
||||
packet(0x00a1,6);
|
||||
parseable_packet(0x00a2,6,clif_parse_DropItem,2,4);
|
||||
packet(0x00a3,-1);
|
||||
packet(0x00a4,-1);
|
||||
packet(0x00a5,-1);
|
||||
packet(0x00a6,-1);
|
||||
packet( inventorylistnormalType, -1 );
|
||||
packet( inventorylistequipType, -1 );
|
||||
packet( storageListNormalType, -1 );
|
||||
packet( storageListEquipType, -1 );
|
||||
parseable_packet(0x00a7,8,clif_parse_UseItem,2,4);
|
||||
packet( useItemAckType, sizeof( struct PACKET_ZC_USE_ITEM_ACK ) );
|
||||
parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4);
|
||||
@ -143,7 +143,7 @@
|
||||
parseable_packet(0x00e6,3,clif_parse_TradeAck,2);
|
||||
packet(0x00e7,3);
|
||||
parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4);
|
||||
packet(0x00e9,19);
|
||||
packet( tradeaddType, sizeof( struct PACKET_ZC_ADD_EXCHANGE_ITEM ) );
|
||||
packet(0x00ea,5);
|
||||
parseable_packet(0x00eb,2,clif_parse_TradeOk,0);
|
||||
packet(0x00ec,3);
|
||||
@ -200,8 +200,8 @@
|
||||
packet(0x011f,16);
|
||||
packet(0x0120,6);
|
||||
packet(0x0121,14);
|
||||
packet(0x0122,-1);
|
||||
packet(0x0123,-1);
|
||||
packet( cartlistequipType, -1 );
|
||||
packet( cartlistnormalType, -1 );
|
||||
packet( cartaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_CART ) );
|
||||
packet(0x0125,8);
|
||||
parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4);
|
||||
@ -217,10 +217,10 @@
|
||||
parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
|
||||
packet(0x0131,86);
|
||||
packet(0x0132,6);
|
||||
packet(0x0133,-1);
|
||||
packet( vendinglistType, -1 );
|
||||
parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8);
|
||||
packet(0x0135,7);
|
||||
packet(0x0136,-1);
|
||||
packet(openvendingType,-1);
|
||||
packet(0x0137,6);
|
||||
packet(0x0138,3);
|
||||
packet(0x0139,16);
|
||||
@ -401,8 +401,6 @@
|
||||
packet(0x01eb,10);
|
||||
packet(0x01ec,26);
|
||||
parseable_packet(0x01ed,2,clif_parse_NoviceExplosionSpirits,0);
|
||||
packet(0x01ee,-1);
|
||||
packet(0x01ef,-1);
|
||||
packet(0x01f0,-1);
|
||||
packet(0x01f1,-1);
|
||||
packet(0x01f2,20);
|
||||
@ -995,12 +993,8 @@
|
||||
parseable_packet(0x0292,2,clif_parse_AutoRevive,0);
|
||||
packet(0x0293,70);
|
||||
packet(0x0294,10);
|
||||
packet(0x0295,-1);
|
||||
packet(0x0296,-1);
|
||||
packet(0x0297,-1);
|
||||
packet( HEADER_ZC_CASH_TIME_COUNTER, sizeof( struct PACKET_ZC_CASH_TIME_COUNTER ) );
|
||||
packet( HEADER_ZC_CASH_ITEM_DELETE, sizeof( struct PACKET_ZC_CASH_ITEM_DELETE ) );
|
||||
packet(0x029a,27);
|
||||
packet(0x029c,66);
|
||||
packet(0x029d,-1);
|
||||
packet(0x029e,11);
|
||||
@ -1107,14 +1101,10 @@
|
||||
packet(0x02cd,26);
|
||||
packet(0x02ce,10);
|
||||
parseable_packet(0x02cf,6,clif_parse_MemorialDungeonCommand,2);
|
||||
packet(0x02d0,-1);
|
||||
packet(0x02d1,-1);
|
||||
packet(0x02d2,-1);
|
||||
ack_packet(ZC_NOTIFY_BIND_ON_EQUIP,0x02d3,4,2);
|
||||
packet(0x02d4,29);
|
||||
packet(0x02d5,2);
|
||||
parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2);
|
||||
packet(0x02d7,-1);
|
||||
packet( viewequipackType, -1 );
|
||||
parseable_packet(0x02d8,10,clif_parse_configuration,2,6);
|
||||
packet(0x02d9,10);
|
||||
packet(0x02da,3);
|
||||
@ -1163,9 +1153,6 @@
|
||||
// 2008-01-02aSakexe
|
||||
#if PACKETVER >= 20080102
|
||||
parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2);
|
||||
packet(0x02e8,-1);
|
||||
packet(0x02e9,-1);
|
||||
packet(0x02ea,-1);
|
||||
packet(0x02eb,13);
|
||||
packet(0x02ec,67);
|
||||
packet(0x02ed,59);
|
||||
@ -1622,7 +1609,6 @@
|
||||
|
||||
// 2009-12-15aRagexeRE
|
||||
#if PACKETVER >= 20091215
|
||||
packet(0x0800,-1);
|
||||
//packet(0x0801,-1);
|
||||
#endif
|
||||
|
||||
@ -1669,11 +1655,6 @@
|
||||
//packet(0x07F0,6);
|
||||
#endif
|
||||
|
||||
// 2010-02-23aRagexeRE
|
||||
#if PACKETVER >= 20100223
|
||||
packet(0x080F,20);
|
||||
#endif
|
||||
|
||||
// 2010-03-03aRagexeRE
|
||||
#if PACKETVER >= 20100303
|
||||
packet(0x0810,3);
|
||||
@ -1744,7 +1725,7 @@
|
||||
//packet(0x0825,-1);
|
||||
//packet(0x0826,4);
|
||||
parseable_packet(0x0835,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
|
||||
packet(0x0836,-1);
|
||||
packet( HEADER_ZC_SEARCH_STORE_INFO_ACK, -1 );
|
||||
packet(0x0837,3);
|
||||
//packet(0x0838,3);
|
||||
#endif
|
||||
@ -1823,7 +1804,6 @@
|
||||
packet(0x0856,-1);
|
||||
packet(0x0857,-1);
|
||||
packet(0x0858,-1);
|
||||
packet(0x0859,-1);
|
||||
ack_packet(ZC_WEAR_EQUIP_ACK,0x08d0,9,2,4,6,8);
|
||||
#endif
|
||||
|
||||
@ -2086,14 +2066,6 @@
|
||||
packet(0x0979,50); //ackworldinfo
|
||||
ack_packet(ZC_PERSONAL_INFOMATION,0x097b,16,2,4,8,12,16,17,21,25); //Still need further information
|
||||
//ack_packet(ZC_PERSONAL_INFOMATION_CHN,0x0981,12,2,4,6,8,12,13,15,17,10); // Disabled until further information is found.
|
||||
packet(0x0990,31); //additem
|
||||
packet(0x0991,-1); //inv itemlist normal
|
||||
packet(0x0992,-1); //inv itemlist equip
|
||||
packet(0x0993,-1); //cart itemlist normal
|
||||
packet(0x0994,-1); //cart itemlist equip
|
||||
packet(0x0995,-1); //store itemlist normal
|
||||
packet(0x0996,-1); //store itemlist equip
|
||||
packet(0x0997,-1); //ZC_EQUIPWIN_MICROSCOPE_V5
|
||||
parseable_packet(0x0998,8,clif_parse_EquipItem,2,4); // CZ_REQ_WEAR_EQUIP_V5
|
||||
ack_packet(ZC_WEAR_EQUIP_ACK,0x0999,11,2,4,8,10); // cz_wear_equipv5
|
||||
packet(0x099a,9); // take_off_equipv5
|
||||
@ -2238,16 +2210,6 @@
|
||||
packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11
|
||||
#endif
|
||||
|
||||
// 2015-02-25aRagexeRE
|
||||
#if PACKETVER >= 20150225
|
||||
packet(0x0A09,45); // ZC_ADD_EXCHANGE_ITEM3
|
||||
packet(0x0A0C,56); // ZC_ITEM_PICKUP_ACK_V6
|
||||
packet(0x0A0D,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6
|
||||
packet(0x0A0F,-1); // ZC_CART_ITEMLIST_EQUIP_V6
|
||||
packet(0x0A10,-1); // ZC_STORE_ITEMLIST_EQUIP_V6
|
||||
packet(0x0A2D,-1); // ZC_EQUIPWIN_MICROSCOPE_V6
|
||||
#endif
|
||||
|
||||
#if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO)
|
||||
packet( HEADER_ZC_HAT_EFFECT, -1 );
|
||||
#endif
|
||||
@ -2259,7 +2221,7 @@
|
||||
parseable_packet(0x09E8,11,clif_parse_Mail_refreshinbox,2,3); // CZ_OPEN_MAILBOX
|
||||
parseable_packet(0x09E9,2,clif_parse_dull,0); // CZ_CLOSE_MAILBOX
|
||||
parseable_packet(0x09EA,11,clif_parse_Mail_read,2,3); // CZ_REQ_READ_MAIL
|
||||
packet(0x09EB,-1); // ZC_ACK_READ_MAIL
|
||||
packet(rodexread,-1); // ZC_ACK_READ_MAIL
|
||||
parseable_packet(0x09EC,-1,clif_parse_Mail_send,2,4,28,52,60,62,64); // CZ_REQ_WRITE_MAIL
|
||||
packet(0x09ED,3); // ZC_ACK_WRITE_MAIL
|
||||
parseable_packet(0x09EE,11,clif_parse_Mail_refreshinbox,2,3); // CZ_REQ_NEXT_MAIL_LIST
|
||||
@ -2273,7 +2235,7 @@
|
||||
packet(0x09F6,11); // ZC_ACK_DELETE_MAIL
|
||||
parseable_packet(0x0A03,2,clif_parse_Mail_cancelwrite,0); // CZ_REQ_CANCEL_WRITE_MAIL
|
||||
parseable_packet(0x0A04,6,clif_parse_Mail_setattach,2,4); // CZ_REQ_ADD_ITEM_TO_MAIL
|
||||
packet(0x0A05,53); // ZC_ACK_ADD_ITEM_TO_MAIL
|
||||
packet( rodexadditem, sizeof( struct PACKET_ZC_ADD_ITEM_TO_MAIL ) ); // ZC_ACK_ADD_ITEM_TO_MAIL
|
||||
parseable_packet(0x0A06,6,clif_parse_Mail_winopen,2,4); // CZ_REQ_REMOVE_ITEM_MAIL
|
||||
packet(0x0A07,9); // ZC_ACK_REMOVE_ITEM_MAIL
|
||||
parseable_packet(0x0A08,26,clif_parse_Mail_beginwrite,0); // CZ_REQ_OPEN_WRITE_MAIL
|
||||
@ -2337,11 +2299,6 @@
|
||||
packet(0x0A84,94);
|
||||
#endif
|
||||
|
||||
// 2016-09-21bRagexeRE
|
||||
#if PACKETVER >= 20160921
|
||||
packet(0x0A37,59);
|
||||
#endif
|
||||
|
||||
// 2016-10-26bRagexeRE
|
||||
#if PACKETVER >= 20161026
|
||||
packet(0x0AA5,-1);
|
||||
|
@ -199,8 +199,17 @@ DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
|
||||
DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
|
||||
DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
|
||||
DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
|
||||
DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x2b8)
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0xb67)
|
||||
#else
|
||||
DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x2b8)
|
||||
#endif
|
||||
DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824)
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0xb64)
|
||||
#else
|
||||
DEFINE_PACKET_HEADER(ZC_SEARCH_STORE_INFO_ACK, 0x836)
|
||||
#endif
|
||||
DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c)
|
||||
DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
|
||||
DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
|
||||
|
@ -17,21 +17,27 @@ enum packet_headers {
|
||||
banking_checkType = 0x9a6,
|
||||
cart_additem_ackType = 0x12c,
|
||||
sc_notickType = 0x196,
|
||||
#if PACKETVER >= 20150226
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
cartaddType = 0xb45,
|
||||
#elif PACKETVER >= 20150226
|
||||
cartaddType = 0xa0b,
|
||||
#elif PACKETVER >= 5
|
||||
cartaddType = 0x1c5,
|
||||
#else
|
||||
cartaddType = 0x124,
|
||||
#endif
|
||||
#if PACKETVER >= 20150226
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
storageaddType = 0xb44,
|
||||
#elif PACKETVER >= 20150226
|
||||
storageaddType = 0xa0a,
|
||||
#elif PACKETVER >= 5
|
||||
storageaddType = 0x1c4,
|
||||
#else
|
||||
storageaddType = 0xf4,
|
||||
#endif
|
||||
#if PACKETVER >= 20150226
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
tradeaddType = 0xb42,
|
||||
#elif PACKETVER >= 20150226
|
||||
tradeaddType = 0xa09,
|
||||
#elif PACKETVER >= 20100223
|
||||
tradeaddType = 0x80f,
|
||||
@ -48,6 +54,8 @@ enum packet_headers {
|
||||
additemType = 0x990,
|
||||
#elif PACKETVER < 20160921
|
||||
additemType = 0xa0c,
|
||||
#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
additemType = 0xb41,
|
||||
#else
|
||||
additemType = 0xa37,
|
||||
#endif
|
||||
@ -179,7 +187,9 @@ enum packet_headers {
|
||||
#else
|
||||
inventorylistnormalType = 0xa3,
|
||||
#endif
|
||||
#if PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
inventorylistequipType = 0xb39,
|
||||
#elif PACKETVER_RE_NUM >= 20180912 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
inventorylistequipType = 0xb0a,
|
||||
#elif PACKETVER >= 20150226
|
||||
inventorylistequipType = 0xa0d,
|
||||
@ -203,7 +213,9 @@ enum packet_headers {
|
||||
#else
|
||||
storageListNormalType = 0xa5,
|
||||
#endif
|
||||
#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
storageListEquipType = 0xb39,
|
||||
#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
storageListEquipType = 0xb0a,
|
||||
#elif PACKETVER >= 20150226
|
||||
storageListEquipType = 0xa10,
|
||||
@ -227,7 +239,9 @@ enum packet_headers {
|
||||
#else
|
||||
cartlistnormalType = 0x123,
|
||||
#endif
|
||||
#if PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
cartlistequipType = 0xb39,
|
||||
#elif PACKETVER_RE_NUM >= 20180829 || PACKETVER_ZERO_NUM >= 20180919 || PACKETVER_MAIN_NUM >= 20181002
|
||||
cartlistequipType = 0xb0a,
|
||||
#elif PACKETVER >= 20150226
|
||||
cartlistequipType = 0xa0f,
|
||||
@ -242,10 +256,16 @@ enum packet_headers {
|
||||
#endif
|
||||
#if PACKETVER < 20100105
|
||||
vendinglistType = 0x133,
|
||||
#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
vendinglistType = 0xb3d,
|
||||
#else
|
||||
vendinglistType = 0x800,
|
||||
#endif
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
openvendingType = 0xb40,
|
||||
#else
|
||||
openvendingType = 0x136,
|
||||
#endif
|
||||
#if PACKETVER >= 20120925
|
||||
equipitemType = 0x998,
|
||||
#else
|
||||
@ -261,7 +281,9 @@ enum packet_headers {
|
||||
#else
|
||||
unequipitemackType = 0xac,
|
||||
#endif
|
||||
#if PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
viewequipackType = 0xb37,
|
||||
#elif PACKETVER_MAIN_NUM >= 20180801 || PACKETVER_RE_NUM >= 20180801 || PACKETVER_ZERO_NUM >= 20180808
|
||||
viewequipackType = 0xb03,
|
||||
#elif PACKETVER >= 20150226
|
||||
viewequipackType = 0xa2d,
|
||||
@ -303,13 +325,21 @@ enum packet_headers {
|
||||
#endif // PACKETVER >= 20141022
|
||||
/* Rodex */
|
||||
rodexicon = 0x09E7,
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
rodexread = 0x0B63,
|
||||
#else
|
||||
rodexread = 0x09EB,
|
||||
#endif
|
||||
rodexwriteresult = 0x09ED,
|
||||
rodexnextpage = 0x09F0,
|
||||
rodexgetzeny = 0x09F2,
|
||||
rodexgetitem = 0x09F4,
|
||||
rodexdelete = 0x09F6,
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
rodexadditem = 0x0B3f,
|
||||
#else
|
||||
rodexadditem = 0x0A05,
|
||||
#endif
|
||||
rodexremoveitem = 0x0A07,
|
||||
rodexopenwrite = 0x0A12,
|
||||
#if PACKETVER < 20160601
|
||||
@ -481,7 +511,9 @@ struct EQUIPITEM_INFO {
|
||||
#if PACKETVER < 20120925
|
||||
uint8 IsDamaged;
|
||||
#endif
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 RefiningLevel;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20071002
|
||||
int32 HireExpireDate;
|
||||
@ -496,6 +528,10 @@ struct EQUIPITEM_INFO {
|
||||
uint8 option_count;
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#endif
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 RefiningLevel;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#if PACKETVER >= 20120925
|
||||
struct {
|
||||
uint8 IsIdentified : 1;
|
||||
@ -546,7 +582,9 @@ struct packet_additem {
|
||||
#endif
|
||||
uint8 IsIdentified;
|
||||
uint8 IsDamaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refiningLevel;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20120925
|
||||
uint32 location;
|
||||
@ -563,10 +601,14 @@ struct packet_additem {
|
||||
#endif
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#endif
|
||||
#if PACKETVER >= 20160921
|
||||
uint8 favorite;
|
||||
uint16 look;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refiningLevel;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -1557,12 +1599,18 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL {
|
||||
int8 type;
|
||||
int8 IsIdentified;
|
||||
int8 IsDamaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
int8 refiningLevel;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
||||
int16 weight;
|
||||
uint8 favorite;
|
||||
uint32 location;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
int8 refiningLevel;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
struct mail_item {
|
||||
@ -1574,13 +1622,19 @@ struct mail_item {
|
||||
#endif
|
||||
int8 IsIdentified;
|
||||
int8 IsDamaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
int8 refiningLevel;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
uint32 location;
|
||||
uint8 type;
|
||||
uint16 viewSprite;
|
||||
uint16 bindOnEquip;
|
||||
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
int8 refiningLevel;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PACKET_CZ_REQ_OPEN_WRITE_MAIL {
|
||||
@ -2087,10 +2141,16 @@ struct PACKET_ZC_ADD_ITEM_TO_STORE {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -2131,10 +2191,16 @@ struct PACKET_ZC_ADD_ITEM_TO_CART {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -2224,10 +2290,18 @@ struct PACKET_ZC_ADD_EXCHANGE_ITEM {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint32 location;
|
||||
uint16 viewSprite;
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -2261,10 +2335,16 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
uint16 location;
|
||||
uint8 itemType;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
|
||||
@ -2463,10 +2543,16 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -2559,7 +2645,9 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
|
||||
#endif
|
||||
uint8 identified;
|
||||
uint8 damaged;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
@ -2568,6 +2656,10 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
|
||||
#if PACKETVER >= 20160921
|
||||
uint32 location;
|
||||
uint16 viewSprite;
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
@ -2780,10 +2872,16 @@ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
|
||||
uint8 itemType;
|
||||
uint32 price;
|
||||
uint16 amount;
|
||||
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||
uint8 refine;
|
||||
#endif
|
||||
struct EQUIPSLOTINFO slot;
|
||||
#if PACKETVER >= 20150226
|
||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||
uint8 refine;
|
||||
uint8 enchantgrade;
|
||||
#endif
|
||||
#endif
|
||||
} __attribute__((packed));
|
||||
|
||||
|
@ -400,7 +400,7 @@ void searchstore_clearremote(struct map_session_data* sd)
|
||||
* @param card : card in the item
|
||||
* @param refine : refine of the item
|
||||
*/
|
||||
bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine)
|
||||
bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine, uint8 enchantgrade)
|
||||
{
|
||||
struct s_search_store_info_item* ssitem;
|
||||
|
||||
@ -416,6 +416,7 @@ bool searchstore_result(struct map_session_data* sd, int store_id, uint32 accoun
|
||||
ssitem->price = price;
|
||||
memcpy(ssitem->card, card, sizeof(ssitem->card));
|
||||
ssitem->refine = refine;
|
||||
ssitem->enchantgrade = enchantgrade;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -32,6 +32,7 @@ struct s_search_store_info_item {
|
||||
unsigned int price;
|
||||
t_itemid card[MAX_SLOTS];
|
||||
unsigned char refine;
|
||||
uint8 enchantgrade;
|
||||
};
|
||||
|
||||
struct s_search_store_info {
|
||||
@ -55,6 +56,6 @@ void searchstore_close(struct map_session_data* sd);
|
||||
void searchstore_click(struct map_session_data* sd, uint32 account_id, int store_id, t_itemid nameid);
|
||||
bool searchstore_queryremote(struct map_session_data* sd, uint32 account_id);
|
||||
void searchstore_clearremote(struct map_session_data* sd);
|
||||
bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine);
|
||||
bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine, uint8 enchantgrade);
|
||||
|
||||
#endif /* SEARCHSTORE_HPP */
|
||||
|
@ -645,7 +645,7 @@ void storage_guild_log( struct map_session_data* sd, struct item* item, int16 am
|
||||
StringBuf buf;
|
||||
StringBuf_Init(&buf);
|
||||
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s` (`time`, `guild_id`, `char_id`, `name`, `nameid`, `amount`, `identify`, `refine`, `attribute`, `unique_id`, `bound`", guild_storage_log_table);
|
||||
StringBuf_Printf(&buf, "INSERT INTO `%s` (`time`, `guild_id`, `char_id`, `name`, `nameid`, `amount`, `identify`, `refine`, `attribute`, `unique_id`, `bound`, `enchantgrade`", guild_storage_log_table);
|
||||
for (i = 0; i < MAX_SLOTS; ++i)
|
||||
StringBuf_Printf(&buf, ", `card%d`", i);
|
||||
for (i = 0; i < MAX_ITEM_RDM_OPT; ++i) {
|
||||
@ -653,8 +653,8 @@ void storage_guild_log( struct map_session_data* sd, struct item* item, int16 am
|
||||
StringBuf_Printf(&buf, ", `option_val%d`", i);
|
||||
StringBuf_Printf(&buf, ", `option_parm%d`", i);
|
||||
}
|
||||
StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%u', '%s', '%u', '%d','%d','%d','%d','%" PRIu64 "','%d'",
|
||||
sd->status.guild_id, sd->status.char_id, sd->status.name, item->nameid, amount, item->identify, item->refine,item->attribute, item->unique_id, item->bound);
|
||||
StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%u', '%s', '%u', '%d','%d','%d','%d','%" PRIu64 "','%d','%d'",
|
||||
sd->status.guild_id, sd->status.char_id, sd->status.name, item->nameid, amount, item->identify, item->refine,item->attribute, item->unique_id, item->bound, item->enchantgrade);
|
||||
|
||||
for (i = 0; i < MAX_SLOTS; i++)
|
||||
StringBuf_Printf(&buf, ",'%u'", item->card[i]);
|
||||
@ -676,7 +676,7 @@ enum e_guild_storage_log storage_guild_log_read_sub( struct map_session_data* sd
|
||||
StringBuf_Init(&buf);
|
||||
|
||||
StringBuf_AppendStr(&buf, "SELECT `id`, `time`, `name`, `amount`");
|
||||
StringBuf_AppendStr(&buf, " , `nameid`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`");
|
||||
StringBuf_AppendStr(&buf, " , `nameid`, `identify`, `refine`, `attribute`, `expire_time`, `bound`, `unique_id`, `enchantgrade`");
|
||||
for (j = 0; j < MAX_SLOTS; ++j)
|
||||
StringBuf_Printf(&buf, ", `card%d`", j);
|
||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||
@ -713,13 +713,14 @@ enum e_guild_storage_log storage_guild_log_read_sub( struct map_session_data* sd
|
||||
SqlStmt_BindColumn(stmt, 7, SQLDT_CHAR, &entry.item.attribute, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 8, SQLDT_UINT, &entry.item.expire_time, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 9, SQLDT_UINT, &entry.item.bound, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 10, SQLDT_UINT64, &entry.item.unique_id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 10, SQLDT_UINT64, &entry.item.unique_id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11, SQLDT_INT8, &entry.item.enchantgrade,0, NULL, NULL);
|
||||
for( j = 0; j < MAX_SLOTS; ++j )
|
||||
SqlStmt_BindColumn(stmt, 11+j, SQLDT_UINT, &entry.item.card[j], 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+j, SQLDT_UINT, &entry.item.card[j], 0, NULL, NULL);
|
||||
for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) {
|
||||
SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3, SQLDT_SHORT, &entry.item.option[j].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3+1, SQLDT_SHORT, &entry.item.option[j].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3+2, SQLDT_CHAR, &entry.item.option[j].param, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+MAX_SLOTS+j*3, SQLDT_SHORT, &entry.item.option[j].id, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+MAX_SLOTS+j*3+1, SQLDT_SHORT, &entry.item.option[j].value, 0, NULL, NULL);
|
||||
SqlStmt_BindColumn(stmt, 12+MAX_SLOTS+j*3+2, SQLDT_CHAR, &entry.item.option[j].param, 0, NULL, NULL);
|
||||
}
|
||||
|
||||
log.reserve(max);
|
||||
|
@ -465,7 +465,7 @@ bool vending_searchall(struct map_session_data* sd, const struct s_search_store_
|
||||
}
|
||||
}
|
||||
|
||||
if( !searchstore_result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine) ) { // result set full
|
||||
if( !searchstore_result(s->search_sd, sd->vender_id, sd->status.account_id, sd->message, it->nameid, sd->vending[i].amount, sd->vending[i].value, it->card, it->refine, it->enchantgrade ) ) { // result set full
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user