From 09e322e394a4a40b67858f100b03897220e80048 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Thu, 9 Feb 2012 00:12:13 +0000 Subject: Fixed bug that allowed a auction bid to fail (and generate zeny loss) if made while no char server is present. Added @showzeny tracking to pc_payzeny so that it's messages are more consistent when zeny is earned/reduced. credit to gepard for his concept both from bugreport:1138 git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15550 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/clif.c | 8 ++++---- src/map/pc.c | 13 +++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) (limited to 'src/map') diff --git a/src/map/clif.c b/src/map/clif.c index 37c424a82..ba7d346b8 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -14150,8 +14150,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd) unsigned int auction_id = RFIFOL(fd,2); int bid = RFIFOL(fd,6); - if( !pc_can_give_items(pc_isGM(sd)) ) - { //They aren't supposed to give zeny [Inkfish] + if( !pc_can_give_items(pc_isGM(sd)) ) { //They aren't supposed to give zeny [Inkfish] clif_displaymessage(sd->fd, msg_txt(246)); return; } @@ -14160,8 +14159,9 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd) clif_Auction_message(fd, 0); // You have failed to bid into the auction else if( bid > sd->status.zeny ) clif_Auction_message(fd, 8); // You do not have enough zeny - else - { + else if ( CheckForCharServer() ) // char server is down (bugreport:1138) + clif_Auction_message(fd, 0); // You have failed to bid into the auction + else { pc_payzeny(sd, bid); intif_Auction_bid(sd->status.char_id, sd->status.name, auction_id, bid); } diff --git a/src/map/pc.c b/src/map/pc.c index 50b24af99..0d0ebe4bf 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -3373,7 +3373,7 @@ int pc_inventoryblank(struct map_session_data *sd) } /*========================================== - * お金を?う + * attempts to remove zeny from player (sd) *------------------------------------------*/ int pc_payzeny(struct map_session_data *sd,int zeny) { @@ -3391,6 +3391,12 @@ int pc_payzeny(struct map_session_data *sd,int zeny) sd->status.zeny -= zeny; clif_updatestatus(sd,SP_ZENY); + if( zeny > 0 && sd->state.showzeny ) { + char output[255]; + sprintf(output, "Removed %dz.", zeny); + clif_disp_onlyself(sd,output,strlen(output)); + } + return 0; } /*========================================== @@ -3482,7 +3488,7 @@ void pc_getcash(struct map_session_data *sd, int cash, int points) } /*========================================== - * お金を得る + * Attempts to give zeny to player (sd) *------------------------------------------*/ int pc_getzeny(struct map_session_data *sd,int zeny) { @@ -3500,8 +3506,7 @@ int pc_getzeny(struct map_session_data *sd,int zeny) sd->status.zeny += zeny; clif_updatestatus(sd,SP_ZENY); - if( zeny > 0 && sd->state.showzeny ) - { + if( zeny > 0 && sd->state.showzeny ) { char output[255]; sprintf(output, "Gained %dz.", zeny); clif_disp_onlyself(sd,output,strlen(output)); -- cgit v1.2.3-60-g2f50