Browse Source

Fixes script command rentalcountitem (#7122)

* Fixes #7121.
* Fixes an issue with normal items getting mixed into the rental count.
Thanks to @Cukinaru and @Lemongrass3110!
Aleos 2 years ago
parent
commit
922d309643
1 changed files with 5 additions and 3 deletions
  1. 5 3
      src/map/script.cpp

+ 5 - 3
src/map/script.cpp

@@ -7031,9 +7031,9 @@ static int script_countitem_sub(struct item *items, std::shared_ptr<item_data> i
 		for (int i = 0; i < size; i++) {
 		for (int i = 0; i < size; i++) {
 			item *itm = &items[i];
 			item *itm = &items[i];
 
 
-			if (itm == nullptr || itm->nameid == 0 || itm->amount < 1 || (!rental && itm->expire_time > 0))
+			if (itm == nullptr || itm->nameid == 0 || itm->amount < 1)
 				continue;
 				continue;
-			if (itm->nameid == nameid)
+			if (itm->nameid == nameid && ((rental && itm->expire_time > 0) || (!rental && itm->expire_time == 0)))
 				count += itm->amount;
 				count += itm->amount;
 		}
 		}
 	} else { // For expanded functions
 	} else { // For expanded functions
@@ -7065,10 +7065,12 @@ static int script_countitem_sub(struct item *items, std::shared_ptr<item_data> i
 		for (int i = 0; i < size; i++) {
 		for (int i = 0; i < size; i++) {
 			item *itm = &items[i];
 			item *itm = &items[i];
 
 
-			if (itm == nullptr || itm->nameid == 0 || itm->amount < 1 || (!rental && items[i].expire_time > 0))
+			if (itm == nullptr || itm->nameid == 0 || itm->amount < 1)
 				continue;
 				continue;
 			if (itm->nameid != it.nameid || itm->identify != it.identify || itm->refine != it.refine || itm->attribute != it.attribute)
 			if (itm->nameid != it.nameid || itm->identify != it.identify || itm->refine != it.refine || itm->attribute != it.attribute)
 				continue;
 				continue;
+			if ((!rental && itm->expire_time > 0) || (rental && itm->expire_time == 0))
+				continue;
 			if (memcmp(it.card, itm->card, sizeof(it.card)))
 			if (memcmp(it.card, itm->card, sizeof(it.card)))
 				continue;
 				continue;
 			if (random_option) {
 			if (random_option) {