summaryrefslogtreecommitdiff
path: root/src/map/trade.c
diff options
context:
space:
mode:
authorskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-27 19:32:51 +0000
committerskotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec>2006-11-27 19:32:51 +0000
commit36125b1e1d1a55663e478d22bcaa8ef9c8e213b2 (patch)
tree3d4e98e4e3706a2a1361b1b7e1ec186cdb46e21e /src/map/trade.c
parent62f2d74d8eec9704c7d6c5c221a8b93ab450decf (diff)
downloadhercules-36125b1e1d1a55663e478d22bcaa8ef9c8e213b2.tar.gz
hercules-36125b1e1d1a55663e478d22bcaa8ef9c8e213b2.tar.bz2
hercules-36125b1e1d1a55663e478d22bcaa8ef9c8e213b2.tar.xz
hercules-36125b1e1d1a55663e478d22bcaa8ef9c8e213b2.zip
- Some cleanups on the trade_additem function. When specifying a qty of 0, an ack will be returned to the client so it doesn't gets stuck.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9331 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/trade.c')
-rw-r--r--src/map/trade.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/map/trade.c b/src/map/trade.c
index 78c630a32..02eb454d3 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -294,7 +294,13 @@ void trade_tradeadditem(struct map_session_data *sd, int index, int amount) {
trade_tradecancel(sd);
return;
}
-
+
+ if (amount == 0)
+ { //Why do this.. ~.~ just send an ack, the item won't display on the trade window.
+ clif_tradeitemok(sd, index, 0);
+ return;
+ }
+
if (index == 0)
{ //Adding Zeny
if (amount >= 0 && amount <= sd->status.zeny && // check amount
@@ -302,14 +308,14 @@ void trade_tradeadditem(struct map_session_data *sd, int index, int amount) {
{ //Check Ok
sd->deal.zeny = amount;
clif_tradeadditem(sd, target_sd, 0, amount);
- } else //Cancel Transaction
- clif_tradeitemok(sd, 0, 1); //Send overweight when trying to add too much zeny? Hope they get the idea...
+ } else //Send overweight when trying to add too much zeny? Hope they get the idea...
+ clif_tradeitemok(sd, 0, 1);
return;
}
- //Add an Item
+
index = index -2; //Why the actual index used is -2?
//Item checks...
- if (index < 0 || index > MAX_INVENTORY)
+ if (index < 0 || index >= MAX_INVENTORY)
return;
if (amount < 0 || amount > sd->status.inventory[index].amount)
return;
@@ -332,7 +338,10 @@ void trade_tradeadditem(struct map_session_data *sd, int index, int amount) {
break;
}
if (trade_i >= 10) //No space left
+ {
+ clif_tradeitemok(sd, index+2, 1);
return;
+ }
trade_weight = sd->inventory_data[index]->weight * amount;
if (target_sd->weight + sd->deal.weight + trade_weight > target_sd->max_weight)