Skip to content

Commit

Permalink
Fixed refine UI in newer clients
Browse files Browse the repository at this point in the history
  • Loading branch information
Lemongrass3110 committed Jun 4, 2020
1 parent 500bb61 commit 5f73331
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 24 deletions.
43 changes: 24 additions & 19 deletions src/map/clif.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21390,9 +21390,8 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){
int fd = sd->fd;
struct item *item;
struct item_data *id;
uint16 length;
struct refine_materials materials[REFINEUI_MAT_CNT];
uint8 i, material_count;
uint8 material_count;

// Get the item db reference
id = sd->inventory_data[index];
Expand Down Expand Up @@ -21443,21 +21442,25 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){
return;
}

length = 7 + material_count * 7;
uint16 length = sizeof( struct PACKET_ZC_REFINE_ADD_ITEM ) + material_count * sizeof( struct PACKET_ZC_REFINE_ADD_ITEM_SUB );

WFIFOHEAD(fd,length);
WFIFOW(fd,0) = 0x0AA2;
WFIFOW(fd,2) = length;
WFIFOW(fd,4) = index + 2;
WFIFOB(fd,6) = 0; //TODO: required amount of "Blacksmith Blessing"(id: 6635)
// Preallocate the size
WFIFOHEAD( fd, length );

struct PACKET_ZC_REFINE_ADD_ITEM* p = (struct PACKET_ZC_REFINE_ADD_ITEM*)WFIFOP( fd, 0 );

p->packetType = HEADER_ZC_REFINE_ADD_ITEM;
p->packtLength = length;
p->itemIndex = client_index( index );
p->blacksmithBlessing = 0; //TODO: required amount of "Blacksmith Blessing"(id: 6635)

for( i = 0; i < material_count; i++ ){
WFIFOW(fd,7 + i * 7) = materials[i].cost.nameid;
WFIFOB(fd,7 + i * 7 + 2) = materials[i].chance;
WFIFOL(fd,7 + i * 7 + 3) = materials[i].cost.zeny;
for( uint8 i = 0; i < material_count; i++ ){
p->req[i].itemId = client_nameid( materials[i].cost.nameid );
p->req[i].chance = materials[i].chance;
p->req[i].zeny = materials[i].cost.zeny;
}

WFIFOSET(fd,length);
WFIFOSET( fd, p->packtLength );
}

/**
Expand All @@ -21466,15 +21469,15 @@ void clif_refineui_info( struct map_session_data* sd, uint16 index ){
*/
void clif_parse_refineui_add( int fd, struct map_session_data* sd ){
#if PACKETVER >= 20161012
uint16 index = RFIFOW(fd, 2) - 2;
uint16 index = server_index( RFIFOW( fd, 2 ) );

// Check if the refine UI is open
if( !sd->state.refineui_open ){
return;
}

// Check if the index is valid
if( index < 0 || index >= MAX_INVENTORY ){
if( index >= MAX_INVENTORY ){
return;
}

Expand All @@ -21489,9 +21492,11 @@ void clif_parse_refineui_add( int fd, struct map_session_data* sd ){
*/
void clif_parse_refineui_refine( int fd, struct map_session_data* sd ){
#if PACKETVER >= 20161012
uint16 index = RFIFOW( fd, 2 ) - 2;
uint16 material = RFIFOW( fd, 4 );
bool use_blacksmith_blessing = RFIFOB( fd, 6 ) != 0; // TODO: add logic
struct PACKET_CZ_REFINE_ITEM_REQUEST* p = (struct PACKET_CZ_REFINE_ITEM_REQUEST*)RFIFOP( fd, 0 );

uint16 index = server_index( p->index );
uint16 material = p->itemId;
bool use_blacksmith_blessing = p->blacksmithBlessing != 0; // TODO: add logic
struct refine_materials materials[REFINEUI_MAT_CNT];
uint8 i, material_count;
uint16 j;
Expand All @@ -21504,7 +21509,7 @@ void clif_parse_refineui_refine( int fd, struct map_session_data* sd ){
}

// Check if the index is valid
if( index < 0 || index >= MAX_INVENTORY ){
if( index >= MAX_INVENTORY ){
return;
}

Expand Down
10 changes: 5 additions & 5 deletions src/map/clif_packetdb.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2355,11 +2355,11 @@

// 2016-10-12aRagexeRE
#if PACKETVER >= 20161012
packet(0x0AA0,2);
parseable_packet(0x0AA1,4,clif_parse_refineui_add,2);
packet(0x0AA2,-1);
parseable_packet(0x0AA3,7,clif_parse_refineui_refine,2,4,6);
parseable_packet(0x0AA4,2,clif_parse_refineui_close,0);
packet( HEADER_ZC_REFINE_OPEN_WINDOW, sizeof( struct PACKET_ZC_REFINE_OPEN_WINDOW ) );
parseable_packet( HEADER_CZ_REFINE_ADD_ITEM, sizeof( struct PACKET_CZ_REFINE_ADD_ITEM ), clif_parse_refineui_add, 0 );
packet( HEADER_ZC_REFINE_ADD_ITEM, -1 );
parseable_packet( HEADER_CZ_REFINE_ITEM_REQUEST, sizeof( struct PACKET_CZ_REFINE_ITEM_REQUEST ), clif_parse_refineui_refine, 0 );
parseable_packet( HEADER_CZ_REFINE_WINDOW_CLOSE, sizeof( struct PACKET_CZ_REFINE_WINDOW_CLOSE ), clif_parse_refineui_close, 0 );
#endif

// 2016-10-26bRagexeRE
Expand Down

2 comments on commit 5f73331

@gravity-ro
Copy link

@gravity-ro gravity-ro commented on 5f73331 Jul 30, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blacksmith Blessing Not work

I'm using these source:
refineui: cydh#10
fix for client 2020: 5f73331

1896941367_RefineuiBSBlessingnotshowing gif 3629805a14e083e6aa8d7645c0775c3f

@Lemongrass3110
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update your emulator.
And this is not a support section.

Please sign in to comment.