Просмотр исходного кода

- Follow up r17293 more support for 2013
-- speed up clif_maptypeproperty2 assignation and disable noitemconsumption by default
-- Upd clif_dropflooritem for 2013 (Shaktoh)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@17294 54d463be-8e91-2dee-dedb-b68131a5f0ec

glighta 12 лет назад
Родитель
Сommit
b5769e1c67
3 измененных файлов с 41 добавлено и 26 удалено
  1. 2 1
      db/packet_db.txt
  2. 1 1
      src/login/Makefile.in
  3. 38 24
      src/map/clif.c

+ 2 - 1
db/packet_db.txt

@@ -1833,7 +1833,8 @@ packet_ver: 34
 //0x0835,2,searchstoreinfonextpage,0
 //0x0835,2,searchstoreinfonextpage,0
 //0x0838,12,searchstoreinfolistitemclick,2:6:10
 //0x0838,12,searchstoreinfolistitemclick,2:6:10
 0x0447,2
 0x0447,2
-0x99b,8
+0x99b,8 //maptypeproperty2
+0x84b,19 //fallitem4
 
 
 // New cashshop
 // New cashshop
 0x0844,2,cashshopopen,0
 0x0844,2,cashshopopen,0

+ 1 - 1
src/login/Makefile.in

@@ -36,7 +36,7 @@ sql: $(SQL_DEPENDS)
 
 
 clean:
 clean:
 	@echo "	CLEAN	login"
 	@echo "	CLEAN	login"
-	@rm -rf *.o obj_sql ../../login-server@EXEEXT@ ../../login-server_sql@EXEEXT@
+	@rm -rf *.o obj_sql ../../login-server_sql@EXEEXT@
 
 
 help:
 help:
 	@echo "possible targets are 'sql' 'all' 'clean' 'help'"
 	@echo "possible targets are 'sql' 'all' 'clean' 'help'"

+ 38 - 24
src/map/clif.c

@@ -721,28 +721,38 @@ void clif_charselectok(int id, uint8 ok)
 
 
 /// Makes an item appear on the ground.
 /// Makes an item appear on the ground.
 /// 009e <id>.L <name id>.W <identified>.B <x>.W <y>.W <subX>.B <subY>.B <amount>.W (ZC_ITEM_FALL_ENTRY)
 /// 009e <id>.L <name id>.W <identified>.B <x>.W <y>.W <subX>.B <subY>.B <amount>.W (ZC_ITEM_FALL_ENTRY)
-/// 084b (ZC_ITEM_FALL_ENTRY4)
+/// 084b(2013) <id>.L <name id>.W <type>.W <identified>.B <x>.W <y>.W <subX>.B <subY>.B <amount>.W (ZC_ITEM_FALL_ENTRY4)
 void clif_dropflooritem(struct flooritem_data* fitem)
 void clif_dropflooritem(struct flooritem_data* fitem)
 {
 {
+#if PACKETVER >= 20130000
+	uint8 buf[19];
+	uint32 header=0x84b;
+#else
 	uint8 buf[17];
 	uint8 buf[17];
-	int view;
+	uint32 header=0x09b;
+#endif
+	int view, offset=0;
 
 
 	nullpo_retv(fitem);
 	nullpo_retv(fitem);
 
 
 	if (fitem->item_data.nameid <= 0)
 	if (fitem->item_data.nameid <= 0)
 		return;
 		return;
 
 
-	WBUFW(buf, 0) = 0x9e;
-	WBUFL(buf, 2) = fitem->bl.id;
-	WBUFW(buf, 6) = ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) ? view : fitem->item_data.nameid;
-	WBUFB(buf, 8) = fitem->item_data.identify;
-	WBUFW(buf, 9) = fitem->bl.x;
-	WBUFW(buf,11) = fitem->bl.y;
-	WBUFB(buf,13) = fitem->subx;
-	WBUFB(buf,14) = fitem->suby;
-	WBUFW(buf,15) = fitem->item_data.amount;
+	WBUFW(buf, offset+0) = header;
+	WBUFL(buf, offset+2) = fitem->bl.id;
+	WBUFW(buf, offset+6) = ((view = itemdb_viewid(fitem->item_data.nameid)) > 0) ? view : fitem->item_data.nameid;
+#if PACKETVER >= 20130000
+	WBUFW(buf, offset+8) = itemtype(itemdb_type(fitem->item_data.nameid));
+	offset +=2;
+#endif
+	WBUFB(buf, offset+8) = fitem->item_data.identify;
+	WBUFW(buf, offset+9) = fitem->bl.x;
+	WBUFW(buf, offset+11) = fitem->bl.y;
+	WBUFB(buf, offset+13) = fitem->subx;
+	WBUFB(buf, offset+14) = fitem->suby;
+	WBUFW(buf, offset+15) = fitem->item_data.amount;
 
 
-	clif_send(buf, packet_len(0x9e), &fitem->bl, AREA);
+	clif_send(buf, packet_len(header), &fitem->bl, AREA);
 }
 }
 
 
 
 
@@ -5561,19 +5571,19 @@ void clif_maptypeproperty2(struct block_list *bl,enum send_target t) {
 	WBUFW(buf,0)=0x99b; //2
 	WBUFW(buf,0)=0x99b; //2
 	WBUFW(buf,2)=0x28; //2
 	WBUFW(buf,2)=0x28; //2
 
 
-	WBUFB(buf,4) = RBUFB(buf,4)|0x01; //party
-	WBUFB(buf,4) = RBUFB(buf,4)|0x02; //guild
-	WBUFB(buf,4) = RBUFB(buf,4)|((map_flag_gvg2(bl->m))?0x04:0); //siege
-	WBUFB(buf,4) = RBUFB(buf,4)|0x08; //mineffect
-	WBUFB(buf,4) = RBUFB(buf,4)|0x10; //nolockon
-	WBUFB(buf,4) = RBUFB(buf,4)|((map[bl->m].flag.pvp)?0x20:0); //countpk
-	WBUFB(buf,4) = RBUFB(buf,4)|0; //nopartyformation
-	WBUFB(buf,4) = RBUFB(buf,4)|((map[bl->m].flag.battleground)?0x80:0); //battleground
+	WBUFB(buf,4) |= 0x01; //party
+	WBUFB(buf,4) |= 0x02; //guild
+	WBUFB(buf,4) |= ((map_flag_gvg2(bl->m))?0x04:0); //siege
+	WBUFB(buf,4) |= 0x08; //mineffect
+	WBUFB(buf,4) |= 0; //nolockon 0x10
+	WBUFB(buf,4) |= ((map[bl->m].flag.pvp)?0x20:0); //countpk
+	WBUFB(buf,4) |= 0; //nopartyformation 0x40
+	WBUFB(buf,4) |= ((map[bl->m].flag.battleground)?0x80:0); //battleground
 
 
-	WBUFB(buf,5) = RBUFB(buf,5)|0x01; //noitemconsumption
-	WBUFB(buf,5) = RBUFB(buf,5)|0x02; //cart
-	WBUFB(buf,5) = RBUFB(buf,5)|0x04; //summonstarmiracle
-//	WBUFB(buf,5) = RBUFB(buf,5)&0xf8;  //sparebit[0-4]
+	WBUFB(buf,5) |= 0; //noitemconsumption
+	WBUFB(buf,5) |= 0x02; //cart
+	WBUFB(buf,5) |= 0x04; //summonstarmiracle
+//	WBUFB(buf,5) |= RBUFB(buf,5)&0xf8;  //sparebit[0-4]
 
 
 	WBUFW(buf,6) = 0; //sparebit [5-15], + extra[4]
 	WBUFW(buf,6) = 0; //sparebit [5-15], + extra[4]
 
 
@@ -16691,7 +16701,11 @@ static int packetdb_readdb(void)
 	    0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	    0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
 	    0,  0,  0,  0,  0, -1, -1,  3,  2, 66,  5,  2, 12,  6,  0,  0,
 	    0,  0,  0,  0,  0, -1, -1,  3,  2, 66,  5,  2, 12,  6,  0,  0,
 	//#0x0840
 	//#0x0840
+#if PACKETVER < 20130000
 	    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,
+#else
+	    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  19,  0,  0,  0,  0,
+#endif
 	    0,  0,  0,  0,  0,  0, -1, -1, -1, -1,  0,  0,  0,  0,  0,  0,
 	    0,  0,  0,  0,  0,  0, -1, -1, -1, -1,  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,  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,