Bladeren bron

Fixed bugreport:6380 Snap/Body Relocation animation, super ultra special thanks to emong.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16541 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 12 jaren geleden
bovenliggende
commit
496deaaec4
4 gewijzigde bestanden met toevoegingen van 27 en 8 verwijderingen
  1. 1 0
      db/packet_db.txt
  2. 17 4
      src/map/clif.c
  3. 2 0
      src/map/clif.h
  4. 7 4
      src/map/skill.c

+ 1 - 0
db/packet_db.txt

@@ -1645,6 +1645,7 @@ packet_ver: 27
 0x088a,6,getcharnamerequest,2
 0x0838,6,solvecharname,2
 0x0439,8,useitem,2:4
+0x08d2,10
 
 // 2011-11-02aRagexe
 packet_ver: 28

+ 17 - 4
src/map/clif.c

@@ -16096,7 +16096,7 @@ int clif_status_load_notick(struct block_list *bl,int type,int flag,int val1, in
 	WBUFL(buf,17) = val2;
 	WBUFL(buf,21) = val3;
 
-	clif_send(buf,packet_len(WBUFW(buf,0)),bl,AREA);
+	clif_send(buf,packet_len(0x043f),bl,AREA);
 	return 0;
 }
 //Notifies FD of ID's type
@@ -16174,14 +16174,16 @@ void clif_talisman(struct map_session_data *sd,short type)
 void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
 #if PACKETVER >= 20111122
 	int index;
-		
+	
+	/* can't move while dead. */
 	if(pc_isdead(sd)) {
 		return;
 	}
+	
 	index = RFIFOW(fd,2)-2; 
 	if (index < 0 || index >= MAX_INVENTORY)
 		return;
-	if (sd->status.inventory[index].favorite && sd->status.inventory[index].favorite == 1)
+	if ( sd->status.inventory[index].favorite )
 			sd->status.inventory[index].favorite = 0;
 		else
 			sd->status.inventory[index].favorite = 1;
@@ -16203,6 +16205,17 @@ void clif_favorite_item(struct map_session_data* sd, unsigned short index) {
 	WFIFOSET(fd,packet_len(0x908));
 }
 
+void clif_snap( struct block_list *bl, short x, short y ) {
+	unsigned char buf[10];
+
+	WBUFW(buf,0) = 0x8d2;
+	WBUFL(buf,2) = bl->id;
+	WBUFW(buf,6) = x;
+	WBUFW(buf,8) = y;
+	
+	clif_send(buf,packet_len(0x8d2),bl,AREA);
+}
+
 /*==========================================
  * Main client packet processing function
  *------------------------------------------*/
@@ -16590,7 +16603,7 @@ static int packetdb_readdb(void)
 		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	//#0x08C0
 		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,
-		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
+		0,  0, 10,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 		0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	//#0x0900

+ 2 - 0
src/map/clif.h

@@ -738,6 +738,8 @@ void clif_elemental_updatestatus(struct map_session_data *sd, int type);
 
 void clif_talisman(struct map_session_data *sd, short type);
 
+void clif_snap( struct block_list *bl, short x, short y );
+
 /**
  * Color Table
  **/

+ 7 - 4
src/map/skill.c

@@ -9543,14 +9543,17 @@ int skill_castend_pos2(struct block_list* src, int x, int y, int skillid, int sk
 
 	case MO_BODYRELOCATION:
 		if (unit_movepos(src, x, y, 1, 1)) {
+#if PACKETVER >= 20111005
+			clif_snap(src, src->x, src->y);
+#else
 			clif_skill_poseffect(src,skillid,skilllv,src->x,src->y,tick);
-//			clif_slide(src, src->x, src->y); //Poseffect is the one that makes the char snap on the client...
-			if (sd) skill_blockpc_start (sd, MO_EXTREMITYFIST, 2000);
+#endif
+			if (sd)
+				skill_blockpc_start (sd, MO_EXTREMITYFIST, 2000);
 		}
 		break;
 	case NJ_SHADOWJUMP:
-		if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground )
-		{	//You don't move on GVG grounds.
+		if( !map_flag_gvg(src->m) && !map[src->m].flag.battleground ) { //You don't move on GVG grounds.
 			unit_movepos(src, x, y, 1, 0);
 			clif_slide(src,x,y);
 		}