Browse Source

Follow up r16025 minor performance improvement on the already-stupid job name handling of char server. (we're still discussing how to better handle this)

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16030 54d463be-8e91-2dee-dedb-b68131a5f0ec
shennetsind 13 năm trước cách đây
mục cha
commit
c282d3374c
1 tập tin đã thay đổi với 12 bổ sung11 xóa
  1. 12 11
      src/char/inter.c

+ 12 - 11
src/char/inter.c

@@ -67,22 +67,20 @@ struct WisData {
 static DBMap* wis_db = NULL; // int wis_id -> struct WisData*
 static int wis_dellist[WISDELLIST_MAX], wis_delnum;
 
-#define MAX_MSG 1000
-static char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
+#define MAX_JOB_NAMES 106
+static char* msg_table[MAX_JOB_NAMES]; //  messages 550 ~ 655 are job names
 
-//-----------------------------------------------------------
-// Return the message string of the specified number by [Yor]
-//-----------------------------------------------------------
 const char* msg_txt(int msg_number) {
-	if (msg_number >= 0 && msg_number < MAX_MSG &&
+	msg_number -= 550;
+	if (msg_number >= 0 && msg_number < MAX_JOB_NAMES &&
 	    msg_table[msg_number] != NULL && msg_table[msg_number][0] != '\0')
 		return msg_table[msg_number];
 	
-	return "??";
+	return "Unknown";
 }
 
 /*==========================================
- * Read Message Data
+ * Read Message Data -- at char server we only keep job names.
  *------------------------------------------*/
 int msg_config_read(const char* cfgName) {
 	int msg_number;
@@ -96,7 +94,7 @@ int msg_config_read(const char* cfgName) {
 	}
 	
 	if ((--called) == 0)
-		memset(msg_table, 0, sizeof(msg_table[0]) * MAX_MSG);
+		memset(msg_table, 0, sizeof(msg_table[0]) * MAX_JOB_NAMES);
 	
 	while(fgets(line, sizeof(line), fp) ) {
 		if (line[0] == '/' && line[1] == '/')
@@ -108,7 +106,10 @@ int msg_config_read(const char* cfgName) {
 			msg_config_read(w2);
 		else {
 			msg_number = atoi(w1);
-			if (msg_number >= 0 && msg_number < MAX_MSG) {
+			if( msg_number < 550 || msg_number > (550+MAX_JOB_NAMES) )
+				continue;
+			msg_number -= 550;
+			if (msg_number >= 0 && msg_number < MAX_JOB_NAMES) {
 				if (msg_table[msg_number] != NULL)
 					aFree(msg_table[msg_number]);
 				msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
@@ -127,7 +128,7 @@ int msg_config_read(const char* cfgName) {
  *------------------------------------------*/
 void do_final_msg(void) {
 	int i;
-	for (i = 0; i < MAX_MSG; i++)
+	for (i = 0; i < MAX_JOB_NAMES; i++)
 		aFree(msg_table[i]);
 }
 /* from pc.c due to @accinfo. any ideas to replace this crap are more than welcome. */