git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@779 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
amber 2004-12-24 17:08:58 +00:00
parent 095a938fb3
commit 2c64ba96d0
6 changed files with 22 additions and 22 deletions

View File

@ -1,5 +1,6 @@
Date Added
12/24
* Fixed item-dup bug in storage and cart [MouseJstr]
* @skilltree was looking outside of the particular class
of the char to see if they could do a skill [MouseJstr]
* Fixed a calc_skill_tree bug where too many skills were

View File

@ -55,17 +55,14 @@ Assigned: N/A
Progress: 0%
Problem: Item duping bug in storage...
Assigned: N/A
Progress: 0%
Assigned: MouseJstr
Progress: 100%
Let's say you have 200 arrows and 100 Rosiotti arrow, you'll put 100 and 50 in storage
And you should end when you log back in with 100 of each on you and 100 and 50 in storage
Gain 50
Repeat
Lupus: heh i fixid similiar bug in DELITEM script command. i think it's the same bug in other function
so i'm in charge
Problem: ~40+ players connected.. and soon can't re-connect, they can enter password, but never see "select character" screen.
Assigned: N/A
Progress: 0%
@ -150,5 +147,5 @@ Progress: 0%
Problem: When you have UNNAMED Arrows and Named Arrows in the storage and take some arrows then it change amount of other items.
It happens because server doesn't recognize Named and Unnamed Stockable items (Elemental Gems, Iron, Steel, Holy Water, Arrows)
Assigned: N/A
Progress: 0%
Assigned: MouseJstr
Progress: 100%

View File

@ -2476,3 +2476,15 @@ int do_init(int argc, char *argv[]) {
return 0;
}
int compare_item(struct item *a, struct item *b) {
return (
(a->nameid == b->nameid) &&
(a->identify == b->identify) &&
(a->refine == b->refine) &&
(a->attribute == b->attribute) &&
(a->card[0] == b->card[0]) &&
(a->card[1] == b->card[1]) &&
(a->card[2] == b->card[2]) &&
(a->card[3] == b->card[3]));
}

View File

@ -695,6 +695,7 @@ void map_deliddb(struct block_list *bl);
int map_foreachiddb(int (*)(void*,void*,va_list),...);
void map_addnickdb(struct map_session_data *);
struct map_session_data * map_nick2sd(char*);
int compare_item(struct item *a, struct item *b);
// gatŠÖ˜A
int map_getcell(int,int,int);

View File

@ -3213,9 +3213,7 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount)
if(!itemdb_isequip2(data)){
// ? 備品ではないので、?所有品なら個?のみ?化させる
for(i=0;i<MAX_INVENTORY;i++)
if(sd->status.inventory[i].nameid == item_data->nameid &&
sd->status.inventory[i].card[0] == item_data->card[0] && sd->status.inventory[i].card[1] == item_data->card[1] &&
sd->status.inventory[i].card[2] == item_data->card[2] && sd->status.inventory[i].card[3] == item_data->card[3]) {
if(compare_item(&sd->status.inventory[i], item_data)) {
if(sd->status.inventory[i].amount+amount > MAX_AMOUNT)
return 5;
sd->status.inventory[i].amount+=amount;
@ -3450,9 +3448,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
if(!itemdb_isequip2(data)){
// ? 備品ではないので、?所有品なら個?のみ?化させる
for(i=0;i<MAX_CART;i++){
if(sd->status.cart[i].nameid==item_data->nameid &&
sd->status.cart[i].card[0] == item_data->card[0] && sd->status.cart[i].card[1] == item_data->card[1] &&
sd->status.cart[i].card[2] == item_data->card[2] && sd->status.cart[i].card[3] == item_data->card[3]){
if(compare_item(&sd->status.cart[i], item_data)) {
if(sd->status.cart[i].amount+amount > MAX_AMOUNT)
return 1;
sd->status.cart[i].amount+=amount;

View File

@ -144,12 +144,7 @@ int storage_additem(struct map_session_data *sd,struct storage *stor,struct item
if(!itemdb_isequip2(data)){
// 装備品ではないので、既所有品なら個数のみ変化させる
for(i=0;i<MAX_STORAGE;i++){
if( stor->storage[i].nameid == item_data->nameid &&
stor->storage[i].identify == item_data->identify &&
stor->storage[i].refine == item_data->refine &&
stor->storage[i].attribute == item_data->attribute &&
stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&
stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){
if( compare_item (&stor->storage[i], item_data)) {
if(stor->storage[i].amount+amount > MAX_AMOUNT)
return 1;
stor->storage[i].amount+=amount;
@ -434,9 +429,7 @@ int guild_storage_additem(struct map_session_data *sd,struct guild_storage *stor
if(!itemdb_isequip2(data)){
// 装備品ではないので、既所有品なら個数のみ変化させる
for(i=0;i<MAX_GUILD_STORAGE;i++){
if(stor->storage[i].nameid == item_data->nameid &&
stor->storage[i].card[0] == item_data->card[0] && stor->storage[i].card[1] == item_data->card[1] &&
stor->storage[i].card[2] == item_data->card[2] && stor->storage[i].card[3] == item_data->card[3]){
if(compare_item(&stor->storage[i], item_data)) {
if(stor->storage[i].amount+amount > MAX_AMOUNT)
return 1;
stor->storage[i].amount+=amount;