Переглянути джерело

Cleaned up pc_setinventorydata (#9114)

Fixed a problem when increasing MAX_INVENTORY over 255

Thanks to @LadyNanuia
Lemongrass3110 2 місяців тому
батько
коміт
7e28517b7a
4 змінених файлів з 11 додано та 11 видалено
  1. 1 1
      src/map/intif.cpp
  2. 1 1
      src/map/itemdb.cpp
  3. 8 8
      src/map/pc.cpp
  4. 1 1
      src/map/pc.hpp

+ 1 - 1
src/map/intif.cpp

@@ -3482,7 +3482,7 @@ static bool intif_parse_StorageReceived(int32 fd)
 #ifdef BOUND_ITEMS
 			int32 j, idxlist[MAX_INVENTORY];
 #endif
-			pc_setinventorydata(sd);
+			pc_setinventorydata( *sd );
 			pc_setequipindex(sd);
 			pc_check_expiration(sd);
 			pc_check_available_item(sd, ITMCHK_INVENTORY);

+ 1 - 1
src/map/itemdb.cpp

@@ -4914,7 +4914,7 @@ void itemdb_reload(void) {
 	for( sd = (map_session_data*)mapit_first(iter); mapit_exists(iter); sd = (map_session_data*)mapit_next(iter) ) {
 		memset(sd->item_delay, 0, sizeof(sd->item_delay));  // reset item delays
 		sd->combos.clear(); // clear combo bonuses
-		pc_setinventorydata(sd);
+		pc_setinventorydata( *sd );
 		pc_check_available_item(sd, ITMCHK_ALL); // Check for invalid(ated) items.
 		pc_load_combo(sd); // Check to see if new combos are available
 		status_calc_pc(sd, SCO_FORCE); // 

+ 8 - 8
src/map/pc.cpp

@@ -1427,16 +1427,16 @@ int32 pc_equippoint(map_session_data *sd,int32 n){
 /**
  * Fill inventory_data with struct *item_data through inventory (fill with struct *item)
  * @param sd : player session
- * @return 0 sucess, 1:invalid sd
  */
-void pc_setinventorydata(map_session_data *sd)
-{
-	uint8 i;
-	nullpo_retv(sd);
+void pc_setinventorydata( map_session_data& sd ){
+	for( size_t i = 0; i < MAX_INVENTORY; i++ ){
+		t_itemid id = sd.inventory.u.items_inventory[i].nameid;
 
-	for(i = 0; i < MAX_INVENTORY; i++) {
-		t_itemid id = sd->inventory.u.items_inventory[i].nameid;
-		sd->inventory_data[i] = id?itemdb_search(id):nullptr;
+		if( id != 0 ){
+			sd.inventory_data[i] = itemdb_search( id );
+		}else{
+			sd.inventory_data[i] = nullptr;
+		}
 	}
 }
 

+ 1 - 1
src/map/pc.hpp

@@ -1406,7 +1406,7 @@ void pc_setequipindex(map_session_data *sd);
 uint8 pc_isequip(map_session_data *sd,int32 n);
 int32 pc_equippoint(map_session_data *sd,int32 n);
 int32 pc_equippoint_sub(map_session_data *sd, struct item_data* id);
-void pc_setinventorydata(map_session_data *sd);
+void pc_setinventorydata( map_session_data& sd );
 
 int32 pc_get_skillcooldown(map_session_data *sd, uint16 skill_id, uint16 skill_lv);
 uint8 pc_checkskill(map_session_data *sd,uint16 skill_id);