From 581475bc6416790765c498aa3d611f6868ffb64a Mon Sep 17 00:00:00 2001 From: amber Date: Sun, 14 Nov 2004 16:18:26 +0000 Subject: Fixed some file types git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/athena@172 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/vending.c | 340 +++++++++++++++++++++++++++--------------------------- 1 file changed, 170 insertions(+), 170 deletions(-) (limited to 'src/map/vending.c') diff --git a/src/map/vending.c b/src/map/vending.c index 703b1b9b9..0bf0b884e 100644 --- a/src/map/vending.c +++ b/src/map/vending.c @@ -1,170 +1,170 @@ -// $Id: vending.c,v 1.2 2004/09/25 05:32:19 MouseJstr Exp $ -#include -#include - -#include "clif.h" -#include "itemdb.h" -#include "map.h" -#include "vending.h" -#include "pc.h" -#include "skill.h" -#include "battle.h" -#include "nullpo.h" -#include "log.h" - -/*========================================== - * 露店閉鎖 - *------------------------------------------ -*/ -void vending_closevending(struct map_session_data *sd) -{ - - nullpo_retv(sd); - - sd->vender_id=0; - clif_closevendingboard(&sd->bl,0); -} - -/*========================================== - * 露店アイテムリスト要求 - *------------------------------------------ - */ -void vending_vendinglistreq(struct map_session_data *sd,int id) -{ - struct map_session_data *vsd; - - nullpo_retv(sd); - - if( (vsd=map_id2sd(id)) == NULL ) - return; - if(vsd->vender_id==0) - return; - clif_vendinglist(sd,id,vsd->vending); -} - -/*========================================== - * 露店アイテム購入 - *------------------------------------------ - */ -void vending_purchasereq(struct map_session_data *sd,int len,int id,unsigned char *p) -{ - int i,j,w,z,new=0,blank,vend_list[12]; - short amount,index; - struct map_session_data *vsd=map_id2sd(id); - - nullpo_retv(sd); - - blank=pc_inventoryblank(sd); - - if(vsd==NULL) - return; - if(vsd->vender_id==0) - return; - if(vsd->vender_id==sd->bl.id) - return; - for(i=0,w=z=0;8+4*ivend_num;j++) - if(0vending[j].amount && amount<=vsd->vending[j].amount && vsd->vending[j].index==index) - break; -*/ -//ADD_start - for(j=0;j < vsd->vend_num;j++) { - if(0 < vsd->vending[j].amount && vsd->vending[j].index==index) { - if(amount > vsd->vending[j].amount || amount <= 0) { - clif_buyvending(sd,index,vsd->vending[j].amount,4); - return; - } - if(amount <= vsd->vending[j].amount) break; - } - } -//ADD_end - if(j==vsd->vend_num) - return; // 売り切れ - vend_list[i]=j; - z+=vsd->vending[j].value*amount; - if(z > sd->status.zeny){ - clif_buyvending(sd,index,amount,1); - return; // zeny不足 - } - w+=itemdb_weight(vsd->status.cart[index].nameid)*amount; - if(w+sd->weight > sd->max_weight){ - clif_buyvending(sd,index,amount,2); - return; // 重量超過 - } - switch(pc_checkadditem(sd,vsd->status.cart[index].nameid,amount)){ - case ADDITEM_EXIST: - break; - case ADDITEM_NEW: - new++; - if(new > blank) - return; // 種類数超過 - break; - case ADDITEM_OVERAMOUNT: - return; // アイテム数超過 - } - } - if(z < 0 || z > MAX_ZENY){ //Zeny Bug Fixed by Darkchild - clif_tradecancelled(sd); - clif_tradecancelled(vsd); - return; - } - pc_payzeny(sd,z); - pc_getzeny(vsd,z); - for(i=0;8+4*istatus.cart[index],amount); - - #ifndef TXT_ONLY - if(log_config.vend > 0) - log_vend(vsd,sd,index,amount,z); - #endif - - vsd->vending[vend_list[i]].amount-=amount; - pc_cart_delitem(vsd,index,amount,0); - clif_vendingreport(vsd,index,amount); - } -} - -/*========================================== - * 露店開設 - *------------------------------------------ - */ -void vending_openvending(struct map_session_data *sd,int len,char *message,int flag,unsigned char *p) -{ - int i; - - nullpo_retv(sd); - - if(!pc_checkskill(sd,MC_VENDING) || !pc_iscarton(sd)) { // cart skill and cart check [Valaris] - clif_skill_fail(sd,MC_VENDING,0,0); - return; - } - - if(flag){ - for(i=0;85+8*ivending[i].index=*(short*)(p+8*i)-2; - sd->vending[i].amount=*(short*)(p+2+8*i); - sd->vending[i].value=*(int*)(p+4+8*i); - if(sd->vending[i].value>battle_config.vending_max_value)sd->vending[i].value=battle_config.vending_max_value; - // カート内のアイテム数と販売するアイテム数に相違があったら中止 - if(pc_cartitem_amount(sd,sd->vending[i].index,sd->vending[i].amount)<0 || sd->vending[i].value < 0) { // fixes by Valaris and fritz - clif_skill_fail(sd,MC_VENDING,0,0); - return; - } - } - sd->vender_id=sd->bl.id; - sd->vend_num=i; - strcpy(sd->message,message); - if(clif_openvending(sd,sd->vender_id,sd->vending) > 0) - clif_showvendingboard(&sd->bl,message,0); - else - sd->vender_id=0; - } -} - +// $Id: vending.c,v 1.2 2004/09/25 05:32:19 MouseJstr Exp $ +#include +#include + +#include "clif.h" +#include "itemdb.h" +#include "map.h" +#include "vending.h" +#include "pc.h" +#include "skill.h" +#include "battle.h" +#include "nullpo.h" +#include "log.h" + +/*========================================== + * 露店閉鎖 + *------------------------------------------ +*/ +void vending_closevending(struct map_session_data *sd) +{ + + nullpo_retv(sd); + + sd->vender_id=0; + clif_closevendingboard(&sd->bl,0); +} + +/*========================================== + * 露店アイテムリスト要求 + *------------------------------------------ + */ +void vending_vendinglistreq(struct map_session_data *sd,int id) +{ + struct map_session_data *vsd; + + nullpo_retv(sd); + + if( (vsd=map_id2sd(id)) == NULL ) + return; + if(vsd->vender_id==0) + return; + clif_vendinglist(sd,id,vsd->vending); +} + +/*========================================== + * 露店アイテム購入 + *------------------------------------------ + */ +void vending_purchasereq(struct map_session_data *sd,int len,int id,unsigned char *p) +{ + int i,j,w,z,new=0,blank,vend_list[12]; + short amount,index; + struct map_session_data *vsd=map_id2sd(id); + + nullpo_retv(sd); + + blank=pc_inventoryblank(sd); + + if(vsd==NULL) + return; + if(vsd->vender_id==0) + return; + if(vsd->vender_id==sd->bl.id) + return; + for(i=0,w=z=0;8+4*ivend_num;j++) + if(0vending[j].amount && amount<=vsd->vending[j].amount && vsd->vending[j].index==index) + break; +*/ +//ADD_start + for(j=0;j < vsd->vend_num;j++) { + if(0 < vsd->vending[j].amount && vsd->vending[j].index==index) { + if(amount > vsd->vending[j].amount || amount <= 0) { + clif_buyvending(sd,index,vsd->vending[j].amount,4); + return; + } + if(amount <= vsd->vending[j].amount) break; + } + } +//ADD_end + if(j==vsd->vend_num) + return; // 売り切れ + vend_list[i]=j; + z+=vsd->vending[j].value*amount; + if(z > sd->status.zeny){ + clif_buyvending(sd,index,amount,1); + return; // zeny不足 + } + w+=itemdb_weight(vsd->status.cart[index].nameid)*amount; + if(w+sd->weight > sd->max_weight){ + clif_buyvending(sd,index,amount,2); + return; // 重量超過 + } + switch(pc_checkadditem(sd,vsd->status.cart[index].nameid,amount)){ + case ADDITEM_EXIST: + break; + case ADDITEM_NEW: + new++; + if(new > blank) + return; // 種類数超過 + break; + case ADDITEM_OVERAMOUNT: + return; // アイテム数超過 + } + } + if(z < 0 || z > MAX_ZENY){ //Zeny Bug Fixed by Darkchild + clif_tradecancelled(sd); + clif_tradecancelled(vsd); + return; + } + pc_payzeny(sd,z); + pc_getzeny(vsd,z); + for(i=0;8+4*istatus.cart[index],amount); + + #ifndef TXT_ONLY + if(log_config.vend > 0) + log_vend(vsd,sd,index,amount,z); + #endif + + vsd->vending[vend_list[i]].amount-=amount; + pc_cart_delitem(vsd,index,amount,0); + clif_vendingreport(vsd,index,amount); + } +} + +/*========================================== + * 露店開設 + *------------------------------------------ + */ +void vending_openvending(struct map_session_data *sd,int len,char *message,int flag,unsigned char *p) +{ + int i; + + nullpo_retv(sd); + + if(!pc_checkskill(sd,MC_VENDING) || !pc_iscarton(sd)) { // cart skill and cart check [Valaris] + clif_skill_fail(sd,MC_VENDING,0,0); + return; + } + + if(flag){ + for(i=0;85+8*ivending[i].index=*(short*)(p+8*i)-2; + sd->vending[i].amount=*(short*)(p+2+8*i); + sd->vending[i].value=*(int*)(p+4+8*i); + if(sd->vending[i].value>battle_config.vending_max_value)sd->vending[i].value=battle_config.vending_max_value; + // カート内のアイテム数と販売するアイテム数に相違があったら中止 + if(pc_cartitem_amount(sd,sd->vending[i].index,sd->vending[i].amount)<0 || sd->vending[i].value < 0) { // fixes by Valaris and fritz + clif_skill_fail(sd,MC_VENDING,0,0); + return; + } + } + sd->vender_id=sd->bl.id; + sd->vend_num=i; + strcpy(sd->message,message); + if(clif_openvending(sd,sd->vender_id,sd->vending) > 0) + clif_showvendingboard(&sd->bl,message,0); + else + sd->vender_id=0; + } +} + -- cgit v1.2.3-60-g2f50