Browse Source

vending bugfix for bugreport:947

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15188 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 năm trước cách đây
mục cha
commit
536aa821ec
3 tập tin đã thay đổi với 7 bổ sung4 xóa
  1. 1 0
      src/map/pc.h
  2. 3 1
      src/map/skill.c
  3. 3 3
      src/map/vending.c

+ 1 - 0
src/map/pc.h

@@ -141,6 +141,7 @@ struct map_session_data {
 		unsigned short autolootid; // [Zephyrus]
 		unsigned short autobonus; //flag to indicate if an autobonus is activated. [Inkfish]
 		struct guild *gmaster_flag;
+		unsigned int prevend : 1;//used to flag wheather you've spent 40sp to open the vending or not.
 	} state;
 	struct {
 		unsigned char no_weapon_damage, no_magic_damage, no_misc_damage;

+ 3 - 1
src/map/skill.c

@@ -5178,8 +5178,10 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		{	//Prevent vending of GMs with unnecessary Level to trade/drop. [Skotlex]
 			if ( !pc_can_give_items(pc_isGM(sd)) )
 				clif_skill_fail(sd,skillid,0,0);
-			else
+			else {
+				sd->state.prevend = 1;
 				clif_openvendingreq(sd,2+skilllv);
+			}
 		}
 		break;
 

+ 3 - 3
src/map/vending.c

@@ -254,8 +254,8 @@ void vending_openvending(struct map_session_data* sd, const char* message, bool
 	if( !flag ) // cancelled
 		return; // nothing to do
 
-	if (pc_istrading(sd))
-		return; // can't have 2 shops at once
+	if ( pc_isdead(sd) || pc_istrading(sd))
+		return; // can't open vendings lying dead || can't have 2 shops at once
 
 	vending_skill_lvl = pc_checkskill(sd, MC_VENDING);
 	// skill level and cart check
@@ -306,7 +306,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, bool
 		clif_skill_fail(sd, MC_VENDING, 0, 0); // custom reply packet
 		return;
 	}
-
+	sd->state.prevend = 0;
 	sd->state.vending = true;
 	sd->vender_id = vending_getuid();
 	sd->vend_num = i;