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_val4` smallint(5) NOT NULL default '0',
|
||||||
`option_parm4` tinyint(3) NOT NULL default '0',
|
`option_parm4` tinyint(3) NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`auction_id`)
|
PRIMARY KEY (`auction_id`)
|
||||||
) ENGINE=MyISAM;
|
) ENGINE=MyISAM;
|
||||||
|
|
||||||
@ -185,6 +186,7 @@ CREATE TABLE IF NOT EXISTS `cart_inventory` (
|
|||||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `char_id` (`char_id`)
|
KEY `char_id` (`char_id`)
|
||||||
) ENGINE=MyISAM;
|
) ENGINE=MyISAM;
|
||||||
@ -576,6 +578,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage` (
|
|||||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `guild_id` (`guild_id`)
|
KEY `guild_id` (`guild_id`)
|
||||||
) ENGINE=MyISAM;
|
) ENGINE=MyISAM;
|
||||||
@ -617,6 +620,7 @@ CREATE TABLE IF NOT EXISTS `guild_storage_log` (
|
|||||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
`bound` tinyint(1) unsigned NOT NULL default '0',
|
`bound` tinyint(1) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
INDEX (`guild_id`)
|
INDEX (`guild_id`)
|
||||||
) ENGINE=MyISAM AUTO_INCREMENT=1;
|
) ENGINE=MyISAM AUTO_INCREMENT=1;
|
||||||
@ -715,6 +719,7 @@ CREATE TABLE IF NOT EXISTS `inventory` (
|
|||||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
`equip_switch` int(11) unsigned NOT NULL default '0',
|
`equip_switch` int(11) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `char_id` (`char_id`)
|
KEY `char_id` (`char_id`)
|
||||||
) ENGINE=MyISAM;
|
) ENGINE=MyISAM;
|
||||||
@ -818,6 +823,7 @@ CREATE TABLE IF NOT EXISTS `mail_attachments` (
|
|||||||
`option_parm4` tinyint(3) NOT NULL default '0',
|
`option_parm4` tinyint(3) NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL DEFAULT '0',
|
`unique_id` bigint(20) unsigned NOT NULL DEFAULT '0',
|
||||||
`bound` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
`bound` tinyint(1) unsigned NOT NULL DEFAULT '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`,`index`)
|
PRIMARY KEY (`id`,`index`)
|
||||||
) ENGINE=MyISAM;
|
) ENGINE=MyISAM;
|
||||||
|
|
||||||
@ -1038,6 +1044,7 @@ CREATE TABLE IF NOT EXISTS `storage` (
|
|||||||
`expire_time` int(11) unsigned NOT NULL default '0',
|
`expire_time` int(11) unsigned NOT NULL default '0',
|
||||||
`bound` tinyint(3) unsigned NOT NULL default '0',
|
`bound` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
`unique_id` bigint(20) unsigned NOT NULL default '0',
|
||||||
|
`enchantgrade` tinyint unsigned NOT NULL default '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
KEY `account_id` (`account_id`)
|
KEY `account_id` (`account_id`)
|
||||||
) ENGINE=MyISAM;
|
) 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.
|
// it significantly reduces cpu load on the database server.
|
||||||
|
|
||||||
StringBuf_Init(&buf);
|
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) {
|
if (tableswitch == TABLE_INVENTORY) {
|
||||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||||
offset = 2;
|
offset = 2;
|
||||||
@ -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, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
|
||||||
SqlStmt_BindColumn(stmt, 8, SQLDT_UINT, &item.bound, 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, 9, SQLDT_UINT64, &item.unique_id, 0, NULL, NULL);
|
||||||
|
SqlStmt_BindColumn(stmt,10, SQLDT_INT8, &item.enchantgrade,0, NULL, NULL);
|
||||||
if (tableswitch == TABLE_INVENTORY){
|
if (tableswitch == TABLE_INVENTORY){
|
||||||
SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||||
SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||||
}
|
}
|
||||||
for( i = 0; i < MAX_SLOTS; ++i )
|
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 ) {
|
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].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_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, 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
|
// bit array indicating which inventory items have already been matched
|
||||||
flag = (bool*) aCalloc(max, sizeof(bool));
|
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].attribute == item.attribute &&
|
||||||
items[i].expire_time == item.expire_time &&
|
items[i].expire_time == item.expire_time &&
|
||||||
items[i].bound == item.bound &&
|
items[i].bound == item.bound &&
|
||||||
|
items[i].enchantgrade == item.enchantgrade &&
|
||||||
(tableswitch != TABLE_INVENTORY || (items[i].favorite == item.favorite && items[i].equipSwitch == item.equipSwitch)) )
|
(tableswitch != TABLE_INVENTORY || (items[i].favorite == item.favorite && items[i].equipSwitch == item.equipSwitch)) )
|
||||||
; //Do nothing.
|
; //Do nothing.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// update all fields.
|
// update all fields.
|
||||||
StringBuf_Clear(&buf);
|
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 "'",
|
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);
|
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)
|
if (tableswitch == TABLE_INVENTORY)
|
||||||
StringBuf_Printf(&buf, ", `favorite`='%d', `equip_switch`='%u'", items[i].favorite, items[i].equipSwitch);
|
StringBuf_Printf(&buf, ", `favorite`='%d', `equip_switch`='%u'", items[i].favorite, items[i].equipSwitch);
|
||||||
for( j = 0; j < MAX_SLOTS; ++j )
|
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);
|
SqlStmt_Free(stmt);
|
||||||
|
|
||||||
StringBuf_Clear(&buf);
|
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)
|
if (tableswitch == TABLE_INVENTORY)
|
||||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||||
for( j = 0; j < MAX_SLOTS; ++j )
|
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
|
else
|
||||||
found = true;
|
found = true;
|
||||||
|
|
||||||
StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "'",
|
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);
|
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)
|
if (tableswitch == TABLE_INVENTORY)
|
||||||
StringBuf_Printf(&buf, ", '%d', '%u'", items[i].favorite, items[i].equipSwitch);
|
StringBuf_Printf(&buf, ", '%d', '%u'", items[i].favorite, items[i].equipSwitch);
|
||||||
for( j = 0; j < MAX_SLOTS; ++j )
|
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_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) {
|
if (tableswitch == TABLE_INVENTORY) {
|
||||||
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
StringBuf_Printf(&buf, ", `favorite`, `equip_switch`");
|
||||||
offset = 2;
|
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, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL);
|
||||||
SqlStmt_BindColumn(stmt, 8, SQLDT_CHAR, &item.bound, 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, 9, SQLDT_ULONGLONG, &item.unique_id, 0, NULL, NULL);
|
||||||
|
SqlStmt_BindColumn(stmt,10, SQLDT_INT8, &item.enchantgrade, 0, NULL, NULL);
|
||||||
if (tableswitch == TABLE_INVENTORY){
|
if (tableswitch == TABLE_INVENTORY){
|
||||||
SqlStmt_BindColumn(stmt, 10, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
SqlStmt_BindColumn(stmt, 11, SQLDT_CHAR, &item.favorite, 0, NULL, NULL);
|
||||||
SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
SqlStmt_BindColumn(stmt, 12, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL);
|
||||||
}
|
}
|
||||||
for( i = 0; i < MAX_SLOTS; ++i )
|
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 ) {
|
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].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_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, 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 )
|
for( i = 0; i < max && SQL_SUCCESS == SqlStmt_NextRow(stmt); ++i )
|
||||||
@ -2439,7 +2442,7 @@ bool char_checkdb(void){
|
|||||||
}
|
}
|
||||||
//checking mail_attachment_db
|
//checking mail_attachment_db
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`index`,`nameid`,`amount`,`refine`,`attribute`,`identify`,"
|
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) ){
|
" FROM `%s` LIMIT 1;", schema_config.mail_attachment_db) ){
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
return false;
|
return false;
|
||||||
@ -2448,7 +2451,7 @@ bool char_checkdb(void){
|
|||||||
//checking auction_db
|
//checking auction_db
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
|
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`,"
|
"`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) ){
|
"FROM `%s` LIMIT 1;", schema_config.auction_db) ){
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
return false;
|
return false;
|
||||||
@ -2501,14 +2504,14 @@ bool char_checkdb(void){
|
|||||||
}
|
}
|
||||||
//checking cart_db
|
//checking cart_db
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
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) ){
|
" FROM `%s` LIMIT 1;", schema_config.cart_db) ){
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
//checking inventory_db
|
//checking inventory_db
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`char_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
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`"
|
",`favorite`,`equip_switch`"
|
||||||
" FROM `%s` LIMIT 1;", schema_config.inventory_db) ){
|
" FROM `%s` LIMIT 1;", schema_config.inventory_db) ){
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
@ -2516,7 +2519,7 @@ bool char_checkdb(void){
|
|||||||
}
|
}
|
||||||
//checking guild_storage_db
|
//checking guild_storage_db
|
||||||
if( SQL_ERROR == Sql_Query(sql_handle, "SELECT `id`,`guild_id`,`nameid`,`amount`,`equip`,`identify`,`refine`,"
|
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) ){
|
" FROM `%s` LIMIT 1;", schema_config.guild_storage_db) ){
|
||||||
Sql_ShowDebug(sql_handle);
|
Sql_ShowDebug(sql_handle);
|
||||||
return false;
|
return false;
|
||||||
|
@ -51,8 +51,8 @@ void auction_save(struct auction_data *auction)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
StringBuf_Init(&buf);
|
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'",
|
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);
|
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++ )
|
for( j = 0; j < MAX_SLOTS; j++ )
|
||||||
StringBuf_Printf(&buf, ", `card%d` = '%u'", j, auction->item.card[j]);
|
StringBuf_Printf(&buf, ", `card%d` = '%u'", j, auction->item.card[j]);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; 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);
|
auction->timestamp = time(NULL) + (auction->hours * 3600);
|
||||||
|
|
||||||
StringBuf_Init(&buf);
|
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++ )
|
for( j = 0; j < MAX_SLOTS; j++ )
|
||||||
StringBuf_Printf(&buf, ",`card%d`", j);
|
StringBuf_Printf(&buf, ",`card%d`", j);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++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_val%d`", j);
|
||||||
StringBuf_Printf(&buf, ", `option_parm%d`", j);
|
StringBuf_Printf(&buf, ", `option_parm%d`", j);
|
||||||
}
|
}
|
||||||
StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "'",
|
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->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++ )
|
for( j = 0; j < MAX_SLOTS; j++ )
|
||||||
StringBuf_Printf(&buf, ",'%u'", auction->item.card[j]);
|
StringBuf_Printf(&buf, ",'%u'", auction->item.card[j]);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||||
@ -196,7 +196,7 @@ void inter_auctions_fromsql(void)
|
|||||||
|
|
||||||
StringBuf_Init(&buf);
|
StringBuf_Init(&buf);
|
||||||
StringBuf_AppendStr(&buf, "SELECT `auction_id`,`seller_id`,`seller_name`,`buyer_id`,`buyer_name`,"
|
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++ )
|
for( i = 0; i < MAX_SLOTS; i++ )
|
||||||
StringBuf_Printf(&buf, ",`card%d`", i);
|
StringBuf_Printf(&buf, ",`card%d`", i);
|
||||||
for (i = 0; i < MAX_ITEM_RDM_OPT; ++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,12, &data, NULL); item->refine = atoi(data);
|
||||||
Sql_GetData(sql_handle,13, &data, NULL); item->attribute = 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,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->identify = 1;
|
||||||
item->amount = 1;
|
item->amount = 1;
|
||||||
@ -241,16 +242,16 @@ void inter_auctions_fromsql(void)
|
|||||||
|
|
||||||
for( i = 0; i < MAX_SLOTS; i++ )
|
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);
|
item->card[i] = strtoul(data, nullptr, 10);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < MAX_ITEM_RDM_OPT; i++) {
|
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);
|
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);
|
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);
|
item->option[i].param = atoi(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ int mail_savemessage(struct mail_message* msg)
|
|||||||
SqlStmt_Free(stmt);
|
SqlStmt_Free(stmt);
|
||||||
|
|
||||||
StringBuf_Clear(&buf);
|
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++)
|
for (j = 0; j < MAX_SLOTS; j++)
|
||||||
StringBuf_Printf(&buf, ", `card%d`", j);
|
StringBuf_Printf(&buf, ", `card%d`", j);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||||
@ -127,7 +127,7 @@ int mail_savemessage(struct mail_message* msg)
|
|||||||
found = true;
|
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++)
|
for (j = 0; j < MAX_SLOTS; j++)
|
||||||
StringBuf_Printf(&buf, ", '%u'", msg->item[i].card[j]);
|
StringBuf_Printf(&buf, ", '%u'", msg->item[i].card[j]);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++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_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++)
|
for (j = 0; j < MAX_SLOTS; j++)
|
||||||
StringBuf_Printf(&buf, ",`card%d`", j);
|
StringBuf_Printf(&buf, ",`card%d`", j);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++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,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,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,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;
|
msg->item[i].expire_time = 0;
|
||||||
|
|
||||||
for( j = 0; j < MAX_SLOTS; j++ ){
|
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++ ){
|
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].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].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,10 + MAX_SLOTS + j * 3, &data, NULL); msg->item[i].option[j].param = atoi(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,6 +263,7 @@ struct item {
|
|||||||
char favorite, bound;
|
char favorite, bound;
|
||||||
uint64 unique_id;
|
uint64 unique_id;
|
||||||
unsigned int equipSwitch; // location(s) where item is equipped for equip switching (using enum equip_pos for bitmasking)
|
unsigned int equipSwitch; // location(s) where item is equipped for equip switching (using enum equip_pos for bitmasking)
|
||||||
|
uint8 enchantgrade;
|
||||||
};
|
};
|
||||||
|
|
||||||
//Equip position constants
|
//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
|
{// result set full
|
||||||
return false;
|
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 );
|
p.type = itemtype( sd->inventory.u.items_inventory[n].nameid );
|
||||||
#if PACKETVER >= 20061218
|
#if PACKETVER >= 20061218
|
||||||
p.HireExpireDate = sd->inventory.u.items_inventory[n].expire_time;
|
p.HireExpireDate = sd->inventory.u.items_inventory[n].expire_time;
|
||||||
#endif
|
|
||||||
#if PACKETVER >= 20071002
|
#if PACKETVER >= 20071002
|
||||||
/* why restrict the flag to non-stackable? because this is the only packet allows stackable to,
|
/* 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)
|
* 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;
|
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
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[n] );
|
clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[n] );
|
||||||
#endif
|
|
||||||
#if PACKETVER >= 20160921
|
#if PACKETVER >= 20160921
|
||||||
p.favorite = sd->inventory.u.items_inventory[n].favorite;
|
p.favorite = sd->inventory.u.items_inventory[n].favorite;
|
||||||
p.look = sd->inventory_data[n]->look;
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2847,6 +2850,10 @@ static void clif_item_equip( short idx, struct EQUIPITEM_INFO *p, struct item *i
|
|||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
p->option_count = clif_add_random_options( p->option_data, it );
|
p->option_count = clif_add_random_options( p->option_data, it );
|
||||||
#endif
|
#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 ){
|
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] );
|
clif_addcards( &p.slot, &sd->inventory.u.items_inventory[index] );
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p.option_data, &sd->inventory.u.items_inventory[index] );
|
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
|
#endif
|
||||||
}else{
|
}else{
|
||||||
p = {};
|
p = {};
|
||||||
@ -4633,6 +4645,9 @@ void clif_storageitemadded( struct map_session_data* sd, struct item* i, int ind
|
|||||||
clif_addcards( &p.slot, i );
|
clif_addcards( &p.slot, i );
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p.option_data, i );
|
clif_add_random_options( p.option_data, i );
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
p.enchantgrade = i->enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
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] );
|
clif_addcards( &p.slot, &sd->cart.u.items_cart[n] );
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p.option_data, &sd->cart.u.items_cart[n] );
|
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
|
#endif
|
||||||
|
|
||||||
clif_send( &p, sizeof( p ), &sd->bl, SELF );
|
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
|
#if PACKETVER >= 20160921
|
||||||
p->items[i].location = pc_equippoint_sub( sd, data );
|
p->items[i].location = pc_equippoint_sub( sd, data );
|
||||||
p->items[i].viewSprite = data->look;
|
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
|
||||||
#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 );
|
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->packetLength = len;
|
||||||
p->AID = id;
|
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] );
|
clif_addcards( &p->items[i].slot, &sd->cart.u.items_cart[index] );
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p->items[i].option_data, &sd->cart.u.items_cart[index] );
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -15383,6 +15407,9 @@ void clif_Mail_setattachment( struct map_session_data* sd, int index, int amount
|
|||||||
}
|
}
|
||||||
p.favorite = item->favorite;
|
p.favorite = item->favorite;
|
||||||
p.location = pc_equippoint( sd, server_index( index ) );
|
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;
|
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;
|
mailitem->bindOnEquip = item->bound ? 2 : data->flag.bindOnEquip ? 1 : 0;
|
||||||
clif_addcards( &mailitem->slot, item );
|
clif_addcards( &mailitem->slot, item );
|
||||||
clif_add_random_options( mailitem->optionData, 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 );
|
offset += sizeof( struct mail_item );
|
||||||
count++;
|
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 );
|
clif_addcards( &p.slot, item_data );
|
||||||
p.location = id->equip; // equip location
|
p.location = id->equip; // equip location
|
||||||
p.itemType = itemtype( id->nameid ); // item type
|
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 );
|
clif_send( &p, sizeof( p ), &sd->bl, PARTY_SAMEMAP_WOS );
|
||||||
#endif
|
#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 );
|
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->packetLength = len;
|
||||||
p->firstPage = !sd->searchstore.pages;
|
p->firstPage = !sd->searchstore.pages;
|
||||||
p->nextPage = searchstore_querynext( sd );
|
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 );
|
clif_addcards( &p->items[i].slot, &it );
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
clif_add_random_options( p->items[i].option_data, &it );
|
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
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,13 +70,13 @@
|
|||||||
packet( HEADER_ZC_ITEM_ENTRY, sizeof( struct PACKET_ZC_ITEM_ENTRY ) );
|
packet( HEADER_ZC_ITEM_ENTRY, sizeof( struct PACKET_ZC_ITEM_ENTRY ) );
|
||||||
packet(0x009e,17);
|
packet(0x009e,17);
|
||||||
parseable_packet(0x009f,6,clif_parse_TakeItem,2);
|
parseable_packet(0x009f,6,clif_parse_TakeItem,2);
|
||||||
packet(0x00a0,23);
|
packet( additemType, sizeof( struct packet_additem ) );
|
||||||
packet(0x00a1,6);
|
packet(0x00a1,6);
|
||||||
parseable_packet(0x00a2,6,clif_parse_DropItem,2,4);
|
parseable_packet(0x00a2,6,clif_parse_DropItem,2,4);
|
||||||
packet(0x00a3,-1);
|
packet( inventorylistnormalType, -1 );
|
||||||
packet(0x00a4,-1);
|
packet( inventorylistequipType, -1 );
|
||||||
packet(0x00a5,-1);
|
packet( storageListNormalType, -1 );
|
||||||
packet(0x00a6,-1);
|
packet( storageListEquipType, -1 );
|
||||||
parseable_packet(0x00a7,8,clif_parse_UseItem,2,4);
|
parseable_packet(0x00a7,8,clif_parse_UseItem,2,4);
|
||||||
packet( useItemAckType, sizeof( struct PACKET_ZC_USE_ITEM_ACK ) );
|
packet( useItemAckType, sizeof( struct PACKET_ZC_USE_ITEM_ACK ) );
|
||||||
parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4);
|
parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4);
|
||||||
@ -143,7 +143,7 @@
|
|||||||
parseable_packet(0x00e6,3,clif_parse_TradeAck,2);
|
parseable_packet(0x00e6,3,clif_parse_TradeAck,2);
|
||||||
packet(0x00e7,3);
|
packet(0x00e7,3);
|
||||||
parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4);
|
parseable_packet(0x00e8,8,clif_parse_TradeAddItem,2,4);
|
||||||
packet(0x00e9,19);
|
packet( tradeaddType, sizeof( struct PACKET_ZC_ADD_EXCHANGE_ITEM ) );
|
||||||
packet(0x00ea,5);
|
packet(0x00ea,5);
|
||||||
parseable_packet(0x00eb,2,clif_parse_TradeOk,0);
|
parseable_packet(0x00eb,2,clif_parse_TradeOk,0);
|
||||||
packet(0x00ec,3);
|
packet(0x00ec,3);
|
||||||
@ -200,8 +200,8 @@
|
|||||||
packet(0x011f,16);
|
packet(0x011f,16);
|
||||||
packet(0x0120,6);
|
packet(0x0120,6);
|
||||||
packet(0x0121,14);
|
packet(0x0121,14);
|
||||||
packet(0x0122,-1);
|
packet( cartlistequipType, -1 );
|
||||||
packet(0x0123,-1);
|
packet( cartlistnormalType, -1 );
|
||||||
packet( cartaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_CART ) );
|
packet( cartaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_CART ) );
|
||||||
packet(0x0125,8);
|
packet(0x0125,8);
|
||||||
parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4);
|
parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4);
|
||||||
@ -217,10 +217,10 @@
|
|||||||
parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
|
parseable_packet(0x0130,6,clif_parse_VendingListReq,2);
|
||||||
packet(0x0131,86);
|
packet(0x0131,86);
|
||||||
packet(0x0132,6);
|
packet(0x0132,6);
|
||||||
packet(0x0133,-1);
|
packet( vendinglistType, -1 );
|
||||||
parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8);
|
parseable_packet(0x0134,-1,clif_parse_PurchaseReq,2,4,8);
|
||||||
packet(0x0135,7);
|
packet(0x0135,7);
|
||||||
packet(0x0136,-1);
|
packet(openvendingType,-1);
|
||||||
packet(0x0137,6);
|
packet(0x0137,6);
|
||||||
packet(0x0138,3);
|
packet(0x0138,3);
|
||||||
packet(0x0139,16);
|
packet(0x0139,16);
|
||||||
@ -401,8 +401,6 @@
|
|||||||
packet(0x01eb,10);
|
packet(0x01eb,10);
|
||||||
packet(0x01ec,26);
|
packet(0x01ec,26);
|
||||||
parseable_packet(0x01ed,2,clif_parse_NoviceExplosionSpirits,0);
|
parseable_packet(0x01ed,2,clif_parse_NoviceExplosionSpirits,0);
|
||||||
packet(0x01ee,-1);
|
|
||||||
packet(0x01ef,-1);
|
|
||||||
packet(0x01f0,-1);
|
packet(0x01f0,-1);
|
||||||
packet(0x01f1,-1);
|
packet(0x01f1,-1);
|
||||||
packet(0x01f2,20);
|
packet(0x01f2,20);
|
||||||
@ -995,12 +993,8 @@
|
|||||||
parseable_packet(0x0292,2,clif_parse_AutoRevive,0);
|
parseable_packet(0x0292,2,clif_parse_AutoRevive,0);
|
||||||
packet(0x0293,70);
|
packet(0x0293,70);
|
||||||
packet(0x0294,10);
|
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_TIME_COUNTER, sizeof( struct PACKET_ZC_CASH_TIME_COUNTER ) );
|
||||||
packet( HEADER_ZC_CASH_ITEM_DELETE, sizeof( struct PACKET_ZC_CASH_ITEM_DELETE ) );
|
packet( HEADER_ZC_CASH_ITEM_DELETE, sizeof( struct PACKET_ZC_CASH_ITEM_DELETE ) );
|
||||||
packet(0x029a,27);
|
|
||||||
packet(0x029c,66);
|
packet(0x029c,66);
|
||||||
packet(0x029d,-1);
|
packet(0x029d,-1);
|
||||||
packet(0x029e,11);
|
packet(0x029e,11);
|
||||||
@ -1107,14 +1101,10 @@
|
|||||||
packet(0x02cd,26);
|
packet(0x02cd,26);
|
||||||
packet(0x02ce,10);
|
packet(0x02ce,10);
|
||||||
parseable_packet(0x02cf,6,clif_parse_MemorialDungeonCommand,2);
|
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);
|
ack_packet(ZC_NOTIFY_BIND_ON_EQUIP,0x02d3,4,2);
|
||||||
packet(0x02d4,29);
|
|
||||||
packet(0x02d5,2);
|
packet(0x02d5,2);
|
||||||
parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2);
|
parseable_packet(0x02d6,6,clif_parse_ViewPlayerEquip,2);
|
||||||
packet(0x02d7,-1);
|
packet( viewequipackType, -1 );
|
||||||
parseable_packet(0x02d8,10,clif_parse_configuration,2,6);
|
parseable_packet(0x02d8,10,clif_parse_configuration,2,6);
|
||||||
packet(0x02d9,10);
|
packet(0x02d9,10);
|
||||||
packet(0x02da,3);
|
packet(0x02da,3);
|
||||||
@ -1163,9 +1153,6 @@
|
|||||||
// 2008-01-02aSakexe
|
// 2008-01-02aSakexe
|
||||||
#if PACKETVER >= 20080102
|
#if PACKETVER >= 20080102
|
||||||
parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2);
|
parseable_packet(0x01df,6,clif_parse_GMReqAccountName,2);
|
||||||
packet(0x02e8,-1);
|
|
||||||
packet(0x02e9,-1);
|
|
||||||
packet(0x02ea,-1);
|
|
||||||
packet(0x02eb,13);
|
packet(0x02eb,13);
|
||||||
packet(0x02ec,67);
|
packet(0x02ec,67);
|
||||||
packet(0x02ed,59);
|
packet(0x02ed,59);
|
||||||
@ -1622,7 +1609,6 @@
|
|||||||
|
|
||||||
// 2009-12-15aRagexeRE
|
// 2009-12-15aRagexeRE
|
||||||
#if PACKETVER >= 20091215
|
#if PACKETVER >= 20091215
|
||||||
packet(0x0800,-1);
|
|
||||||
//packet(0x0801,-1);
|
//packet(0x0801,-1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1669,11 +1655,6 @@
|
|||||||
//packet(0x07F0,6);
|
//packet(0x07F0,6);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 2010-02-23aRagexeRE
|
|
||||||
#if PACKETVER >= 20100223
|
|
||||||
packet(0x080F,20);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// 2010-03-03aRagexeRE
|
// 2010-03-03aRagexeRE
|
||||||
#if PACKETVER >= 20100303
|
#if PACKETVER >= 20100303
|
||||||
packet(0x0810,3);
|
packet(0x0810,3);
|
||||||
@ -1744,7 +1725,7 @@
|
|||||||
//packet(0x0825,-1);
|
//packet(0x0825,-1);
|
||||||
//packet(0x0826,4);
|
//packet(0x0826,4);
|
||||||
parseable_packet(0x0835,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15);
|
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(0x0837,3);
|
||||||
//packet(0x0838,3);
|
//packet(0x0838,3);
|
||||||
#endif
|
#endif
|
||||||
@ -1823,7 +1804,6 @@
|
|||||||
packet(0x0856,-1);
|
packet(0x0856,-1);
|
||||||
packet(0x0857,-1);
|
packet(0x0857,-1);
|
||||||
packet(0x0858,-1);
|
packet(0x0858,-1);
|
||||||
packet(0x0859,-1);
|
|
||||||
ack_packet(ZC_WEAR_EQUIP_ACK,0x08d0,9,2,4,6,8);
|
ack_packet(ZC_WEAR_EQUIP_ACK,0x08d0,9,2,4,6,8);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2086,14 +2066,6 @@
|
|||||||
packet(0x0979,50); //ackworldinfo
|
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,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.
|
//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
|
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
|
ack_packet(ZC_WEAR_EQUIP_ACK,0x0999,11,2,4,8,10); // cz_wear_equipv5
|
||||||
packet(0x099a,9); // take_off_equipv5
|
packet(0x099a,9); // take_off_equipv5
|
||||||
@ -2238,16 +2210,6 @@
|
|||||||
packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11
|
packet(0x09FF,-1); // ZC_NOTIFY_STANDENTRY11
|
||||||
#endif
|
#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)
|
#if PACKETVER_MAIN_NUM >= 20150507 || PACKETVER_RE_NUM >= 20150429 || defined(PACKETVER_ZERO)
|
||||||
packet( HEADER_ZC_HAT_EFFECT, -1 );
|
packet( HEADER_ZC_HAT_EFFECT, -1 );
|
||||||
#endif
|
#endif
|
||||||
@ -2259,7 +2221,7 @@
|
|||||||
parseable_packet(0x09E8,11,clif_parse_Mail_refreshinbox,2,3); // CZ_OPEN_MAILBOX
|
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(0x09E9,2,clif_parse_dull,0); // CZ_CLOSE_MAILBOX
|
||||||
parseable_packet(0x09EA,11,clif_parse_Mail_read,2,3); // CZ_REQ_READ_MAIL
|
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
|
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
|
packet(0x09ED,3); // ZC_ACK_WRITE_MAIL
|
||||||
parseable_packet(0x09EE,11,clif_parse_Mail_refreshinbox,2,3); // CZ_REQ_NEXT_MAIL_LIST
|
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
|
packet(0x09F6,11); // ZC_ACK_DELETE_MAIL
|
||||||
parseable_packet(0x0A03,2,clif_parse_Mail_cancelwrite,0); // CZ_REQ_CANCEL_WRITE_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
|
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
|
parseable_packet(0x0A06,6,clif_parse_Mail_winopen,2,4); // CZ_REQ_REMOVE_ITEM_MAIL
|
||||||
packet(0x0A07,9); // ZC_ACK_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
|
parseable_packet(0x0A08,26,clif_parse_Mail_beginwrite,0); // CZ_REQ_OPEN_WRITE_MAIL
|
||||||
@ -2337,11 +2299,6 @@
|
|||||||
packet(0x0A84,94);
|
packet(0x0A84,94);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 2016-09-21bRagexeRE
|
|
||||||
#if PACKETVER >= 20160921
|
|
||||||
packet(0x0A37,59);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// 2016-10-26bRagexeRE
|
// 2016-10-26bRagexeRE
|
||||||
#if PACKETVER >= 20161026
|
#if PACKETVER >= 20161026
|
||||||
packet(0x0AA5,-1);
|
packet(0x0AA5,-1);
|
||||||
|
@ -199,8 +199,17 @@ DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223)
|
|||||||
DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
|
DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b)
|
||||||
DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
|
DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298)
|
||||||
DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299)
|
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)
|
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_SSILIST_ITEM_CLICK, 0x83c)
|
||||||
DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
|
DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac)
|
||||||
DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
|
DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad)
|
||||||
|
@ -17,21 +17,27 @@ enum packet_headers {
|
|||||||
banking_checkType = 0x9a6,
|
banking_checkType = 0x9a6,
|
||||||
cart_additem_ackType = 0x12c,
|
cart_additem_ackType = 0x12c,
|
||||||
sc_notickType = 0x196,
|
sc_notickType = 0x196,
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
cartaddType = 0xb45,
|
||||||
|
#elif PACKETVER >= 20150226
|
||||||
cartaddType = 0xa0b,
|
cartaddType = 0xa0b,
|
||||||
#elif PACKETVER >= 5
|
#elif PACKETVER >= 5
|
||||||
cartaddType = 0x1c5,
|
cartaddType = 0x1c5,
|
||||||
#else
|
#else
|
||||||
cartaddType = 0x124,
|
cartaddType = 0x124,
|
||||||
#endif
|
#endif
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
storageaddType = 0xb44,
|
||||||
|
#elif PACKETVER >= 20150226
|
||||||
storageaddType = 0xa0a,
|
storageaddType = 0xa0a,
|
||||||
#elif PACKETVER >= 5
|
#elif PACKETVER >= 5
|
||||||
storageaddType = 0x1c4,
|
storageaddType = 0x1c4,
|
||||||
#else
|
#else
|
||||||
storageaddType = 0xf4,
|
storageaddType = 0xf4,
|
||||||
#endif
|
#endif
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
tradeaddType = 0xb42,
|
||||||
|
#elif PACKETVER >= 20150226
|
||||||
tradeaddType = 0xa09,
|
tradeaddType = 0xa09,
|
||||||
#elif PACKETVER >= 20100223
|
#elif PACKETVER >= 20100223
|
||||||
tradeaddType = 0x80f,
|
tradeaddType = 0x80f,
|
||||||
@ -48,6 +54,8 @@ enum packet_headers {
|
|||||||
additemType = 0x990,
|
additemType = 0x990,
|
||||||
#elif PACKETVER < 20160921
|
#elif PACKETVER < 20160921
|
||||||
additemType = 0xa0c,
|
additemType = 0xa0c,
|
||||||
|
#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
additemType = 0xb41,
|
||||||
#else
|
#else
|
||||||
additemType = 0xa37,
|
additemType = 0xa37,
|
||||||
#endif
|
#endif
|
||||||
@ -179,7 +187,9 @@ enum packet_headers {
|
|||||||
#else
|
#else
|
||||||
inventorylistnormalType = 0xa3,
|
inventorylistnormalType = 0xa3,
|
||||||
#endif
|
#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,
|
inventorylistequipType = 0xb0a,
|
||||||
#elif PACKETVER >= 20150226
|
#elif PACKETVER >= 20150226
|
||||||
inventorylistequipType = 0xa0d,
|
inventorylistequipType = 0xa0d,
|
||||||
@ -203,7 +213,9 @@ enum packet_headers {
|
|||||||
#else
|
#else
|
||||||
storageListNormalType = 0xa5,
|
storageListNormalType = 0xa5,
|
||||||
#endif
|
#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,
|
storageListEquipType = 0xb0a,
|
||||||
#elif PACKETVER >= 20150226
|
#elif PACKETVER >= 20150226
|
||||||
storageListEquipType = 0xa10,
|
storageListEquipType = 0xa10,
|
||||||
@ -227,7 +239,9 @@ enum packet_headers {
|
|||||||
#else
|
#else
|
||||||
cartlistnormalType = 0x123,
|
cartlistnormalType = 0x123,
|
||||||
#endif
|
#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,
|
cartlistequipType = 0xb0a,
|
||||||
#elif PACKETVER >= 20150226
|
#elif PACKETVER >= 20150226
|
||||||
cartlistequipType = 0xa0f,
|
cartlistequipType = 0xa0f,
|
||||||
@ -242,10 +256,16 @@ enum packet_headers {
|
|||||||
#endif
|
#endif
|
||||||
#if PACKETVER < 20100105
|
#if PACKETVER < 20100105
|
||||||
vendinglistType = 0x133,
|
vendinglistType = 0x133,
|
||||||
|
#elif PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
vendinglistType = 0xb3d,
|
||||||
#else
|
#else
|
||||||
vendinglistType = 0x800,
|
vendinglistType = 0x800,
|
||||||
#endif
|
#endif
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
openvendingType = 0xb40,
|
||||||
|
#else
|
||||||
openvendingType = 0x136,
|
openvendingType = 0x136,
|
||||||
|
#endif
|
||||||
#if PACKETVER >= 20120925
|
#if PACKETVER >= 20120925
|
||||||
equipitemType = 0x998,
|
equipitemType = 0x998,
|
||||||
#else
|
#else
|
||||||
@ -261,7 +281,9 @@ enum packet_headers {
|
|||||||
#else
|
#else
|
||||||
unequipitemackType = 0xac,
|
unequipitemackType = 0xac,
|
||||||
#endif
|
#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,
|
viewequipackType = 0xb03,
|
||||||
#elif PACKETVER >= 20150226
|
#elif PACKETVER >= 20150226
|
||||||
viewequipackType = 0xa2d,
|
viewequipackType = 0xa2d,
|
||||||
@ -303,13 +325,21 @@ enum packet_headers {
|
|||||||
#endif // PACKETVER >= 20141022
|
#endif // PACKETVER >= 20141022
|
||||||
/* Rodex */
|
/* Rodex */
|
||||||
rodexicon = 0x09E7,
|
rodexicon = 0x09E7,
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
rodexread = 0x0B63,
|
||||||
|
#else
|
||||||
rodexread = 0x09EB,
|
rodexread = 0x09EB,
|
||||||
|
#endif
|
||||||
rodexwriteresult = 0x09ED,
|
rodexwriteresult = 0x09ED,
|
||||||
rodexnextpage = 0x09F0,
|
rodexnextpage = 0x09F0,
|
||||||
rodexgetzeny = 0x09F2,
|
rodexgetzeny = 0x09F2,
|
||||||
rodexgetitem = 0x09F4,
|
rodexgetitem = 0x09F4,
|
||||||
rodexdelete = 0x09F6,
|
rodexdelete = 0x09F6,
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
rodexadditem = 0x0B3f,
|
||||||
|
#else
|
||||||
rodexadditem = 0x0A05,
|
rodexadditem = 0x0A05,
|
||||||
|
#endif
|
||||||
rodexremoveitem = 0x0A07,
|
rodexremoveitem = 0x0A07,
|
||||||
rodexopenwrite = 0x0A12,
|
rodexopenwrite = 0x0A12,
|
||||||
#if PACKETVER < 20160601
|
#if PACKETVER < 20160601
|
||||||
@ -481,7 +511,9 @@ struct EQUIPITEM_INFO {
|
|||||||
#if PACKETVER < 20120925
|
#if PACKETVER < 20120925
|
||||||
uint8 IsDamaged;
|
uint8 IsDamaged;
|
||||||
#endif
|
#endif
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 RefiningLevel;
|
uint8 RefiningLevel;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20071002
|
#if PACKETVER >= 20071002
|
||||||
int32 HireExpireDate;
|
int32 HireExpireDate;
|
||||||
@ -496,6 +528,10 @@ struct EQUIPITEM_INFO {
|
|||||||
uint8 option_count;
|
uint8 option_count;
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
#endif
|
#endif
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 RefiningLevel;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#if PACKETVER >= 20120925
|
#if PACKETVER >= 20120925
|
||||||
struct {
|
struct {
|
||||||
uint8 IsIdentified : 1;
|
uint8 IsIdentified : 1;
|
||||||
@ -546,7 +582,9 @@ struct packet_additem {
|
|||||||
#endif
|
#endif
|
||||||
uint8 IsIdentified;
|
uint8 IsIdentified;
|
||||||
uint8 IsDamaged;
|
uint8 IsDamaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refiningLevel;
|
uint8 refiningLevel;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20120925
|
#if PACKETVER >= 20120925
|
||||||
uint32 location;
|
uint32 location;
|
||||||
@ -563,10 +601,14 @@ struct packet_additem {
|
|||||||
#endif
|
#endif
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
#endif
|
|
||||||
#if PACKETVER >= 20160921
|
#if PACKETVER >= 20160921
|
||||||
uint8 favorite;
|
uint8 favorite;
|
||||||
uint16 look;
|
uint16 look;
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refiningLevel;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -1557,12 +1599,18 @@ struct PACKET_ZC_ADD_ITEM_TO_MAIL {
|
|||||||
int8 type;
|
int8 type;
|
||||||
int8 IsIdentified;
|
int8 IsIdentified;
|
||||||
int8 IsDamaged;
|
int8 IsDamaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
int8 refiningLevel;
|
int8 refiningLevel;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
||||||
int16 weight;
|
int16 weight;
|
||||||
uint8 favorite;
|
uint8 favorite;
|
||||||
uint32 location;
|
uint32 location;
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
int8 refiningLevel;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct mail_item {
|
struct mail_item {
|
||||||
@ -1574,13 +1622,19 @@ struct mail_item {
|
|||||||
#endif
|
#endif
|
||||||
int8 IsIdentified;
|
int8 IsIdentified;
|
||||||
int8 IsDamaged;
|
int8 IsDamaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
int8 refiningLevel;
|
int8 refiningLevel;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
uint32 location;
|
uint32 location;
|
||||||
uint8 type;
|
uint8 type;
|
||||||
uint16 viewSprite;
|
uint16 viewSprite;
|
||||||
uint16 bindOnEquip;
|
uint16 bindOnEquip;
|
||||||
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
struct ItemOptions optionData[MAX_ITEM_OPTIONS];
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
int8 refiningLevel;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct PACKET_CZ_REQ_OPEN_WRITE_MAIL {
|
struct PACKET_CZ_REQ_OPEN_WRITE_MAIL {
|
||||||
@ -2087,10 +2141,16 @@ struct PACKET_ZC_ADD_ITEM_TO_STORE {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -2131,10 +2191,16 @@ struct PACKET_ZC_ADD_ITEM_TO_CART {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -2224,10 +2290,18 @@ struct PACKET_ZC_ADD_EXCHANGE_ITEM {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
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
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -2261,10 +2335,16 @@ struct PACKET_ZC_ITEM_PICKUP_PARTY {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
uint16 location;
|
uint16 location;
|
||||||
uint8 itemType;
|
uint8 itemType;
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
|
struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE {
|
||||||
@ -2463,10 +2543,16 @@ struct PACKET_ZC_PC_PURCHASE_MYITEMLIST_sub {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -2559,7 +2645,9 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
|
|||||||
#endif
|
#endif
|
||||||
uint8 identified;
|
uint8 identified;
|
||||||
uint8 damaged;
|
uint8 damaged;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
@ -2568,6 +2656,10 @@ struct PACKET_ZC_PC_PURCHASE_ITEMLIST_FROMMC_sub {
|
|||||||
#if PACKETVER >= 20160921
|
#if PACKETVER >= 20160921
|
||||||
uint32 location;
|
uint32 location;
|
||||||
uint16 viewSprite;
|
uint16 viewSprite;
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
@ -2780,10 +2872,16 @@ struct PACKET_ZC_SEARCH_STORE_INFO_ACK_sub {
|
|||||||
uint8 itemType;
|
uint8 itemType;
|
||||||
uint32 price;
|
uint32 price;
|
||||||
uint16 amount;
|
uint16 amount;
|
||||||
|
#if !( PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724 )
|
||||||
uint8 refine;
|
uint8 refine;
|
||||||
|
#endif
|
||||||
struct EQUIPSLOTINFO slot;
|
struct EQUIPSLOTINFO slot;
|
||||||
#if PACKETVER >= 20150226
|
#if PACKETVER >= 20150226
|
||||||
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
struct ItemOptions option_data[MAX_ITEM_OPTIONS];
|
||||||
|
#if PACKETVER_MAIN_NUM >= 20200916 || PACKETVER_RE_NUM >= 20200724
|
||||||
|
uint8 refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ void searchstore_clearremote(struct map_session_data* sd)
|
|||||||
* @param card : card in the item
|
* @param card : card in the item
|
||||||
* @param refine : refine of 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;
|
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;
|
ssitem->price = price;
|
||||||
memcpy(ssitem->card, card, sizeof(ssitem->card));
|
memcpy(ssitem->card, card, sizeof(ssitem->card));
|
||||||
ssitem->refine = refine;
|
ssitem->refine = refine;
|
||||||
|
ssitem->enchantgrade = enchantgrade;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ struct s_search_store_info_item {
|
|||||||
unsigned int price;
|
unsigned int price;
|
||||||
t_itemid card[MAX_SLOTS];
|
t_itemid card[MAX_SLOTS];
|
||||||
unsigned char refine;
|
unsigned char refine;
|
||||||
|
uint8 enchantgrade;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct s_search_store_info {
|
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);
|
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);
|
bool searchstore_queryremote(struct map_session_data* sd, uint32 account_id);
|
||||||
void searchstore_clearremote(struct map_session_data* sd);
|
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 */
|
#endif /* SEARCHSTORE_HPP */
|
||||||
|
@ -645,7 +645,7 @@ void storage_guild_log( struct map_session_data* sd, struct item* item, int16 am
|
|||||||
StringBuf buf;
|
StringBuf buf;
|
||||||
StringBuf_Init(&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)
|
for (i = 0; i < MAX_SLOTS; ++i)
|
||||||
StringBuf_Printf(&buf, ", `card%d`", i);
|
StringBuf_Printf(&buf, ", `card%d`", i);
|
||||||
for (i = 0; i < MAX_ITEM_RDM_OPT; ++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_val%d`", i);
|
||||||
StringBuf_Printf(&buf, ", `option_parm%d`", i);
|
StringBuf_Printf(&buf, ", `option_parm%d`", i);
|
||||||
}
|
}
|
||||||
StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%u', '%s', '%u', '%d','%d','%d','%d','%" PRIu64 "','%d'",
|
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);
|
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++)
|
for (i = 0; i < MAX_SLOTS; i++)
|
||||||
StringBuf_Printf(&buf, ",'%u'", item->card[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_Init(&buf);
|
||||||
|
|
||||||
StringBuf_AppendStr(&buf, "SELECT `id`, `time`, `name`, `amount`");
|
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)
|
for (j = 0; j < MAX_SLOTS; ++j)
|
||||||
StringBuf_Printf(&buf, ", `card%d`", j);
|
StringBuf_Printf(&buf, ", `card%d`", j);
|
||||||
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) {
|
||||||
@ -714,12 +714,13 @@ enum e_guild_storage_log storage_guild_log_read_sub( struct map_session_data* sd
|
|||||||
SqlStmt_BindColumn(stmt, 8, SQLDT_UINT, &entry.item.expire_time, 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, 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 )
|
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 ) {
|
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, 12+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, 12+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+2, SQLDT_CHAR, &entry.item.option[j].param, 0, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
log.reserve(max);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user