From 767b08018e035e1d04e7d83ea923a146626761f0 Mon Sep 17 00:00:00 2001 From: ultramage Date: Sun, 2 Mar 2008 17:36:59 +0000 Subject: Fixed wrong mvp format string for @mobinfo (would not show big mvp exp rewards correctly). Added data length check to chrif_authok(), to detect a mismatch between charserver's and mapserver's mmo_charstatus structure size. Corrected some typos in the cash shop code. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12277 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/atcommand.c | 2 +- src/map/chrif.c | 8 ++++++++ src/map/clif.c | 2 +- src/map/npc.c | 15 ++++++++------- src/map/pc.c | 8 ++++---- src/map/pc.h | 2 +- 6 files changed, 23 insertions(+), 14 deletions(-) (limited to 'src/map') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index e32f288ce..f0c91da5c 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -6962,7 +6962,7 @@ int atcommand_mobinfo(const int fd, struct map_session_data* sd, const char* com clif_displaymessage(fd, atcmd_output); // mvp if (mob->mexp) { - sprintf(atcmd_output, " MVP Bonus EXP:%d %02.02f%%", mob->mexp, (float)mob->mexpper / 100); + sprintf(atcmd_output, " MVP Bonus EXP:%u %02.02f%%", mob->mexp, (float)mob->mexpper / 100); clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, " MVP Items:"); j = 0; diff --git a/src/map/chrif.c b/src/map/chrif.c index 969157acd..db59e4097 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -543,6 +543,14 @@ void chrif_authok(int fd) struct mmo_charstatus *status = (struct mmo_charstatus *)RFIFOP(fd, 20); int char_id = status->char_id; TBL_PC* sd; + + //Check if both servers agree on the struct's size + if( RFIFOW(fd,2) - 20 != sizeof(struct mmo_charstatus) ) + { + ShowError("chrif_authok: Data size mismatch! %d != %d\n", RFIFOW(fd,2) - 20, sizeof(struct mmo_charstatus)); + return; + } + //Check if we don't already have player data in our server //Causes problems if the currently connected player tries to quit or this data belongs to an already connected player which is trying to re-auth. if ((sd = map_id2sd(account_id)) != NULL) diff --git a/src/map/clif.c b/src/map/clif.c index 3378d785c..3c84b9df6 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11723,7 +11723,7 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd) { struct item_data* id = itemdb_search(nd->u.shop.shop_item[i].nameid); WFIFOL(fd,12+i*11) = nd->u.shop.shop_item[i].value; - WFIFOL(fd,16+i*11) = nd->u.shop.shop_item[i].value; // Discount Prize? Maybe a Discount item + WFIFOL(fd,16+i*11) = nd->u.shop.shop_item[i].value; // Discount Price? Maybe a Discount item WFIFOB(fd,20+i*11) = itemtype(id->type); WFIFOW(fd,21+i*11) = ( id->view_id > 0 ) ? id->view_id : id->nameid; } diff --git a/src/map/npc.c b/src/map/npc.c index 37b8d99b8..b429b2ed0 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -110,6 +110,7 @@ int npc_enable_sub(struct block_list *bl, va_list ap) //aFree(name); return 0; } + int npc_enable(const char* name, int flag) { struct npc_data* nd = strdb_get(npcname_db, name); @@ -1022,7 +1023,7 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po { struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid); struct item_data *item; - int i, prize, w; + int i, price, w; if( !nd || nd->subtype != CASHSHOP ) return 1; @@ -1060,16 +1061,16 @@ int npc_cashshop_buy(struct map_session_data *sd, int nameid, int amount, int po if( w + sd->weight > sd->max_weight ) return 3; - prize = nd->u.shop.shop_item[i].value * amount; - if( points > prize ) - points = prize; + price = nd->u.shop.shop_item[i].value * amount; + if( points > price ) + points = price; - if( sd->cashPoints < prize - points ) + if( sd->cashPoints < price - points ) return 6; if( sd->kafraPoints < points ) return 6; - pc_paycash(sd, prize, points); + pc_paycash(sd, price, points); if( !pet_create_egg(sd, nameid) ) { @@ -1673,7 +1674,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const if( value < 0 ) { if( type == SHOP ) value = id->value_buy; - else value = 0; // Cashshop don't have a "buy prize" in the item_db + else value = 0; // Cashshop doesn't have a "buy price" in the item_db } if( type == SHOP && value*0.75 < id->value_sell*1.24 ) diff --git a/src/map/pc.c b/src/map/pc.c index 3f1128e2a..489ff18d9 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2702,10 +2702,10 @@ int pc_payzeny(struct map_session_data *sd,int zeny) * Cash Shop *------------------------------------------*/ -void pc_paycash(struct map_session_data *sd, int prize, int points) +void pc_paycash(struct map_session_data *sd, int price, int points) { char output[128]; - int cash = prize - points; + int cash = price - points; nullpo_retv(sd); if( cash > 0 ) @@ -5500,9 +5500,9 @@ int pc_jobchange(struct map_session_data *sd,int job, int upper) return 1; //Nothing to change. // check if we are changing from 1st to 2nd job if (b_class&JOBL_2) { - if (!(sd->class_&JOBL_2)) + if (!(sd->class_&JOBL_2)) sd->change_level = sd->status.job_level; - else if (!sd->change_level) + else if (!sd->change_level) sd->change_level = 40; //Assume 40? pc_setglobalreg (sd, "jobchange_level", sd->change_level); } diff --git a/src/map/pc.h b/src/map/pc.h index d754034b1..da032deed 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -178,7 +178,7 @@ int pc_getzeny(struct map_session_data*,int); int pc_delitem(struct map_session_data*,int,int,int); // Special Shop System -void pc_paycash(struct map_session_data *sd, int prize, int points); +void pc_paycash(struct map_session_data *sd, int price, int points); void pc_getcash(struct map_session_data *sd, int cash, int points); int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amount); -- cgit v1.2.3-70-g09d2