浏览代码

Rewrite inter server messaging

git-svn-id: https://svn.code.sf.net/p/rathena/svn/branches/stable@740 54d463be-8e91-2dee-dedb-b68131a5f0ec
amber 20 年之前
父节点
当前提交
d091c2e147
共有 11 个文件被更改,包括 35 次插入34 次删除
  1. 10 0
      Changelog.txt
  2. 3 3
      src/char/int_guild.c
  3. 3 3
      src/char/int_party.c
  4. 3 3
      src/char/inter.c
  5. 3 3
      src/char_sql/int_guild.c
  6. 3 3
      src/char_sql/int_party.c
  7. 3 3
      src/char_sql/inter.c
  8. 0 16
      src/map/atcommand.c
  9. 2 0
      src/map/guild.c
  10. 4 0
      src/map/intif.c
  11. 1 0
      src/map/party.c

+ 10 - 0
Changelog.txt

@@ -1,5 +1,15 @@
 Date	Added
 12/22
+        * Rearranged how guild messages, gm messages, and party messages
+          are moved back and forth between the inter server and the
+          map server.. eliminating unneeded round trips to eliminate
+          lag on a loaded char-server.  [MouseJstr]
+
+            src\char_sql\int_party.c src\char_sql\int_guild.c
+            src\char_sql\inter.c src\map\atcommand.c src\map\guild.c
+            src\map\intif.c src\map\party.c src\char\int_guild.c
+            src\char\inter.c src\char\int_party.c 
+
 	* Reverted npc.c back to before jA 1081. This fixes warp portals missing and other npc bugs [Ajarn]
 	* Added conditional SHOW_DEBUG_MSG for displaying ShowDebug()'s output, it was missing before [MC Cameri]
 	* Added #zeny, removed @charzeny [MC Cameri]

+ 3 - 3
src/char/int_guild.c

@@ -786,7 +786,7 @@ int mapif_guild_broken(int guild_id, int flag) {
 }
 
 // ギルド内発言
-int mapif_guild_message(int guild_id, int account_id, char *mes, int len) {
+int mapif_guild_message(int guild_id, int account_id, char *mes, int len, int sfd) {
 	unsigned char buf[len+12];
 
 	WBUFW(buf,0) = 0x3837;
@@ -794,7 +794,7 @@ int mapif_guild_message(int guild_id, int account_id, char *mes, int len) {
 	WBUFL(buf,4) = guild_id;
 	WBUFL(buf,8) = account_id;
 	memcpy(WBUFP(buf,12), mes, len);
-	mapif_sendall(buf, len + 12);
+	mapif_sendallwos(sfd, buf, len + 12);
 
 	return 0;
 }
@@ -1152,7 +1152,7 @@ int mapif_parse_BreakGuild(int fd, int guild_id) {
 
 // ギルドメッセージ送信
 int mapif_parse_GuildMessage(int fd, int guild_id, int account_id, char *mes, int len) {
-	return mapif_guild_message(guild_id, account_id, mes, len);
+	return mapif_guild_message(guild_id, account_id, mes, len, fd);
 }
 
 // ギルド基本データ変更要求

+ 3 - 3
src/char/int_party.c

@@ -356,7 +356,7 @@ int mapif_party_broken(int party_id, int flag) {
 }
 
 // パーティ内発言
-int mapif_party_message(int party_id, int account_id, char *mes, int len) {
+int mapif_party_message(int party_id, int account_id, char *mes, int len, int sfd) {
 	unsigned char buf[len+12];
 
 	WBUFW(buf,0) = 0x3827;
@@ -364,7 +364,7 @@ int mapif_party_message(int party_id, int account_id, char *mes, int len) {
 	WBUFL(buf,4) = party_id;
 	WBUFL(buf,8) = account_id;
 	memcpy(WBUFP(buf,12), mes, len);
-	mapif_sendall(buf,len + 12);
+	mapif_sendallwos(sfd, buf,len + 12);
 
 	return 0;
 }
@@ -558,7 +558,7 @@ int mapif_parse_BreakParty(int fd, int party_id) {
 
 // パーティメッセージ送信
 int mapif_parse_PartyMessage(int fd, int party_id, int account_id, char *mes, int len) {
-	return mapif_party_message(party_id, account_id, mes, len);
+	return mapif_party_message(party_id, account_id, mes, len, fd);
 }
 // パーティチェック要求
 int mapif_parse_PartyCheck(int fd, int party_id, int account_id, char *nick) {

+ 3 - 3
src/char/inter.c

@@ -272,13 +272,13 @@ int inter_mapif_init(int fd) {
 // sended packets to map-server
 
 // GMメッセージ送信
-int mapif_GMmessage(unsigned char *mes, int len) {
+int mapif_GMmessage(unsigned char *mes, int len, int sfd) {
 	unsigned char buf[len];
 
 	WBUFW(buf,0) = 0x3800;
 	WBUFW(buf,2) = len;
 	memcpy(WBUFP(buf,4), mes, len - 4);
-	mapif_sendall(buf, len);
+	mapif_sendallwos(sfd, buf, len);
 //	printf("inter server: GM:%d %s\n", len, mes);
 
 	return 0;
@@ -383,7 +383,7 @@ int check_ttl_wisdata() {
 
 // GMメッセージ送信
 int mapif_parse_GMmessage(int fd) {
-	mapif_GMmessage(RFIFOP(fd,4), RFIFOW(fd,2));
+	mapif_GMmessage(RFIFOP(fd,4), RFIFOW(fd,2), fd);
 
 	return 0;
 }

+ 3 - 3
src/char_sql/int_guild.c

@@ -902,7 +902,7 @@ int mapif_guild_broken(int guild_id,int flag)
 }
 
 // ギルド内発言
-int mapif_guild_message(int guild_id,int account_id,char *mes,int len)
+int mapif_guild_message(int guild_id,int account_id,char *mes,int len, int sfd)
 {
 	unsigned char buf[512];
 	WBUFW(buf,0)=0x3837;
@@ -910,7 +910,7 @@ int mapif_guild_message(int guild_id,int account_id,char *mes,int len)
 	WBUFL(buf,4)=guild_id;
 	WBUFL(buf,8)=account_id;
 	memcpy(WBUFP(buf,12),mes,len);
-	mapif_sendall(buf,len+12);
+	mapif_sendallwos(sfd, buf,len+12);
 	return 0;
 }
 
@@ -1329,7 +1329,7 @@ int mapif_parse_BreakGuild(int fd,int guild_id)
 // ギルドメッセージ送信
 int mapif_parse_GuildMessage(int fd,int guild_id,int account_id,char *mes,int len)
 {
-	return mapif_guild_message(guild_id,account_id,mes,len);
+	return mapif_guild_message(guild_id,account_id,mes,len, fd);
 }
 // ギルド基本データ変更要求
 int mapif_parse_GuildBasicInfoChange(int fd,int guild_id,

+ 3 - 3
src/char_sql/int_party.c

@@ -435,7 +435,7 @@ int mapif_party_broken(int party_id,int flag)
 	return 0;
 }
 // パーティ内発言
-int mapif_party_message(int party_id,int account_id,char *mes,int len)
+int mapif_party_message(int party_id,int account_id,char *mes,int len, int sfd)
 {
 	unsigned char buf[512];
 	WBUFW(buf,0)=0x3827;
@@ -443,7 +443,7 @@ int mapif_party_message(int party_id,int account_id,char *mes,int len)
 	WBUFL(buf,4)=party_id;
 	WBUFL(buf,8)=account_id;
 	memcpy(WBUFP(buf,12),mes,len);
-	mapif_sendall(buf,len+12);
+	mapif_sendallwos(sfd, buf,len+12);
 	return 0;
 }
 
@@ -711,7 +711,7 @@ int mapif_parse_BreakParty(int fd,int party_id)
 // パーティメッセージ送信
 int mapif_parse_PartyMessage(int fd,int party_id,int account_id,char *mes,int len)
 {
-	return mapif_party_message(party_id,account_id,mes,len);
+	return mapif_party_message(party_id,account_id,mes,len, fd);
 }
 // パーティチェック要求
 int mapif_parse_PartyCheck(int fd,int party_id,int account_id,char *nick)

+ 3 - 3
src/char_sql/inter.c

@@ -306,13 +306,13 @@ int inter_mapif_init(int fd) {
 //--------------------------------------------------------
 
 // GM message sending
-int mapif_GMmessage(unsigned char *mes, int len) {
+int mapif_GMmessage(unsigned char *mes, int len, int sfd) {
 	unsigned char buf[len];
 
 	WBUFW(buf, 0) = 0x3800;
 	WBUFW(buf, 2) = len;
 	memcpy(WBUFP(buf, 4), mes, len-4);
-	mapif_sendall(buf, len);
+	mapif_sendallwos(sfd, buf, len);
 	printf("\033[1;34m inter server: GM[len:%d] - '%s' \033[0m\n", len, mes);
 	return 0;
 }
@@ -414,7 +414,7 @@ int check_ttl_wisdata() {
 // GM message sending
 int mapif_parse_GMmessage(int fd)
 {
-	mapif_GMmessage(RFIFOP(fd, 4), RFIFOW(fd, 2));
+	mapif_GMmessage(RFIFOP(fd, 4), RFIFOW(fd, 2), fd);
 	return 0;
 }
 

+ 0 - 16
src/map/atcommand.c

@@ -136,11 +136,7 @@ ACMD_FUNC(agitend);
 ACMD_FUNC(reloaditemdb);
 ACMD_FUNC(reloadmobdb);
 ACMD_FUNC(reloadskilldb);
-#ifndef TXT_ONLY
-ACMD_FUNC(rehash);// by Fr3DBr
-#else /* TXT_ONLY */
 ACMD_FUNC(reloadscript);
-#endif /* TXT_ONLY */
 ACMD_FUNC(reloadgmdb); // by Yor
 ACMD_FUNC(mapexit);
 ACMD_FUNC(idsearch);
@@ -369,11 +365,7 @@ static AtCommandInfo atcommand_info[] = {
 	{ AtCommand_ReloadItemDB,		"@reloaditemdb",	99, atcommand_reloaditemdb }, // admin command
 	{ AtCommand_ReloadMobDB,		"@reloadmobdb",		99, atcommand_reloadmobdb }, // admin command
 	{ AtCommand_ReloadSkillDB,		"@reloadskilldb",	99, atcommand_reloadskilldb }, // admin command
-#ifndef TXT_ONLY
-	{ AtCommand_Rehash,				"@rehash",			99, atcommand_rehash }, // admin command
-#else /* TXT_ONLY */
 	{ AtCommand_ReloadScript,		"@reloadscript",	99, atcommand_reloadscript }, // admin command
-#endif /* TXT_ONLY */
 	{ AtCommand_ReloadGMDB,			"@reloadgmdb",		99, atcommand_reloadgmdb }, // admin command
 	{ AtCommand_CharModel,			"@charmodel",		50, atcommand_charmodel },
 	{ AtCommand_CharSKPoint,		"@charskpoint",		60, atcommand_charskpoint },
@@ -812,7 +804,6 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap) {
 	return 0;
 }
 
-#ifndef TXT_ONLY
 static int atkillnpc_sub(struct block_list *bl, va_list ap)
 {
         int flag = va_arg(ap,int);
@@ -842,7 +833,6 @@ void rehash( const int fd, struct map_session_data* sd )
         }
 }
 
-#endif /* not TXT_ONLY */
 /*==========================================
  * Read Message Data
  *------------------------------------------
@@ -5590,23 +5580,17 @@ int atcommand_reloadskilldb(
  *
  *------------------------------------------
  */
-#ifndef TXT_ONLY
-int atcommand_rehash(
-#else /* TXT_ONLY */
 int atcommand_reloadscript(
-#endif /* TXT_ONLY */
 	const int fd, struct map_session_data* sd,
 	const char* command, const char* message)
 {
 	nullpo_retr(-1, sd);
-#ifndef TXT_ONLY
 	atcommand_broadcast( fd, sd, "@broadcast", "eAthena SQL Server is Rehashing..." );
 	atcommand_broadcast( fd, sd, "@broadcast", "You will feel a bit of lag at this point !" );
 	
         rehash( fd, sd );
 
 	atcommand_broadcast( fd, sd, "@broadcast", "Reloading NPCs..." );
-#endif /* not TXT_ONLY */
 	do_init_npc();
 	do_init_script();
 

+ 2 - 0
src/map/guild.c

@@ -802,6 +802,8 @@ int guild_send_message(struct map_session_data *sd,char *mes,int len)
 	if(sd->status.guild_id==0)
 		return 0;
 	intif_guild_message(sd->status.guild_id,sd->status.account_id,mes,len);
+	guild_recv_message(sd->status.guild_id,sd->status.account_id,mes,len);
+
 	return 0;
 }
 // ƒMƒ‹ƒh‰ï˜bŽó�M

+ 4 - 0
src/map/intif.c

@@ -130,6 +130,9 @@ int intif_GMmessage(char* mes,int len,int flag)
 	memcpy(WFIFOP(inter_fd,lp), mes, len);
 	WFIFOSET(inter_fd, WFIFOW(inter_fd,2));
 
+        // Send to the local players
+        clif_GMmessage(NULL, mes, len, 0);
+
 	return 0;
 }
 
@@ -482,6 +485,7 @@ int intif_guild_message(int guild_id,int account_id,char *mes,int len)
 	WFIFOL(inter_fd,8)=account_id;
 	memcpy(WFIFOP(inter_fd,12),mes,len);
 	WFIFOSET(inter_fd,len+12);
+
 	return 0;
 }
 // ギルド競合チェック要求

+ 1 - 0
src/map/party.c

@@ -481,6 +481,7 @@ int party_send_message(struct map_session_data *sd,char *mes,int len)
 	if(sd->status.party_id==0)
 		return 0;
 	intif_party_message(sd->status.party_id,sd->status.account_id,mes,len);
+        party_recv_message(sd->status.party_id,sd->status.account_id,mes,len);
 	return 0;
 }