summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshennetsind <ind@henn.et>2015-02-23 14:24:36 -0300
committershennetsind <ind@henn.et>2015-02-23 14:24:36 -0300
commit330e31cc71ece055908acb1eb967b4009ebc9c46 (patch)
tree17636c66a28d452c01f77df2728f37287abbbeea
parent47ff8ed7fa7603974a6f5e41b5290e5e24916317 (diff)
downloadhercules-330e31cc71ece055908acb1eb967b4009ebc9c46.tar.gz
hercules-330e31cc71ece055908acb1eb967b4009ebc9c46.tar.bz2
hercules-330e31cc71ece055908acb1eb967b4009ebc9c46.tar.xz
hercules-330e31cc71ece055908acb1eb967b4009ebc9c46.zip
Hercules Ultimate Localization Design
Servers can now run on any number of languages, without editing npc files. Designed by Haruna and Ind http://hercules.ws/board/topic/8687-hercules-ultimate-localization-design/ Signed-off-by: shennetsind <ind@henn.et>
-rw-r--r--conf/map-server.conf4
-rw-r--r--db/translations.conf20
-rw-r--r--src/map/atcommand.c2070
-rw-r--r--src/map/atcommand.h14
-rw-r--r--src/map/buyingstore.c14
-rw-r--r--src/map/channel.c6
-rw-r--r--src/map/chat.c6
-rw-r--r--src/map/chrif.c24
-rw-r--r--src/map/clif.c76
-rw-r--r--src/map/duel.c16
-rw-r--r--src/map/guild.c8
-rw-r--r--src/map/homunculus.c2
-rw-r--r--src/map/intif.c2
-rw-r--r--src/map/map.c22
-rw-r--r--src/map/map.h2
-rw-r--r--src/map/npc.c28
-rw-r--r--src/map/party.c10
-rw-r--r--src/map/pc.c32
-rw-r--r--src/map/pc.h2
-rw-r--r--src/map/pet.c4
-rw-r--r--src/map/script.c618
-rw-r--r--src/map/script.h52
-rw-r--r--src/map/skill.c6
-rw-r--r--src/map/storage.c12
-rw-r--r--src/map/trade.c10
-rw-r--r--src/map/vending.c6
26 files changed, 1937 insertions, 1129 deletions
diff --git a/conf/map-server.conf b/conf/map-server.conf
index a3afde66c..7f37a05da 100644
--- a/conf/map-server.conf
+++ b/conf/map-server.conf
@@ -104,6 +104,10 @@ minsave_time: 100
// these off.
save_settings: 511
+//When employing more than one language (see db/translations.conf),
+//this setting is used as a fallback
+default_language: English
+
// When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands.
help_txt: conf/help.txt
help2_txt: conf/help2.txt
diff --git a/db/translations.conf b/db/translations.conf
new file mode 100644
index 000000000..3b16a8c23
--- /dev/null
+++ b/db/translations.conf
@@ -0,0 +1,20 @@
+//====================================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//=
+//= http://hercules.ws/board/
+//================= More Information =================
+//= http://hercules.ws/board/topic/8687-hercules-ultimate-localization-design/
+//====================================================
+// Translations generated with —-generate-translations
+// should be pointed to here
+//====================================================
+
+translations: (
+ //"path/to/my/Language.po",
+ //"db/Spanish.po", //(Example)
+) \ No newline at end of file
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index a6e4d7265..560848c5b 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -74,13 +74,34 @@ struct atcmd_binding_data* get_atcommandbind_byname(const char* name) {
return ( i < atcommand->binding_count ) ? atcommand->binding[i] : NULL;
}
+const char* atcommand_msgsd(struct map_session_data *sd, int msg_number) {
+ if( !(msg_number >= 0 && msg_number < MAX_MSG) )
+ return "??";
+ if( !sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number] )
+ return atcommand->msg_table[0][msg_number];
+ return atcommand->msg_table[sd->lang_id][msg_number];
+}
+
+const char* atcommand_msgfd(int fd, int msg_number) {
+ struct map_session_data *sd = session_isValid(fd) ? session[fd]->session_data : NULL;
+ if( !(msg_number >= 0 && msg_number < MAX_MSG) )
+ return "??";
+ if( !sd || sd->lang_id >= atcommand->max_message_table || !atcommand->msg_table[sd->lang_id][msg_number] )
+ return atcommand->msg_table[0][msg_number];
+ return atcommand->msg_table[sd->lang_id][msg_number];
+}
+
//-----------------------------------------------------------
// Return the message string of the specified number by [Yor]
//-----------------------------------------------------------
const char* atcommand_msg(int msg_number) {
- if (msg_number >= 0 && msg_number < MAX_MSG &&
- atcommand->msg_table[msg_number] != NULL && atcommand->msg_table[msg_number][0] != '\0')
- return atcommand->msg_table[msg_number];
+ if (msg_number >= 0 && msg_number < MAX_MSG) {
+ if(atcommand->msg_table[map->default_lang_id][msg_number] != NULL && atcommand->msg_table[map->default_lang_id][msg_number][0] != '\0')
+ return atcommand->msg_table[map->default_lang_id][msg_number];
+
+ if(atcommand->msg_table[0][msg_number] != NULL && atcommand->msg_table[0][msg_number][0] != '\0')
+ return atcommand->msg_table[0][msg_number];
+ }
return "??";
}
@@ -102,9 +123,9 @@ bool msg_config_read(const char *cfg_name, bool allow_override) {
ShowError("Messages file not found: %s\n", cfg_name);
return false;
}
-
- if ((--called) == 0)
- memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table[0]) * MAX_MSG);
+
+ if( !atcommand->max_message_table )
+ atcommand->expand_message_table();
while(fgets(line, sizeof(line), fp)) {
if (line[0] == '/' && line[1] == '/')
@@ -117,22 +138,37 @@ bool msg_config_read(const char *cfg_name, bool allow_override) {
} else {
msg_number = atoi(w1);
if (msg_number >= 0 && msg_number < MAX_MSG) {
- if (atcommand->msg_table[msg_number] != NULL) {
+ if (atcommand->msg_table[0][msg_number] != NULL) {
if (!allow_override) {
ShowError("Duplicate message: ID '%d' was already used for '%s'. Message '%s' will be ignored.\n",
- msg_number, w2, atcommand->msg_table[msg_number]);
+ msg_number, w2, atcommand->msg_table[0][msg_number]);
continue;
}
- aFree(atcommand->msg_table[msg_number]);
+ aFree(atcommand->msg_table[0][msg_number]);
}
/* this could easily become consecutive memory like get_str() and save the malloc overhead for over 1k calls [Ind] */
- atcommand->msg_table[msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
- strcpy(atcommand->msg_table[msg_number],w2);
+ atcommand->msg_table[0][msg_number] = (char *)aMalloc((strlen(w2) + 1)*sizeof (char));
+ strcpy(atcommand->msg_table[0][msg_number],w2);
}
}
}
fclose(fp);
+
+ if( ++called == 1 ) { //Original
+ if( script->lang_export_fp ) {
+ int i;
+ for(i = 0; i < MAX_MSG;i++) {
+ if( atcommand->msg_table[0][i] != NULL ) {
+ fprintf(script->lang_export_fp, "msgctxt \"messages.conf\"\n"
+ "msgid \"%s\"\n"
+ "msgstr \"\"\n",
+ atcommand->msg_table[0][i]
+ );
+ }
+ }
+ }
+ }
return true;
}
@@ -140,11 +176,19 @@ bool msg_config_read(const char *cfg_name, bool allow_override) {
/*==========================================
* Cleanup Message Data
*------------------------------------------*/
-void do_final_msg(void)
-{
- int i;
- for (i = 0; i < MAX_MSG; i++)
+void do_final_msg(void) {
+ int i, j;
+
+ for(i = 0; i < atcommand->max_message_table; i++) {
+ for (j = 0; j < MAX_MSG; j++) {
+ if( atcommand->msg_table[i][j] )
+ aFree(atcommand->msg_table[i][j]);
+ }
aFree(atcommand->msg_table[i]);
+ }
+
+ if( atcommand->msg_table )
+ aFree(atcommand->msg_table);
}
/**
@@ -168,10 +212,10 @@ ACMD(send)
if(!message || !*message ||
!((sscanf(message, "len %x", &type)==1 && (len=1))
|| sscanf(message, "%x", &type)==1) ) {
- clif->message(fd, msg_txt(900)); // Usage:
- clif->message(fd, msg_txt(901)); // @send len <packet hex number>
- clif->message(fd, msg_txt(902)); // @send <packet hex number> {<value>}*
- clif->message(fd, msg_txt(903)); // Value: <type=B(default),W,L><number> or S<length>"<string>"
+ clif->message(fd, msg_fd(fd,900)); // Usage:
+ clif->message(fd, msg_fd(fd,901)); // @send len <packet hex number>
+ clif->message(fd, msg_fd(fd,902)); // @send <packet hex number> {<value>}*
+ clif->message(fd, msg_fd(fd,903)); // Value: <type=B(default),W,L><number> or S<length>"<string>"
return false;
}
@@ -204,7 +248,7 @@ ACMD(send)
int off = 2;
if (len) {
// show packet length
- sprintf(atcmd_output, msg_txt(904), type, packet_db[type].len); // Packet 0x%x length: %d
+ sprintf(atcmd_output, msg_fd(fd,904), type, packet_db[type].len); // Packet 0x%x length: %d
clif->message(fd, atcmd_output);
return true;
}
@@ -212,7 +256,7 @@ ACMD(send)
len=packet_db[type].len;
if (len == 0) {
// unknown packet - ERROR
- sprintf(atcmd_output, msg_txt(905), type); // Unknown packet: 0x%x
+ sprintf(atcmd_output, msg_fd(fd,905), type); // Unknown packet: 0x%x
clif->message(fd, atcmd_output);
return false;
} else if (len == -1) {
@@ -261,7 +305,7 @@ ACMD(send)
while(*message != '"')
{// find start of string
if(*message == 0 || ISSPACE(*message)){
- PARSE_ERROR(msg_txt(906),message); // Not a string:
+ PARSE_ERROR(msg_fd(fd,906),message); // Not a string:
return false;
}
++message;
@@ -291,7 +335,7 @@ ACMD(send)
++message;
CHECK_EOS(message);
if(!ISXDIGIT(*message)){
- PARSE_ERROR(msg_txt(907),message); // Not a hexadecimal digit:
+ PARSE_ERROR(msg_fd(fd,907),message); // Not a hexadecimal digit:
return false;
}
num=(ISDIGIT(*message)?*message-'0':TOLOWER(*message)-'a'+10);
@@ -354,7 +398,7 @@ ACMD(send)
}
} else
{// unknown
- PARSE_ERROR(msg_txt(908),message); // Unknown type of value in:
+ PARSE_ERROR(msg_fd(fd,908),message); // Unknown type of value in:
return false;
}
SKIP_VALUE(message);
@@ -369,10 +413,10 @@ ACMD(send)
WFIFOSET(sd->fd,len);
}
} else {
- clif->message(fd, msg_txt(259)); // Invalid packet
+ clif->message(fd, msg_fd(fd,259)); // Invalid packet
return false;
}
- sprintf (atcmd_output, msg_txt(258), type, type); // Sent packet 0x%x (%d)
+ sprintf (atcmd_output, msg_fd(fd,258), type, type); // Sent packet 0x%x (%d)
clif->message(fd, atcmd_output);
return true;
#undef PARSE_ERROR
@@ -395,7 +439,7 @@ ACMD(mapmove) {
if (!message || !*message ||
(sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 &&
sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) {
- clif->message(fd, msg_txt(909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>).
+ clif->message(fd, msg_fd(fd,909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>).
return false;
}
@@ -404,35 +448,35 @@ ACMD(mapmove) {
m = map->mapindex2mapid(map_index);
if (!map_index || m < 0) { // m < 0 means on different server or that map is disabled! [Kevin]
- clif->message(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_fd(fd,1)); // Map not found.
return false;
}
if( sd->bl.m == m && sd->bl.x == x && sd->bl.y == y ) {
- clif->message(fd, msg_txt(253)); // You already are at your destination!
+ clif->message(fd, msg_fd(fd,253)); // You already are at your destination!
return false;
}
if ((x || y) && map->getcell(m, x, y, CELL_CHKNOPASS) && pc_get_group_level(sd) < battle_config.gm_ignore_warpable_area) {
//This is to prevent the pc->setpos call from printing an error.
- clif->message(fd, msg_txt(2));
+ clif->message(fd, msg_fd(fd,2));
if (!map->search_freecell(NULL, m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
if (map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(247));
+ clif->message(fd, msg_fd(fd,247));
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(248));
+ clif->message(fd, msg_fd(fd,248));
return false;
}
if (pc->setpos(sd, map_index, x, y, CLR_TELEPORT) != 0) {
- clif->message(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_fd(fd,1)); // Map not found.
return false;
}
- clif->message(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_fd(fd,0)); // Warped.
return true;
}
@@ -445,7 +489,7 @@ ACMD(where) {
memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(910)); // Please enter a player name (usage: @where <char name>).
+ clif->message(fd, msg_fd(fd,910)); // Please enter a player name (usage: @where <char name>).
return false;
}
@@ -454,7 +498,7 @@ ACMD(where) {
strncmp(pl_sd->status.name, atcmd_player_name, NAME_LENGTH) != 0 ||
(pc_has_permission(pl_sd, PC_PERM_HIDE_SESSION) && pc_get_group_level(pl_sd) > pc_get_group_level(sd) && !pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID))
) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
@@ -471,37 +515,37 @@ ACMD(jumpto) {
struct map_session_data *pl_sd = NULL;
if (!message || !*message) {
- clif->message(fd, msg_txt(911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>).
+ clif->message(fd, msg_fd(fd,911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>).
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map.
return false;
}
if( pc_isdead(sd) ) {
- clif->message(fd, msg_txt(864)); // "You cannot use this command when dead."
+ clif->message(fd, msg_fd(fd,864)); // "You cannot use this command when dead."
return false;
}
if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if (pl_sd->bl.m >= 0 && map->list[pl_sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(247)); // You are not authorized to warp to this map.
+ clif->message(fd, msg_fd(fd,247)); // You are not authorized to warp to this map.
return false;
}
if( pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y ) {
- clif->message(fd, msg_txt(253)); // You already are at your destination!
+ clif->message(fd, msg_fd(fd,253)); // You already are at your destination!
return false;
}
pc->setpos(sd, pl_sd->mapindex, pl_sd->bl.x, pl_sd->bl.y, CLR_TELEPORT);
- sprintf(atcmd_output, msg_txt(4), pl_sd->status.name); // Jumped to %s
+ sprintf(atcmd_output, msg_fd(fd,4), pl_sd->status.name); // Jumped to %s
clif->message(fd, atcmd_output);
return true;
@@ -519,29 +563,29 @@ ACMD(jump)
sscanf(message, "%hd %hd", &x, &y);
if (map->list[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map.
return false;
}
if( pc_isdead(sd) ) {
- clif->message(fd, msg_txt(864)); // "You cannot use this command when dead."
+ clif->message(fd, msg_fd(fd,864)); // "You cannot use this command when dead."
return false;
}
if ((x || y) && map->getcell(sd->bl.m, x, y, CELL_CHKNOPASS)) {
//This is to prevent the pc->setpos call from printing an error.
- clif->message(fd, msg_txt(2));
+ clif->message(fd, msg_fd(fd,2));
if (!map->search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
if( x && y && sd->bl.x == x && sd->bl.y == y ) {
- clif->message(fd, msg_txt(253)); // You already are at your destination!
+ clif->message(fd, msg_fd(fd,253)); // You already are at your destination!
return false;
}
pc->setpos(sd, sd->mapindex, x, y, CLR_TELEPORT);
- sprintf(atcmd_output, msg_txt(5), sd->bl.x, sd->bl.y); // Jumped to %d %d
+ sprintf(atcmd_output, msg_fd(fd,5), sd->bl.x, sd->bl.y); // Jumped to %d %d
clif->message(fd, atcmd_output);
return true;
}
@@ -589,33 +633,33 @@ ACMD(who) {
continue;
switch (display_type) {
case 2: {
- StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s "
+ StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s "
if (pc_get_group_id(pl_sd) > 0) // Player title, if exists
- StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) "
- StrBuf->Printf(&buf, msg_txt(347), pl_sd->status.base_level, pl_sd->status.job_level,
+ StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) "
+ StrBuf->Printf(&buf, msg_fd(fd,347), pl_sd->status.base_level, pl_sd->status.job_level,
pc->job_name(pl_sd->status.class_)); // "| Lv:%d/%d | Job: %s"
break;
}
case 3: {
if (pc_has_permission(sd, PC_PERM_WHO_DISPLAY_AID))
- StrBuf->Printf(&buf, msg_txt(912), pl_sd->status.char_id, pl_sd->status.account_id); // "(CID:%d/AID:%d) "
- StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s "
+ StrBuf->Printf(&buf, msg_fd(fd,912), pl_sd->status.char_id, pl_sd->status.account_id); // "(CID:%d/AID:%d) "
+ StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s "
if (pc_get_group_id(pl_sd) > 0) // Player title, if exists
- StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) "
- StrBuf->Printf(&buf, msg_txt(348), mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); // "| Location: %s %d %d"
+ StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) "
+ StrBuf->Printf(&buf, msg_fd(fd,348), mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y); // "| Location: %s %d %d"
break;
}
default: {
struct party_data *p = party->search(pl_sd->status.party_id);
struct guild *g = pl_sd->guild;
- StrBuf->Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s "
+ StrBuf->Printf(&buf, msg_fd(fd,343), pl_sd->status.name); // "Name: %s "
if (pc_get_group_id(pl_sd) > 0) // Player title, if exists
- StrBuf->Printf(&buf, msg_txt(344), pcg->get_name(pl_sd->group)); // "(%s) "
+ StrBuf->Printf(&buf, msg_fd(fd,344), pcg->get_name(pl_sd->group)); // "(%s) "
if (p != NULL)
- StrBuf->Printf(&buf, msg_txt(345), p->party.name); // " | Party: '%s'"
+ StrBuf->Printf(&buf, msg_fd(fd,345), p->party.name); // " | Party: '%s'"
if (g != NULL)
- StrBuf->Printf(&buf, msg_txt(346), g->name); // " | Guild: '%s'"
+ StrBuf->Printf(&buf, msg_fd(fd,346), g->name); // " | Guild: '%s'"
break;
}
}
@@ -628,18 +672,18 @@ ACMD(who) {
if (map_id < 0) {
if (count == 0)
- StrBuf->AppendStr(&buf, msg_txt(28)); // No player found.
+ StrBuf->AppendStr(&buf, msg_fd(fd,28)); // No player found.
else if (count == 1)
- StrBuf->AppendStr(&buf, msg_txt(29)); // 1 player found.
+ StrBuf->AppendStr(&buf, msg_fd(fd,29)); // 1 player found.
else
- StrBuf->Printf(&buf, msg_txt(30), count); // %d players found.
+ StrBuf->Printf(&buf, msg_fd(fd,30), count); // %d players found.
} else {
if (count == 0)
- StrBuf->Printf(&buf, msg_txt(54), map->list[map_id].name); // No player found in map '%s'.
+ StrBuf->Printf(&buf, msg_fd(fd,54), map->list[map_id].name); // No player found in map '%s'.
else if (count == 1)
- StrBuf->Printf(&buf, msg_txt(55), map->list[map_id].name); // 1 player found in map '%s'.
+ StrBuf->Printf(&buf, msg_fd(fd,55), map->list[map_id].name); // 1 player found in map '%s'.
else
- StrBuf->Printf(&buf, msg_txt(56), count, map->list[map_id].name); // %d players found in map '%s'.
+ StrBuf->Printf(&buf, msg_fd(fd,56), count, map->list[map_id].name); // %d players found in map '%s'.
}
clif->message(fd, StrBuf->Value(&buf));
StrBuf->Destroy(&buf);
@@ -689,18 +733,18 @@ ACMD(whogm)
if (pl_level > level) {
if (pc_isinvisible(pl_sd))
continue;
- sprintf(atcmd_output, msg_txt(913), pl_sd->status.name); // Name: %s (GM)
+ sprintf(atcmd_output, msg_fd(fd,913), pl_sd->status.name); // Name: %s (GM)
clif->message(fd, atcmd_output);
count++;
continue;
}
- sprintf(atcmd_output, msg_txt(914), // Name: %s (GM:%d) | Location: %s %d %d
+ sprintf(atcmd_output, msg_fd(fd,914), // Name: %s (GM:%d) | Location: %s %d %d
pl_sd->status.name, pl_level,
mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(915), // BLvl: %d | Job: %s (Lvl: %d)
+ sprintf(atcmd_output, msg_fd(fd,915), // BLvl: %d | Job: %s (Lvl: %d)
pl_sd->status.base_level,
pc->job_name(pl_sd->status.class_), pl_sd->status.job_level);
clif->message(fd, atcmd_output);
@@ -708,8 +752,8 @@ ACMD(whogm)
p = party->search(pl_sd->status.party_id);
g = pl_sd->guild;
- sprintf(atcmd_output,msg_txt(916), // Party: '%s' | Guild: '%s'
- p?p->party.name:msg_txt(917), g?g->name:msg_txt(917)); // None.
+ sprintf(atcmd_output,msg_fd(fd,916), // Party: '%s' | Guild: '%s'
+ p?p->party.name:msg_fd(fd,917), g?g->name:msg_fd(fd,917)); // None.
clif->message(fd, atcmd_output);
count++;
@@ -717,11 +761,11 @@ ACMD(whogm)
mapit->free(iter);
if (count == 0)
- clif->message(fd, msg_txt(150)); // No GM found.
+ clif->message(fd, msg_fd(fd,150)); // No GM found.
else if (count == 1)
- clif->message(fd, msg_txt(151)); // 1 GM found.
+ clif->message(fd, msg_fd(fd,151)); // 1 GM found.
else {
- sprintf(atcmd_output, msg_txt(152), count); // %d GMs found.
+ sprintf(atcmd_output, msg_fd(fd,152), count); // %d GMs found.
clif->message(fd, atcmd_output);
}
@@ -739,7 +783,7 @@ ACMD(save)
chrif->save(sd,0);
- clif->message(fd, msg_txt(6)); // Your save point has been changed.
+ clif->message(fd, msg_fd(fd,6)); // Your save point has been changed.
return true;
}
@@ -752,16 +796,16 @@ ACMD(load) {
m = map->mapindex2mapid(sd->status.save_point.map);
if (m >= 0 && map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map.
+ clif->message(fd, msg_fd(fd,249)); // You are not authorized to warp to your save map.
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_fd(fd,248)); // You are not authorized to warp from your current map.
return false;
}
pc->setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT);
- clif->message(fd, msg_txt(7)); // Warping to save point..
+ clif->message(fd, msg_fd(fd,7)); // Warping to save point..
return true;
}
@@ -776,7 +820,7 @@ ACMD(speed)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &speed) < 1) {
- sprintf(atcmd_output, msg_txt(918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,918), MIN_WALK_SPEED, MAX_WALK_SPEED); // Please enter a speed value (usage: @speed <%d-%d>).
clif->message(fd, atcmd_output);
return false;
}
@@ -790,9 +834,9 @@ ACMD(speed)
if( sd->base_status.speed != DEFAULT_WALK_SPEED ) {
sd->state.permanent_speed = 1; // Set lock when set to non-default speed.
- clif->message(fd, msg_txt(8)); // Speed changed.
+ clif->message(fd, msg_fd(fd,8)); // Speed changed.
} else
- clif->message(fd, msg_txt(172)); //Speed returned to normal.
+ clif->message(fd, msg_fd(fd,172)); //Speed returned to normal.
status_calc_bl(&sd->bl, SCB_SPEED);
@@ -808,11 +852,11 @@ ACMD(storage)
return false;
if (storage->open(sd) == 1) { //Already open.
- clif->message(fd, msg_txt(250));
+ clif->message(fd, msg_fd(fd,250));
return false;
}
- clif->message(fd, msg_txt(919)); // Storage opened.
+ clif->message(fd, msg_fd(fd,919)); // Storage opened.
return true;
}
@@ -824,7 +868,7 @@ ACMD(storage)
ACMD(guildstorage)
{
if (!sd->status.guild_id) {
- clif->message(fd, msg_txt(252));
+ clif->message(fd, msg_fd(fd,252));
return false;
}
@@ -832,21 +876,21 @@ ACMD(guildstorage)
return false;
if (sd->state.storage_flag == 1) {
- clif->message(fd, msg_txt(250));
+ clif->message(fd, msg_fd(fd,250));
return false;
}
if (sd->state.storage_flag == 2) {
- clif->message(fd, msg_txt(251));
+ clif->message(fd, msg_fd(fd,251));
return false;
}
if( gstorage->open(sd) ) {
- clif->message(fd, msg_txt(1201)); // Your guild's storage has already been opened by another member, try again later.
+ clif->message(fd, msg_fd(fd,1201)); // Your guild's storage has already been opened by another member, try again later.
return false;
}
- clif->message(fd, msg_txt(920)); // Guild storage opened.
+ clif->message(fd, msg_fd(fd,920)); // Guild storage opened.
return true;
}
@@ -865,7 +909,7 @@ ACMD(option)
text = atcommand_help_string( info );
// notify the user of the requirement to enter an option
- clif->message(fd, msg_txt(921)); // Please enter at least one option.
+ clif->message(fd, msg_fd(fd,921)); // Please enter at least one option.
if( text ) {// send the help text associated with this command
clif->messageln( fd, text );
@@ -878,7 +922,7 @@ ACMD(option)
sd->sc.opt2 = param2;
pc->setoption(sd, param3);
- clif->message(fd, msg_txt(9)); // Options changed.
+ clif->message(fd, msg_fd(fd,9)); // Options changed.
return true;
}
@@ -893,7 +937,7 @@ ACMD(hide) {
status->set_viewdata(&sd->bl, sd->disguise);
else
status->set_viewdata(&sd->bl, sd->status.class_);
- clif->message(fd, msg_txt(10)); // Invisible: Off
+ clif->message(fd, msg_fd(fd,10)); // Invisible: Off
// increment the number of pvp players on the map
map->list[sd->bl.m].users_pvp++;
@@ -907,7 +951,7 @@ ACMD(hide) {
} else {
sd->sc.option |= OPTION_INVISIBLE;
sd->vd.class_ = INVISIBLE_CLASS;
- clif->message(fd, msg_txt(11)); // Invisible: On
+ clif->message(fd, msg_fd(fd,11)); // Invisible: On
// decrement the number of pvp players on the map
map->list[sd->bl.m].users_pvp--;
@@ -967,15 +1011,15 @@ ACMD(jobchange) {
|| job == JOB_LORD_KNIGHT2 || job == JOB_PALADIN2 || job == JOB_BABY_KNIGHT2 || job == JOB_BABY_CRUSADER2 || job == JOB_STAR_GLADIATOR2
|| (job >= JOB_RUNE_KNIGHT2 && job <= JOB_MECHANIC_T2) || (job >= JOB_BABY_RUNE2 && job <= JOB_BABY_MECHANIC2)
) {
- clif->message(fd, msg_txt(923)); //"You can not change to this job by command."
+ clif->message(fd, msg_fd(fd,923)); //"You can not change to this job by command."
return true;
}
if (pc->db_checkid(job)) {
if (pc->jobchange(sd, job, upper) == 0)
- clif->message(fd, msg_txt(12)); // Your job has been changed.
+ clif->message(fd, msg_fd(fd,12)); // Your job has been changed.
else {
- clif->message(fd, msg_txt(155)); // You are unable to change your job.
+ clif->message(fd, msg_fd(fd,155)); // You are unable to change your job.
return false;
}
} else {
@@ -994,9 +1038,9 @@ ACMD(jobchange) {
ACMD(kill)
{
status_kill(&sd->bl);
- clif->message(sd->fd, msg_txt(13)); // A pity! You've died.
+ clif->message(sd->fd, msg_fd(fd,13)); // A pity! You've died.
if (fd != sd->fd)
- clif->message(fd, msg_txt(14)); // Character killed.
+ clif->message(fd, msg_fd(fd,14)); // Character killed.
return true;
}
@@ -1006,11 +1050,11 @@ ACMD(kill)
ACMD(alive)
{
if (!status->revive(&sd->bl, 100, 100)) {
- clif->message(fd, msg_txt(867)); // "You're not dead."
+ clif->message(fd, msg_fd(fd,867)); // "You're not dead."
return false;
}
clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
- clif->message(fd, msg_txt(16)); // You've been revived! It's a miracle!
+ clif->message(fd, msg_fd(fd,16)); // You've been revived! It's a miracle!
return true;
}
@@ -1025,7 +1069,7 @@ ACMD(kami)
if(*(info->command + 4) != 'c' && *(info->command + 4) != 'C') {
if (!message || !*message) {
- clif->message(fd, msg_txt(980)); // Please enter a message (usage: @kami <message>).
+ clif->message(fd, msg_fd(fd,980)); // Please enter a message (usage: @kami <message>).
return false;
}
@@ -1036,12 +1080,12 @@ ACMD(kami)
intif->broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(info->command + 4) == 'b' || *(info->command + 4) == 'B') ? BC_BLUE : BC_YELLOW);
} else {
if(!message || !*message || (sscanf(message, "%u %199[^\n]", &color, atcmd_output) < 2)) {
- clif->message(fd, msg_txt(981)); // Please enter color and message (usage: @kamic <color> <message>).
+ clif->message(fd, msg_fd(fd,981)); // Please enter color and message (usage: @kamic <color> <message>).
return false;
}
if(color > 0xFFFFFF) {
- clif->message(fd, msg_txt(982)); // Invalid color.
+ clif->message(fd, msg_fd(fd,982)); // Invalid color.
return false;
}
intif->broadcast2(atcmd_output, strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0);
@@ -1061,27 +1105,27 @@ ACMD(heal)
// some overflow checks
if( hp == INT_MIN ) hp++;
if( sp == INT_MIN ) sp++;
-
+
if ( hp == 0 && sp == 0 ) {
if (!status_percent_heal(&sd->bl, 100, 100))
- clif->message(fd, msg_txt(157)); // HP and SP have already been recovered.
+ clif->message(fd, msg_fd(fd,157)); // HP and SP have already been recovered.
else
- clif->message(fd, msg_txt(17)); // HP, SP recovered.
+ clif->message(fd, msg_fd(fd,17)); // HP, SP recovered.
return true;
}
if ( hp > 0 && sp >= 0 ) {
if(!status->heal(&sd->bl, hp, sp, 0))
- clif->message(fd, msg_txt(157)); // HP and SP are already with the good value.
+ clif->message(fd, msg_fd(fd,157)); // HP and SP are already with the good value.
else
- clif->message(fd, msg_txt(17)); // HP, SP recovered.
+ clif->message(fd, msg_fd(fd,17)); // HP, SP recovered.
return true;
}
if ( hp < 0 && sp <= 0 ) {
status->damage(NULL, &sd->bl, -hp, -sp, 0, 0);
clif->damage(&sd->bl,&sd->bl, 0, 0, -hp, 0, 4, 0);
- clif->message(fd, msg_txt(156)); // HP or/and SP modified.
+ clif->message(fd, msg_fd(fd,156)); // HP or/and SP modified.
return true;
}
@@ -1102,7 +1146,7 @@ ACMD(heal)
status->damage(NULL, &sd->bl, 0, -sp, 0, 0);
}
- clif->message(fd, msg_txt(156)); // HP or/and SP modified.
+ clif->message(fd, msg_fd(fd,156)); // HP or/and SP modified.
return true;
}
@@ -1124,13 +1168,13 @@ ACMD(item)
sscanf(message, "\"%99[^\"]\" %d %d", item_name, &number, &bound) < 2 &&
sscanf(message, "%99s %d %d", item_name, &number, &bound) < 2
))) {
- clif->message(fd, msg_txt(295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>).
+ clif->message(fd, msg_fd(fd,295)); // Please enter an item name or ID (usage: @itembound <item name/ID> <quantity> <bound_type>).
return false;
} else if (!message || !*message
|| ( sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1
&& sscanf(message, "%99s %d", item_name, &number) < 1
)) {
- clif->message(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
+ clif->message(fd, msg_fd(fd,983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
return false;
}
@@ -1140,13 +1184,13 @@ ACMD(item)
if ((item_data = itemdb->search_name(item_name)) == NULL &&
(item_data = itemdb->exists(atoi(item_name))) == NULL)
{
- clif->message(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
return false;
}
if(!strcmpi(info->command,"itembound") ) {
if( !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
- clif->message(fd, msg_txt(298)); // Invalid bound type
+ clif->message(fd, msg_fd(fd,298)); // Invalid bound type
return false;
}
switch( (enum e_item_bound_type)bound ) {
@@ -1155,13 +1199,13 @@ ACMD(item)
break; /* no restrictions */
case IBT_PARTY:
if( !sd->status.party_id ) {
- clif->message(fd, msg_txt(1498)); //You can't add a party bound item to a character without party!
+ clif->message(fd, msg_fd(fd,1498)); //You can't add a party bound item to a character without party!
return false;
}
break;
case IBT_GUILD:
if( !sd->status.guild_id ) {
- clif->message(fd, msg_txt(1499)); //You can't add a guild bound item to a character without guild!
+ clif->message(fd, msg_fd(fd,1499)); //You can't add a guild bound item to a character without guild!
return false;
}
break;
@@ -1173,7 +1217,7 @@ ACMD(item)
//Check if it's stackable.
if (!itemdb->isstackable2(item_data)) {
if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) {
- clif->message(fd, msg_txt(498)); // Cannot create bounded pet eggs or pet armors.
+ clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors.
return false;
}
get_count = 1;
@@ -1193,7 +1237,7 @@ ACMD(item)
}
if (flag == 0)
- clif->message(fd, msg_txt(18)); // Item created.
+ clif->message(fd, msg_fd(fd,18)); // Item created.
return true;
}
@@ -1214,15 +1258,15 @@ ACMD(item2)
if (!strcmpi(info->command,"itembound2") && (!message || !*message || (
sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 &&
sscanf(message, "%99s %d %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4, &bound) < 10 ))) {
- clif->message(fd, msg_txt(296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity>
- clif->message(fd, msg_txt(297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>).
+ clif->message(fd, msg_fd(fd,296)); // Please enter all parameters (usage: @itembound2 <item name/ID> <quantity>
+ clif->message(fd, msg_fd(fd,297)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4> <bound_type>).
return false;
} else if ( !message || !*message
|| ( sscanf(message, "\"%99[^\"]\" %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9
&& sscanf(message, "%99s %d %d %d %d %d %d %d %d", item_name, &number, &identify, &refine, &attr, &c1, &c2, &c3, &c4) < 9
)) {
- clif->message(fd, msg_txt(984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity>
- clif->message(fd, msg_txt(985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
+ clif->message(fd, msg_fd(fd,984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity>
+ clif->message(fd, msg_fd(fd,985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
return false;
}
@@ -1230,7 +1274,7 @@ ACMD(item2)
number = 1;
if( !strcmpi(info->command,"itembound2") && !(bound >= IBT_MIN && bound <= IBT_MAX) ) {
- clif->message(fd, msg_txt(298)); // Invalid bound type
+ clif->message(fd, msg_fd(fd,298)); // Invalid bound type
return false;
}
@@ -1248,7 +1292,7 @@ ACMD(item2)
bound = 1;
if( !itemdb->isstackable2(item_data) ) {
if( bound && (item_data->type == IT_PETEGG || item_data->type == IT_PETARMOR) ) {
- clif->message(fd, msg_txt(498)); // Cannot create bounded pet eggs or pet armors.
+ clif->message(fd, msg_fd(fd,498)); // Cannot create bounded pet eggs or pet armors.
return false;
}
loop = number;
@@ -1282,9 +1326,9 @@ ACMD(item2)
}
if (flag == 0)
- clif->message(fd, msg_txt(18)); // Item created.
+ clif->message(fd, msg_fd(fd,18)); // Item created.
} else {
- clif->message(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
return false;
}
@@ -1303,7 +1347,7 @@ ACMD(itemreset)
pc->delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND);
}
}
- clif->message(fd, msg_txt(20)); // All of your items have been removed.
+ clif->message(fd, msg_fd(fd,20)); // All of your items have been removed.
return true;
}
@@ -1316,13 +1360,13 @@ ACMD(baselevelup)
int level=0, i=0, status_point=0;
if (!message || !*message || !(level = atoi(message))) {
- clif->message(fd, msg_txt(986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>).
+ clif->message(fd, msg_fd(fd,986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>).
return false;
}
if (level > 0) {
if (sd->status.base_level >= pc->maxbaselv(sd)) { // check for max level by Valaris
- clif->message(fd, msg_txt(47)); // Base level can't go any higher.
+ clif->message(fd, msg_fd(fd,47)); // Base level can't go any higher.
return false;
} // End Addition
if ((unsigned int)level > pc->maxbaselv(sd) || (unsigned int)level > pc->maxbaselv(sd) - sd->status.base_level) // fix positive overflow
@@ -1335,10 +1379,10 @@ ACMD(baselevelup)
status_calc_pc(sd, SCO_FORCE);
status_percent_heal(&sd->bl, 100, 100);
clif->misceffect(&sd->bl, 0);
- clif->message(fd, msg_txt(21)); // Base level raised.
+ clif->message(fd, msg_fd(fd,21)); // Base level raised.
} else {
if (sd->status.base_level == 1) {
- clif->message(fd, msg_txt(158)); // Base level can't go any lower.
+ clif->message(fd, msg_fd(fd,158)); // Base level can't go any lower.
return false;
}
level*=-1;
@@ -1353,7 +1397,7 @@ ACMD(baselevelup)
else
sd->status.status_point -= status_point;
sd->status.base_level -= (unsigned int)level;
- clif->message(fd, msg_txt(22)); // Base level lowered.
+ clif->message(fd, msg_fd(fd,22)); // Base level lowered.
status_calc_pc(sd, SCO_FORCE);
}
sd->status.base_exp = 0;
@@ -1375,12 +1419,12 @@ ACMD(joblevelup)
int level=0;
if (!message || !*message || !(level = atoi(message))) {
- clif->message(fd, msg_txt(987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>).
+ clif->message(fd, msg_fd(fd,987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>).
return false;
}
if (level > 0) {
if (sd->status.job_level >= pc->maxjoblv(sd)) {
- clif->message(fd, msg_txt(23)); // Job level can't go any higher.
+ clif->message(fd, msg_fd(fd,23)); // Job level can't go any higher.
return false;
}
if ((unsigned int)level > pc->maxjoblv(sd) || (unsigned int)level > pc->maxjoblv(sd) - sd->status.job_level) // fix positive overflow
@@ -1388,10 +1432,10 @@ ACMD(joblevelup)
sd->status.job_level += (unsigned int)level;
sd->status.skill_point += level;
clif->misceffect(&sd->bl, 1);
- clif->message(fd, msg_txt(24)); // Job level raised.
+ clif->message(fd, msg_fd(fd,24)); // Job level raised.
} else {
if (sd->status.job_level == 1) {
- clif->message(fd, msg_txt(159)); // Job level can't go any lower.
+ clif->message(fd, msg_fd(fd,159)); // Job level can't go any lower.
return false;
}
level *=-1;
@@ -1404,7 +1448,7 @@ ACMD(joblevelup)
sd->status.skill_point = 0;
else
sd->status.skill_point -= level;
- clif->message(fd, msg_txt(25)); // Job level lowered.
+ clif->message(fd, msg_fd(fd,25)); // Job level lowered.
}
sd->status.job_exp = 0;
clif->updatestatus(sd, SP_JOBLEVEL);
@@ -1433,7 +1477,7 @@ ACMD(help) {
}
if (!atcommand->can_use2(sd, command_name, COMMAND_ATCOMMAND)) {
- sprintf(atcmd_output, msg_txt(153), message); // "%s is Unknown Command"
+ sprintf(atcmd_output, msg_fd(fd,153), message); // "%s is Unknown Command"
clif->message(fd, atcmd_output);
atcommand->get_suggestions(sd, command_name, true);
return false;
@@ -1442,13 +1486,13 @@ ACMD(help) {
tinfo = atcommand->get_info_byname(atcommand->check_alias(command_name));
if ( !tinfo || tinfo->help == NULL ) {
- sprintf(atcmd_output, msg_txt(988), atcommand->at_symbol, command_name); // There is no help for %c%s.
+ sprintf(atcmd_output, msg_fd(fd,988), atcommand->at_symbol, command_name); // There is no help for %c%s.
clif->message(fd, atcmd_output);
atcommand->get_suggestions(sd, command_name, true);
return false;
}
- sprintf(atcmd_output, msg_txt(989), atcommand->at_symbol, command_name); // Help for command %c%s:
+ sprintf(atcmd_output, msg_fd(fd,989), atcommand->at_symbol, command_name); // Help for command %c%s:
clif->message(fd, atcmd_output);
{ // Display aliases
@@ -1459,7 +1503,7 @@ ACMD(help) {
bool has_aliases = false;
StrBuf->Init(&buf);
- StrBuf->AppendStr(&buf, msg_txt(990)); // Available aliases:
+ StrBuf->AppendStr(&buf, msg_fd(fd,990)); // Available aliases:
command_info = atcommand->get_info_byname(command_name);
iter = db_iterator(atcommand->alias_db);
for (alias_info = dbi_first(iter); dbi_exists(iter); alias_info = dbi_next(iter)) {
@@ -1509,7 +1553,7 @@ int atcommand_pvpoff_sub(struct block_list *bl,va_list ap)
ACMD(pvpoff)
{
if (!map->list[sd->bl.m].flag.pvp) {
- clif->message(fd, msg_txt(160)); // PvP is already Off.
+ clif->message(fd, msg_fd(fd,160)); // PvP is already Off.
return false;
}
@@ -1522,7 +1566,7 @@ ACMD(pvpoff)
}
map->foreachinmap(atcommand->pvpoff_sub,sd->bl.m, BL_PC);
map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0);
- clif->message(fd, msg_txt(31)); // PvP: Off.
+ clif->message(fd, msg_fd(fd,31)); // PvP: Off.
return true;
}
@@ -1546,7 +1590,7 @@ int atcommand_pvpon_sub(struct block_list *bl,va_list ap)
ACMD(pvpon)
{
if (map->list[sd->bl.m].flag.pvp) {
- clif->message(fd, msg_txt(161)); // PvP is already On.
+ clif->message(fd, msg_fd(fd,161)); // PvP is already On.
return false;
}
@@ -1559,7 +1603,7 @@ ACMD(pvpon)
map->foreachinmap(atcommand->pvpon_sub,sd->bl.m, BL_PC);
}
- clif->message(fd, msg_txt(32)); // PvP: On.
+ clif->message(fd, msg_fd(fd,32)); // PvP: On.
return true;
}
@@ -1570,7 +1614,7 @@ ACMD(pvpon)
ACMD(gvgoff) {
if (!map->list[sd->bl.m].flag.gvg) {
- clif->message(fd, msg_txt(162)); // GvG is already Off.
+ clif->message(fd, msg_fd(fd,162)); // GvG is already Off.
return false;
}
@@ -1579,7 +1623,7 @@ ACMD(gvgoff) {
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
map->foreachinmap(atcommand->stopattack,sd->bl.m, BL_CHAR, 0);
- clif->message(fd, msg_txt(33)); // GvG: Off.
+ clif->message(fd, msg_fd(fd,33)); // GvG: Off.
return true;
}
@@ -1590,7 +1634,7 @@ ACMD(gvgoff) {
ACMD(gvgon)
{
if (map->list[sd->bl.m].flag.gvg) {
- clif->message(fd, msg_txt(163)); // GvG is already On.
+ clif->message(fd, msg_fd(fd,163)); // GvG is already On.
return false;
}
@@ -1598,7 +1642,7 @@ ACMD(gvgon)
map->list[sd->bl.m].flag.gvg = 1;
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE);
clif->maptypeproperty2(&sd->bl,ALL_SAMEMAP);
- clif->message(fd, msg_txt(34)); // GvG: On.
+ clif->message(fd, msg_fd(fd,34)); // GvG: On.
return true;
}
@@ -1613,7 +1657,7 @@ ACMD(model)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d %d %d", &hair_style, &hair_color, &cloth_color) < 1) {
- sprintf(atcmd_output, msg_txt(991), // Please enter at least one value (usage: @model <hair ID: %d-%d> <hair color: %d-%d> <clothes color: %d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,991), // Please enter at least one value (usage: @model <hair ID: %d-%d> <hair color: %d-%d> <clothes color: %d-%d>).
MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR);
clif->message(fd, atcmd_output);
return false;
@@ -1625,9 +1669,9 @@ ACMD(model)
pc->changelook(sd, LOOK_HAIR, hair_style);
pc->changelook(sd, LOOK_HAIR_COLOR, hair_color);
pc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color);
- clif->message(fd, msg_txt(36)); // Appearance changed.
+ clif->message(fd, msg_fd(fd,36)); // Appearance changed.
} else {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
@@ -1644,16 +1688,16 @@ ACMD(dye)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &cloth_color) < 1) {
- sprintf(atcmd_output, msg_txt(992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor <clothes color: %d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,992), MIN_CLOTH_COLOR, MAX_CLOTH_COLOR); // Please enter a clothes color (usage: @dye/@ccolor <clothes color: %d-%d>).
clif->message(fd, atcmd_output);
return false;
}
if (cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) {
pc->changelook(sd, LOOK_CLOTHES_COLOR, cloth_color);
- clif->message(fd, msg_txt(36)); // Appearance changed.
+ clif->message(fd, msg_fd(fd,36)); // Appearance changed.
} else {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
@@ -1670,16 +1714,16 @@ ACMD(hair_style)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &hair_style) < 1) {
- sprintf(atcmd_output, msg_txt(993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle <hair ID: %d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,993), MIN_HAIR_STYLE, MAX_HAIR_STYLE); // Please enter a hair style (usage: @hairstyle/@hstyle <hair ID: %d-%d>).
clif->message(fd, atcmd_output);
return false;
}
if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE) {
pc->changelook(sd, LOOK_HAIR, hair_style);
- clif->message(fd, msg_txt(36)); // Appearance changed.
+ clif->message(fd, msg_fd(fd,36)); // Appearance changed.
} else {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
@@ -1696,16 +1740,16 @@ ACMD(hair_color)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &hair_color) < 1) {
- sprintf(atcmd_output, msg_txt(994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor <hair color: %d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,994), MIN_HAIR_COLOR, MAX_HAIR_COLOR); // Please enter a hair color (usage: @haircolor/@hcolor <hair color: %d-%d>).
clif->message(fd, atcmd_output);
return false;
}
if (hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR) {
pc->changelook(sd, LOOK_HAIR_COLOR, hair_color);
- clif->message(fd, msg_txt(36)); // Appearance changed.
+ clif->message(fd, msg_fd(fd,36)); // Appearance changed.
} else {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
@@ -1776,7 +1820,7 @@ ACMD(go) {
// attempt to find the text help string
text = atcommand_help_string( info );
- clif->message(fd, msg_txt(38)); // Invalid location number, or name.
+ clif->message(fd, msg_fd(fd,38)); // Invalid location number, or name.
if( text ) {// send the text to the client
clif->messageln( fd, text );
@@ -1829,21 +1873,21 @@ ACMD(go) {
if (town >= 0 && town < ARRAYLENGTH(data)) {
int16 m = map->mapname2mapid(data[town].map);
if (m >= 0 && map->list[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(247));
+ clif->message(fd, msg_fd(fd,247));
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(248));
+ clif->message(fd, msg_fd(fd,248));
return false;
}
if (pc->setpos(sd, mapindex->name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) {
- clif->message(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_fd(fd,0)); // Warped.
} else {
- clif->message(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_fd(fd,1)); // Map not found.
return false;
}
} else {
- clif->message(fd, msg_txt(38)); // Invalid location number or name.
+ clif->message(fd, msg_fd(fd,38)); // Invalid location number or name.
return false;
}
@@ -1870,7 +1914,7 @@ ACMD(monster)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->message(fd, msg_txt(80)); // Please specify a display name or monster name/id.
+ clif->message(fd, msg_fd(fd,80)); // Please specify a display name or monster name/id.
return false;
}
if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 ||
@@ -1886,7 +1930,7 @@ ACMD(monster)
//As before, name may be already filled.
name[0] = '\0';
} else {
- clif->message(fd, msg_txt(80)); // Give a display name and monster name/id please.
+ clif->message(fd, msg_fd(fd,80)); // Give a display name and monster name/id please.
return false;
}
@@ -1894,7 +1938,7 @@ ACMD(monster)
mob_id = mob->db_checkid(atoi(monster));
if (mob_id == 0) {
- clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name.
return false;
}
@@ -1929,13 +1973,13 @@ ACMD(monster)
if (count != 0)
if (number == count)
- clif->message(fd, msg_txt(39)); // All monster summoned!
+ clif->message(fd, msg_fd(fd,39)); // All monster summoned!
else {
- sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned!
+ sprintf(atcmd_output, msg_fd(fd,240), count); // %d monster(s) summoned!
clif->message(fd, atcmd_output);
}
else {
- clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name.
return false;
}
@@ -1980,7 +2024,7 @@ ACMD(killmonster) {
map->foreachinmap(atcommand->atkillmonster_sub, map_id, BL_MOB, -drop_flag);
- clif->message(fd, msg_txt(165)); // All monsters killed!
+ clif->message(fd, msg_fd(fd,165)); // All monsters killed!
return true;
}
@@ -1996,26 +2040,26 @@ ACMD(refine)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) {
- clif->message(fd, msg_txt(996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>).
- sprintf(atcmd_output, msg_txt(997), EQP_HEAD_LOW); // %d: Lower Headgear
+ clif->message(fd, msg_fd(fd,996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>).
+ sprintf(atcmd_output, msg_fd(fd,997), EQP_HEAD_LOW); // %d: Lower Headgear
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(998), EQP_HAND_R); // %d: Right Hand
+ sprintf(atcmd_output, msg_fd(fd,998), EQP_HAND_R); // %d: Right Hand
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(999), EQP_GARMENT); // %d: Garment
+ sprintf(atcmd_output, msg_fd(fd,999), EQP_GARMENT); // %d: Garment
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1000), EQP_ACC_L); // %d: Left Accessory
+ sprintf(atcmd_output, msg_fd(fd,1000), EQP_ACC_L); // %d: Left Accessory
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1001), EQP_ARMOR); // %d: Body Armor
+ sprintf(atcmd_output, msg_fd(fd,1001), EQP_ARMOR); // %d: Body Armor
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1002), EQP_HAND_L); // %d: Left Hand
+ sprintf(atcmd_output, msg_fd(fd,1002), EQP_HAND_L); // %d: Left Hand
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1003), EQP_SHOES); // %d: Shoes
+ sprintf(atcmd_output, msg_fd(fd,1003), EQP_SHOES); // %d: Shoes
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1004), EQP_ACC_R); // %d: Right Accessory
+ sprintf(atcmd_output, msg_fd(fd,1004), EQP_ACC_R); // %d: Right Accessory
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1005), EQP_HEAD_TOP); // %d: Top Headgear
+ sprintf(atcmd_output, msg_fd(fd,1005), EQP_HEAD_TOP); // %d: Top Headgear
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1006), EQP_HEAD_MID); // %d: Mid Headgear
+ sprintf(atcmd_output, msg_fd(fd,1006), EQP_HEAD_MID); // %d: Mid Headgear
clif->message(fd, atcmd_output);
return false;
}
@@ -2053,11 +2097,11 @@ ACMD(refine)
}
if (count == 0)
- clif->message(fd, msg_txt(166)); // No item has been refined.
+ clif->message(fd, msg_fd(fd,166)); // No item has been refined.
else if (count == 1)
- clif->message(fd, msg_txt(167)); // 1 item has been refined.
+ clif->message(fd, msg_fd(fd,167)); // 1 item has been refined.
else {
- sprintf(atcmd_output, msg_txt(168), count); // %d items have been refined.
+ sprintf(atcmd_output, msg_fd(fd,168), count); // %d items have been refined.
clif->message(fd, atcmd_output);
}
@@ -2081,13 +2125,13 @@ ACMD(produce)
sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 &&
sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1
)) {
- clif->message(fd, msg_txt(1007)); // Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>).
+ clif->message(fd, msg_fd(fd,1007)); // Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>).
return false;
}
if ( (item_data = itemdb->search_name(item_name)) == NULL &&
(item_data = itemdb->exists(atoi(item_name))) == NULL ) {
- clif->message(fd, msg_txt(170)); //This item is not an equipment.
+ clif->message(fd, msg_fd(fd,170)); //This item is not an equipment.
return false;
}
@@ -2114,7 +2158,7 @@ ACMD(produce)
if ((flag = pc->additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND)))
clif->additem(sd, 0, 0, flag);
} else {
- sprintf(atcmd_output, msg_txt(169), item_id, item_data->name); // The item (%d: '%s') is not equipable.
+ sprintf(atcmd_output, msg_fd(fd,169), item_id, item_data->name); // The item (%d: '%s') is not equipable.
clif->message(fd, atcmd_output);
return false;
}
@@ -2134,13 +2178,13 @@ ACMD(memo)
if( !message || !*message || sscanf(message, "%d", &position) < 1 )
{
int i;
- clif->message(sd->fd, msg_txt(868)); // "Your current memo positions are:"
+ clif->message(sd->fd, msg_fd(fd,868)); // "Your current memo positions are:"
for( i = 0; i < MAX_MEMOPOINTS; i++ )
{
if( sd->status.memo_point[i].map )
sprintf(atcmd_output, "%d - %s (%d,%d)", i, mapindex_id2name(sd->status.memo_point[i].map), sd->status.memo_point[i].x, sd->status.memo_point[i].y);
else
- sprintf(atcmd_output, msg_txt(171), i); // %d - void
+ sprintf(atcmd_output, msg_fd(fd,171), i); // %d - void
clif->message(sd->fd, atcmd_output);
}
return true;
@@ -2148,7 +2192,7 @@ ACMD(memo)
if( position < 0 || position >= MAX_MEMOPOINTS )
{
- sprintf(atcmd_output, msg_txt(1008), 0, MAX_MEMOPOINTS-1); // Please enter a valid position (usage: @memo <memo_position:%d-%d>).
+ sprintf(atcmd_output, msg_fd(fd,1008), 0, MAX_MEMOPOINTS-1); // Please enter a valid position (usage: @memo <memo_position:%d-%d>).
clif->message(fd, atcmd_output);
return false;
}
@@ -2188,7 +2232,7 @@ ACMD(displaystatus)
int i, type, flag, tick, val1 = 0, val2 = 0, val3 = 0;
if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) {
- clif->message(fd, msg_txt(1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
+ clif->message(fd, msg_fd(fd,1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
return false;
}
if (i < 2) flag = 1;
@@ -2211,7 +2255,7 @@ ACMD(statuspoint)
unsigned int new_status_point;
if (!message || !*message || (point = atoi(message)) == 0) {
- clif->message(fd, msg_txt(1010)); // Please enter a number (usage: @stpoint <number of points>).
+ clif->message(fd, msg_fd(fd,1010)); // Please enter a number (usage: @stpoint <number of points>).
return false;
}
@@ -2238,12 +2282,12 @@ ACMD(statuspoint)
if (new_status_point != sd->status.status_point) {
sd->status.status_point = new_status_point;
clif->updatestatus(sd, SP_STATUSPOINT);
- clif->message(fd, msg_txt(174)); // Number of status points changed.
+ clif->message(fd, msg_fd(fd,174)); // Number of status points changed.
} else {
if (point < 0)
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
else
- clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value.
return false;
}
@@ -2259,7 +2303,7 @@ ACMD(skillpoint)
unsigned int new_skill_point;
if (!message || !*message || (point = atoi(message)) == 0) {
- clif->message(fd, msg_txt(1011)); // Please enter a number (usage: @skpoint <number of points>).
+ clif->message(fd, msg_fd(fd,1011)); // Please enter a number (usage: @skpoint <number of points>).
return false;
}
@@ -2286,12 +2330,12 @@ ACMD(skillpoint)
if (new_skill_point != sd->status.skill_point) {
sd->status.skill_point = new_skill_point;
clif->updatestatus(sd, SP_SKILLPOINT);
- clif->message(fd, msg_txt(175)); // Number of skill points changed.
+ clif->message(fd, msg_fd(fd,175)); // Number of skill points changed.
} else {
if (point < 0)
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
else
- clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value.
return false;
}
@@ -2306,24 +2350,24 @@ ACMD(zeny)
int zeny=0, ret=-1;
if (!message || !*message || (zeny = atoi(message)) == 0) {
- clif->message(fd, msg_txt(1012)); // Please enter an amount (usage: @zeny <amount>).
+ clif->message(fd, msg_fd(fd,1012)); // Please enter an amount (usage: @zeny <amount>).
return false;
}
if(zeny > 0){
if((ret=pc->getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1)
- clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value.
}
else {
if( sd->status.zeny < -zeny ) zeny = -sd->status.zeny;
if((ret=pc->payzeny(sd,-zeny,LOG_TYPE_COMMAND,NULL)) == 1)
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
}
if( ret ) //ret != 0 means cmd failure
return false;
- clif->message(fd, msg_txt(176));
+ clif->message(fd, msg_fd(fd,176));
return true;
}
@@ -2339,14 +2383,14 @@ ACMD(param) {
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) {
- clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
+ clif->message(fd, msg_fd(fd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
return false;
}
ARR_FIND( 0, ARRAYLENGTH(param), i, strcmpi(info->command, param[i]) == 0 );
if( i == ARRAYLENGTH(param) || i > MAX_STATUS_TYPE) { // normally impossible...
- clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
+ clif->message(fd, msg_fd(fd,1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
return false;
}
@@ -2375,12 +2419,12 @@ ACMD(param) {
clif->updatestatus(sd, SP_STR + i);
clif->updatestatus(sd, SP_USTR + i);
status_calc_pc(sd, SCO_FORCE);
- clif->message(fd, msg_txt(42)); // Stat changed.
+ clif->message(fd, msg_fd(fd,42)); // Stat changed.
} else {
if (value < 0)
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
else
- clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to increase the number/value.
return false;
}
@@ -2431,12 +2475,12 @@ ACMD(stat_all) {
if (count > 0) { // if at least 1 stat modified
status_calc_pc(sd, SCO_FORCE);
- clif->message(fd, msg_txt(84)); // All stats changed!
+ clif->message(fd, msg_fd(fd,84)); // All stats changed!
} else {
if (value < 0)
- clif->message(fd, msg_txt(177)); // You cannot decrease that stat anymore.
+ clif->message(fd, msg_fd(fd,177)); // You cannot decrease that stat anymore.
else
- clif->message(fd, msg_txt(178)); // You cannot increase that stat anymore.
+ clif->message(fd, msg_fd(fd,178)); // You cannot increase that stat anymore.
return false;
}
@@ -2452,17 +2496,17 @@ ACMD(guildlevelup) {
struct guild *guild_info;
if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) {
- clif->message(fd, msg_txt(1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>).
+ clif->message(fd, msg_fd(fd,1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>).
return false;
}
if (sd->status.guild_id <= 0 || (guild_info = sd->guild) == NULL) {
- clif->message(fd, msg_txt(43)); // You're not in a guild.
+ clif->message(fd, msg_fd(fd,43)); // You're not in a guild.
return false;
}
#if 0 // By enabling this, only the guild leader can use this command
if (strcmp(sd->status.name, guild_info->master) != 0) {
- clif->message(fd, msg_txt(44)); // You're not the master of your guild.
+ clif->message(fd, msg_fd(fd,44)); // You're not the master of your guild.
return false;
}
#endif // 0
@@ -2475,9 +2519,9 @@ ACMD(guildlevelup) {
if (added_level != 0) {
intif->guild_change_basicinfo(guild_info->guild_id, GBI_GUILDLV, &added_level, sizeof(added_level));
- clif->message(fd, msg_txt(179)); // Guild level changed.
+ clif->message(fd, msg_fd(fd,179)); // Guild level changed.
} else {
- clif->message(fd, msg_txt(45)); // Guild level change failed.
+ clif->message(fd, msg_fd(fd,45)); // Guild level change failed.
return false;
}
@@ -2493,7 +2537,7 @@ ACMD(makeegg)
int id, pet_id;
if (!message || !*message) {
- clif->message(fd, msg_txt(1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
+ clif->message(fd, msg_fd(fd,1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
return false;
}
@@ -2516,7 +2560,7 @@ ACMD(makeegg)
(short)pet->db[pet_id].EggID, 0, (short)pet->db[pet_id].intimate,
100, 0, 1, pet->db[pet_id].jname);
} else {
- clif->message(fd, msg_txt(180)); // The monster/egg name/id doesn't exist.
+ clif->message(fd, msg_fd(fd,180)); // The monster/egg name/id doesn't exist.
return false;
}
@@ -2531,7 +2575,7 @@ ACMD(hatch)
if (sd->status.pet_id <= 0)
clif->sendegg(sd);
else {
- clif->message(fd, msg_txt(181)); // You already have a pet.
+ clif->message(fd, msg_fd(fd,181)); // You already have a pet.
return false;
}
@@ -2547,30 +2591,30 @@ ACMD(petfriendly)
struct pet_data *pd;
if (!message || !*message || (friendly = atoi(message)) < 0) {
- clif->message(fd, msg_txt(1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
+ clif->message(fd, msg_fd(fd,1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
return false;
}
pd = sd->pd;
if (!pd) {
- clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet.
return false;
}
if (friendly < 0 || friendly > 1000)
{
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
if (friendly == pd->pet.intimate) {
- clif->message(fd, msg_txt(183)); // Pet intimacy is already at maximum.
+ clif->message(fd, msg_fd(fd,183)); // Pet intimacy is already at maximum.
return false;
}
pet->set_intimate(pd, friendly);
clif->send_petstatus(sd);
- clif->message(fd, msg_txt(182)); // Pet intimacy changed.
+ clif->message(fd, msg_fd(fd,182)); // Pet intimacy changed.
return true;
}
@@ -2583,27 +2627,27 @@ ACMD(pethungry)
struct pet_data *pd;
if (!message || !*message || (hungry = atoi(message)) < 0) {
- clif->message(fd, msg_txt(1017)); // Please enter a valid number (usage: @pethungry <0-100>).
+ clif->message(fd, msg_fd(fd,1017)); // Please enter a valid number (usage: @pethungry <0-100>).
return false;
}
pd = sd->pd;
if (!sd->status.pet_id || !pd) {
- clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet.
return false;
}
if (hungry < 0 || hungry > 100) {
- clif->message(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_fd(fd,37)); // An invalid number was specified.
return false;
}
if (hungry == pd->pet.hungry) {
- clif->message(fd, msg_txt(186)); // Pet hunger is already at maximum.
+ clif->message(fd, msg_fd(fd,186)); // Pet hunger is already at maximum.
return false;
}
pd->pet.hungry = hungry;
clif->send_petstatus(sd);
- clif->message(fd, msg_txt(185)); // Pet hunger changed.
+ clif->message(fd, msg_fd(fd,185)); // Pet hunger changed.
return true;
}
@@ -2615,19 +2659,19 @@ ACMD(petrename)
{
struct pet_data *pd;
if (!sd->status.pet_id || !sd->pd) {
- clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_fd(fd,184)); // Sorry, but you have no pet.
return false;
}
pd = sd->pd;
if (!pd->pet.rename_flag) {
- clif->message(fd, msg_txt(188)); // You can already rename your pet.
+ clif->message(fd, msg_fd(fd,188)); // You can already rename your pet.
return false;
}
pd->pet.rename_flag = 0;
intif->save_petdata(sd->status.account_id, &pd->pet);
clif->send_petstatus(sd);
- clif->message(fd, msg_txt(187)); // You can now rename your pet.
+ clif->message(fd, msg_fd(fd,187)); // You can now rename your pet.
return true;
}
@@ -2639,34 +2683,34 @@ ACMD(recall) {
struct map_session_data *pl_sd = NULL;
if (!message || !*message) {
- clif->message(fd, msg_txt(1018)); // Please enter a player name (usage: @recall <char name/ID>).
+ clif->message(fd, msg_fd(fd,1018)); // Please enter a player name (usage: @recall <char name/ID>).
return false;
}
if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->message(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level doesn't authorize you to preform this action on the specified player.
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(1019)); // You are not authorized to warp someone to this map.
+ clif->message(fd, msg_fd(fd,1019)); // You are not authorized to warp someone to this map.
return false;
}
if (pl_sd->bl.m >= 0 && map->list[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(1020)); // You are not authorized to warp this player from their map.
+ clif->message(fd, msg_fd(fd,1020)); // You are not authorized to warp this player from their map.
return false;
}
if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) {
return false;
}
pc->setpos(pl_sd, sd->mapindex, sd->bl.x, sd->bl.y, CLR_RESPAWN);
- sprintf(atcmd_output, msg_txt(46), pl_sd->status.name); // %s recalled!
+ sprintf(atcmd_output, msg_fd(fd,46), pl_sd->status.name); // %s recalled!
clif->message(fd, atcmd_output);
return true;
@@ -2682,12 +2726,12 @@ ACMD(char_block)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1021)); // Please enter a player name (usage: @block <char name>).
+ clif->message(fd, msg_fd(fd,1021)); // Please enter a player name (usage: @block <char name>).
return false;
}
chrif->char_ask_name(sd->status.account_id, atcmd_player_name, 1, 0, 0, 0, 0, 0, 0); // type: 1 - block
- clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it.
return true;
}
@@ -2718,7 +2762,7 @@ ACMD(char_ban)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%255s %23[^\n]", atcmd_output, atcmd_player_name) < 2) {
- clif->message(fd, msg_txt(1022)); // Please enter ban time and a player name (usage: @ban <time> <char name>).
+ clif->message(fd, msg_fd(fd,1022)); // Please enter ban time and a player name (usage: @ban <time> <char name>).
return false;
}
@@ -2762,7 +2806,7 @@ ACMD(char_ban)
}
}
if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0 && second == 0) {
- clif->message(fd, msg_txt(85)); // Invalid time for ban command.
+ clif->message(fd, msg_fd(fd,85)); // Invalid time for ban command.
return false;
}
/**
@@ -2778,12 +2822,12 @@ ACMD(char_ban)
tmtime->tm_sec = tmtime->tm_sec + second;
timestamp = mktime(tmtime);
if( timestamp <= time(NULL) && !pc->can_use_command(sd, "@unban") ) {
- clif->message(fd,msg_txt(1023)); // You are not allowed to reduce the length of a ban.
+ clif->message(fd,msg_fd(fd,1023)); // You are not allowed to reduce the length of a ban.
return false;
}
chrif->char_ask_name(sd->status.account_id, atcmd_player_name, !strcmpi(info->command,"charban") ? 6 : 2, year, month, day, hour, minute, second); // type: 2 - ban; 6 - charban
- clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it.
return true;
}
@@ -2796,13 +2840,13 @@ ACMD(char_unblock)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1024)); // Please enter a player name (usage: @unblock <char name>).
+ clif->message(fd, msg_fd(fd,1024)); // Please enter a player name (usage: @unblock <char name>).
return false;
}
// send answer to login server via char-server
chrif->char_ask_name(sd->status.account_id, atcmd_player_name, 3, 0, 0, 0, 0, 0, 0); // type: 3 - unblock
- clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it.
return true;
}
@@ -2815,13 +2859,13 @@ ACMD(char_unban)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1025)); // Please enter a player name (usage: @unban <char name>).
+ clif->message(fd, msg_fd(fd,1025)); // Please enter a player name (usage: @unban <char name>).
return false;
}
// send answer to login server via char-server
chrif->char_ask_name(sd->status.account_id, atcmd_player_name, !strcmpi(info->command,"charunban") ? 7 : 4, 0, 0, 0, 0, 0, 0); // type: 4 - unban account; type 7 - unban character
- clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_fd(fd,88)); // Character name sent to char-server to ask it.
return true;
}
@@ -2834,7 +2878,7 @@ ACMD(night)
if (map->night_flag != 1) {
pc->map_night_timer(pc->night_timer_tid, 0, 0, 1);
} else {
- clif->message(fd, msg_txt(89)); // Night mode is already enabled.
+ clif->message(fd, msg_fd(fd,89)); // Night mode is already enabled.
return false;
}
@@ -2849,7 +2893,7 @@ ACMD(day)
if (map->night_flag != 0) {
pc->map_day_timer(pc->day_timer_tid, 0, 0, 1);
} else {
- clif->message(fd, msg_txt(90)); // Day mode is already enabled.
+ clif->message(fd, msg_fd(fd,90)); // Day mode is already enabled.
return false;
}
@@ -2871,12 +2915,12 @@ ACMD(doom)
{
status_kill(&pl_sd->bl);
clif->specialeffect(&pl_sd->bl,450,AREA);
- clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgment.
+ clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment.
}
}
mapit->free(iter);
- clif->message(fd, msg_txt(62)); // Judgment was made.
+ clif->message(fd, msg_fd(fd,62)); // Judgment was made.
return true;
}
@@ -2896,12 +2940,12 @@ ACMD(doommap)
{
status_kill(&pl_sd->bl);
clif->specialeffect(&pl_sd->bl,450,AREA);
- clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgment.
+ clif->message(pl_sd->fd, msg_fd(fd,61)); // The holy messenger has given judgment.
}
}
mapit->free(iter);
- clif->message(fd, msg_txt(62)); // Judgment was made.
+ clif->message(fd, msg_fd(fd,62)); // Judgment was made.
return true;
}
@@ -2914,7 +2958,7 @@ void atcommand_raise_sub(struct map_session_data* sd)
status->revive(&sd->bl, 100, 100);
clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
- clif->message(sd->fd, msg_txt(63)); // Mercy has been shown.
+ clif->message(sd->fd, msg_sd(sd,63)); // Mercy has been shown.
}
/*==========================================
@@ -2931,7 +2975,7 @@ ACMD(raise)
atcommand->raise_sub(pl_sd);
mapit->free(iter);
- clif->message(fd, msg_txt(64)); // Mercy has been granted.
+ clif->message(fd, msg_fd(fd,64)); // Mercy has been granted.
return true;
}
@@ -2950,7 +2994,7 @@ ACMD(raisemap)
atcommand->raise_sub(pl_sd);
mapit->free(iter);
- clif->message(fd, msg_txt(64)); // Mercy has been granted.
+ clif->message(fd, msg_fd(fd,64)); // Mercy has been granted.
return true;
}
@@ -2965,18 +3009,18 @@ ACMD(kick)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message) {
- clif->message(fd, msg_txt(1026)); // Please enter a player name (usage: @kick <char name/ID>).
+ clif->message(fd, msg_fd(fd,1026)); // Please enter a player name (usage: @kick <char name/ID>).
return false;
}
if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
@@ -3003,7 +3047,7 @@ ACMD(kickall)
}
mapit->free(iter);
- clif->message(fd, msg_txt(195)); // All players have been kicked!
+ clif->message(fd, msg_fd(fd,195)); // All players have been kicked!
return true;
}
@@ -3016,7 +3060,7 @@ ACMD(allskill)
pc->allskillup(sd); // all skills
sd->status.skill_point = 0; // 0 skill points
clif->updatestatus(sd, SP_SKILLPOINT); // update
- clif->message(fd, msg_txt(76)); // All skills have been added to your skill tree.
+ clif->message(fd, msg_fd(fd,76)); // All skills have been added to your skill tree.
return true;
}
@@ -3036,7 +3080,7 @@ ACMD(questskill)
text = atcommand_help_string( info );
// send the error message as always
- clif->message(fd, msg_txt(1027)); // Please enter a quest skill number.
+ clif->message(fd, msg_fd(fd,1027)); // Please enter a quest skill number.
if( text ) {// send the skill ID list associated with this command
clif->messageln( fd, text );
@@ -3045,20 +3089,20 @@ ACMD(questskill)
return false;
}
if( !(index = skill->get_index(skill_id)) ) {
- clif->message(fd, msg_txt(198)); // This skill number doesn't exist.
+ clif->message(fd, msg_fd(fd,198)); // This skill number doesn't exist.
return false;
}
if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) {
- clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
+ clif->message(fd, msg_fd(fd,197)); // This skill number doesn't exist or isn't a quest skill.
return false;
}
if (pc->checkskill2(sd, index) > 0) {
- clif->message(fd, msg_txt(196)); // You already have this quest skill.
+ clif->message(fd, msg_fd(fd,196)); // You already have this quest skill.
return false;
}
pc->skill(sd, skill_id, 1, 0);
- clif->message(fd, msg_txt(70)); // You have learned the skill.
+ clif->message(fd, msg_fd(fd,70)); // You have learned the skill.
return true;
}
@@ -3078,7 +3122,7 @@ ACMD(lostskill)
text = atcommand_help_string( info );
// send the error message as always
- clif->message(fd, msg_txt(1027)); // Please enter a quest skill number.
+ clif->message(fd, msg_fd(fd,1027)); // Please enter a quest skill number.
if( text ) {// send the skill ID list associated with this command
clif->messageln( fd, text );
@@ -3087,22 +3131,22 @@ ACMD(lostskill)
return false;
}
if ( !( index = skill->get_index(skill_id) ) ) {
- clif->message(fd, msg_txt(198)); // This skill number doesn't exist.
+ clif->message(fd, msg_fd(fd,198)); // This skill number doesn't exist.
return false;
}
if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) {
- clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
+ clif->message(fd, msg_fd(fd,197)); // This skill number doesn't exist or isn't a quest skill.
return false;
}
if (pc->checkskill2(sd, index) == 0) {
- clif->message(fd, msg_txt(201)); // You don't have this quest skill.
+ clif->message(fd, msg_fd(fd,201)); // You don't have this quest skill.
return false;
}
sd->status.skill[index].lv = 0;
sd->status.skill[index].flag = 0;
clif->deleteskill(sd,skill_id);
- clif->message(fd, msg_txt(71)); // You have forgotten the skill.
+ clif->message(fd, msg_fd(fd,71)); // You have forgotten the skill.
return true;
}
@@ -3120,7 +3164,7 @@ ACMD(spiritball)
if( !message || !*message || (number = atoi(message)) < 0 || number > max_spiritballs )
{
char msg[CHAT_SIZE_MAX];
- safesnprintf(msg, sizeof(msg), msg_txt(1028), max_spiritballs); // Please enter an amount (usage: @spiritball <number: 0-%d>).
+ safesnprintf(msg, sizeof(msg), msg_fd(fd,1028), max_spiritballs); // Please enter an amount (usage: @spiritball <number: 0-%d>).
clif->message(fd, msg);
return false;
}
@@ -3144,7 +3188,7 @@ ACMD(party)
memset(party_name, '\0', sizeof(party_name));
if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) {
- clif->message(fd, msg_txt(1029)); // Please enter a party name (usage: @party <party_name>).
+ clif->message(fd, msg_fd(fd,1029)); // Please enter a party name (usage: @party <party_name>).
return false;
}
@@ -3164,7 +3208,7 @@ ACMD(guild)
memset(guild_name, '\0', sizeof(guild_name));
if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->message(fd, msg_txt(1030)); // Please enter a guild name (usage: @guild <guild_name>).
+ clif->message(fd, msg_fd(fd,1030)); // Please enter a guild name (usage: @guild <guild_name>).
return false;
}
@@ -3191,15 +3235,15 @@ ACMD(breakguild)
return false; // Something went wrong
}
} else { // Not guild master
- clif->message(fd, msg_txt(1181)); // You need to be a Guild Master to use this command.
+ clif->message(fd, msg_fd(fd,1181)); // You need to be a Guild Master to use this command.
return false;
}
} else { // Guild was not found. HOW?
- clif->message(fd, msg_txt(252)); // You are not in a guild.
+ clif->message(fd, msg_fd(fd,252)); // You are not in a guild.
return false;
}
} else { // Player does not have a guild
- clif->message(fd, msg_txt(252)); // You are not in a guild.
+ clif->message(fd, msg_fd(fd,252)); // You are not in a guild.
return false;
}
return true;
@@ -3210,13 +3254,13 @@ ACMD(breakguild)
*------------------------------------------*/
ACMD(agitstart) {
if (map->agit_flag == 1) {
- clif->message(fd, msg_txt(73)); // War of Emperium is currently in progress.
+ clif->message(fd, msg_fd(fd,73)); // War of Emperium is currently in progress.
return false;
}
map->agit_flag = 1;
guild->agit_start();
- clif->message(fd, msg_txt(72)); // War of Emperium has been initiated.
+ clif->message(fd, msg_fd(fd,72)); // War of Emperium has been initiated.
return true;
}
@@ -3226,13 +3270,13 @@ ACMD(agitstart) {
*------------------------------------------*/
ACMD(agitstart2) {
if (map->agit2_flag == 1) {
- clif->message(fd, msg_txt(404)); // "War of Emperium SE is currently in progress."
+ clif->message(fd, msg_fd(fd,404)); // "War of Emperium SE is currently in progress."
return false;
}
map->agit2_flag = 1;
guild->agit2_start();
- clif->message(fd, msg_txt(403)); // "War of Emperium SE has been initiated."
+ clif->message(fd, msg_fd(fd,403)); // "War of Emperium SE has been initiated."
return true;
}
@@ -3242,13 +3286,13 @@ ACMD(agitstart2) {
*------------------------------------------*/
ACMD(agitend) {
if (map->agit_flag == 0) {
- clif->message(fd, msg_txt(75)); // War of Emperium is currently not in progress.
+ clif->message(fd, msg_fd(fd,75)); // War of Emperium is currently not in progress.
return false;
}
map->agit_flag = 0;
guild->agit_end();
- clif->message(fd, msg_txt(74)); // War of Emperium has been ended.
+ clif->message(fd, msg_fd(fd,74)); // War of Emperium has been ended.
return true;
}
@@ -3258,13 +3302,13 @@ ACMD(agitend) {
*------------------------------------------*/
ACMD(agitend2) {
if (map->agit2_flag == 0) {
- clif->message(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress."
+ clif->message(fd, msg_fd(fd,406)); // "War of Emperium SE is currently not in progress."
return false;
}
map->agit2_flag = 0;
guild->agit2_end();
- clif->message(fd, msg_txt(405)); // "War of Emperium SE has been ended."
+ clif->message(fd, msg_fd(fd,405)); // "War of Emperium SE has been ended."
return true;
}
@@ -3290,23 +3334,23 @@ ACMD(idsearch)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%99s", item_name) < 0) {
- clif->message(fd, msg_txt(1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>).
+ clif->message(fd, msg_fd(fd,1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>).
return false;
}
- sprintf(atcmd_output, msg_txt(77), item_name); // Search results for '%s' (name: id):
+ sprintf(atcmd_output, msg_fd(fd,77), item_name); // Search results for '%s' (name: id):
clif->message(fd, atcmd_output);
match = itemdb->search_name_array(item_array, MAX_SEARCH, item_name, 0);
if (match > MAX_SEARCH) {
- sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, match);
+ sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, match);
clif->message(fd, atcmd_output);
match = MAX_SEARCH;
}
for(i = 0; i < match; i++) {
- sprintf(atcmd_output, msg_txt(78), item_array[i]->jname, item_array[i]->nameid); // %s: %d
+ sprintf(atcmd_output, msg_fd(fd,78), item_array[i]->jname, item_array[i]->nameid); // %s: %d
clif->message(fd, atcmd_output);
}
- sprintf(atcmd_output, msg_txt(79), match); // %d results found.
+ sprintf(atcmd_output, msg_fd(fd,79), match); // %d results found.
clif->message(fd, atcmd_output);
return true;
@@ -3324,7 +3368,7 @@ ACMD(recallall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map.
+ clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map.
return false;
}
@@ -3347,9 +3391,9 @@ ACMD(recallall)
}
mapit->free(iter);
- clif->message(fd, msg_txt(92)); // All characters recalled!
+ clif->message(fd, msg_fd(fd,92)); // All characters recalled!
if (count) {
- sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
+ sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
clif->message(fd, atcmd_output);
}
@@ -3371,19 +3415,19 @@ ACMD(guildrecall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->message(fd, msg_txt(1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>).
+ clif->message(fd, msg_fd(fd,1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>).
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map.
+ clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map.
return false;
}
if ((g = guild->searchname(guild_name)) == NULL && // name first to avoid error when name begin with a number
(g = guild->search(atoi(message))) == NULL)
{
- clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online.
return false;
}
@@ -3403,10 +3447,10 @@ ACMD(guildrecall)
}
mapit->free(iter);
- sprintf(atcmd_output, msg_txt(93), g->name); // All online characters of the %s guild have been recalled to your position.
+ sprintf(atcmd_output, msg_fd(fd,93), g->name); // All online characters of the %s guild have been recalled to your position.
clif->message(fd, atcmd_output);
if (count) {
- sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
+ sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
clif->message(fd, atcmd_output);
}
@@ -3428,19 +3472,19 @@ ACMD(partyrecall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) {
- clif->message(fd, msg_txt(1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>).
+ clif->message(fd, msg_fd(fd,1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>).
return false;
}
if (sd->bl.m >= 0 && map->list[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->message(fd, msg_txt(1032)); // You are not authorized to warp someone to your current map.
+ clif->message(fd, msg_fd(fd,1032)); // You are not authorized to warp someone to your current map.
return false;
}
if ((p = party->searchname(party_name)) == NULL && // name first to avoid error when name begin with a number
(p = party->search(atoi(message))) == NULL)
{
- clif->message(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online.
+ clif->message(fd, msg_fd(fd,96)); // Incorrect name or ID, or no one from the party is online.
return false;
}
@@ -3459,10 +3503,10 @@ ACMD(partyrecall)
}
mapit->free(iter);
- sprintf(atcmd_output, msg_txt(95), p->party.name); // All online characters of the %s party have been recalled to your position.
+ sprintf(atcmd_output, msg_fd(fd,95), p->party.name); // All online characters of the %s party have been recalled to your position.
clif->message(fd, atcmd_output);
if (count) {
- sprintf(atcmd_output, msg_txt(1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
+ sprintf(atcmd_output, msg_fd(fd,1033), count); // Because you are not authorized to warp from some maps, %d player(s) have not been recalled.
clif->message(fd, atcmd_output);
}
@@ -3475,7 +3519,7 @@ ACMD(partyrecall)
ACMD(reloaditemdb)
{
itemdb->reload();
- clif->message(fd, msg_txt(97)); // Item database has been reloaded.
+ clif->message(fd, msg_fd(fd,97)); // Item database has been reloaded.
return true;
}
@@ -3490,7 +3534,7 @@ ACMD(reloadmobdb) {
mercenary->read_db();
mercenary->read_skilldb();
elemental->reload_db();
- clif->message(fd, msg_txt(98)); // Monster database has been reloaded.
+ clif->message(fd, msg_fd(fd,98)); // Monster database has been reloaded.
return true;
}
@@ -3504,7 +3548,7 @@ ACMD(reloadskilldb)
homun->reload_skill();
elemental->reload_skilldb();
mercenary->read_skilldb();
- clif->message(fd, msg_txt(99)); // Skill database has been reloaded.
+ clif->message(fd, msg_fd(fd,99)); // Skill database has been reloaded.
return true;
}
@@ -3516,14 +3560,14 @@ ACMD(reloadatcommand) {
config_t run_test;
if (libconfig->read_file(&run_test, "conf/groups.conf")) {
- clif->message(fd, msg_txt(1036)); // Error reading groups.conf, reload failed.
+ clif->message(fd, msg_fd(fd,1036)); // Error reading groups.conf, reload failed.
return false;
}
libconfig->destroy(&run_test);
if (libconfig->read_file(&run_test, map->ATCOMMAND_CONF_FILENAME)) {
- clif->message(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed.
+ clif->message(fd, msg_fd(fd,1037)); // Error reading atcommand.conf, reload failed.
return false;
}
@@ -3531,7 +3575,7 @@ ACMD(reloadatcommand) {
atcommand->doload();
pcg->reload();
- clif->message(fd, msg_txt(254));
+ clif->message(fd, msg_fd(fd,254));
return true;
}
/*==========================================
@@ -3578,7 +3622,7 @@ ACMD(reloadbattleconf)
mob->reload(); //Needed as well so rate changes take effect.
chrif->ragsrvinfo(battle_config.base_exp_rate, battle_config.job_exp_rate, battle_config.item_rate_common);
}
- clif->message(fd, msg_txt(255));
+ clif->message(fd, msg_fd(fd,255));
return true;
}
/*==========================================
@@ -3586,7 +3630,7 @@ ACMD(reloadbattleconf)
*------------------------------------------*/
ACMD(reloadstatusdb) {
status->readdb();
- clif->message(fd, msg_txt(256));
+ clif->message(fd, msg_fd(fd,256));
return true;
}
/*==========================================
@@ -3595,7 +3639,7 @@ ACMD(reloadstatusdb) {
ACMD(reloadpcdb)
{
pc->readdb();
- clif->message(fd, msg_txt(257));
+ clif->message(fd, msg_fd(fd,257));
return true;
}
@@ -3634,7 +3678,7 @@ ACMD(reloadscript) {
script->reload();
npc->reload();
- clif->message(fd, msg_txt(100)); // Scripts have been reloaded.
+ clif->message(fd, msg_fd(fd,100)); // Scripts have been reloaded.
return true;
}
@@ -3664,7 +3708,7 @@ ACMD(mapinfo) {
sscanf(message, "%d %23[^\n]", &list, mapname);
if (list < 0 || list > 3) {
- clif->message(fd, msg_txt(1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
+ clif->message(fd, msg_fd(fd,1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
return false;
}
@@ -3676,12 +3720,12 @@ ACMD(mapinfo) {
}
if (m_id < 0) {
- clif->message(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_fd(fd,1)); // Map not found.
return false;
}
m_index = mapindex->name2id(mapname); //This one shouldn't fail since the previous seek did not.
- clif->message(fd, msg_txt(1039)); // ------ Map Info ------
+ clif->message(fd, msg_fd(fd,1039)); // ------ Map Info ------
// count chats (for initial message)
chat_num = 0;
@@ -3696,130 +3740,130 @@ ACMD(mapinfo) {
}
mapit->free(iter);
- sprintf(atcmd_output, msg_txt(1040), mapname, map->list[m_id].zone->name, map->list[m_id].users, map->list[m_id].npc_num, chat_num, vend_num); // Map: %s (Zone:%s) | Players: %d | NPCs: %d | Chats: %d | Vendings: %d
+ sprintf(atcmd_output, msg_fd(fd,1040), mapname, map->list[m_id].zone->name, map->list[m_id].users, map->list[m_id].npc_num, chat_num, vend_num); // Map: %s (Zone:%s) | Players: %d | NPCs: %d | Chats: %d | Vendings: %d
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1041)); // ------ Map Flags ------
+ clif->message(fd, msg_fd(fd,1041)); // ------ Map Flags ------
if (map->list[m_id].flag.town)
- clif->message(fd, msg_txt(1042)); // Town Map
+ clif->message(fd, msg_fd(fd,1042)); // Town Map
if (battle_config.autotrade_mapflag == map->list[m_id].flag.autotrade)
- clif->message(fd, msg_txt(1043)); // Autotrade Enabled
+ clif->message(fd, msg_fd(fd,1043)); // Autotrade Enabled
else
- clif->message(fd, msg_txt(1044)); // Autotrade Disabled
+ clif->message(fd, msg_fd(fd,1044)); // Autotrade Disabled
if (map->list[m_id].flag.battleground)
- clif->message(fd, msg_txt(1045)); // Battlegrounds ON
+ clif->message(fd, msg_fd(fd,1045)); // Battlegrounds ON
- strcpy(atcmd_output,msg_txt(1046)); // PvP Flags:
+ strcpy(atcmd_output,msg_fd(fd,1046)); // PvP Flags:
if (map->list[m_id].flag.pvp)
- strcat(atcmd_output, msg_txt(1047)); // Pvp ON |
+ strcat(atcmd_output, msg_fd(fd,1047)); // Pvp ON |
if (map->list[m_id].flag.pvp_noguild)
- strcat(atcmd_output, msg_txt(1048)); // NoGuild |
+ strcat(atcmd_output, msg_fd(fd,1048)); // NoGuild |
if (map->list[m_id].flag.pvp_noparty)
- strcat(atcmd_output, msg_txt(1049)); // NoParty |
+ strcat(atcmd_output, msg_fd(fd,1049)); // NoParty |
if (map->list[m_id].flag.pvp_nightmaredrop)
- strcat(atcmd_output, msg_txt(1050)); // NightmareDrop |
+ strcat(atcmd_output, msg_fd(fd,1050)); // NightmareDrop |
if (map->list[m_id].flag.pvp_nocalcrank)
- strcat(atcmd_output, msg_txt(1051)); // NoCalcRank |
+ strcat(atcmd_output, msg_fd(fd,1051)); // NoCalcRank |
clif->message(fd, atcmd_output);
- strcpy(atcmd_output,msg_txt(1052)); // GvG Flags:
+ strcpy(atcmd_output,msg_fd(fd,1052)); // GvG Flags:
if (map->list[m_id].flag.gvg)
- strcat(atcmd_output, msg_txt(1053)); // GvG ON |
+ strcat(atcmd_output, msg_fd(fd,1053)); // GvG ON |
if (map->list[m_id].flag.gvg_dungeon)
- strcat(atcmd_output, msg_txt(1054)); // GvG Dungeon |
+ strcat(atcmd_output, msg_fd(fd,1054)); // GvG Dungeon |
if (map->list[m_id].flag.gvg_castle)
- strcat(atcmd_output, msg_txt(1055)); // GvG Castle |
+ strcat(atcmd_output, msg_fd(fd,1055)); // GvG Castle |
if (map->list[m_id].flag.gvg_noparty)
- strcat(atcmd_output, msg_txt(1056)); // NoParty |
+ strcat(atcmd_output, msg_fd(fd,1056)); // NoParty |
clif->message(fd, atcmd_output);
- strcpy(atcmd_output,msg_txt(1057)); // Teleport Flags:
+ strcpy(atcmd_output,msg_fd(fd,1057)); // Teleport Flags:
if (map->list[m_id].flag.noteleport)
- strcat(atcmd_output, msg_txt(1058)); // NoTeleport |
+ strcat(atcmd_output, msg_fd(fd,1058)); // NoTeleport |
if (map->list[m_id].flag.monster_noteleport)
- strcat(atcmd_output, msg_txt(1059)); // Monster NoTeleport |
+ strcat(atcmd_output, msg_fd(fd,1059)); // Monster NoTeleport |
if (map->list[m_id].flag.nowarp)
- strcat(atcmd_output, msg_txt(1060)); // NoWarp |
+ strcat(atcmd_output, msg_fd(fd,1060)); // NoWarp |
if (map->list[m_id].flag.nowarpto)
- strcat(atcmd_output, msg_txt(1061)); // NoWarpTo |
+ strcat(atcmd_output, msg_fd(fd,1061)); // NoWarpTo |
if (map->list[m_id].flag.noreturn)
- strcat(atcmd_output, msg_txt(1062)); // NoReturn |
+ strcat(atcmd_output, msg_fd(fd,1062)); // NoReturn |
if (map->list[m_id].flag.nomemo)
- strcat(atcmd_output, msg_txt(1064)); // NoMemo |
+ strcat(atcmd_output, msg_fd(fd,1064)); // NoMemo |
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1065), // No Exp Penalty: %s | No Zeny Penalty: %s
- (map->list[m_id].flag.noexppenalty) ? msg_txt(1066) : msg_txt(1067),
- (map->list[m_id].flag.nozenypenalty) ? msg_txt(1066) : msg_txt(1067)); // On / Off
+ sprintf(atcmd_output, msg_fd(fd,1065), // No Exp Penalty: %s | No Zeny Penalty: %s
+ (map->list[m_id].flag.noexppenalty) ? msg_fd(fd,1066) : msg_fd(fd,1067),
+ (map->list[m_id].flag.nozenypenalty) ? msg_fd(fd,1066) : msg_fd(fd,1067)); // On / Off
clif->message(fd, atcmd_output);
if (map->list[m_id].flag.nosave) {
if (!map->list[m_id].save.map)
- clif->message(fd, msg_txt(1068)); // No Save (Return to last Save Point)
+ clif->message(fd, msg_fd(fd,1068)); // No Save (Return to last Save Point)
else if (map->list[m_id].save.x == -1 || map->list[m_id].save.y == -1 ) {
- sprintf(atcmd_output, msg_txt(1069), mapindex_id2name(map->list[m_id].save.map)); // No Save, Save Point: %s,Random
+ sprintf(atcmd_output, msg_fd(fd,1069), mapindex_id2name(map->list[m_id].save.map)); // No Save, Save Point: %s,Random
clif->message(fd, atcmd_output);
} else {
- sprintf(atcmd_output, msg_txt(1070), // No Save, Save Point: %s,%d,%d
+ sprintf(atcmd_output, msg_fd(fd,1070), // No Save, Save Point: %s,%d,%d
mapindex_id2name(map->list[m_id].save.map),map->list[m_id].save.x,map->list[m_id].save.y);
clif->message(fd, atcmd_output);
}
}
- strcpy(atcmd_output,msg_txt(1071)); // Weather Flags:
+ strcpy(atcmd_output,msg_fd(fd,1071)); // Weather Flags:
if (map->list[m_id].flag.snow)
- strcat(atcmd_output, msg_txt(1072)); // Snow |
+ strcat(atcmd_output, msg_fd(fd,1072)); // Snow |
if (map->list[m_id].flag.fog)
- strcat(atcmd_output, msg_txt(1073)); // Fog |
+ strcat(atcmd_output, msg_fd(fd,1073)); // Fog |
if (map->list[m_id].flag.sakura)
- strcat(atcmd_output, msg_txt(1074)); // Sakura |
+ strcat(atcmd_output, msg_fd(fd,1074)); // Sakura |
if (map->list[m_id].flag.clouds)
- strcat(atcmd_output, msg_txt(1075)); // Clouds |
+ strcat(atcmd_output, msg_fd(fd,1075)); // Clouds |
if (map->list[m_id].flag.clouds2)
- strcat(atcmd_output, msg_txt(1076)); // Clouds2 |
+ strcat(atcmd_output, msg_fd(fd,1076)); // Clouds2 |
if (map->list[m_id].flag.fireworks)
- strcat(atcmd_output, msg_txt(1077)); // Fireworks |
+ strcat(atcmd_output, msg_fd(fd,1077)); // Fireworks |
if (map->list[m_id].flag.leaves)
- strcat(atcmd_output, msg_txt(1078)); // Leaves |
+ strcat(atcmd_output, msg_fd(fd,1078)); // Leaves |
if (map->list[m_id].flag.nightenabled)
- strcat(atcmd_output, msg_txt(1080)); // Displays Night |
+ strcat(atcmd_output, msg_fd(fd,1080)); // Displays Night |
clif->message(fd, atcmd_output);
- strcpy(atcmd_output,msg_txt(1081)); // Other Flags:
+ strcpy(atcmd_output,msg_fd(fd,1081)); // Other Flags:
if (map->list[m_id].flag.nobranch)
- strcat(atcmd_output, msg_txt(1082)); // NoBranch |
+ strcat(atcmd_output, msg_fd(fd,1082)); // NoBranch |
if (map->list[m_id].flag.notrade)
- strcat(atcmd_output, msg_txt(1083)); // NoTrade |
+ strcat(atcmd_output, msg_fd(fd,1083)); // NoTrade |
if (map->list[m_id].flag.novending)
- strcat(atcmd_output, msg_txt(1084)); // NoVending |
+ strcat(atcmd_output, msg_fd(fd,1084)); // NoVending |
if (map->list[m_id].flag.nodrop)
- strcat(atcmd_output, msg_txt(1085)); // NoDrop |
+ strcat(atcmd_output, msg_fd(fd,1085)); // NoDrop |
if (map->list[m_id].flag.noskill)
- strcat(atcmd_output, msg_txt(1086)); // NoSkill |
+ strcat(atcmd_output, msg_fd(fd,1086)); // NoSkill |
if (map->list[m_id].flag.noicewall)
- strcat(atcmd_output, msg_txt(1087)); // NoIcewall |
+ strcat(atcmd_output, msg_fd(fd,1087)); // NoIcewall |
if (map->list[m_id].flag.allowks)
- strcat(atcmd_output, msg_txt(1088)); // AllowKS |
+ strcat(atcmd_output, msg_fd(fd,1088)); // AllowKS |
if (map->list[m_id].flag.reset)
- strcat(atcmd_output, msg_txt(1089)); // Reset |
+ strcat(atcmd_output, msg_fd(fd,1089)); // Reset |
clif->message(fd, atcmd_output);
- strcpy(atcmd_output,msg_txt(1090)); // Other Flags:
+ strcpy(atcmd_output,msg_fd(fd,1090)); // Other Flags:
if (map->list[m_id].nocommand)
- strcat(atcmd_output, msg_txt(1091)); // NoCommand |
+ strcat(atcmd_output, msg_fd(fd,1091)); // NoCommand |
if (map->list[m_id].flag.nobaseexp)
- strcat(atcmd_output, msg_txt(1092)); // NoBaseEXP |
+ strcat(atcmd_output, msg_fd(fd,1092)); // NoBaseEXP |
if (map->list[m_id].flag.nojobexp)
- strcat(atcmd_output, msg_txt(1093)); // NoJobEXP |
+ strcat(atcmd_output, msg_fd(fd,1093)); // NoJobEXP |
if (map->list[m_id].flag.nomobloot)
- strcat(atcmd_output, msg_txt(1094)); // NoMobLoot |
+ strcat(atcmd_output, msg_fd(fd,1094)); // NoMobLoot |
if (map->list[m_id].flag.nomvploot)
- strcat(atcmd_output, msg_txt(1095)); // NoMVPLoot |
+ strcat(atcmd_output, msg_fd(fd,1095)); // NoMVPLoot |
if (map->list[m_id].flag.partylock)
- strcat(atcmd_output, msg_txt(1096)); // PartyLock |
+ strcat(atcmd_output, msg_fd(fd,1096)); // PartyLock |
if (map->list[m_id].flag.guildlock)
- strcat(atcmd_output, msg_txt(1097)); // GuildLock |
+ strcat(atcmd_output, msg_fd(fd,1097)); // GuildLock |
clif->message(fd, atcmd_output);
switch (list) {
@@ -3827,12 +3871,12 @@ ACMD(mapinfo) {
// Do nothing. It's list 0, no additional display.
break;
case 1:
- clif->message(fd, msg_txt(1098)); // ----- Players in Map -----
+ clif->message(fd, msg_fd(fd,1098)); // ----- Players in Map -----
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) )
{
if (pl_sd->mapindex == m_index) {
- sprintf(atcmd_output, msg_txt(1099), // Player '%s' (session #%d) | Location: %d,%d
+ sprintf(atcmd_output, msg_fd(fd,1099), // Player '%s' (session #%d) | Location: %d,%d
pl_sd->status.name, pl_sd->fd, pl_sd->bl.x, pl_sd->bl.y);
clif->message(fd, atcmd_output);
}
@@ -3840,32 +3884,32 @@ ACMD(mapinfo) {
mapit->free(iter);
break;
case 2:
- clif->message(fd, msg_txt(1100)); // ----- NPCs in Map -----
+ clif->message(fd, msg_fd(fd,1100)); // ----- NPCs in Map -----
for (i = 0; i < map->list[m_id].npc_num;) {
struct npc_data *nd = map->list[m_id].npc[i];
switch(nd->dir) {
- case 0: strcpy(direction, msg_txt(1101)); break; // North
- case 1: strcpy(direction, msg_txt(1102)); break; // North West
- case 2: strcpy(direction, msg_txt(1103)); break; // West
- case 3: strcpy(direction, msg_txt(1104)); break; // South West
- case 4: strcpy(direction, msg_txt(1105)); break; // South
- case 5: strcpy(direction, msg_txt(1106)); break; // South East
- case 6: strcpy(direction, msg_txt(1107)); break; // East
- case 7: strcpy(direction, msg_txt(1108)); break; // North East
- case 9: strcpy(direction, msg_txt(1109)); break; // North
- default: strcpy(direction, msg_txt(1110)); break; // Unknown
+ case 0: strcpy(direction, msg_fd(fd,1101)); break; // North
+ case 1: strcpy(direction, msg_fd(fd,1102)); break; // North West
+ case 2: strcpy(direction, msg_fd(fd,1103)); break; // West
+ case 3: strcpy(direction, msg_fd(fd,1104)); break; // South West
+ case 4: strcpy(direction, msg_fd(fd,1105)); break; // South
+ case 5: strcpy(direction, msg_fd(fd,1106)); break; // South East
+ case 6: strcpy(direction, msg_fd(fd,1107)); break; // East
+ case 7: strcpy(direction, msg_fd(fd,1108)); break; // North East
+ case 9: strcpy(direction, msg_fd(fd,1109)); break; // North
+ default: strcpy(direction, msg_fd(fd,1110)); break; // Unknown
}
if(strcmp(nd->name,nd->exname) == 0)
- sprintf(atcmd_output, msg_txt(1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d
+ sprintf(atcmd_output, msg_fd(fd,1111), // NPC %d: %s | Direction: %s | Sprite: %d | Location: %d %d
++i, nd->name, direction, nd->class_, nd->bl.x, nd->bl.y);
else
- sprintf(atcmd_output, msg_txt(1112), // NPC %d: %s::%s | Direction: %s | Sprite: %d | Location: %d %d
+ sprintf(atcmd_output, msg_fd(fd,1112), // NPC %d: %s::%s | Direction: %s | Sprite: %d | Location: %d %d
++i, nd->name, nd->exname, direction, nd->class_, nd->bl.x, nd->bl.y);
clif->message(fd, atcmd_output);
}
break;
case 3:
- clif->message(fd, msg_txt(1113)); // ----- Chats in Map -----
+ clif->message(fd, msg_fd(fd,1113)); // ----- Chats in Map -----
iter = mapit_getallusers();
for( pl_sd = (TBL_PC*)mapit->first(iter); mapit->exists(iter); pl_sd = (TBL_PC*)mapit->next(iter) )
{
@@ -3873,18 +3917,18 @@ ACMD(mapinfo) {
pl_sd->mapindex == m_index &&
cd->usersd[0] == pl_sd)
{
- sprintf(atcmd_output, msg_txt(1114), // Chat: %s | Player: %s | Location: %d %d
+ sprintf(atcmd_output, msg_fd(fd,1114), // Chat: %s | Player: %s | Location: %d %d
cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y);
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1115), // Users: %d/%d | Password: %s | Public: %s
- cd->users, cd->limit, cd->pass, (cd->pub) ? msg_txt(1116) : msg_txt(1117)); // Yes / No
+ sprintf(atcmd_output, msg_fd(fd,1115), // Users: %d/%d | Password: %s | Public: %s
+ cd->users, cd->limit, cd->pass, (cd->pub) ? msg_fd(fd,1116) : msg_fd(fd,1117)); // Yes / No
clif->message(fd, atcmd_output);
}
}
mapit->free(iter);
break;
default: // normally impossible to arrive here
- clif->message(fd, msg_txt(1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
+ clif->message(fd, msg_fd(fd,1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
return false;
}
@@ -3897,51 +3941,51 @@ ACMD(mapinfo) {
ACMD(mount_peco)
{
if (sd->disguise != -1) {
- clif->message(fd, msg_txt(212)); // Cannot mount while in disguise.
+ clif->message(fd, msg_fd(fd,212)); // Cannot mount while in disguise.
return false;
}
if( sd->sc.data[SC_ALL_RIDING] ) {
- clif->message(fd, msg_txt(1476)); // You are already mounting something else
+ clif->message(fd, msg_fd(fd,1476)); // You are already mounting something else
return false;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT ) {
if( !pc->checkskill(sd,RK_DRAGONTRAINING) ) {
- sprintf(atcmd_output, msg_txt(213), skill->get_desc(RK_DRAGONTRAINING)); // You need %s to mount!
+ sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(RK_DRAGONTRAINING)); // You need %s to mount!
clif->message(fd, atcmd_output);
return false;
}
if (!pc_isridingdragon(sd)) {
- clif->message(sd->fd,msg_txt(1119)); // You have mounted your Dragon.
+ clif->message(sd->fd,msg_fd(fd,1119)); // You have mounted your Dragon.
pc->setridingdragon(sd, OPTION_DRAGON1);
} else {
- clif->message(sd->fd,msg_txt(1120)); // You have released your Dragon.
+ clif->message(sd->fd,msg_fd(fd,1120)); // You have released your Dragon.
pc->setridingdragon(sd, 0);
}
return true;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER ) {
if( !pc->checkskill(sd,RA_WUGRIDER) ) {
- sprintf(atcmd_output, msg_txt(213), skill->get_desc(RA_WUGRIDER)); // You need %s to mount!
+ sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(RA_WUGRIDER)); // You need %s to mount!
clif->message(fd, atcmd_output);
return false;
}
if( !pc_isridingwug(sd) ) {
- clif->message(sd->fd,msg_txt(1121)); // You have mounted your Warg.
+ clif->message(sd->fd,msg_fd(fd,1121)); // You have mounted your Warg.
pc->setridingwug(sd, true);
} else {
- clif->message(sd->fd,msg_txt(1122)); // You have released your Warg.
+ clif->message(sd->fd,msg_fd(fd,1122)); // You have released your Warg.
pc->setridingwug(sd, false);
}
return true;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) {
if( !pc_ismadogear(sd) ) {
- clif->message(sd->fd,msg_txt(1123)); // You have mounted your Mado Gear.
+ clif->message(sd->fd,msg_fd(fd,1123)); // You have mounted your Mado Gear.
pc->setmadogear(sd, true);
} else {
- clif->message(sd->fd,msg_txt(1124)); // You have released your Mado Gear.
+ clif->message(sd->fd,msg_fd(fd,1124)); // You have released your Mado Gear.
pc->setmadogear(sd, false);
}
return true;
@@ -3949,19 +3993,19 @@ ACMD(mount_peco)
if( sd->class_&MAPID_SWORDMAN && sd->class_&JOBL_2 ) {
if (!pc_isridingpeco(sd)) { // if actually no peco
if (!pc->checkskill(sd, KN_RIDING)) {
- sprintf(atcmd_output, msg_txt(213), skill->get_desc(KN_RIDING)); // You need %s to mount!
+ sprintf(atcmd_output, msg_fd(fd,213), skill->get_desc(KN_RIDING)); // You need %s to mount!
clif->message(fd, atcmd_output);
return false;
}
pc->setridingpeco(sd, true);
- clif->message(fd, msg_txt(102)); // You have mounted a Peco Peco.
+ clif->message(fd, msg_fd(fd,102)); // You have mounted a Peco Peco.
} else {//Dismount
pc->setridingpeco(sd, false);
- clif->message(fd, msg_txt(214)); // You have released your Peco Peco.
+ clif->message(fd, msg_fd(fd,214)); // You have released your Peco Peco.
}
return true;
}
- clif->message(fd, msg_txt(215)); // Your class can't mount!
+ clif->message(fd, msg_fd(fd,215)); // Your class can't mount!
return false;
}
@@ -3977,11 +4021,11 @@ ACMD(guildspy) {
if (!map->enable_spy)
{
- clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
+ clif->message(fd, msg_fd(fd,1125)); // The mapserver has spy command support disabled.
return false;
}
if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->message(fd, msg_txt(1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>).
+ clif->message(fd, msg_fd(fd,1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>).
return false;
}
@@ -3989,15 +4033,15 @@ ACMD(guildspy) {
(g = guild->search(atoi(message))) != NULL) {
if (sd->guildspy == g->guild_id) {
sd->guildspy = 0;
- sprintf(atcmd_output, msg_txt(103), g->name); // No longer spying on the %s guild.
+ sprintf(atcmd_output, msg_fd(fd,103), g->name); // No longer spying on the %s guild.
clif->message(fd, atcmd_output);
} else {
sd->guildspy = g->guild_id;
- sprintf(atcmd_output, msg_txt(104), g->name); // Spying on the %s guild.
+ sprintf(atcmd_output, msg_fd(fd,104), g->name); // Spying on the %s guild.
clif->message(fd, atcmd_output);
}
} else {
- clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the specified guild is online.
+ clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the specified guild is online.
return false;
}
@@ -4016,12 +4060,12 @@ ACMD(partyspy) {
if (!map->enable_spy)
{
- clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
+ clif->message(fd, msg_fd(fd,1125)); // The mapserver has spy command support disabled.
return false;
}
if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) {
- clif->message(fd, msg_txt(1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>).
+ clif->message(fd, msg_fd(fd,1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>).
return false;
}
@@ -4029,15 +4073,15 @@ ACMD(partyspy) {
(p = party->search(atoi(message))) != NULL) {
if (sd->partyspy == p->party.party_id) {
sd->partyspy = 0;
- sprintf(atcmd_output, msg_txt(105), p->party.name); // No longer spying on the %s party.
+ sprintf(atcmd_output, msg_fd(fd,105), p->party.name); // No longer spying on the %s party.
clif->message(fd, atcmd_output);
} else {
sd->partyspy = p->party.party_id;
- sprintf(atcmd_output, msg_txt(106), p->party.name); // Spying on the %s party.
+ sprintf(atcmd_output, msg_fd(fd,106), p->party.name); // Spying on the %s party.
clif->message(fd, atcmd_output);
}
} else {
- clif->message(fd, msg_txt(96)); // Incorrect name/ID, or no one from the specified party is online.
+ clif->message(fd, msg_fd(fd,96)); // Incorrect name/ID, or no one from the specified party is online.
return false;
}
@@ -4063,9 +4107,9 @@ ACMD(repairall)
if (count > 0) {
clif->misceffect(&sd->bl, 3);
clif->equiplist(sd);
- clif->message(fd, msg_txt(107)); // All items have been repaired.
+ clif->message(fd, msg_fd(fd,107)); // All items have been repaired.
} else {
- clif->message(fd, msg_txt(108)); // No item need to be repaired.
+ clif->message(fd, msg_fd(fd,108)); // No item need to be repaired.
return false;
}
@@ -4081,20 +4125,20 @@ ACMD(nuke) {
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1128)); // Please enter a player name (usage: @nuke <char name>).
+ clif->message(fd, msg_fd(fd,1128)); // Please enter a player name (usage: @nuke <char name>).
return false;
}
if ((pl_sd = map->nick2sd(atcmd_player_name)) != NULL) {
if (pc_get_group_level(sd) >= pc_get_group_level(pl_sd)) { // you can kill only lower or same GM level
skill->castend_nodamage_id(&pl_sd->bl, &pl_sd->bl, NPC_SELFDESTRUCTION, 99, timer->gettick(), 0);
- clif->message(fd, msg_txt(109)); // Player has been nuked!
+ clif->message(fd, msg_fd(fd,109)); // Player has been nuked!
} else {
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
} else {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
@@ -4111,17 +4155,17 @@ ACMD(tonpc) {
memset(npcname, 0, sizeof(npcname));
if (!message || !*message || sscanf(message, "%23[^\n]", npcname) < 1) {
- clif->message(fd, msg_txt(1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>).
+ clif->message(fd, msg_fd(fd,1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>).
return false;
}
if ((nd = npc->name2id(npcname)) != NULL) {
if (nd->bl.m != -1 && pc->setpos(sd, map_id2index(nd->bl.m), nd->bl.x, nd->bl.y, CLR_TELEPORT) == 0)
- clif->message(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_fd(fd,0)); // Warped.
else
return false;
} else {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist.
return false;
}
@@ -4138,15 +4182,15 @@ ACMD(shownpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) {
- clif->message(fd, msg_txt(1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>).
+ clif->message(fd, msg_fd(fd,1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>).
return false;
}
if (npc->name2id(NPCname) != NULL) {
npc->enable(NPCname, 1);
- clif->message(fd, msg_txt(110)); // Npc Enabled.
+ clif->message(fd, msg_fd(fd,110)); // Npc Enabled.
} else {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist.
return false;
}
@@ -4163,17 +4207,17 @@ ACMD(hidenpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) {
- clif->message(fd, msg_txt(1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>).
+ clif->message(fd, msg_fd(fd,1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>).
return false;
}
if (npc->name2id(NPCname) == NULL) {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist.
return false;
}
npc->enable(NPCname, 0);
- clif->message(fd, msg_txt(112)); // Npc Disabled.
+ clif->message(fd, msg_fd(fd,112)); // Npc Disabled.
return true;
}
@@ -4182,13 +4226,13 @@ ACMD(loadnpc)
FILE *fp;
if (!message || !*message) {
- clif->message(fd, msg_txt(1132)); // Please enter a script file name (usage: @loadnpc <file name>).
+ clif->message(fd, msg_fd(fd,1132)); // Please enter a script file name (usage: @loadnpc <file name>).
return false;
}
// check if script file exists
if ((fp = fopen(message, "r")) == NULL) {
- clif->message(fd, msg_txt(261));
+ clif->message(fd, msg_fd(fd,261));
return false;
}
fclose(fp);
@@ -4198,7 +4242,7 @@ ACMD(loadnpc)
npc->parsesrcfile(message,true);
npc->read_event_script();
- clif->message(fd, msg_txt(262));
+ clif->message(fd, msg_fd(fd,262));
return true;
}
@@ -4211,27 +4255,26 @@ ACMD(unloadnpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%24[^\n]", NPCname) < 1) {
- clif->message(fd, msg_txt(1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>).
+ clif->message(fd, msg_fd(fd,1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>).
return false;
}
if ((nd = npc->name2id(NPCname)) == NULL) {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist.
return false;
}
npc->unload_duplicates(nd);
npc->unload(nd,true);
npc->read_event_script();
- clif->message(fd, msg_txt(112)); // Npc Disabled.
+ clif->message(fd, msg_fd(fd,112)); // Npc Disabled.
return true;
}
/*==========================================
* time in txt for time command (by [Yor])
*------------------------------------------*/
-char* txt_time(unsigned int duration)
-{
+char* txt_time(int fd, unsigned int duration) {
int days, hours, minutes, seconds;
static char temp1[CHAT_SIZE_MAX];
int tlen = 0;
@@ -4246,21 +4289,21 @@ char* txt_time(unsigned int duration)
seconds = duration - (60 * minutes);
if (days == 1)
- tlen += sprintf(tlen + temp1, msg_txt(219), days); // %d day
+ tlen += sprintf(tlen + temp1, msg_fd(fd,219), days); // %d day
else if (days > 1)
- tlen += sprintf(tlen + temp1, msg_txt(220), days); // %d days
+ tlen += sprintf(tlen + temp1, msg_fd(fd,220), days); // %d days
if (hours == 1)
- tlen += sprintf(tlen + temp1, msg_txt(221), hours); // %d hour
+ tlen += sprintf(tlen + temp1, msg_fd(fd,221), hours); // %d hour
else if (hours > 1)
- tlen += sprintf(tlen + temp1, msg_txt(222), hours); // %d hours
+ tlen += sprintf(tlen + temp1, msg_fd(fd,222), hours); // %d hours
if (minutes < 2)
- tlen += sprintf(tlen + temp1, msg_txt(223), minutes); // %d minute
+ tlen += sprintf(tlen + temp1, msg_fd(fd,223), minutes); // %d minute
else
- tlen += sprintf(tlen + temp1, msg_txt(224), minutes); // %d minutes
+ tlen += sprintf(tlen + temp1, msg_fd(fd,224), minutes); // %d minutes
if (seconds == 1)
- sprintf(tlen + temp1, msg_txt(225), seconds); // and %d second
+ sprintf(tlen + temp1, msg_fd(fd,225), seconds); // and %d second
else if (seconds > 1)
- sprintf(tlen + temp1, msg_txt(226), seconds); // and %d seconds
+ sprintf(tlen + temp1, msg_fd(fd,226), seconds); // and %d seconds
return temp1;
}
@@ -4279,7 +4322,7 @@ ACMD(servertime) {
time(&time_server); // get time in seconds since 1/1/1970
datetime = localtime(&time_server); // convert seconds in structure
// like sprintf, but only for date/time (Sunday, November 02 2003 15:12:52)
- strftime(temp, sizeof(temp)-1, msg_txt(230), datetime); // Server time (normal time): %A, %B %d %Y %X.
+ strftime(temp, sizeof(temp)-1, msg_fd(fd,230), datetime); // Server time (normal time): %A, %B %d %Y %X.
clif->message(fd, temp);
if (pc->day_timer_tid != INVALID_TIMER && pc->night_timer_tid != INVALID_TIMER) {
@@ -4287,35 +4330,35 @@ ACMD(servertime) {
const struct TimerData * timer_data2 = timer->get(pc->day_timer_tid);
if (map->night_flag == 0) {
- sprintf(temp, msg_txt(235), // Game time: The game is actually in daylight for %s.
- txt_time((unsigned int)(DIFF_TICK(timer_data->tick,timer->gettick())/1000)));
+ sprintf(temp, msg_fd(fd,235), // Game time: The game is actually in daylight for %s.
+ txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->tick,timer->gettick())/1000)));
clif->message(fd, temp);
if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0)
- sprintf(temp, msg_txt(237), // Game time: After, the game will be in night for %s.
- txt_time((unsigned int)(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)));
+ sprintf(temp, msg_fd(fd,237), // Game time: After, the game will be in night for %s.
+ txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)));
else
- sprintf(temp, msg_txt(237), // Game time: After, the game will be in night for %s.
- txt_time((unsigned int)(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000)));
+ sprintf(temp, msg_fd(fd,237), // Game time: After, the game will be in night for %s.
+ txt_time(fd,(unsigned int)(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000)));
clif->message(fd, temp);
} else {
- sprintf(temp, msg_txt(233), // Game time: The game is actually in night for %s.
- txt_time((unsigned int)(DIFF_TICK(timer_data2->tick,timer->gettick()) / 1000)));
+ sprintf(temp, msg_fd(fd,233), // Game time: The game is actually in night for %s.
+ txt_time(fd,(unsigned int)(DIFF_TICK(timer_data2->tick,timer->gettick()) / 1000)));
clif->message(fd, temp);
if (DIFF_TICK(timer_data2->tick,timer_data->tick) > 0)
- sprintf(temp, msg_txt(239), // Game time: After, the game will be in daylight for %s.
- txt_time((unsigned int)((timer_data2->interval - DIFF_TICK(timer_data2->tick, timer_data->tick)) / 1000)));
+ sprintf(temp, msg_fd(fd,239), // Game time: After, the game will be in daylight for %s.
+ txt_time(fd,(unsigned int)((timer_data2->interval - DIFF_TICK(timer_data2->tick, timer_data->tick)) / 1000)));
else
- sprintf(temp, msg_txt(239), // Game time: After, the game will be in daylight for %s.
- txt_time((unsigned int)(DIFF_TICK(timer_data->tick, timer_data2->tick) / 1000)));
+ sprintf(temp, msg_fd(fd,239), // Game time: After, the game will be in daylight for %s.
+ txt_time(fd,(unsigned int)(DIFF_TICK(timer_data->tick, timer_data2->tick) / 1000)));
clif->message(fd, temp);
}
- sprintf(temp, msg_txt(238), txt_time(timer_data2->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
+ sprintf(temp, msg_fd(fd,238), txt_time(fd,timer_data2->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
clif->message(fd, temp);
} else {
if (map->night_flag == 0)
- clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
+ clif->message(fd, msg_fd(fd,231)); // Game time: The game is in permanent daylight.
else
- clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
+ clif->message(fd, msg_fd(fd,232)); // Game time: The game is in permanent night.
}
return true;
@@ -4361,24 +4404,24 @@ ACMD(jail) {
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1134)); // Please enter a player name (usage: @jail <char_name>).
+ clif->message(fd, msg_fd(fd,1134)); // Please enter a player name (usage: @jail <char_name>).
return false;
}
if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) {
// you can jail only lower or same GM
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
if (pl_sd->sc.data[SC_JAILED])
{
- clif->message(fd, msg_txt(118)); // Player warped in jails.
+ clif->message(fd, msg_fd(fd,118)); // Player warped in jails.
return false;
}
@@ -4397,8 +4440,8 @@ ACMD(jail) {
//Duration of INT_MAX to specify infinity.
sc_start4(NULL,&pl_sd->bl,SC_JAILED,100,INT_MAX,m_index,x,y,1000);
- clif->message(pl_sd->fd, msg_txt(117)); // You have been jailed by a GM.
- clif->message(fd, msg_txt(118)); // Player warped in jails.
+ clif->message(pl_sd->fd, msg_fd(fd,117)); // You have been jailed by a GM.
+ clif->message(fd, msg_fd(fd,118)); // Player warped in jails.
return true;
}
@@ -4412,31 +4455,31 @@ ACMD(unjail) {
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>).
+ clif->message(fd, msg_fd(fd,1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>).
return false;
}
if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { // you can jail only lower or same GM
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
if (!pl_sd->sc.data[SC_JAILED])
{
- clif->message(fd, msg_txt(119)); // This player is not in jails.
+ clif->message(fd, msg_fd(fd,119)); // This player is not in jails.
return false;
}
//Reset jail time to 1 sec.
sc_start(NULL,&pl_sd->bl,SC_JAILED,100,1,1000);
- clif->message(pl_sd->fd, msg_txt(120)); // A GM has discharged you from jail.
- clif->message(fd, msg_txt(121)); // Player unjailed.
+ clif->message(pl_sd->fd, msg_fd(fd,120)); // A GM has discharged you from jail.
+ clif->message(fd, msg_fd(fd,121)); // Player unjailed.
return true;
}
@@ -4448,7 +4491,7 @@ ACMD(jailfor) {
short m_index = 0;
if (!message || !*message || sscanf(message, "%255s %23[^\n]",atcmd_output,atcmd_player_name) < 2) {
- clif->message(fd, msg_txt(400)); //Usage: @jailfor <time> <character name>
+ clif->message(fd, msg_fd(fd,400)); //Usage: @jailfor <time> <character name>
return false;
}
@@ -4490,24 +4533,24 @@ ACMD(jailfor) {
}
if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0) {
- clif->message(fd, msg_txt(1136)); // Invalid time for jail command.
+ clif->message(fd, msg_fd(fd,1136)); // Invalid time for jail command.
return false;
}
if ((pl_sd = map->nick2sd(atcmd_player_name)) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if (pc_get_group_level(pl_sd) > pc_get_group_level(sd)) {
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
jailtime = year*12*30*24*60 + month*30*24*60 + day*24*60 + hour*60 + minute; //In minutes
if(jailtime==0) {
- clif->message(fd, msg_txt(1136)); // Invalid time for jail command.
+ clif->message(fd, msg_fd(fd,1136)); // Invalid time for jail command.
return false;
}
@@ -4517,17 +4560,17 @@ ACMD(jailfor) {
jailtime += pl_sd->sc.data[SC_JAILED]->val1;
if (jailtime <= 0) {
jailtime = 0;
- clif->message(pl_sd->fd, msg_txt(120)); // GM has discharge you.
- clif->message(fd, msg_txt(121)); // Player unjailed
+ clif->message(pl_sd->fd, msg_fd(fd,120)); // GM has discharge you.
+ clif->message(fd, msg_fd(fd,121)); // Player unjailed
} else {
atcommand->get_jail_time(jailtime,&year,&month,&day,&hour,&minute);
- sprintf(atcmd_output,msg_txt(402),msg_txt(1137),year,month,day,hour,minute); //%s in jail for %d years, %d months, %d days, %d hours and %d minutes
+ sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1137),year,month,day,hour,minute); //%s in jail for %d years, %d months, %d days, %d hours and %d minutes
clif->message(pl_sd->fd, atcmd_output);
- sprintf(atcmd_output,msg_txt(402),msg_txt(1138),year,month,day,hour,minute); //This player is now in jail for %d years, %d months, %d days, %d hours and %d minutes
+ sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1138),year,month,day,hour,minute); //This player is now in jail for %d years, %d months, %d days, %d hours and %d minutes
clif->message(fd, atcmd_output);
}
} else if (jailtime < 0) {
- clif->message(fd, msg_txt(1136));
+ clif->message(fd, msg_fd(fd,1136));
return false;
}
@@ -4555,23 +4598,23 @@ ACMD(jailtime)
int year, month, day, hour, minute;
if (!sd->sc.data[SC_JAILED]) {
- clif->message(fd, msg_txt(1139)); // You are not in jail.
+ clif->message(fd, msg_fd(fd,1139)); // You are not in jail.
return false;
}
if (sd->sc.data[SC_JAILED]->val1 == INT_MAX) {
- clif->message(fd, msg_txt(1140)); // You have been jailed indefinitely.
+ clif->message(fd, msg_fd(fd,1140)); // You have been jailed indefinitely.
return true;
}
if (sd->sc.data[SC_JAILED]->val1 <= 0) { // Was not jailed with @jailfor (maybe @jail? or warped there? or got recalled?)
- clif->message(fd, msg_txt(1141)); // You have been jailed for an unknown amount of time.
+ clif->message(fd, msg_fd(fd,1141)); // You have been jailed for an unknown amount of time.
return false;
}
//Get remaining jail time
atcommand->get_jail_time(sd->sc.data[SC_JAILED]->val1,&year,&month,&day,&hour,&minute);
- sprintf(atcmd_output,msg_txt(402),msg_txt(1142),year,month,day,hour,minute); // You will remain in jail for %d years, %d months, %d days, %d hours and %d minutes
+ sprintf(atcmd_output,msg_fd(fd,402),msg_fd(fd,1142),year,month,day,hour,minute); // You will remain in jail for %d years, %d months, %d days, %d hours and %d minutes
clif->message(fd, atcmd_output);
@@ -4586,7 +4629,7 @@ ACMD(disguise)
int id = 0;
if (!message || !*message) {
- clif->message(fd, msg_txt(1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>).
+ clif->message(fd, msg_fd(fd,1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>).
return false;
}
@@ -4606,23 +4649,23 @@ ACMD(disguise)
if (id == 0)
{
- clif->message(fd, msg_txt(123)); // Invalid Monster/NPC name/ID specified.
+ clif->message(fd, msg_fd(fd,123)); // Invalid Monster/NPC name/ID specified.
return false;
}
if (pc_hasmount(sd)) {
- clif->message(fd, msg_txt(1144)); // Character cannot be disguised while mounted.
+ clif->message(fd, msg_fd(fd,1144)); // Character cannot be disguised while mounted.
return false;
}
if(sd->sc.data[SC_MONSTER_TRANSFORM])
{
- clif->message(fd, msg_txt(1487)); // Character cannot be disguised while in monster form.
+ clif->message(fd, msg_fd(fd,1487)); // Character cannot be disguised while in monster form.
return false;
}
pc->disguise(sd, id);
- clif->message(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_fd(fd,122)); // Disguise applied.
return true;
}
@@ -4637,7 +4680,7 @@ ACMD(disguiseall)
struct s_mapiterator* iter;
if (!message || !*message) {
- clif->message(fd, msg_txt(1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>).
+ clif->message(fd, msg_fd(fd,1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>).
return false;
}
@@ -4645,7 +4688,7 @@ ACMD(disguiseall)
mob_id = atoi(message);
if (!mob->db_checkid(mob_id) && !npc->db_checkid(mob_id)) { //if mob or npc...
- clif->message(fd, msg_txt(123)); // Monster/NPC name/id not found.
+ clif->message(fd, msg_fd(fd,123)); // Monster/NPC name/id not found.
return false;
}
@@ -4654,7 +4697,7 @@ ACMD(disguiseall)
pc->disguise(pl_sd, mob_id);
mapit->free(iter);
- clif->message(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_fd(fd,122)); // Disguise applied.
return true;
}
@@ -4671,7 +4714,7 @@ ACMD(disguiseguild)
memset(guild_name, '\0', sizeof(guild_name));
if( !message || !*message || sscanf(message, "%23[^,], %23[^\r\n]", monster, guild_name) < 2 ) {
- clif->message(fd, msg_txt(1146)); // Please enter a mob name/ID and guild name/ID (usage: @disguiseguild <mob name/ID>, <guild name/ID>).
+ clif->message(fd, msg_fd(fd,1146)); // Please enter a mob name/ID and guild name/ID (usage: @disguiseguild <mob name/ID>, <guild name/ID>).
return false;
}
@@ -4687,12 +4730,12 @@ ACMD(disguiseguild)
}
if( id == 0 ) {
- clif->message(fd, msg_txt(123)); // Monster/NPC name/id hasn't been found.
+ clif->message(fd, msg_fd(fd,123)); // Monster/NPC name/id hasn't been found.
return false;
}
if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(guild_name))) == NULL ) {
- clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online.
return false;
}
@@ -4702,7 +4745,7 @@ ACMD(disguiseguild)
pc->disguise(pl_sd, id);
}
- clif->message(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_fd(fd,122)); // Disguise applied.
return true;
}
@@ -4714,9 +4757,9 @@ ACMD(undisguise)
{
if (sd->disguise != -1) {
pc->disguise(sd, -1);
- clif->message(fd, msg_txt(124)); // Disguise removed.
+ clif->message(fd, msg_fd(fd,124)); // Disguise removed.
} else {
- clif->message(fd, msg_txt(125)); // You're not disguised.
+ clif->message(fd, msg_fd(fd,125)); // You're not disguised.
return false;
}
@@ -4736,7 +4779,7 @@ ACMD(undisguiseall) {
pc->disguise(pl_sd, -1);
mapit->free(iter);
- clif->message(fd, msg_txt(124)); // Disguise removed.
+ clif->message(fd, msg_fd(fd,124)); // Disguise removed.
return true;
}
@@ -4753,12 +4796,12 @@ ACMD(undisguiseguild)
memset(guild_name, '\0', sizeof(guild_name));
if(!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->message(fd, msg_txt(1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>).
+ clif->message(fd, msg_fd(fd,1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>).
return false;
}
if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(message))) == NULL ) {
- clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online.
return false;
}
@@ -4768,7 +4811,7 @@ ACMD(undisguiseguild)
pc->disguise(pl_sd, -1);
}
- clif->message(fd, msg_txt(124)); // Disguise removed.
+ clif->message(fd, msg_fd(fd,124)); // Disguise removed.
return true;
}
@@ -4791,7 +4834,7 @@ ACMD(exp)
if (nextj)
nextj = sd->status.job_exp*100.0/nextj;
- sprintf(output, msg_txt(1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
+ sprintf(output, msg_fd(fd,1148), sd->status.base_level, nextb, sd->status.job_level, nextj); // Base Level: %d (%.3f%%) | Job Level: %d (%.3f%%)
clif->message(fd, output);
return true;
}
@@ -4805,7 +4848,7 @@ ACMD(broadcast)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->message(fd, msg_txt(1149)); // Please enter a message (usage: @broadcast <message>).
+ clif->message(fd, msg_fd(fd,1149)); // Please enter a message (usage: @broadcast <message>).
return false;
}
@@ -4823,7 +4866,7 @@ ACMD(localbroadcast)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->message(fd, msg_txt(1150)); // Please enter a message (usage: @localbroadcast <message>).
+ clif->message(fd, msg_fd(fd,1150)); // Please enter a message (usage: @localbroadcast <message>).
return false;
}
@@ -4846,26 +4889,26 @@ ACMD(email)
memset(new_email, '\0', sizeof(new_email));
if (!message || !*message || sscanf(message, "%99s %99s", actual_email, new_email) < 2) {
- clif->message(fd, msg_txt(1151)); // Please enter two e-mail addresses (usage: @email <current@email> <new@email>).
+ clif->message(fd, msg_fd(fd,1151)); // Please enter two e-mail addresses (usage: @email <current@email> <new@email>).
return false;
}
if (e_mail_check(actual_email) == 0) {
- clif->message(fd, msg_txt(144)); // Invalid e-mail. If your email hasn't been set, use a@a.com.
+ clif->message(fd, msg_fd(fd,144)); // Invalid e-mail. If your email hasn't been set, use a@a.com.
return false;
} else if (e_mail_check(new_email) == 0) {
- clif->message(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail address.
+ clif->message(fd, msg_fd(fd,145)); // Invalid new email. Please enter a real e-mail address.
return false;
} else if (strcmpi(new_email, "a@a.com") == 0) {
- clif->message(fd, msg_txt(146)); // New email must be a real e-mail address.
+ clif->message(fd, msg_fd(fd,146)); // New email must be a real e-mail address.
return false;
} else if (strcmpi(actual_email, new_email) == 0) {
- clif->message(fd, msg_txt(147)); // New e-mail must be different from the current e-mail address.
+ clif->message(fd, msg_fd(fd,147)); // New e-mail must be different from the current e-mail address.
return false;
}
chrif->changeemail(sd->status.account_id, actual_email, new_email);
- clif->message(fd, msg_txt(148)); // Information sended to login-server via char-server.
+ clif->message(fd, msg_fd(fd,148)); // Information sended to login-server via char-server.
return true;
}
@@ -4877,12 +4920,12 @@ ACMD(effect)
int type = 0, flag = 0;
if (!message || !*message || sscanf(message, "%d", &type) < 1) {
- clif->message(fd, msg_txt(1152)); // Please enter an effect number (usage: @effect <effect number>).
+ clif->message(fd, msg_fd(fd,1152)); // Please enter an effect number (usage: @effect <effect number>).
return false;
}
clif->specialeffect(&sd->bl, type, (send_target)flag);
- clif->message(fd, msg_txt(229)); // Your effect has changed.
+ clif->message(fd, msg_fd(fd,229)); // Your effect has changed.
return true;
}
@@ -4895,9 +4938,9 @@ ACMD(killer)
sd->state.killer = !sd->state.killer;
if(sd->state.killer)
- clif->message(fd, msg_txt(241));
+ clif->message(fd, msg_fd(fd,241));
else {
- clif->message(fd, msg_txt(292));
+ clif->message(fd, msg_fd(fd,292));
pc_stop_attack(sd);
}
return true;
@@ -4911,9 +4954,9 @@ ACMD(killable) {
sd->state.killable = !sd->state.killable;
if(sd->state.killable)
- clif->message(fd, msg_txt(242));
+ clif->message(fd, msg_fd(fd,242));
else {
- clif->message(fd, msg_txt(288));
+ clif->message(fd, msg_fd(fd,288));
map->foreachinrange(atcommand->stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id);
}
return true;
@@ -4925,7 +4968,7 @@ ACMD(killable) {
*------------------------------------------*/
ACMD(skillon) {
map->list[sd->bl.m].flag.noskill = 0;
- clif->message(fd, msg_txt(244));
+ clif->message(fd, msg_fd(fd,244));
return true;
}
@@ -4935,7 +4978,7 @@ ACMD(skillon) {
*------------------------------------------*/
ACMD(skilloff) {
map->list[sd->bl.m].flag.noskill = 1;
- clif->message(fd, msg_txt(243));
+ clif->message(fd, msg_fd(fd,243));
return true;
}
@@ -4950,17 +4993,17 @@ ACMD(npcmove) {
memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
if (!message || !*message || sscanf(message, "%d %d %23[^\n]", &x, &y, atcmd_player_name) < 3) {
- clif->message(fd, msg_txt(1153)); // Usage: @npcmove <X> <Y> <npc_name>
+ clif->message(fd, msg_fd(fd,1153)); // Usage: @npcmove <X> <Y> <npc_name>
return false;
}
if ((nd = npc->name2id(atcmd_player_name)) == NULL) {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist.
return false;
}
if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL) {
- clif->message(fd, msg_txt(1154)); // NPC is not in this map.
+ clif->message(fd, msg_fd(fd,1154)); // NPC is not in this map.
return false; //Not on a map.
}
@@ -4969,7 +5012,7 @@ ACMD(npcmove) {
map->foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
map->moveblock(&nd->bl, x, y, timer->gettick());
map->foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
- clif->message(fd, msg_txt(1155)); // NPC moved.
+ clif->message(fd, msg_fd(fd,1155)); // NPC moved.
return true;
}
@@ -4988,14 +5031,14 @@ ACMD(addwarp)
memset(warpname, '\0', sizeof(warpname));
if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) {
- clif->message(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name>
+ clif->message(fd, msg_fd(fd,1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name>
return false;
}
m = mapindex->name2id(mapname);
if( m == 0 )
{
- sprintf(atcmd_output, msg_txt(1157), mapname); // Unknown map '%s'.
+ sprintf(atcmd_output, msg_fd(fd,1157), mapname); // Unknown map '%s'.
clif->message(fd, atcmd_output);
return false;
}
@@ -5004,7 +5047,7 @@ ACMD(addwarp)
if( nd == NULL )
return false;
- sprintf(atcmd_output, msg_txt(1158), nd->exname); // New warp NPC '%s' created.
+ sprintf(atcmd_output, msg_fd(fd,1158), nd->exname); // New warp NPC '%s' created.
clif->message(fd, atcmd_output);
return true;
}
@@ -5020,22 +5063,22 @@ ACMD(follow) {
if (sd->followtarget == -1)
return false;
pc->stop_following (sd);
- clif->message(fd, msg_txt(1159)); // Follow mode OFF.
+ clif->message(fd, msg_fd(fd,1159)); // Follow mode OFF.
return true;
}
if ( (pl_sd = map->nick2sd((char *)message)) == NULL )
{
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if (sd->followtarget == pl_sd->bl.id) {
pc->stop_following (sd);
- clif->message(fd, msg_txt(1159)); // Follow mode OFF.
+ clif->message(fd, msg_fd(fd,1159)); // Follow mode OFF.
} else {
pc->follow(sd, pl_sd->bl.id);
- clif->message(fd, msg_txt(1160)); // Follow mode ON.
+ clif->message(fd, msg_fd(fd,1160)); // Follow mode ON.
}
return true;
@@ -5071,7 +5114,7 @@ ACMD(storeall)
if (sd->state.storage_flag != 1) {
//Open storage.
if( storage->open(sd) == 1 ) {
- clif->message(fd, msg_txt(1161)); // You currently cannot open your storage.
+ clif->message(fd, msg_fd(fd,1161)); // You currently cannot open your storage.
return false;
}
}
@@ -5085,7 +5128,7 @@ ACMD(storeall)
}
storage->close(sd);
- clif->message(fd, msg_txt(1162)); // All items stored.
+ clif->message(fd, msg_fd(fd,1162)); // All items stored.
return true;
}
@@ -5094,7 +5137,7 @@ ACMD(clearstorage)
int i, j;
if (sd->state.storage_flag == 1) {
- clif->message(fd, msg_txt(250));
+ clif->message(fd, msg_fd(fd,250));
return false;
}
@@ -5104,7 +5147,7 @@ ACMD(clearstorage)
}
storage->close(sd);
- clif->message(fd, msg_txt(1394)); // Your storage was cleaned.
+ clif->message(fd, msg_fd(fd,1394)); // Your storage was cleaned.
return true;
}
@@ -5117,17 +5160,17 @@ ACMD(cleargstorage)
g = sd->guild;
if (g == NULL) {
- clif->message(fd, msg_txt(43));
+ clif->message(fd, msg_fd(fd,43));
return false;
}
if (sd->state.storage_flag == 1) {
- clif->message(fd, msg_txt(250));
+ clif->message(fd, msg_fd(fd,250));
return false;
}
if (sd->state.storage_flag == 2) {
- clif->message(fd, msg_txt(251));
+ clif->message(fd, msg_fd(fd,251));
return false;
}
@@ -5144,7 +5187,7 @@ ACMD(cleargstorage)
gstorage->close(sd);
guild_storage->lock = 0; // Cleaning done, release lock
- clif->message(fd, msg_txt(1395)); // Your guild storage was cleaned.
+ clif->message(fd, msg_fd(fd,1395)); // Your guild storage was cleaned.
return true;
}
@@ -5153,12 +5196,12 @@ ACMD(clearcart)
int i;
if (pc_iscarton(sd) == 0) {
- clif->message(fd, msg_txt(1396)); // You do not have a cart to be cleaned.
+ clif->message(fd, msg_fd(fd,1396)); // You do not have a cart to be cleaned.
return false;
}
if( sd->state.vending == 1 ) {
- clif->message(fd, msg_txt(548)); // You can't clean a cart while vending!
+ clif->message(fd, msg_fd(fd,548)); // You can't clean a cart while vending!
return false;
}
@@ -5169,7 +5212,7 @@ ACMD(clearcart)
clif->clearcart(fd);
clif->updatestatus(sd,SP_CARTINFO);
- clif->message(fd, msg_txt(1397)); // Your cart was cleaned.
+ clif->message(fd, msg_fd(fd,1397)); // Your cart was cleaned.
return true;
}
@@ -5188,7 +5231,7 @@ ACMD(skillid) {
char partials[MAX_SKILLID_PARTIAL_RESULTS][MAX_SKILLID_PARTIAL_RESULTS_LEN];
if (!message || !*message) {
- clif->message(fd, msg_txt(1163)); // Please enter a skill name to look up (usage: @skillid <skill name>).
+ clif->message(fd, msg_fd(fd,1163)); // Please enter a skill name to look up (usage: @skillid <skill name>).
return false;
}
@@ -5199,10 +5242,10 @@ ACMD(skillid) {
for (data = iter->first(iter,&key); iter->exists(iter); data = iter->next(iter,&key)) {
int idx = skill->get_index(DB->data2i(data));
if (strnicmp(key.str, message, skillen) == 0 || strnicmp(skill->db[idx].desc, message, skillen) == 0) {
- sprintf(atcmd_output, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str); // skill %d: %s (%s)
+ sprintf(atcmd_output, msg_fd(fd,1164), DB->data2i(data), skill->db[idx].desc, key.str); // skill %d: %s (%s)
clif->message(fd, atcmd_output);
} else if ( found < MAX_SKILLID_PARTIAL_RESULTS && ( stristr(key.str,message) || stristr(skill->db[idx].desc,message) ) ) {
- snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_txt(1164), DB->data2i(data), skill->db[idx].desc, key.str);
+ snprintf(partials[found], MAX_SKILLID_PARTIAL_RESULTS_LEN, msg_fd(fd,1164), DB->data2i(data), skill->db[idx].desc, key.str);
found++;
}
}
@@ -5210,7 +5253,7 @@ ACMD(skillid) {
dbi_destroy(iter);
if( found ) {
- sprintf(atcmd_output, msg_txt(1398), found); // -- Displaying first %d partial matches
+ sprintf(atcmd_output, msg_fd(fd,1398), found); // -- Displaying first %d partial matches
clif->message(fd, atcmd_output);
}
@@ -5233,20 +5276,20 @@ ACMD(useskill) {
char target[100];
if(!message || !*message || sscanf(message, "%hu %hu %23[^\n]", &skill_id, &skill_lv, target) != 3) {
- clif->message(fd, msg_txt(1165)); // Usage: @useskill <skill ID> <skill level> <target>
+ clif->message(fd, msg_fd(fd,1165)); // Usage: @useskill <skill ID> <skill level> <target>
return false;
}
if(!strcmp(target,"self"))
pl_sd = sd; //quick keyword
else if ( (pl_sd = map->nick2sd(target)) == NULL ) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->message(fd, msg_txt(81)); // Your GM level don't authorized you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorized you to do this action on this player.
return false;
}
@@ -5278,7 +5321,7 @@ ACMD(displayskill) {
uint16 skill_lv = 1;
if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1) {
- clif->message(fd, msg_txt(1166)); // Usage: @displayskill <skill ID> {<skill level>}
+ clif->message(fd, msg_fd(fd,1166)); // Usage: @displayskill <skill ID> {<skill level>}
return false;
}
st = status->get_status_data(&sd->bl);
@@ -5301,25 +5344,25 @@ ACMD(skilltree) {
struct skill_tree_entry *ent;
if(!message || !*message || sscanf(message, "%hu %23[^\r\n]", &skill_id, target) != 2) {
- clif->message(fd, msg_txt(1167)); // Usage: @skilltree <skill ID> <target>
+ clif->message(fd, msg_fd(fd,1167)); // Usage: @skilltree <skill ID> <target>
return false;
}
if ( (pl_sd = map->nick2sd(target)) == NULL ) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
c = pc->calc_skilltree_normalize_job(pl_sd);
c = pc->mapid2jobid(c, pl_sd->status.sex);
- sprintf(atcmd_output, msg_txt(1168), pc->job_name(c), pc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points).
+ sprintf(atcmd_output, msg_fd(fd,1168), pc->job_name(c), pc->checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points).
clif->message(fd, atcmd_output);
ARR_FIND( 0, MAX_SKILL_TREE, j, pc->skill_tree[c][j].id == 0 || pc->skill_tree[c][j].id == skill_id );
if( j == MAX_SKILL_TREE || pc->skill_tree[c][j].id == 0 )
{
- clif->message(fd, msg_txt(1169)); // The player cannot use that skill.
+ clif->message(fd, msg_fd(fd,1169)); // The player cannot use that skill.
return false;
}
@@ -5330,13 +5373,13 @@ ACMD(skilltree) {
{
if( ent->need[j].id && pc->checkskill(sd,ent->need[j].id) < ent->need[j].lv)
{
- sprintf(atcmd_output, msg_txt(1170), ent->need[j].lv, skill->db[ent->need[j].id].desc); // Player requires level %d of skill %s.
+ sprintf(atcmd_output, msg_fd(fd,1170), ent->need[j].lv, skill->db[ent->need[j].id].desc); // Player requires level %d of skill %s.
clif->message(fd, atcmd_output);
meets = 0;
}
}
if (meets == 1) {
- clif->message(fd, msg_txt(1171)); // The player meets all the requirements for that skill.
+ clif->message(fd, msg_fd(fd,1171)); // The player meets all the requirements for that skill.
}
return true;
@@ -5370,24 +5413,24 @@ ACMD(marry) {
char player_name[NAME_LENGTH] = "";
if (!message || !*message || sscanf(message, "%23s", player_name) != 1) {
- clif->message(fd, msg_txt(1172)); // Usage: @marry <char name>
+ clif->message(fd, msg_fd(fd,1172)); // Usage: @marry <char name>
return false;
}
if ((pl_sd = map->nick2sd(player_name)) == NULL) {
- clif->message(fd, msg_txt(3));
+ clif->message(fd, msg_fd(fd,3));
return false;
}
if (pc->marriage(sd, pl_sd) == 0) {
- clif->message(fd, msg_txt(1173)); // They are married... wish them well.
+ clif->message(fd, msg_fd(fd,1173)); // They are married... wish them well.
clif->wedding_effect(&pl_sd->bl); //wedding effect and music [Lupus]
getring(sd); // Auto-give named rings (Aru)
getring(pl_sd);
return true;
}
- clif->message(fd, msg_txt(1174)); // The two cannot wed because one is either a baby or already married.
+ clif->message(fd, msg_fd(fd,1174)); // The two cannot wed because one is either a baby or already married.
return false;
}
@@ -5398,12 +5441,12 @@ ACMD(marry) {
ACMD(divorce)
{
if (pc->divorce(sd) != 0) {
- sprintf(atcmd_output, msg_txt(1175), sd->status.name); // '%s' is not married.
+ sprintf(atcmd_output, msg_fd(fd,1175), sd->status.name); // '%s' is not married.
clif->message(fd, atcmd_output);
return false;
}
- sprintf(atcmd_output, msg_txt(1176), sd->status.name); // '%s' and his/her partner are now divorced.
+ sprintf(atcmd_output, msg_fd(fd,1176), sd->status.name); // '%s' and his/her partner are now divorced.
clif->message(fd, atcmd_output);
return true;
}
@@ -5417,8 +5460,8 @@ ACMD(changelook)
int pos[7] = { LOOK_HEAD_TOP,LOOK_HEAD_MID,LOOK_HEAD_BOTTOM,LOOK_WEAPON,LOOK_SHIELD,LOOK_SHOES,LOOK_ROBE };
if((i = sscanf(message, "%d %d", &j, &k)) < 1) {
- clif->message(fd, msg_txt(1177)); // Usage: @changelook {<position>} <view id>
- clif->message(fd, msg_txt(1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe
+ clif->message(fd, msg_fd(fd,1177)); // Usage: @changelook {<position>} <view id>
+ clif->message(fd, msg_fd(fd,1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe
return false;
} else if ( i == 2 ) {
if (j < 1 || j > 7)
@@ -5441,17 +5484,17 @@ ACMD(changelook)
ACMD(autotrade)
{
if( map->list[sd->bl.m].flag.autotrade != battle_config.autotrade_mapflag ) {
- clif->message(fd, msg_txt(1179)); // Autotrade is not allowed in this map.
+ clif->message(fd, msg_fd(fd,1179)); // Autotrade is not allowed in this map.
return false;
}
if( pc_isdead(sd) ) {
- clif->message(fd, msg_txt(1180)); // You cannot autotrade when dead.
+ clif->message(fd, msg_fd(fd,1180)); // You cannot autotrade when dead.
return false;
}
if( !sd->state.vending && !sd->state.buyingstore ) { //check if player is vending or buying
- clif->message(fd, msg_txt(549)); // "You should have a shop open in order to use @autotrade."
+ clif->message(fd, msg_fd(fd,549)); // "You should have a shop open in order to use @autotrade."
return false;
}
@@ -5489,22 +5532,22 @@ ACMD(changegm) {
struct map_session_data *pl_sd;
if (sd->status.guild_id == 0 || (g = sd->guild) == NULL || strcmp(g->master,sd->status.name)) {
- clif->message(fd, msg_txt(1181)); // You need to be a Guild Master to use this command.
+ clif->message(fd, msg_fd(fd,1181)); // You need to be a Guild Master to use this command.
return false;
}
if( map->list[sd->bl.m].flag.guildlock || map->list[sd->bl.m].flag.gvg_castle ) {
- clif->message(fd, msg_txt(1182)); // You cannot change guild leaders in this map.
+ clif->message(fd, msg_fd(fd,1182)); // You cannot change guild leaders in this map.
return false;
}
if( !message[0] ) {
- clif->message(fd, msg_txt(1183)); // Usage: @changegm <guild_member_name>
+ clif->message(fd, msg_fd(fd,1183)); // Usage: @changegm <guild_member_name>
return false;
}
if((pl_sd=map->nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) {
- clif->message(fd, msg_txt(1184)); // Target character must be online and be a guild member.
+ clif->message(fd, msg_fd(fd,1184)); // Target character must be online and be a guild member.
return false;
}
@@ -5519,7 +5562,7 @@ ACMD(changegm) {
ACMD(changeleader) {
if( !message[0] ) {
- clif->message(fd, msg_txt(1185)); // Usage: @changeleader <party_member_name>
+ clif->message(fd, msg_fd(fd,1185)); // Usage: @changeleader <party_member_name>
return false;
}
@@ -5540,7 +5583,7 @@ ACMD(partyoption)
if (sd->status.party_id == 0 || (p = party->search(sd->status.party_id)) == NULL)
{
- clif->message(fd, msg_txt(282));
+ clif->message(fd, msg_fd(fd,282));
return false;
}
@@ -5550,13 +5593,13 @@ ACMD(partyoption)
if (!p->party.member[mi].leader)
{
- clif->message(fd, msg_txt(282));
+ clif->message(fd, msg_fd(fd,282));
return false;
}
if(!message || !*message || sscanf(message, "%15s %15s", w1, w2) < 2)
{
- clif->message(fd, msg_txt(1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no>
+ clif->message(fd, msg_fd(fd,1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no>
return false;
}
@@ -5566,7 +5609,7 @@ ACMD(partyoption)
if (option != p->party.item)
party->changeoption(sd, p->party.exp, option);
else
- clif->message(fd, msg_txt(286));
+ clif->message(fd, msg_fd(fd,286));
return true;
}
@@ -5596,10 +5639,10 @@ ACMD(autoloot)
sd->state.autoloot = rate;
if (sd->state.autoloot) {
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1187),((double)sd->state.autoloot)/100.); // Autolooting items with drop rates of %0.02f%% and below.
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1187),((double)sd->state.autoloot)/100.); // Autolooting items with drop rates of %0.02f%% and below.
clif->message(fd, atcmd_output);
}else
- clif->message(fd, msg_txt(1188)); // Autoloot is now off.
+ clif->message(fd, msg_fd(fd,1188)); // Autoloot is now off.
return true;
}
@@ -5631,7 +5674,7 @@ ACMD(autolootitem)
item_data = itemdb->search_name(message);
if (!item_data) {
// No items founds in the DB with Id or Name
- clif->message(fd, msg_txt(1189)); // Item not found.
+ clif->message(fd, msg_fd(fd,1189)); // Item not found.
return false;
}
}
@@ -5641,27 +5684,27 @@ ACMD(autolootitem)
case 1:
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == item_data->nameid);
if (i != AUTOLOOTITEM_SIZE) {
- clif->message(fd, msg_txt(1190)); // You're already autolooting this item.
+ clif->message(fd, msg_fd(fd,1190)); // You're already autolooting this item.
return false;
}
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == 0);
if (i == AUTOLOOTITEM_SIZE) {
- clif->message(fd, msg_txt(1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>.
+ clif->message(fd, msg_fd(fd,1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>.
return false;
}
sd->state.autolootid[i] = item_data->nameid; // Autoloot Activated
- sprintf(atcmd_output, msg_txt(1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%d}
+ sprintf(atcmd_output, msg_fd(fd,1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%d}
clif->message(fd, atcmd_output);
sd->state.autolooting = 1;
break;
case 2:
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == item_data->nameid);
if (i == AUTOLOOTITEM_SIZE) {
- clif->message(fd, msg_txt(1193)); // You're currently not autolooting this item.
+ clif->message(fd, msg_fd(fd,1193)); // You're currently not autolooting this item.
return false;
}
sd->state.autolootid[i] = 0;
- sprintf(atcmd_output, msg_txt(1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%d} from your autolootitem list.
+ sprintf(atcmd_output, msg_fd(fd,1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%d} from your autolootitem list.
clif->message(fd, atcmd_output);
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0);
if (i == AUTOLOOTITEM_SIZE) {
@@ -5669,15 +5712,15 @@ ACMD(autolootitem)
}
break;
case 3:
- sprintf(atcmd_output, msg_txt(1195), AUTOLOOTITEM_SIZE); // You can have %d items on your autolootitem list.
+ sprintf(atcmd_output, msg_fd(fd,1195), AUTOLOOTITEM_SIZE); // You can have %d items on your autolootitem list.
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1196)); // To add an item to the list, use "@alootid +<item name or ID>". To remove an item, use "@alootid -<item name or ID>".
- clif->message(fd, msg_txt(1197)); // "@alootid reset" will clear your autolootitem list.
+ clif->message(fd, msg_fd(fd,1196)); // To add an item to the list, use "@alootid +<item name or ID>". To remove an item, use "@alootid -<item name or ID>".
+ clif->message(fd, msg_fd(fd,1197)); // "@alootid reset" will clear your autolootitem list.
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0);
if (i == AUTOLOOTITEM_SIZE) {
- clif->message(fd, msg_txt(1198)); // Your autolootitem list is empty.
+ clif->message(fd, msg_fd(fd,1198)); // Your autolootitem list is empty.
} else {
- clif->message(fd, msg_txt(1199)); // Items on your autolootitem list:
+ clif->message(fd, msg_fd(fd,1199)); // Items on your autolootitem list:
for(i = 0; i < AUTOLOOTITEM_SIZE; i++)
{
if (sd->state.autolootid[i] == 0)
@@ -5693,7 +5736,7 @@ ACMD(autolootitem)
break;
case 4:
memset(sd->state.autolootid, 0, sizeof(sd->state.autolootid));
- clif->message(fd, msg_txt(1200)); // Your autolootitem list has been reset.
+ clif->message(fd, msg_fd(fd,1200)); // Your autolootitem list has been reset.
sd->state.autolooting = 0;
break;
}
@@ -5742,7 +5785,7 @@ ACMD(autoloottype) {
else if (strncmp(message, "ammo", 3) == 0)
type = IT_AMMO;
else {
- clif->message(fd, msg_txt(1491)); // Item type not found.
+ clif->message(fd, msg_fd(fd,1491)); // Item type not found.
return false;
}
}
@@ -5751,24 +5794,24 @@ ACMD(autoloottype) {
switch (action) {
case 1:
if (sd->state.autoloottype&(1<<type)) {
- clif->message(fd, msg_txt(1490)); // You're already autolooting this item type.
+ clif->message(fd, msg_fd(fd,1490)); // You're already autolooting this item type.
return false;
}
sd->state.autoloottype |= (1<<type); // Stores the type
- sprintf(atcmd_output, msg_txt(1492), itemdb->typename(type)); // Autolooting item type: '%s'
+ sprintf(atcmd_output, msg_fd(fd,1492), itemdb->typename(type)); // Autolooting item type: '%s'
clif->message(fd, atcmd_output);
break;
case 2:
if (!(sd->state.autoloottype&(1<<type))) {
- clif->message(fd, msg_txt(1493)); // You're currently not autolooting this item type.
+ clif->message(fd, msg_fd(fd,1493)); // You're currently not autolooting this item type.
return false;
}
sd->state.autoloottype &= ~(1<<type);
- sprintf(atcmd_output, msg_txt(1494), itemdb->typename(type)); // Removed item type: '%s' from your autoloottype list.
+ sprintf(atcmd_output, msg_fd(fd,1494), itemdb->typename(type)); // Removed item type: '%s' from your autoloottype list.
clif->message(fd, atcmd_output);
break;
case 3:
- clif->message(fd, msg_txt(38)); // Invalid location number, or name.
+ clif->message(fd, msg_fd(fd,38)); // Invalid location number, or name.
{
// attempt to find the text help string
@@ -5777,10 +5820,10 @@ ACMD(autoloottype) {
}
if (sd->state.autoloottype == ITEM_NONE) {
- clif->message(fd, msg_txt(1495)); // Your autoloottype list is empty.
+ clif->message(fd, msg_fd(fd,1495)); // Your autoloottype list is empty.
} else {
int i;
- clif->message(fd, msg_txt(1496)); // Item types on your autoloottype list:
+ clif->message(fd, msg_fd(fd,1496)); // Item types on your autoloottype list:
for(i=0; i < IT_MAX; i++) {
if (sd->state.autoloottype&(1<<i)) {
sprintf(atcmd_output, " '%s'", itemdb->typename(i));
@@ -5791,7 +5834,7 @@ ACMD(autoloottype) {
break;
case 4:
sd->state.autoloottype = ITEM_NONE;
- clif->message(fd, msg_txt(1497)); // Your autoloottype list has been reset.
+ clif->message(fd, msg_fd(fd,1497)); // Your autoloottype list has been reset.
break;
}
return true;
@@ -5805,11 +5848,11 @@ ACMD(snow)
if (map->list[sd->bl.m].flag.snow) {
map->list[sd->bl.m].flag.snow=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1203)); // Snow has stopped falling.
+ clif->message(fd, msg_fd(fd,1203)); // Snow has stopped falling.
} else {
map->list[sd->bl.m].flag.snow=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1204)); // It has started to snow.
+ clif->message(fd, msg_fd(fd,1204)); // It has started to snow.
}
return true;
@@ -5823,11 +5866,11 @@ ACMD(sakura) {
if (map->list[sd->bl.m].flag.sakura) {
map->list[sd->bl.m].flag.sakura=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1205)); // Cherry tree leaves no longer fall.
+ clif->message(fd, msg_fd(fd,1205)); // Cherry tree leaves no longer fall.
} else {
map->list[sd->bl.m].flag.sakura=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1206)); // Cherry tree leaves have begun to fall.
+ clif->message(fd, msg_fd(fd,1206)); // Cherry tree leaves have begun to fall.
}
return true;
}
@@ -5840,11 +5883,11 @@ ACMD(clouds) {
if (map->list[sd->bl.m].flag.clouds) {
map->list[sd->bl.m].flag.clouds=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1207)); // The clouds has disappear.
+ clif->message(fd, msg_fd(fd,1207)); // The clouds has disappear.
} else {
map->list[sd->bl.m].flag.clouds=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1208)); // Clouds appear.
+ clif->message(fd, msg_fd(fd,1208)); // Clouds appear.
}
return true;
@@ -5858,11 +5901,11 @@ ACMD(clouds2) {
if (map->list[sd->bl.m].flag.clouds2) {
map->list[sd->bl.m].flag.clouds2=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1209)); // The alternative clouds disappear.
+ clif->message(fd, msg_fd(fd,1209)); // The alternative clouds disappear.
} else {
map->list[sd->bl.m].flag.clouds2=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1210)); // Alternative clouds appear.
+ clif->message(fd, msg_fd(fd,1210)); // Alternative clouds appear.
}
return true;
@@ -5876,11 +5919,11 @@ ACMD(fog) {
if (map->list[sd->bl.m].flag.fog) {
map->list[sd->bl.m].flag.fog=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1211)); // The fog has gone.
+ clif->message(fd, msg_fd(fd,1211)); // The fog has gone.
} else {
map->list[sd->bl.m].flag.fog=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1212)); // Fog hangs over.
+ clif->message(fd, msg_fd(fd,1212)); // Fog hangs over.
}
return true;
}
@@ -5893,11 +5936,11 @@ ACMD(leaves) {
if (map->list[sd->bl.m].flag.leaves) {
map->list[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1213)); // Leaves no longer fall.
+ clif->message(fd, msg_fd(fd,1213)); // Leaves no longer fall.
} else {
map->list[sd->bl.m].flag.leaves=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1214)); // Fallen leaves fall.
+ clif->message(fd, msg_fd(fd,1214)); // Fallen leaves fall.
}
return true;
@@ -5911,11 +5954,11 @@ ACMD(fireworks) {
if (map->list[sd->bl.m].flag.fireworks) {
map->list[sd->bl.m].flag.fireworks=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1215)); // Fireworks have ended.
+ clif->message(fd, msg_fd(fd,1215)); // Fireworks have ended.
} else {
map->list[sd->bl.m].flag.fireworks=1;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(1216)); // Fireworks have launched.
+ clif->message(fd, msg_fd(fd,1216)); // Fireworks have launched.
}
return true;
@@ -5934,7 +5977,7 @@ ACMD(clearweather)
map->list[sd->bl.m].flag.fireworks=0;
map->list[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
- clif->message(fd, msg_txt(291)); // "Weather effects will disappear after teleporting or refreshing."
+ clif->message(fd, msg_fd(fd,291)); // "Weather effects will disappear after teleporting or refreshing."
return true;
}
@@ -5949,7 +5992,7 @@ ACMD(sound)
memset(sound_file, '\0', sizeof(sound_file));
if(!message || !*message || sscanf(message, "%99[^\n]", sound_file) < 1) {
- clif->message(fd, msg_txt(1217)); // Please enter a sound filename (usage: @sound <filename>).
+ clif->message(fd, msg_fd(fd,1217)); // Please enter a sound filename (usage: @sound <filename>).
return false;
}
@@ -5972,14 +6015,14 @@ ACMD(mobsearch)
struct s_mapiterator* it;
if (!message || !*message || sscanf(message, "%99[^\n]", mob_name) < 1) {
- clif->message(fd, msg_txt(1218)); // Please enter a monster name (usage: @mobsearch <monster name>).
+ clif->message(fd, msg_fd(fd,1218)); // Please enter a monster name (usage: @mobsearch <monster name>).
return false;
}
if ((mob_id = atoi(mob_name)) == 0)
mob_id = mob->db_searchname(mob_name);
if(mob_id > 0 && mob->db_checkid(mob_id) == 0){
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1219),mob_name); // Invalid mob ID %s!
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1219),mob_name); // Invalid mob ID %s!
clif->message(fd, atcmd_output);
return false;
}
@@ -5987,7 +6030,7 @@ ACMD(mobsearch)
strcpy(mob_name,mob->db(mob_id)->jname); // --ja--
//strcpy(mob_name,mob_db(mob_id)->name); // --en--
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1220), mob_name, mapindex_id2name(sd->mapindex)); // Mob Search... %s %s
clif->message(fd, atcmd_output);
it = mapit_geteachmob();
@@ -6027,7 +6070,7 @@ int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap) {
ACMD(cleanmap) {
map->foreachinmap(atcommand->cleanfloor_sub, sd->bl.m, BL_ITEM);
- clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
+ clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up.
return true;
}
@@ -6042,7 +6085,7 @@ ACMD(cleanarea) {
map->foreachinarea(atcommand->cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM);
}
- clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
+ clif->message(fd, msg_fd(fd,1221)); // All dropped items have been cleaned up.
return true;
}
@@ -6064,19 +6107,19 @@ ACMD(npctalk)
if(!ifcolor) {
if (!message || !*message || sscanf(message, "%23[^,], %99[^\n]", name, mes) < 2) {
- clif->message(fd, msg_txt(1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>).
+ clif->message(fd, msg_fd(fd,1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>).
return false;
}
}
else {
if (!message || !*message || sscanf(message, "%u %23[^,], %99[^\n]", &color, name, mes) < 3) {
- clif->message(fd, msg_txt(1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>).
+ clif->message(fd, msg_fd(fd,1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>).
return false;
}
}
if (!(nd = npc->name2id(name))) {
- clif->message(fd, msg_txt(111)); // This NPC doesn't exist
+ clif->message(fd, msg_fd(fd,111)); // This NPC doesn't exist
return false;
}
@@ -6102,7 +6145,7 @@ ACMD(pettalk)
if(!sd->status.pet_id || !(pd=sd->pd))
{
- clif->message(fd, msg_txt(184));
+ clif->message(fd, msg_fd(fd,184));
return false;
}
@@ -6112,7 +6155,7 @@ ACMD(pettalk)
return false;
if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) {
- clif->message(fd, msg_txt(1224)); // Please enter a message (usage: @pettalk <message>).
+ clif->message(fd, msg_fd(fd,1224)); // Please enter a message (usage: @pettalk <message>).
return false;
}
@@ -6205,7 +6248,7 @@ ACMD(reset)
{
pc->resetstate(sd);
pc->resetskill(sd,1);
- sprintf(atcmd_output, msg_txt(208), sd->status.name); // '%s' skill and stats points reseted!
+ sprintf(atcmd_output, msg_fd(fd,208), sd->status.name); // '%s' skill and stats points reseted!
clif->message(fd, atcmd_output);
return true;
}
@@ -6223,7 +6266,7 @@ ACMD(summon)
if (!message || !*message || sscanf(message, "%23s %d", name, &duration) < 1)
{
- clif->message(fd, msg_txt(1225)); // Please enter a monster name (usage: @summon <monster name> {duration}).
+ clif->message(fd, msg_fd(fd,1225)); // Please enter a monster name (usage: @summon <monster name> {duration}).
return false;
}
@@ -6236,7 +6279,7 @@ ACMD(summon)
mob_id = mob->db_searchname(name);
if(mob_id == 0 || mob->db_checkid(mob_id) == 0)
{
- clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name.
return false;
}
@@ -6252,7 +6295,7 @@ ACMD(summon)
mob->spawn(md);
sc_start4(NULL,&md->bl, SC_MODECHANGE, 100, 1, 0, MD_AGGRESSIVE, 0, 60000);
clif->skill_poseffect(&sd->bl,AM_CALLHOMUN,1,md->bl.x,md->bl.y,tick);
- clif->message(fd, msg_txt(39)); // All monster summoned!
+ clif->message(fd, msg_fd(fd,39)); // All monster summoned!
return true;
}
@@ -6267,17 +6310,17 @@ ACMD(adjgroup)
int new_group = 0;
if (!message || !*message || sscanf(message, "%d", &new_group) != 1) {
- clif->message(fd, msg_txt(1226)); // Usage: @adjgroup <group_id>
+ clif->message(fd, msg_fd(fd,1226)); // Usage: @adjgroup <group_id>
return false;
}
if (pc->set_group(sd, new_group) != 0) {
- clif->message(fd, msg_txt(1227)); // Specified group does not exist.
+ clif->message(fd, msg_fd(fd,1227)); // Specified group does not exist.
return false;
}
- clif->message(fd, msg_txt(1228)); // Group changed successfully.
- clif->message(sd->fd, msg_txt(1229)); // Your group has changed.
+ clif->message(fd, msg_fd(fd,1228)); // Group changed successfully.
+ clif->message(sd->fd, msg_fd(fd,1229)); // Your group has changed.
return true;
}
@@ -6289,12 +6332,12 @@ ACMD(trade) {
struct map_session_data *pl_sd = NULL;
if (!message || !*message) {
- clif->message(fd, msg_txt(1230)); // Please enter a player name (usage: @trade <char name>).
+ clif->message(fd, msg_fd(fd,1230)); // Please enter a player name (usage: @trade <char name>).
return false;
}
if ( (pl_sd = map->nick2sd((char *)message)) == NULL ) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
@@ -6311,16 +6354,16 @@ ACMD(setbattleflag)
char flag[128], value[128];
if (!message || !*message || sscanf(message, "%127s %127s", flag, value) != 2) {
- clif->message(fd, msg_txt(1231)); // Usage: @setbattleflag <flag> <value>
+ clif->message(fd, msg_fd(fd,1231)); // Usage: @setbattleflag <flag> <value>
return false;
}
if (battle->config_set_value(flag, value) == 0) {
- clif->message(fd, msg_txt(1232)); // Unknown battle_config flag.
+ clif->message(fd, msg_fd(fd,1232)); // Unknown battle_config flag.
return false;
}
- clif->message(fd, msg_txt(1233)); // Set battle_config as requested.
+ clif->message(fd, msg_fd(fd,1233)); // Set battle_config as requested.
return true;
}
@@ -6332,24 +6375,24 @@ ACMD(unmute) {
struct map_session_data *pl_sd = NULL;
if (!message || !*message) {
- clif->message(fd, msg_txt(1234)); // Please enter a player name (usage: @unmute <char name>).
+ clif->message(fd, msg_fd(fd,1234)); // Please enter a player name (usage: @unmute <char name>).
return false;
}
if ( (pl_sd = map->nick2sd((char *)message)) == NULL )
{
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if(!pl_sd->sc.data[SC_NOCHAT]) {
- clif->message(sd->fd,msg_txt(1235)); // Player is not muted.
+ clif->message(sd->fd,msg_fd(fd,1235)); // Player is not muted.
return false;
}
pl_sd->status.manner = 0;
status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER);
- clif->message(sd->fd,msg_txt(1236)); // Player unmuted.
+ clif->message(sd->fd,msg_fd(fd,1236)); // Player unmuted.
return true;
}
@@ -6370,7 +6413,7 @@ ACMD(uptime)
minutes = seconds/minute;
seconds -= (seconds/minute>0)?(seconds/minute)*minute:0;
- snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(245), days, hours, minutes, seconds);
+ snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,245), days, hours, minutes, seconds);
clif->message(fd, atcmd_output);
return true;
@@ -6400,18 +6443,18 @@ ACMD(mute) {
int manner;
if (!message || !*message || sscanf(message, "%d %23[^\n]", &manner, atcmd_player_name) < 1) {
- clif->message(fd, msg_txt(1237)); // Usage: @mute <time> <char name>
+ clif->message(fd, msg_fd(fd,1237)); // Usage: @mute <time> <char name>
return false;
}
if ( (pl_sd = map->nick2sd(atcmd_player_name)) == NULL ) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->message(fd, msg_txt(81)); // Your GM level don't authorize you to do this action on this player.
+ clif->message(fd, msg_fd(fd,81)); // Your GM level don't authorize you to do this action on this player.
return false;
}
@@ -6468,7 +6511,7 @@ ACMD(identify)
if (num > 0) {
clif->item_identify_list(sd);
} else {
- clif->message(fd,msg_txt(1238)); // There are no items to appraise.
+ clif->message(fd,msg_fd(fd,1238)); // There are no items to appraise.
}
return true;
}
@@ -6513,7 +6556,7 @@ ACMD(mobinfo)
memset(atcmd_output2, '\0', sizeof(atcmd_output2));
if (!message || !*message) {
- clif->message(fd, msg_txt(1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>).
+ clif->message(fd, msg_fd(fd,1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>).
return false;
}
@@ -6525,12 +6568,12 @@ ACMD(mobinfo)
count = mob->db_searchname_array(mob_array, MAX_SEARCH, message, 0);
if (!count) {
- clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name.
return false;
}
if (count > MAX_SEARCH) {
- sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count);
+ sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count);
clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
@@ -6553,27 +6596,27 @@ ACMD(mobinfo)
// stats
if (monster->mexp)
- sprintf(atcmd_output, msg_txt(1240), monster->name, monster->jname, monster->sprite, monster->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d)
+ sprintf(atcmd_output, msg_fd(fd,1240), monster->name, monster->jname, monster->sprite, monster->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d)
else
- sprintf(atcmd_output, msg_txt(1241), monster->name, monster->jname, monster->sprite, monster->vd.class_); // Monster: '%s'/'%s'/'%s' (%d)
+ sprintf(atcmd_output, msg_fd(fd,1241), monster->name, monster->jname, monster->sprite, monster->vd.class_); // Monster: '%s'/'%s'/'%s' (%d)
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1242), monster->lv, monster->status.max_hp, base_exp, job_exp, MOB_HIT(monster), MOB_FLEE(monster)); // Lv:%d HP:%d Base EXP:%u Job EXP:%u HIT:%d FLEE:%d
+ sprintf(atcmd_output, msg_fd(fd,1242), monster->lv, monster->status.max_hp, base_exp, job_exp, MOB_HIT(monster), MOB_FLEE(monster)); // Lv:%d HP:%d Base EXP:%u Job EXP:%u HIT:%d FLEE:%d
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1243), // DEF:%d MDEF:%d STR:%d AGI:%d VIT:%d INT:%d DEX:%d LUK:%d
+ sprintf(atcmd_output, msg_fd(fd,1243), // DEF:%d MDEF:%d STR:%d AGI:%d VIT:%d INT:%d DEX:%d LUK:%d
monster->status.def, monster->status.mdef, monster->status.str, monster->status.agi,
monster->status.vit, monster->status.int_, monster->status.dex, monster->status.luk);
clif->message(fd, atcmd_output);
#ifdef RENEWAL
- sprintf(atcmd_output, msg_txt(1291), // ATK : %d~%d MATK : %d~%d Range : %d~%d~%d Size : %s Race : %s Element : %s(Lv : %d)
+ sprintf(atcmd_output, msg_fd(fd,1291), // ATK : %d~%d MATK : %d~%d Range : %d~%d~%d Size : %s Race : %s Element : %s(Lv : %d)
MOB_ATK1(monster), MOB_ATK2(monster), MOB_MATK1(monster), MOB_MATK2(monster), monster->status.rhw.range,
monster->range2 , monster->range3, msize[monster->status.size],
mrace[monster->status.race], melement[monster->status.def_ele], monster->status.ele_lv);
#else
- sprintf(atcmd_output, msg_txt(1244), // ATK:%d~%d Range:%d~%d~%d Size:%s Race: %s Element: %s (Lv:%d)
+ sprintf(atcmd_output, msg_fd(fd,1244), // ATK:%d~%d Range:%d~%d~%d Size:%s Race: %s Element: %s (Lv:%d)
monster->status.rhw.atk, monster->status.rhw.atk2, monster->status.rhw.range,
monster->range2 , monster->range3, msize[monster->status.size],
mrace[monster->status.race], melement[monster->status.def_ele], monster->status.ele_lv);
@@ -6581,7 +6624,7 @@ ACMD(mobinfo)
clif->message(fd, atcmd_output);
// drops
- clif->message(fd, msg_txt(1245)); // Drops:
+ clif->message(fd, msg_fd(fd,1245)); // Drops:
strcpy(atcmd_output, " ");
j = 0;
for (i = 0; i < MAX_MOB_DROP; i++) {
@@ -6615,15 +6658,15 @@ ACMD(mobinfo)
}
if (j == 0)
- clif->message(fd, msg_txt(1246)); // This monster has no drops.
+ clif->message(fd, msg_fd(fd,1246)); // This monster has no drops.
else if (j % 3 != 0)
clif->message(fd, atcmd_output);
// mvp
if (monster->mexp) {
- sprintf(atcmd_output, msg_txt(1247), monster->mexp); // MVP Bonus EXP:%u
+ sprintf(atcmd_output, msg_fd(fd,1247), monster->mexp); // MVP Bonus EXP:%u
clif->message(fd, atcmd_output);
- safestrncpy(atcmd_output, msg_txt(1248), sizeof(atcmd_output)); // MVP Items:
+ safestrncpy(atcmd_output, msg_fd(fd,1248), sizeof(atcmd_output)); // MVP Items:
j = 0;
for (i = 0; i < MAX_MVP_DROP; i++) {
if (monster->mvpitem[i].nameid <= 0 || (item_data = itemdb->exists(monster->mvpitem[i].nameid)) == NULL)
@@ -6638,7 +6681,7 @@ ACMD(mobinfo)
}
}
if (j == 0)
- clif->message(fd, msg_txt(1249)); // This monster has no MVP prizes.
+ clif->message(fd, msg_fd(fd,1249)); // This monster has no MVP prizes.
else
clif->message(fd, atcmd_output);
}
@@ -6658,7 +6701,7 @@ ACMD(showmobs)
struct s_mapiterator* it;
if( sscanf(message, "%99[^\n]", mob_name) < 0 ) {
- clif->message(fd, msg_txt(546)); // Please enter a mob name/id (usage: @showmobs <mob name/id>)
+ clif->message(fd, msg_fd(fd,546)); // Please enter a mob name/id (usage: @showmobs <mob name/id>)
return false;
}
@@ -6666,20 +6709,20 @@ ACMD(showmobs)
mob_id = mob->db_searchname(mob_name);
if( mob_id == 0 ) {
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(547), mob_name); // Invalid mob name %s!
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,547), mob_name); // Invalid mob name %s!
clif->message(fd, atcmd_output);
return false;
}
if(mob_id > 0 && mob->db_checkid(mob_id) == 0){
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1250),mob_name); // Invalid mob id %s!
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1250),mob_name); // Invalid mob id %s!
clif->message(fd, atcmd_output);
return false;
}
if (mob->db(mob_id)->status.mode&MD_BOSS && !pc_has_permission(sd, PC_PERM_SHOW_BOSS)) {
// If player group does not have access to boss mobs.
- clif->message(fd, msg_txt(1251)); // Can't show boss mobs!
+ clif->message(fd, msg_fd(fd,1251)); // Can't show boss mobs!
return false;
}
@@ -6687,7 +6730,7 @@ ACMD(showmobs)
strcpy(mob_name,mob->db(mob_id)->jname); // --ja--
//strcpy(mob_name,mob_db(mob_id)->name); // --en--
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1252), // Mob Search... %s %s
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1252), // Mob Search... %s %s
mob_name, mapindex_id2name(sd->mapindex));
clif->message(fd, atcmd_output);
@@ -6724,12 +6767,12 @@ ACMD(homlevel) {
enum homun_type htype;
if( !message || !*message || ( level = atoi(message) ) < 1 ) {
- clif->message(fd, msg_txt(1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>).
+ clif->message(fd, msg_fd(fd,1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>).
return false;
}
if( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
@@ -6744,14 +6787,14 @@ ACMD(homlevel) {
case HT_REG:
case HT_EVO:
if( hd->homunculus.level >= battle_config.hom_max_level ) {
- snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d'
+ snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1478), hd->homunculus.level); // Homun reached its maximum level of '%d'
clif->message(fd, atcmd_output);
return true;
}
break;
case HT_S:
if( hd->homunculus.level >= battle_config.hom_S_max_level ) {
- snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(1478), hd->homunculus.level); // Homun reached its maximum level of '%d'
+ snprintf(atcmd_output, sizeof(atcmd_output), msg_fd(fd,1478), hd->homunculus.level); // Homun reached its maximum level of '%d'
clif->message(fd, atcmd_output);
return true;
}
@@ -6777,12 +6820,12 @@ ACMD(homlevel) {
ACMD(homevolution)
{
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
if ( !homun->evolve(sd->hd) ) {
- clif->message(fd, msg_txt(1255)); // Your homunculus doesn't evolve.
+ clif->message(fd, msg_fd(fd,1255)); // Your homunculus doesn't evolve.
return false;
}
clif->homskillinfoblock(sd);
@@ -6794,7 +6837,7 @@ ACMD(hommutate) {
enum homun_type m_class, m_id;
if( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
@@ -6822,7 +6865,7 @@ ACMD(makehomun) {
int homunid;
if (!message || !*message) {
- clif->message(fd, msg_txt(1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>).
+ clif->message(fd, msg_fd(fd,1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>).
return false;
}
@@ -6839,13 +6882,13 @@ ACMD(makehomun) {
}
if ( sd->status.hom_id ) {
- clif->message(fd, msg_txt(450));
+ clif->message(fd, msg_fd(fd,450));
return false;
}
if( homunid < HM_CLASS_BASE || homunid > HM_CLASS_BASE + MAX_HOMUNCULUS_CLASS - 1 )
{
- clif->message(fd, msg_txt(1257)); // Invalid Homunculus ID.
+ clif->message(fd, msg_fd(fd,1257)); // Invalid Homunculus ID.
return false;
}
@@ -6861,12 +6904,12 @@ ACMD(homfriendly)
int friendly = 0;
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
if (!message || !*message) {
- clif->message(fd, msg_txt(1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>).
+ clif->message(fd, msg_fd(fd,1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>).
return false;
}
@@ -6886,12 +6929,12 @@ ACMD(homhungry)
int hungry = 0;
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
if (!message || !*message) {
- clif->message(fd, msg_txt(1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>).
+ clif->message(fd, msg_fd(fd,1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>).
return false;
}
@@ -6922,12 +6965,12 @@ ACMD(homtalk)
return false;
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) {
- clif->message(fd, msg_txt(1260)); // Please enter a message (usage: @homtalk <message>).
+ clif->message(fd, msg_fd(fd,1260)); // Please enter a message (usage: @homtalk <message>).
return false;
}
@@ -6945,28 +6988,28 @@ ACMD(hominfo) {
struct status_data *st;
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
hd = sd->hd;
st = status->get_status_data(&hd->bl);
- clif->message(fd, msg_txt(1261)); // Homunculus stats:
+ clif->message(fd, msg_fd(fd,1261)); // Homunculus stats:
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1262), // HP: %d/%d - SP: %d/%d
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1262), // HP: %d/%d - SP: %d/%d
st->hp, st->max_hp, st->sp, st->max_sp);
clif->message(fd, atcmd_output);
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1263), // ATK: %d - MATK: %d~%d
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1263), // ATK: %d - MATK: %d~%d
st->rhw.atk2 +st->batk, st->matk_min, st->matk_max);
clif->message(fd, atcmd_output);
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1264), // Hungry: %d - Intimacy: %u
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1264), // Hungry: %d - Intimacy: %u
hd->homunculus.hunger, hd->homunculus.intimacy/100);
clif->message(fd, atcmd_output);
snprintf(atcmd_output, sizeof(atcmd_output) ,
- msg_txt(1265), // Stats: Str %d / Agi %d / Vit %d / Int %d / Dex %d / Luk %d
+ msg_fd(fd,1265), // Stats: Str %d / Agi %d / Vit %d / Int %d / Dex %d / Luk %d
st->str, st->agi, st->vit,
st->int_, st->dex, st->luk);
clif->message(fd, atcmd_output);
@@ -6982,7 +7025,7 @@ ACMD(homstats)
int lv, min, max, evo;
if ( !homun_alive(sd->hd) ) {
- clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_fd(fd,1254)); // You do not have a homunculus.
return false;
}
@@ -6993,49 +7036,49 @@ ACMD(homstats)
lv = hom->level;
snprintf(atcmd_output, sizeof(atcmd_output) ,
- msg_txt(1266), lv, db->name); // Homunculus growth stats (Lv %d %s):
+ msg_fd(fd,1266), lv, db->name); // Homunculus growth stats (Lv %d %s):
clif->message(fd, atcmd_output);
lv--; //Since the first increase is at level 2.
evo = (hom->class_ == db->evo_class);
min = db->base.HP +lv*db->gmin.HP +(evo?db->emin.HP:0);
max = db->base.HP +lv*db->gmax.HP +(evo?db->emax.HP:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1267), hom->max_hp, min, max); // Max HP: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1267), hom->max_hp, min, max); // Max HP: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.SP +lv*db->gmin.SP +(evo?db->emin.SP:0);
max = db->base.SP +lv*db->gmax.SP +(evo?db->emax.SP:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1268), hom->max_sp, min, max); // Max SP: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1268), hom->max_sp, min, max); // Max SP: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.str +lv*(db->gmin.str/10) +(evo?db->emin.str:0);
max = db->base.str +lv*(db->gmax.str/10) +(evo?db->emax.str:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1269), hom->str/10, min, max); // Str: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1269), hom->str/10, min, max); // Str: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.agi +lv*(db->gmin.agi/10) +(evo?db->emin.agi:0);
max = db->base.agi +lv*(db->gmax.agi/10) +(evo?db->emax.agi:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1270), hom->agi/10, min, max); // Agi: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1270), hom->agi/10, min, max); // Agi: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.vit +lv*(db->gmin.vit/10) +(evo?db->emin.vit:0);
max = db->base.vit +lv*(db->gmax.vit/10) +(evo?db->emax.vit:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1271), hom->vit/10, min, max); // Vit: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1271), hom->vit/10, min, max); // Vit: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.int_ +lv*(db->gmin.int_/10) +(evo?db->emin.int_:0);
max = db->base.int_ +lv*(db->gmax.int_/10) +(evo?db->emax.int_:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1272), hom->int_/10, min, max); // Int: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1272), hom->int_/10, min, max); // Int: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.dex +lv*(db->gmin.dex/10) +(evo?db->emin.dex:0);
max = db->base.dex +lv*(db->gmax.dex/10) +(evo?db->emax.dex:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1273), hom->dex/10, min, max); // Dex: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1273), hom->dex/10, min, max); // Dex: %d (%d~%d)
clif->message(fd, atcmd_output);
min = db->base.luk +lv*(db->gmin.luk/10) +(evo?db->emin.luk:0);
max = db->base.luk +lv*(db->gmax.luk/10) +(evo?db->emax.luk:0);;
- snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1274), hom->luk/10, min, max); // Luk: %d (%d~%d)
+ snprintf(atcmd_output, sizeof(atcmd_output) ,msg_fd(fd,1274), hom->luk/10, min, max); // Luk: %d (%d~%d)
clif->message(fd, atcmd_output);
return true;
@@ -7049,7 +7092,7 @@ ACMD(homshuffle)
if(!homun->shuffle(sd->hd))
return false;
- clif->message(sd->fd, msg_txt(1275)); // Homunculus stats altered.
+ clif->message(sd->fd, msg_fd(fd,1275)); // Homunculus stats altered.
atcommand_homstats(fd, sd, command, message, info); //Print out the new stats
return true;
}
@@ -7064,41 +7107,41 @@ ACMD(iteminfo)
int i, count = 1;
if (!message || !*message) {
- clif->message(fd, msg_txt(1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>).
+ clif->message(fd, msg_fd(fd,1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>).
return false;
}
if ((item_array[0] = itemdb->exists(atoi(message))) == NULL)
count = itemdb->search_name_array(item_array, MAX_SEARCH, message, 0);
if (!count) {
- clif->message(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
return false;
}
if (count > MAX_SEARCH) {
- sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches
+ sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); // Displaying first %d out of %d matches
clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (i = 0; i < count; i++) {
struct item_data *item_data = item_array[i];
- sprintf(atcmd_output, msg_txt(1277), // Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s
+ sprintf(atcmd_output, msg_fd(fd,1277), // Item: '%s'/'%s'[%d] (%d) Type: %s | Extra Effect: %s
item_data->name,item_data->jname,item_data->slot,item_data->nameid,
itemdb->typename(item_data->type),
- (item_data->script==NULL)? msg_txt(1278) : msg_txt(1279) // None / With script
+ (item_data->script==NULL)? msg_fd(fd,1278) : msg_fd(fd,1279) // None / With script
);
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1280), item_data->value_buy, item_data->value_sell, item_data->weight/10. ); // NPC Buy:%dz, Sell:%dz | Weight: %.1f
+ sprintf(atcmd_output, msg_fd(fd,1280), item_data->value_buy, item_data->value_sell, item_data->weight/10. ); // NPC Buy:%dz, Sell:%dz | Weight: %.1f
clif->message(fd, atcmd_output);
if (item_data->maxchance == -1)
- safestrncpy(atcmd_output, msg_txt(1281), sizeof(atcmd_output)); // - Available in the shops only.
+ safestrncpy(atcmd_output, msg_fd(fd,1281), sizeof(atcmd_output)); // - Available in the shops only.
else if ( !battle_config.atcommand_mobinfo_type ) {
if( item_data->maxchance )
- sprintf(atcmd_output, msg_txt(1282), (float)item_data->maxchance / 100 ); // - Maximal monsters drop chance: %02.02f%%
+ sprintf(atcmd_output, msg_fd(fd,1282), (float)item_data->maxchance / 100 ); // - Maximal monsters drop chance: %02.02f%%
else
- safestrncpy(atcmd_output, msg_txt(1283), sizeof(atcmd_output)); // - Monsters don't drop this item.
+ safestrncpy(atcmd_output, msg_fd(fd,1283), sizeof(atcmd_output)); // - Monsters don't drop this item.
}
clif->message(fd, atcmd_output);
@@ -7115,32 +7158,32 @@ ACMD(whodrops)
int i,j, count = 1;
if (!message || !*message) {
- clif->message(fd, msg_txt(1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>).
+ clif->message(fd, msg_fd(fd,1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>).
return false;
}
if ((item_array[0] = itemdb->exists(atoi(message))) == NULL)
count = itemdb->search_name_array(item_array, MAX_SEARCH, message, 0);
if (!count) {
- clif->message(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
return false;
}
if (count > MAX_SEARCH) {
- sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches
+ sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count); // Displaying first %d out of %d matches
clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (i = 0; i < count; i++) {
struct item_data *item_data = item_array[i];
- sprintf(atcmd_output, msg_txt(1285), item_data->jname,item_data->slot); // Item: '%s'[%d]
+ sprintf(atcmd_output, msg_fd(fd,1285), item_data->jname,item_data->slot); // Item: '%s'[%d]
clif->message(fd, atcmd_output);
if (item_data->mob[0].chance == 0) {
- safestrncpy(atcmd_output, msg_txt(1286), sizeof(atcmd_output)); // - Item is not dropped by mobs.
+ safestrncpy(atcmd_output, msg_fd(fd,1286), sizeof(atcmd_output)); // - Item is not dropped by mobs.
clif->message(fd, atcmd_output);
} else {
- sprintf(atcmd_output, msg_txt(1287), MAX_SEARCH); // - Common mobs with highest drop chance (only max %d are listed):
+ sprintf(atcmd_output, msg_fd(fd,1287), MAX_SEARCH); // - Common mobs with highest drop chance (only max %d are listed):
clif->message(fd, atcmd_output);
for (j=0; j < MAX_SEARCH && item_data->mob[j].chance > 0; j++)
@@ -7160,7 +7203,7 @@ ACMD(whereis)
int i, j, k;
if (!message || !*message) {
- clif->message(fd, msg_txt(1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>).
+ clif->message(fd, msg_fd(fd,1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>).
return false;
}
@@ -7173,18 +7216,18 @@ ACMD(whereis)
count = mob->db_searchname_array(mob_array, MAX_SEARCH, message, 0);
if (!count) {
- clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_fd(fd,40)); // Invalid monster ID or name.
return false;
}
if (count > MAX_SEARCH) {
- sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count);
+ sprintf(atcmd_output, msg_fd(fd,269), MAX_SEARCH, count);
clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (k = 0; k < count; k++) {
struct mob_db *monster = mob_array[k];
- snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1289), monster->jname); // %s spawns in:
+ snprintf(atcmd_output, sizeof atcmd_output, msg_fd(fd,1289), monster->jname); // %s spawns in:
clif->message(fd, atcmd_output);
for (i = 0; i < ARRAYLENGTH(monster->spawn) && monster->spawn[i].qty; i++) {
@@ -7194,16 +7237,16 @@ ACMD(whereis)
clif->message(fd, atcmd_output);
}
if (i == 0)
- clif->message(fd, msg_txt(1290)); // This monster does not spawn normally.
+ clif->message(fd, msg_fd(fd,1290)); // This monster does not spawn normally.
}
return true;
}
ACMD(version) {
- sprintf(atcmd_output, msg_txt(1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s
+ sprintf(atcmd_output, msg_fd(fd,1296), sysinfo->is64bit() ? 64 : 32, sysinfo->platform()); // Hercules %d-bit for %s
clif->message(fd, atcmd_output);
- sprintf(atcmd_output, msg_txt(1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
+ sprintf(atcmd_output, msg_fd(fd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
clif->message(fd, atcmd_output);
return true;
@@ -7237,7 +7280,7 @@ ACMD(mutearea) {
int time;
if (!message || !*message) {
- clif->message(fd, msg_txt(1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>).
+ clif->message(fd, msg_fd(fd,1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>).
return false;
}
@@ -7257,16 +7300,16 @@ ACMD(rates)
memset(buf, '\0', sizeof(buf));
- snprintf(buf, CHAT_SIZE_MAX, msg_txt(1298), // Experience rates: Base %.2fx / Job %.2fx
+ snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1298), // Experience rates: Base %.2fx / Job %.2fx
battle_config.base_exp_rate/100., battle_config.job_exp_rate/100.);
clif->message(fd, buf);
- snprintf(buf, CHAT_SIZE_MAX, msg_txt(1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
+ snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1299), // Normal Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
battle_config.item_rate_common/100., battle_config.item_rate_heal/100., battle_config.item_rate_use/100., battle_config.item_rate_equip/100., battle_config.item_rate_card/100.);
clif->message(fd, buf);
- snprintf(buf, CHAT_SIZE_MAX, msg_txt(1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
+ snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1300), // Boss Drop Rates: Common %.2fx / Healing %.2fx / Usable %.2fx / Equipment %.2fx / Card %.2fx
battle_config.item_rate_common_boss/100., battle_config.item_rate_heal_boss/100., battle_config.item_rate_use_boss/100., battle_config.item_rate_equip_boss/100., battle_config.item_rate_card_boss/100.);
clif->message(fd, buf);
- snprintf(buf, CHAT_SIZE_MAX, msg_txt(1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx
+ snprintf(buf, CHAT_SIZE_MAX, msg_fd(fd,1301), // Other Drop Rates: MvP %.2fx / Card-Based %.2fx / Treasure %.2fx
battle_config.item_rate_mvp/100., battle_config.item_rate_adddrop/100., battle_config.item_rate_treasure/100.);
clif->message(fd, buf);
@@ -7290,11 +7333,11 @@ ACMD(me)
return false;
if (!message || !*message || sscanf(message, "%199[^\n]", tempmes) < 0) {
- clif->message(fd, msg_txt(1302)); // Please enter a message (usage: @me <message>).
+ clif->message(fd, msg_fd(fd,1302)); // Please enter a message (usage: @me <message>).
return false;
}
- sprintf(atcmd_output, msg_txt(270), sd->status.name, tempmes); // *%s %s*
+ sprintf(atcmd_output, msg_fd(fd,270), sd->status.name, tempmes); // *%s %s*
clif->disp_overhead(&sd->bl, atcmd_output);
return true;
@@ -7321,7 +7364,7 @@ ACMD(size)
else if( size == SZ_BIG )
clif->specialeffect(&sd->bl,422,AREA);
- clif->message(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_fd(fd,1303)); // Size change applied.
return true;
}
@@ -7351,7 +7394,7 @@ ACMD(sizeall)
}
mapit->free(iter);
- clif->message(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_fd(fd,1303)); // Size change applied.
return true;
}
@@ -7365,12 +7408,12 @@ ACMD(sizeguild)
memset(guild_name, '\0', sizeof(guild_name));
if( !message || !*message || sscanf(message, "%d %23[^\n]", &size, guild_name) < 2 ) {
- clif->message(fd, msg_txt(1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>).
+ clif->message(fd, msg_fd(fd,1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>).
return false;
}
if( (g = guild->searchname(guild_name)) == NULL && (g = guild->search(atoi(guild_name))) == NULL ) {
- clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_fd(fd,94)); // Incorrect name/ID, or no one from the guild is online.
return false;
}
@@ -7391,7 +7434,7 @@ ACMD(sizeguild)
}
}
- clif->message(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_fd(fd,1303)); // Size change applied.
return true;
}
@@ -7403,10 +7446,10 @@ ACMD(monsterignore)
{
if (!sd->state.monster_ignore) {
sd->state.monster_ignore = 1;
- clif->message(sd->fd, msg_txt(1305)); // You are now immune to attacks.
+ clif->message(sd->fd, msg_fd(fd,1305)); // You are now immune to attacks.
} else {
sd->state.monster_ignore = 0;
- clif->message(sd->fd, msg_txt(1306)); // Returned to normal state.
+ clif->message(sd->fd, msg_fd(fd,1306)); // Returned to normal state.
}
return true;
@@ -7425,17 +7468,17 @@ ACMD(fakename)
clif->charnameack(0, &sd->bl);
if( sd->disguise )
clif->charnameack(sd->fd, &sd->bl);
- clif->message(sd->fd, msg_txt(1307)); // Returned to real name.
+ clif->message(sd->fd, msg_fd(fd,1307)); // Returned to real name.
return true;
}
- clif->message(sd->fd, msg_txt(1308)); // You must enter a name.
+ clif->message(sd->fd, msg_fd(fd,1308)); // You must enter a name.
return false;
}
if( strlen(message) < 2 )
{
- clif->message(sd->fd, msg_txt(1309)); // Fake name must be at least two characters.
+ clif->message(sd->fd, msg_fd(fd,1309)); // Fake name must be at least two characters.
return false;
}
@@ -7443,7 +7486,7 @@ ACMD(fakename)
clif->charnameack(0, &sd->bl);
if( sd->disguise ) // Another packet should be sent so the client updates the name for sd
clif->charnameack(sd->fd, &sd->bl);
- clif->message(sd->fd, msg_txt(1310)); // Fake name enabled.
+ clif->message(sd->fd, msg_fd(fd,1310)); // Fake name enabled.
return true;
}
@@ -7468,7 +7511,7 @@ ACMD(mapflag) {
memset(flag_name, '\0', sizeof(flag_name));
if (!message || !*message || (sscanf(message, "%99s %hd", flag_name, &flag) < 1)) {
- clif->message(sd->fd,msg_txt(1311)); // Enabled Mapflags in this map:
+ clif->message(sd->fd,msg_fd(fd,1311)); // Enabled Mapflags in this map:
clif->message(sd->fd,"----------------------------------");
CHECKFLAG(autotrade); CHECKFLAG(allowks); CHECKFLAG(nomemo); CHECKFLAG(noteleport);
CHECKFLAG(noreturn); CHECKFLAG(monster_noteleport); CHECKFLAG(nosave); CHECKFLAG(nobranch);
@@ -7484,8 +7527,8 @@ ACMD(mapflag) {
CHECKFLAG(nochat); CHECKFLAG(partylock); CHECKFLAG(guildlock); CHECKFLAG(src4instance);
CHECKFLAG(notomb); CHECKFLAG(nocashshop);
clif->message(sd->fd," ");
- clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
- clif->message(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags.
+ clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
+ clif->message(sd->fd,msg_fd(fd,1313)); // Type "@mapflag available" to list the available mapflags.
return true;
}
for (i = 0; flag_name[i]; i++) flag_name[i] = TOLOWER(flag_name[i]); //lowercase
@@ -7521,9 +7564,9 @@ ACMD(mapflag) {
SETFLAG(nochat); SETFLAG(partylock); SETFLAG(guildlock); SETFLAG(src4instance);
SETFLAG(notomb); SETFLAG(nocashshop);
- clif->message(sd->fd,msg_txt(1314)); // Invalid flag name or flag.
- clif->message(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
- clif->message(sd->fd,msg_txt(1315)); // Available Flags:
+ clif->message(sd->fd,msg_fd(fd,1314)); // Invalid flag name or flag.
+ clif->message(sd->fd,msg_fd(fd,1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
+ clif->message(sd->fd,msg_fd(fd,1315)); // Available Flags:
clif->message(sd->fd,"----------------------------------");
clif->message(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,");
clif->message(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,");
@@ -7545,12 +7588,12 @@ ACMD(showexp)
{
if (sd->state.showexp) {
sd->state.showexp = 0;
- clif->message(fd, msg_txt(1316)); // Gained exp will not be shown.
+ clif->message(fd, msg_fd(fd,1316)); // Gained exp will not be shown.
return true;
}
sd->state.showexp = 1;
- clif->message(fd, msg_txt(1317)); // Gained exp is now shown.
+ clif->message(fd, msg_fd(fd,1317)); // Gained exp is now shown.
return true;
}
@@ -7558,12 +7601,12 @@ ACMD(showzeny)
{
if (sd->state.showzeny) {
sd->state.showzeny = 0;
- clif->message(fd, msg_txt(1318)); // Gained zeny will not be shown.
+ clif->message(fd, msg_fd(fd,1318)); // Gained zeny will not be shown.
return true;
}
sd->state.showzeny = 1;
- clif->message(fd, msg_txt(1319)); // Gained zeny is now shown.
+ clif->message(fd, msg_fd(fd,1319)); // Gained zeny is now shown.
return true;
}
@@ -7571,12 +7614,12 @@ ACMD(showdelay)
{
if (sd->state.showdelay) {
sd->state.showdelay = 0;
- clif->message(fd, msg_txt(1320)); // Skill delay failures will not be shown.
+ clif->message(fd, msg_fd(fd,1320)); // Skill delay failures will not be shown.
return true;
}
sd->state.showdelay = 1;
- clif->message(fd, msg_txt(1321)); // Skill delay failures are now shown.
+ clif->message(fd, msg_fd(fd,1321)); // Skill delay failures are now shown.
return true;
}
@@ -7596,40 +7639,40 @@ ACMD(invite) {
if(did == 0)
{
// "Duel: @invite without @duel."
- clif->message(fd, msg_txt(350));
+ clif->message(fd, msg_fd(fd,350));
return false;
}
if(duel->list[did].max_players_limit > 0 &&
duel->list[did].members_count >= duel->list[did].max_players_limit) {
// "Duel: Limit of players is reached."
- clif->message(fd, msg_txt(351));
+ clif->message(fd, msg_fd(fd,351));
return false;
}
if(target_sd == NULL) {
// "Duel: Player not found."
- clif->message(fd, msg_txt(352));
+ clif->message(fd, msg_fd(fd,352));
return false;
}
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
// "Duel: Player already in duel."
- clif->message(fd, msg_txt(353));
+ clif->message(fd, msg_fd(fd,353));
return false;
}
if(battle_config.duel_only_on_same_map && target_sd->bl.m != sd->bl.m)
{
// "Duel: You can't invite %s because he/she isn't in the same map."
- sprintf(atcmd_output, msg_txt(364), message);
+ sprintf(atcmd_output, msg_fd(fd,364), message);
clif->message(fd, atcmd_output);
return false;
}
duel->invite(did, sd, target_sd);
// "Duel: Invitation has been sent."
- clif->message(fd, msg_txt(354));
+ clif->message(fd, msg_fd(fd,354));
return true;
}
@@ -7643,14 +7686,14 @@ ACMD(duel) {
if(sd->duel_invite > 0) {
// "Duel: @duel without @reject."
- clif->message(fd, msg_txt(355));
+ clif->message(fd, msg_fd(fd,355));
return false;
}
if(!duel->checktime(sd)) {
char output[CHAT_SIZE_MAX];
// "Duel: You can take part in duel only one time per %d minutes."
- sprintf(output, msg_txt(356), battle_config.duel_time_interval);
+ sprintf(output, msg_fd(fd,356), battle_config.duel_time_interval);
clif->message(fd, output);
return false;
}
@@ -7658,7 +7701,7 @@ ACMD(duel) {
if( message[0] ) {
if(sscanf(message, "%u", &maxpl) >= 1) {
if(maxpl < 2 || maxpl > 65535) {
- clif->message(fd, msg_txt(357)); // "Duel: Invalid value."
+ clif->message(fd, msg_fd(fd,357)); // "Duel: Invalid value."
return false;
}
duel->create(sd, maxpl);
@@ -7669,15 +7712,15 @@ ACMD(duel) {
unsigned int newduel;
if((newduel = duel->create(sd, 2)) != -1) {
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
- clif->message(fd, msg_txt(353)); // "Duel: Player already in duel."
+ clif->message(fd, msg_fd(fd,353)); // "Duel: Player already in duel."
return false;
}
duel->invite(newduel, sd, target_sd);
- clif->message(fd, msg_txt(354)); // "Duel: Invitation has been sent."
+ clif->message(fd, msg_fd(fd,354)); // "Duel: Invitation has been sent."
}
} else {
// "Duel: Player not found."
- clif->message(fd, msg_txt(352));
+ clif->message(fd, msg_fd(fd,352));
return false;
}
}
@@ -7691,11 +7734,11 @@ ACMD(duel) {
ACMD(leave) {
if(sd->duel_group <= 0) {
// "Duel: @leave without @duel."
- clif->message(fd, msg_txt(358));
+ clif->message(fd, msg_fd(fd,358));
return false;
}
duel->leave(sd->duel_group, sd);
- clif->message(fd, msg_txt(359)); // "Duel: You left the duel."
+ clif->message(fd, msg_fd(fd,359)); // "Duel: You left the duel."
return true;
}
@@ -7703,40 +7746,40 @@ ACMD(accept) {
if(!duel->checktime(sd)) {
char output[CHAT_SIZE_MAX];
// "Duel: You can take part in duel only one time per %d minutes."
- sprintf(output, msg_txt(356), battle_config.duel_time_interval);
+ sprintf(output, msg_fd(fd,356), battle_config.duel_time_interval);
clif->message(fd, output);
return false;
}
if(sd->duel_invite <= 0) {
// "Duel: @accept without invitation."
- clif->message(fd, msg_txt(360));
+ clif->message(fd, msg_fd(fd,360));
return false;
}
if( duel->list[sd->duel_invite].max_players_limit > 0
&& duel->list[sd->duel_invite].members_count >= duel->list[sd->duel_invite].max_players_limit ) {
// "Duel: Limit of players is reached."
- clif->message(fd, msg_txt(351));
+ clif->message(fd, msg_fd(fd,351));
return false;
}
duel->accept(sd->duel_invite, sd);
// "Duel: Invitation has been accepted."
- clif->message(fd, msg_txt(361));
+ clif->message(fd, msg_fd(fd,361));
return true;
}
ACMD(reject) {
if(sd->duel_invite <= 0) {
// "Duel: @reject without invitation."
- clif->message(fd, msg_txt(362));
+ clif->message(fd, msg_fd(fd,362));
return false;
}
duel->reject(sd->duel_invite, sd);
// "Duel: Invitation has been rejected."
- clif->message(fd, msg_txt(363));
+ clif->message(fd, msg_fd(fd,363));
return true;
}
@@ -7750,7 +7793,7 @@ ACMD(cash)
int ret=0;
if( !message || !*message || (value = atoi(message)) == 0 ) {
- clif->message(fd, msg_txt(1322)); // Please enter an amount.
+ clif->message(fd, msg_fd(fd,1322)); // Please enter an amount.
return false;
}
@@ -7759,34 +7802,34 @@ ACMD(cash)
if( (ret=pc->getcash(sd, value, 0)) >= 0){
// If this option is set, the message is already sent by pc function
if( !battle_config.cashshop_show_points ){
- sprintf(output, msg_txt(505), ret, sd->cashPoints);
+ sprintf(output, msg_fd(fd,505), ret, sd->cashPoints);
clif_disp_onlyself(sd, output, strlen(output));
}
} else
- clif->message(fd, msg_txt(149)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value.
} else {
if( (ret=pc->paycash(sd, -value, 0)) >= 0){
- sprintf(output, msg_txt(410), ret, sd->cashPoints);
+ sprintf(output, msg_fd(fd,410), ret, sd->cashPoints);
clif_disp_onlyself(sd, output, strlen(output));
} else
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
}
} else { // @points
if( value > 0 ) {
if( (ret=pc->getcash(sd, 0, value)) >= 0) {
// If this option is set, the message is already sent by pc function
if( !battle_config.cashshop_show_points ){
- sprintf(output, msg_txt(506), ret, sd->kafraPoints);
+ sprintf(output, msg_fd(fd,506), ret, sd->kafraPoints);
clif_disp_onlyself(sd, output, strlen(output));
}
} else
- clif->message(fd, msg_txt(149)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,149)); // Unable to decrease the number/value.
} else {
if( (ret=pc->paycash(sd, -value, -value)) >= 0){
- sprintf(output, msg_txt(411), ret, sd->kafraPoints);
+ sprintf(output, msg_fd(fd,411), ret, sd->kafraPoints);
clif_disp_onlyself(sd, output, strlen(output));
} else
- clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_fd(fd,41)); // Unable to decrease the number/value.
}
}
@@ -7799,17 +7842,17 @@ ACMD(clone) {
struct map_session_data *pl_sd=NULL;
if (!message || !*message) {
- clif->message(sd->fd,msg_txt(1323)); // You must enter a player name or ID.
+ clif->message(sd->fd,msg_fd(fd,1323)); // You must enter a player name or ID.
return false;
}
if((pl_sd=map->nick2sd((char *)message)) == NULL && (pl_sd=map->charid2sd(atoi(message))) == NULL) {
- clif->message(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_fd(fd,3)); // Character not found.
return false;
}
if(pc_get_group_level(pl_sd) > pc_get_group_level(sd)) {
- clif->message(fd, msg_txt(126)); // Cannot clone a player of higher GM level than yourself.
+ clif->message(fd, msg_fd(fd,126)); // Cannot clone a player of higher GM level than yourself.
return false;
}
@@ -7819,13 +7862,13 @@ ACMD(clone) {
flag = 2;
if(pc_isdead(sd)){
//"Unable to spawn slave clone."
- clif->message(fd, msg_txt(129+flag*2));
+ clif->message(fd, msg_fd(fd,129+flag*2));
return false;
}
master = sd->bl.id;
if (battle_config.atc_slave_clone_limit
&& mob->countslave(&sd->bl) >= battle_config.atc_slave_clone_limit) {
- clif->message(fd, msg_txt(127)); // You've reached your slave clones limit.
+ clif->message(fd, msg_fd(fd,127)); // You've reached your slave clones limit.
return false;
}
}
@@ -7841,10 +7884,10 @@ ACMD(clone) {
}
if((x = mob->clone_spawn(pl_sd, sd->bl.m, x, y, "", master, 0, flag?1:0, 0)) > 0) {
- clif->message(fd, msg_txt(128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned.
+ clif->message(fd, msg_fd(fd,128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned.
return true;
}
- clif->message(fd, msg_txt(129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone.
+ clif->message(fd, msg_fd(fd,129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone.
return false;
}
@@ -7855,10 +7898,10 @@ ACMD(clone) {
ACMD(noask)
{
if(sd->state.noask) {
- clif->message(fd, msg_txt(391)); // Autorejecting is deactivated.
+ clif->message(fd, msg_fd(fd,391)); // Autorejecting is deactivated.
sd->state.noask = 0;
} else {
- clif->message(fd, msg_txt(390)); // Autorejecting is activated.
+ clif->message(fd, msg_fd(fd,390)); // Autorejecting is activated.
sd->state.noask = 1;
}
@@ -7872,14 +7915,14 @@ ACMD(noask)
ACMD(request)
{
if (!message || !*message) {
- clif->message(sd->fd,msg_txt(277)); // Usage: @request <petition/message to online GMs>.
+ clif->message(sd->fd,msg_fd(fd,277)); // Usage: @request <petition/message to online GMs>.
return false;
}
- sprintf(atcmd_output, msg_txt(278), message); // (@request): %s
+ sprintf(atcmd_output, msg_fd(fd,278), message); // (@request): %s
intif->wis_message_to_gm(sd->status.name, PC_PERM_RECEIVE_REQUESTS, atcmd_output);
clif_disp_onlyself(sd, atcmd_output, strlen(atcmd_output));
- clif->message(sd->fd,msg_txt(279)); // @request sent.
+ clif->message(sd->fd,msg_fd(fd,279)); // @request sent.
return true;
}
@@ -7889,7 +7932,7 @@ ACMD(request)
ACMD(feelreset)
{
pc->resetfeel(sd);
- clif->message(fd, msg_txt(1324)); // Reset 'Feeling' maps.
+ clif->message(fd, msg_fd(fd,1324)); // Reset 'Feeling' maps.
return true;
}
@@ -7900,7 +7943,7 @@ ACMD(feelreset)
ACMD(auction) {
if( !battle_config.feature_auction ) {
- clif->colormes(sd->fd,COLOR_RED,msg_txt(1484));
+ clif->colormes(sd->fd,COLOR_RED,msg_fd(fd,1484));
return false;
}
@@ -7916,27 +7959,27 @@ ACMD(ksprotection)
{
if( sd->state.noks ) {
sd->state.noks = 0;
- clif->message(fd, msg_txt(1325)); // [ K.S Protection Inactive ]
+ clif->message(fd, msg_fd(fd,1325)); // [ K.S Protection Inactive ]
}
else
{
if( !message || !*message || !strcmpi(message, "party") )
{ // Default is Party
sd->state.noks = 2;
- clif->message(fd, msg_txt(1326)); // [ K.S Protection Active - Option: Party ]
+ clif->message(fd, msg_fd(fd,1326)); // [ K.S Protection Active - Option: Party ]
}
else if( !strcmpi(message, "self") )
{
sd->state.noks = 1;
- clif->message(fd, msg_txt(1327)); // [ K.S Protection Active - Option: Self ]
+ clif->message(fd, msg_fd(fd,1327)); // [ K.S Protection Active - Option: Self ]
}
else if( !strcmpi(message, "guild") )
{
sd->state.noks = 3;
- clif->message(fd, msg_txt(1328)); // [ K.S Protection Active - Option: Guild ]
+ clif->message(fd, msg_fd(fd,1328)); // [ K.S Protection Active - Option: Guild ]
}
else
- clif->message(fd, msg_txt(1329)); // Usage: @noks <self|party|guild>
+ clif->message(fd, msg_fd(fd,1329)); // Usage: @noks <self|party|guild>
}
return true;
}
@@ -7947,10 +7990,10 @@ ACMD(allowks)
{
if( map->list[sd->bl.m].flag.allowks ) {
map->list[sd->bl.m].flag.allowks = 0;
- clif->message(fd, msg_txt(1330)); // [ Map K.S Protection Active ]
+ clif->message(fd, msg_fd(fd,1330)); // [ Map K.S Protection Active ]
} else {
map->list[sd->bl.m].flag.allowks = 1;
- clif->message(fd, msg_txt(1331)); // [ Map K.S Protection Inactive ]
+ clif->message(fd, msg_fd(fd,1331)); // [ Map K.S Protection Inactive ]
}
return true;
}
@@ -7958,7 +8001,7 @@ ACMD(allowks)
ACMD(resetstat)
{
pc->resetstate(sd);
- sprintf(atcmd_output, msg_txt(207), sd->status.name);
+ sprintf(atcmd_output, msg_fd(fd,207), sd->status.name);
clif->message(fd, atcmd_output);
return true;
}
@@ -7966,7 +8009,7 @@ ACMD(resetstat)
ACMD(resetskill)
{
pc->resetskill(sd,1);
- sprintf(atcmd_output, msg_txt(206), sd->status.name);
+ sprintf(atcmd_output, msg_fd(fd,206), sd->status.name);
clif->message(fd, atcmd_output);
return true;
}
@@ -8016,7 +8059,7 @@ ACMD(itemlist)
if( count == 1 )
{
- StrBuf->Printf(&buf, msg_txt(1332), location, sd->status.name); // ------ %s items list of '%s' ------
+ StrBuf->Printf(&buf, msg_fd(fd,1332), location, sd->status.name); // ------ %s items list of '%s' ------
clif->message(fd, StrBuf->Value(&buf));
StrBuf->Clear(&buf);
}
@@ -8028,35 +8071,35 @@ ACMD(itemlist)
if( it->equip ) {
char equipstr[CHAT_SIZE_MAX];
- strcpy(equipstr, msg_txt(1333)); // | equipped:
+ strcpy(equipstr, msg_fd(fd,1333)); // | equipped:
if( it->equip & EQP_GARMENT )
- strcat(equipstr, msg_txt(1334)); // garment,
+ strcat(equipstr, msg_fd(fd,1334)); // garment,
if( it->equip & EQP_ACC_L )
- strcat(equipstr, msg_txt(1335)); // left accessory,
+ strcat(equipstr, msg_fd(fd,1335)); // left accessory,
if( it->equip & EQP_ARMOR )
- strcat(equipstr, msg_txt(1336)); // body/armor,
+ strcat(equipstr, msg_fd(fd,1336)); // body/armor,
if( (it->equip & EQP_ARMS) == EQP_HAND_R )
- strcat(equipstr, msg_txt(1337)); // right hand,
+ strcat(equipstr, msg_fd(fd,1337)); // right hand,
if( (it->equip & EQP_ARMS) == EQP_HAND_L )
- strcat(equipstr, msg_txt(1338)); // left hand,
+ strcat(equipstr, msg_fd(fd,1338)); // left hand,
if( (it->equip & EQP_ARMS) == EQP_ARMS )
- strcat(equipstr, msg_txt(1339)); // both hands,
+ strcat(equipstr, msg_fd(fd,1339)); // both hands,
if( it->equip & EQP_SHOES )
- strcat(equipstr, msg_txt(1340)); // feet,
+ strcat(equipstr, msg_fd(fd,1340)); // feet,
if( it->equip & EQP_ACC_R )
- strcat(equipstr, msg_txt(1341)); // right accessory,
+ strcat(equipstr, msg_fd(fd,1341)); // right accessory,
if( (it->equip & EQP_HELM) == EQP_HEAD_LOW )
- strcat(equipstr, msg_txt(1342)); // lower head,
+ strcat(equipstr, msg_fd(fd,1342)); // lower head,
if( (it->equip & EQP_HELM) == EQP_HEAD_TOP )
- strcat(equipstr, msg_txt(1343)); // top head,
+ strcat(equipstr, msg_fd(fd,1343)); // top head,
if( (it->equip & EQP_HELM) == (EQP_HEAD_LOW|EQP_HEAD_TOP) )
- strcat(equipstr, msg_txt(1344)); // lower/top head,
+ strcat(equipstr, msg_fd(fd,1344)); // lower/top head,
if( (it->equip & EQP_HELM) == EQP_HEAD_MID )
- strcat(equipstr, msg_txt(1345)); // mid head,
+ strcat(equipstr, msg_fd(fd,1345)); // mid head,
if( (it->equip & EQP_HELM) == (EQP_HEAD_LOW|EQP_HEAD_MID) )
- strcat(equipstr, msg_txt(1346)); // lower/mid head,
+ strcat(equipstr, msg_fd(fd,1346)); // lower/mid head,
if( (it->equip & EQP_HELM) == EQP_HELM )
- strcat(equipstr, msg_txt(1347)); // lower/mid/top head,
+ strcat(equipstr, msg_fd(fd,1347)); // lower/mid/top head,
// remove final ', '
equipstr[strlen(equipstr) - 2] = '\0';
StrBuf->AppendStr(&buf, equipstr);
@@ -8068,15 +8111,15 @@ ACMD(itemlist)
if( it->card[0] == CARD0_PET ) {
// pet egg
if (it->card[3])
- StrBuf->Printf(&buf, msg_txt(1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named)
+ StrBuf->Printf(&buf, msg_fd(fd,1348), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, named)
else
- StrBuf->Printf(&buf, msg_txt(1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed)
+ StrBuf->Printf(&buf, msg_fd(fd,1349), (unsigned int)MakeDWord(it->card[1], it->card[2])); // -> (pet egg, pet id: %u, unnamed)
} else if(it->card[0] == CARD0_FORGE) {
// forged item
- StrBuf->Printf(&buf, msg_txt(1350), (unsigned int)MakeDWord(it->card[2], it->card[3]), it->card[1]>>8, it->card[1]&0x0f); // -> (crafted item, creator id: %u, star crumbs %d, element %d)
+ StrBuf->Printf(&buf, msg_fd(fd,1350), (unsigned int)MakeDWord(it->card[2], it->card[3]), it->card[1]>>8, it->card[1]&0x0f); // -> (crafted item, creator id: %u, star crumbs %d, element %d)
} else if(it->card[0] == CARD0_CREATE) {
// created item
- StrBuf->Printf(&buf, msg_txt(1351), (unsigned int)MakeDWord(it->card[2], it->card[3])); // -> (produced item, creator id: %u)
+ StrBuf->Printf(&buf, msg_fd(fd,1351), (unsigned int)MakeDWord(it->card[2], it->card[3])); // -> (produced item, creator id: %u)
} else {
// normal item
int counter2 = 0;
@@ -8090,7 +8133,7 @@ ACMD(itemlist)
counter2++;
if( counter2 == 1 )
- StrBuf->AppendStr(&buf, msg_txt(1352)); // -> (card(s):
+ StrBuf->AppendStr(&buf, msg_fd(fd,1352)); // -> (card(s):
if( counter2 != 1 )
StrBuf->AppendStr(&buf, ", ");
@@ -8109,9 +8152,9 @@ ACMD(itemlist)
}
if( count == 0 )
- StrBuf->Printf(&buf, msg_txt(1353), location); // No item found in this player's %s.
+ StrBuf->Printf(&buf, msg_fd(fd,1353), location); // No item found in this player's %s.
else
- StrBuf->Printf(&buf, msg_txt(1354), counter, count, location); // %d item(s) found in %d %s slots.
+ StrBuf->Printf(&buf, msg_fd(fd,1354), counter, count, location); // %d item(s) found in %d %s slots.
clif->message(fd, StrBuf->Value(&buf));
@@ -8170,7 +8213,7 @@ ACMD(stats)
output_table[15].value = sd->change_level_3rd;
sprintf(job_jobname, "Job - %s %s", pc->job_name(sd->status.class_), "(level %d)");
- sprintf(output, msg_txt(53), sd->status.name); // '%s' stats:
+ sprintf(output, msg_fd(fd,53), sd->status.name); // '%s' stats:
clif->message(fd, output);
@@ -8188,7 +8231,7 @@ ACMD(delitem) {
if( !message || !*message || ( sscanf(message, "\"%99[^\"]\" %d", item_name, &amount) < 2 && sscanf(message, "%99s %d", item_name, &amount) < 2 ) || amount < 1 )
{
- clif->message(fd, msg_txt(1355)); // Please enter an item name/ID, a quantity, and a player name (usage: #delitem <player> <item_name_or_ID> <quantity>).
+ clif->message(fd, msg_fd(fd,1355)); // Please enter an item name/ID, a quantity, and a player name (usage: #delitem <player> <item_name_or_ID> <quantity>).
return false;
}
@@ -8198,7 +8241,7 @@ ACMD(delitem) {
}
else
{
- clif->message(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_fd(fd,19)); // Invalid item ID or name.
return false;
}
@@ -8218,22 +8261,22 @@ ACMD(delitem) {
}
// notify target
- sprintf(atcmd_output, msg_txt(113), total-amount); // %d item(s) removed by a GM.
+ sprintf(atcmd_output, msg_fd(fd,113), total-amount); // %d item(s) removed by a GM.
clif->message(sd->fd, atcmd_output);
// notify source
if( amount == total )
{
- clif->message(fd, msg_txt(116)); // Character does not have the item.
+ clif->message(fd, msg_fd(fd,116)); // Character does not have the item.
}
else if( amount )
{
- sprintf(atcmd_output, msg_txt(115), total-amount, total-amount, total); // %d item(s) removed. Player had only %d on %d items.
+ sprintf(atcmd_output, msg_fd(fd,115), total-amount, total-amount, total); // %d item(s) removed. Player had only %d on %d items.
clif->message(fd, atcmd_output);
}
else
{
- sprintf(atcmd_output, msg_txt(114), total); // %d item(s) removed from the player.
+ sprintf(atcmd_output, msg_fd(fd,114), total); // %d item(s) removed from the player.
clif->message(fd, atcmd_output);
}
return true;
@@ -8251,25 +8294,25 @@ ACMD(font) {
if( sd->status.font )
{
sd->status.font = 0;
- clif->message(fd, msg_txt(1356)); // Returning to normal font.
+ clif->message(fd, msg_fd(fd,1356)); // Returning to normal font.
clif->font(sd);
}
else
{
- clif->message(fd, msg_txt(1357)); // Use @font <1-9> to change your message font.
- clif->message(fd, msg_txt(1358)); // Use 0 or no parameter to return to normal font.
+ clif->message(fd, msg_fd(fd,1357)); // Use @font <1-9> to change your message font.
+ clif->message(fd, msg_fd(fd,1358)); // Use 0 or no parameter to return to normal font.
}
}
else if( font_id < 0 || font_id > 9 )
- clif->message(fd, msg_txt(1359)); // Invalid font. Use a value from 0 to 9.
+ clif->message(fd, msg_fd(fd,1359)); // Invalid font. Use a value from 0 to 9.
else if( font_id != sd->status.font )
{
sd->status.font = font_id;
clif->font(sd);
- clif->message(fd, msg_txt(1360)); // Font changed.
+ clif->message(fd, msg_fd(fd,1360)); // Font changed.
}
else
- clif->message(fd, msg_txt(1361)); // Already using this font.
+ clif->message(fd, msg_fd(fd,1361)); // Already using this font.
return true;
}
@@ -8288,7 +8331,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand
memset(line_buff,' ',CHATBOX_SIZE);
line_buff[CHATBOX_SIZE-1] = 0;
- clif->message(fd, msg_txt(273)); // "Available commands:"
+ clif->message(fd, msg_fd(fd,273)); // "Available commands:"
for (cmd = dbi_first(iter); dbi_exists(iter); cmd = dbi_next(iter)) {
size_t slen;
@@ -8325,7 +8368,7 @@ void atcommand_commands_sub(struct map_session_data* sd, const int fd, AtCommand
dbi_destroy(iter);
clif->message(fd,line_buff);
- sprintf(atcmd_output, msg_txt(274), count); // "%d commands found."
+ sprintf(atcmd_output, msg_fd(fd,274), count); // "%d commands found."
clif->message(fd, atcmd_output);
return;
@@ -8352,16 +8395,16 @@ ACMD(charcommands)
ACMD(cashmount)
{
if (pc_hasmount(sd)) {
- clif->message(fd, msg_txt(1476)); // You are already mounting something else
+ clif->message(fd, msg_fd(fd,1476)); // You are already mounting something else
return false;
}
- clif->message(sd->fd,msg_txt(1362)); // NOTICE: If you crash with mount your LUA is outdated.
+ clif->message(sd->fd,msg_fd(fd,1362)); // NOTICE: If you crash with mount your LUA is outdated.
if (!sd->sc.data[SC_ALL_RIDING]) {
- clif->message(sd->fd,msg_txt(1363)); // You have mounted.
+ clif->message(sd->fd,msg_fd(fd,1363)); // You have mounted.
sc_start(NULL,&sd->bl,SC_ALL_RIDING,100,0,-1);
} else {
- clif->message(sd->fd,msg_txt(1364)); // You have released your mount.
+ clif->message(sd->fd,msg_fd(fd,1364)); // You have released your mount.
status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER);
}
return true;
@@ -8371,8 +8414,8 @@ ACMD(accinfo) {
char query[NAME_LENGTH];
if (!message || !*message || strlen(message) > NAME_LENGTH ) {
- clif->message(fd, msg_txt(1365)); // Usage: @accinfo/@accountinfo <account_id/char name>
- clif->message(fd, msg_txt(1366)); // You may search partial name by making use of '%' in the search, ex. "@accinfo %Mario%" lists all characters whose name contains "Mario".
+ clif->message(fd, msg_fd(fd,1365)); // Usage: @accinfo/@accountinfo <account_id/char name>
+ clif->message(fd, msg_fd(fd,1366)); // You may search partial name by making use of '%' in the search, ex. "@accinfo %Mario%" lists all characters whose name contains "Mario".
return false;
}
@@ -8392,19 +8435,19 @@ ACMD(set) {
size_t len;
if( !message || !*message || (toset = sscanf(message, "%31s %128[^\n]s", reg, val)) < 1 ) {
- clif->message(fd, msg_txt(1367)); // Usage: @set <variable name> <value>
- clif->message(fd, msg_txt(1368)); // Usage: ex. "@set PoringCharVar 50"
- clif->message(fd, msg_txt(1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String"
- clif->message(fd, msg_txt(1370)); // Usage: ex. "@set PoringCharVarSTR$" outputs its value, Super Duper String.
+ clif->message(fd, msg_fd(fd,1367)); // Usage: @set <variable name> <value>
+ clif->message(fd, msg_fd(fd,1368)); // Usage: ex. "@set PoringCharVar 50"
+ clif->message(fd, msg_fd(fd,1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String"
+ clif->message(fd, msg_fd(fd,1370)); // Usage: ex. "@set PoringCharVarSTR$" outputs its value, Super Duper String.
return false;
}
/* disabled variable types (they require a proper script state to function, so allowing them would crash the server) */
if( reg[0] == '.' ) {
- clif->message(fd, msg_txt(1371)); // NPC variables may not be used with @set.
+ clif->message(fd, msg_fd(fd,1371)); // NPC variables may not be used with @set.
return false;
} else if( reg[0] == '\'' ) {
- clif->message(fd, msg_txt(1372)); // Instance variables may not be used with @set.
+ clif->message(fd, msg_fd(fd,1372)); // Instance variables may not be used with @set.
return false;
}
@@ -8474,16 +8517,16 @@ ACMD(set) {
switch( data->type ) {
case C_INT:
- sprintf(atcmd_output,msg_txt(1373),reg,data->u.num); // %s value is now :%d
+ sprintf(atcmd_output,msg_fd(fd,1373),reg,data->u.num); // %s value is now :%d
break;
case C_STR:
- sprintf(atcmd_output,msg_txt(1374),reg,data->u.str); // %s value is now :%s
+ sprintf(atcmd_output,msg_fd(fd,1374),reg,data->u.str); // %s value is now :%s
break;
case C_CONSTSTR:
- sprintf(atcmd_output,msg_txt(1375),reg); // %s is empty
+ sprintf(atcmd_output,msg_fd(fd,1375),reg); // %s is empty
break;
default:
- sprintf(atcmd_output,msg_txt(1376),reg,data->type); // %s data type is not supported :%u
+ sprintf(atcmd_output,msg_fd(fd,1376),reg,data->type); // %s data type is not supported :%u
break;
}
clif->message(fd, atcmd_output);
@@ -8493,7 +8536,7 @@ ACMD(set) {
}
ACMD(reloadquestdb) {
quest->reload();
- clif->message(fd, msg_txt(1377)); // Quest database has been reloaded.
+ clif->message(fd, msg_fd(fd,1377)); // Quest database has been reloaded.
return true;
}
ACMD(addperm) {
@@ -8502,9 +8545,9 @@ ACMD(addperm) {
int i;
if( !message || !*message ) {
- sprintf(atcmd_output, msg_txt(1378),command); // Usage: %s <permission_name>
+ sprintf(atcmd_output, msg_fd(fd,1378),command); // Usage: %s <permission_name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1379)); // -- Permission List
+ clif->message(fd, msg_fd(fd,1379)); // -- Permission List
for( i = 0; i < perm_size; i++ ) {
sprintf(atcmd_output,"- %s",pcg->permissions[i].name);
clif->message(fd, atcmd_output);
@@ -8514,9 +8557,9 @@ ACMD(addperm) {
ARR_FIND(0, perm_size, i, strcmpi(pcg->permissions[i].name, message) == 0);
if( i == perm_size ) {
- sprintf(atcmd_output,msg_txt(1380),message); // '%s' is not a known permission.
+ sprintf(atcmd_output,msg_fd(fd,1380),message); // '%s' is not a known permission.
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1379)); // -- Permission List
+ clif->message(fd, msg_fd(fd,1379)); // -- Permission List
for( i = 0; i < perm_size; i++ ) {
sprintf(atcmd_output,"- %s",pcg->permissions[i].name);
clif->message(fd, atcmd_output);
@@ -8525,13 +8568,13 @@ ACMD(addperm) {
}
if( add && (sd->extra_temp_permissions&pcg->permissions[i].permission) ) {
- sprintf(atcmd_output, msg_txt(1381),sd->status.name,pcg->permissions[i].name); // User '%s' already possesses the '%s' permission.
+ sprintf(atcmd_output, msg_fd(fd,1381),sd->status.name,pcg->permissions[i].name); // User '%s' already possesses the '%s' permission.
clif->message(fd, atcmd_output);
return false;
} else if ( !add && !(sd->extra_temp_permissions&pcg->permissions[i].permission) ) {
- sprintf(atcmd_output, msg_txt(1382),sd->status.name,pcg->permissions[i].name); // User '%s' doesn't possess the '%s' permission.
+ sprintf(atcmd_output, msg_fd(fd,1382),sd->status.name,pcg->permissions[i].name); // User '%s' doesn't possess the '%s' permission.
clif->message(fd, atcmd_output);
- sprintf(atcmd_output,msg_txt(1383),sd->status.name); // -- User '%s' Permissions
+ sprintf(atcmd_output,msg_fd(fd,1383),sd->status.name); // -- User '%s' Permissions
clif->message(fd, atcmd_output);
for( i = 0; i < perm_size; i++ ) {
if( sd->extra_temp_permissions&pcg->permissions[i].permission ) {
@@ -8547,7 +8590,7 @@ ACMD(addperm) {
else
sd->extra_temp_permissions &=~ pcg->permissions[i].permission;
- sprintf(atcmd_output, msg_txt(1384),sd->status.name); // User '%s' permissions updated successfully. The changes are temporary.
+ sprintf(atcmd_output, msg_fd(fd,1384),sd->status.name); // User '%s' permissions updated successfully. The changes are temporary.
clif->message(fd, atcmd_output);
return true;
@@ -8555,14 +8598,14 @@ ACMD(addperm) {
ACMD(unloadnpcfile)
{
if( !message || !*message ) {
- clif->message(fd, msg_txt(1385)); // Usage: @unloadnpcfile <file name>
+ clif->message(fd, msg_fd(fd,1385)); // Usage: @unloadnpcfile <file name>
return false;
}
if( npc->unloadfile(message) )
- clif->message(fd, msg_txt(1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed.
+ clif->message(fd, msg_fd(fd,1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed.
else {
- clif->message(fd, msg_txt(1387)); // File not found.
+ clif->message(fd, msg_fd(fd,1387)); // File not found.
return false;
}
return true;
@@ -8581,13 +8624,13 @@ ACMD(cart) {
if (message)
val = atoi(message);
if( !message || !*message || val < 0 || val > MAX_CARTS ) {
- sprintf(atcmd_output, msg_txt(1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>).
+ sprintf(atcmd_output, msg_fd(fd,1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>).
clif->message(fd, atcmd_output);
return false;
}
if( val == 0 && !pc_iscarton(sd) ) {
- clif->message(fd, msg_txt(1391)); // You do not possess a cart to be removed
+ clif->message(fd, msg_fd(fd,1391)); // You do not possess a cart to be removed
return false;
}
@@ -8606,7 +8649,7 @@ ACMD(cart) {
MC_CART_MDFY(0,index);
}
- clif->message(fd, msg_txt(1392)); // Cart Added
+ clif->message(fd, msg_fd(fd,1392)); // Cart Added
return true;
#undef MC_CART_MDFY
@@ -8619,7 +8662,7 @@ ACMD(join)
enum channel_operation_status ret = HCS_STATUS_OK;
if (!message || !*message || sscanf(message, "%19s %19s", name, pass) < 1) {
- sprintf(atcmd_output, msg_txt(1399),command); // Unknown Channel (usage: %s <#channel_name>)
+ sprintf(atcmd_output, msg_fd(fd,1399),command); // Unknown Channel (usage: %s <#channel_name>)
clif->message(fd, atcmd_output);
return false;
}
@@ -8627,7 +8670,7 @@ ACMD(join)
chan = channel->search(name, sd);
if(!chan) {
- sprintf(atcmd_output, msg_txt(1400),name,command); // Unknown Channel '%s' (usage: %s <#channel_name>)
+ sprintf(atcmd_output, msg_fd(fd,1400),name,command); // Unknown Channel '%s' (usage: %s <#channel_name>)
clif->message(fd, atcmd_output);
return false;
}
@@ -8635,19 +8678,19 @@ ACMD(join)
ret = channel->join(chan, sd, pass, false);
if (ret == HCS_STATUS_ALREADY) {
- sprintf(atcmd_output, msg_txt(1436),name); // You're already in the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1436),name); // You're already in the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
if (ret == HCS_STATUS_NOPERM) {
- sprintf(atcmd_output, msg_txt(1401),name,command); // '%s' Channel is password protected (usage: %s <#channel_name> <password>)
+ sprintf(atcmd_output, msg_fd(fd,1401),name,command); // '%s' Channel is password protected (usage: %s <#channel_name> <password>)
clif->message(fd, atcmd_output);
return false;
}
if (ret == HCS_STATUS_BANNED) {
- sprintf(atcmd_output, msg_txt(1438),name); // You cannot join the '%s' channel because you've been banned from it
+ sprintf(atcmd_output, msg_fd(fd,1438),name); // You cannot join the '%s' channel because you've been banned from it
clif->message(fd, atcmd_output);
return false;
}
@@ -8656,52 +8699,52 @@ ACMD(join)
}
/* [Ind/Hercules] */
static inline void atcmd_channel_help(int fd, const char *command, bool can_create) {
- sprintf(atcmd_output, msg_txt(1404),command); // %s failed.
+ sprintf(atcmd_output, msg_fd(fd,1404),command); // %s failed.
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1414));// --- Available options:
+ clif->message(fd, msg_fd(fd,1414));// --- Available options:
if( can_create ) {
- sprintf(atcmd_output, msg_txt(1415),command);// -- %s create <channel name> <channel password>
+ sprintf(atcmd_output, msg_fd(fd,1415),command);// -- %s create <channel name> <channel password>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1416));// - creates a new channel
+ clif->message(fd, msg_fd(fd,1416));// - creates a new channel
}
- sprintf(atcmd_output, msg_txt(1417),command);// -- %s list
+ sprintf(atcmd_output, msg_fd(fd,1417),command);// -- %s list
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1418));// - lists public channels
+ clif->message(fd, msg_fd(fd,1418));// - lists public channels
if( can_create ) {
- sprintf(atcmd_output, msg_txt(1419),command);// -- %s list colors
+ sprintf(atcmd_output, msg_fd(fd,1419),command);// -- %s list colors
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1420));// - lists colors available to select for custom channels
- sprintf(atcmd_output, msg_txt(1421),command);// -- %s setcolor <channel name> <color name>
+ clif->message(fd, msg_fd(fd,1420));// - lists colors available to select for custom channels
+ sprintf(atcmd_output, msg_fd(fd,1421),command);// -- %s setcolor <channel name> <color name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1422));// - changes <channel name> color to <color name>
+ clif->message(fd, msg_fd(fd,1422));// - changes <channel name> color to <color name>
}
- sprintf(atcmd_output, msg_txt(1423),command);// -- %s leave <channel name>
+ sprintf(atcmd_output, msg_fd(fd,1423),command);// -- %s leave <channel name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1424));// - leaves <channel name>
- sprintf(atcmd_output, msg_txt(1427),command);// -- %s bindto <channel name>
+ clif->message(fd, msg_fd(fd,1424));// - leaves <channel name>
+ sprintf(atcmd_output, msg_fd(fd,1427),command);// -- %s bindto <channel name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1428));// - binds global chat to <channel name>, making anything you type in global be sent to the channel
- sprintf(atcmd_output, msg_txt(1429),command);// -- %s unbind
+ clif->message(fd, msg_fd(fd,1428));// - binds global chat to <channel name>, making anything you type in global be sent to the channel
+ sprintf(atcmd_output, msg_fd(fd,1429),command);// -- %s unbind
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1430));// - unbinds your global chat from its attached channel (if binded)
- sprintf(atcmd_output, msg_txt(1429),command);// -- %s unbind
+ clif->message(fd, msg_fd(fd,1430));// - unbinds your global chat from its attached channel (if binded)
+ sprintf(atcmd_output, msg_fd(fd,1429),command);// -- %s unbind
clif->message(fd, atcmd_output);
if( can_create ) {
- sprintf(atcmd_output, msg_txt(1456),command);// -- %s ban <channel name> <character name>
+ sprintf(atcmd_output, msg_fd(fd,1456),command);// -- %s ban <channel name> <character name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1457));// - bans <character name> from <channel name> channel
- sprintf(atcmd_output, msg_txt(1458),command);// -- %s banlist <channel name>
+ clif->message(fd, msg_fd(fd,1457));// - bans <character name> from <channel name> channel
+ sprintf(atcmd_output, msg_fd(fd,1458),command);// -- %s banlist <channel name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1459));// - lists all banned characters from <channel name> channel
- sprintf(atcmd_output, msg_txt(1460),command);// -- %s unban <channel name> <character name>
+ clif->message(fd, msg_fd(fd,1459));// - lists all banned characters from <channel name> channel
+ sprintf(atcmd_output, msg_fd(fd,1460),command);// -- %s unban <channel name> <character name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1461));// - unbans <character name> from <channel name> channel
- sprintf(atcmd_output, msg_txt(1467),command);// -- %s unbanall <channel name>
+ clif->message(fd, msg_fd(fd,1461));// - unbans <character name> from <channel name> channel
+ sprintf(atcmd_output, msg_fd(fd,1467),command);// -- %s unbanall <channel name>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1468));// - unbans everyone from <channel name>
- sprintf(atcmd_output, msg_txt(1462),command);// -- %s setopt <channel name> <option name> <option value>
+ clif->message(fd, msg_fd(fd,1468));// - unbans everyone from <channel name>
+ sprintf(atcmd_output, msg_fd(fd,1462),command);// -- %s setopt <channel name> <option name> <option value>
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1463));// - adds or removes <option name> with <option value> to <channel name> channel
+ clif->message(fd, msg_fd(fd,1463));// - adds or removes <option name> with <option value> to <channel name> channel
}
}
/* [Ind/Hercules] */
@@ -8721,18 +8764,18 @@ ACMD(channel) {
size_t len = strlen(sub1);
const char *pass = *sub2 ? sub2 : NULL;
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
} else if (len < 3 || len > HCS_NAME_LENGTH) {
- sprintf(atcmd_output, msg_txt(1406), HCS_NAME_LENGTH);// Channel length must be between 3 and %d
+ sprintf(atcmd_output, msg_fd(fd,1406), HCS_NAME_LENGTH);// Channel length must be between 3 and %d
clif->message(fd, atcmd_output);
return false;
} else if (sub3[0] != '\0') {
- clif->message(fd, msg_txt(1408)); // Channel password may not contain spaces
+ clif->message(fd, msg_fd(fd,1408)); // Channel password may not contain spaces
return false;
}
if (strcmpi(sub1 + 1, channel->config->local_name) == 0 || strcmpi(sub1 + 1, channel->config->ally_name) == 0 || strdb_exists(channel->db, sub1 + 1)) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
@@ -8761,20 +8804,20 @@ ACMD(channel) {
} else {
DBIterator *iter = db_iterator(channel->db);
bool show_all = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ? true : false;
- clif->message(fd, msg_txt(1410)); // -- Public Channels
+ clif->message(fd, msg_fd(fd,1410)); // -- Public Channels
if (channel->config->local) {
- sprintf(atcmd_output, msg_txt(1409), channel->config->local_name, map->list[sd->bl.m].channel ? db_size(map->list[sd->bl.m].channel->users) : 0);// - #%s ( %d users )
+ sprintf(atcmd_output, msg_fd(fd,1409), channel->config->local_name, map->list[sd->bl.m].channel ? db_size(map->list[sd->bl.m].channel->users) : 0);// - #%s ( %d users )
clif->message(fd, atcmd_output);
}
if (channel->config->ally && sd->status.guild_id) {
struct guild *g = sd->guild;
if( !g ) { dbi_destroy(iter); return false; }
- sprintf(atcmd_output, msg_txt(1409), channel->config->ally_name, db_size(g->channel->users));// - #%s ( %d users )
+ sprintf(atcmd_output, msg_fd(fd,1409), channel->config->ally_name, db_size(g->channel->users));// - #%s ( %d users )
clif->message(fd, atcmd_output);
}
for (chan = dbi_first(iter); dbi_exists(iter); chan = dbi_next(iter)) {
if (show_all || chan->type == HCS_TYPE_PUBLIC || chan->type == HCS_TYPE_IRC) {
- sprintf(atcmd_output, msg_txt(1409), chan->name, db_size(chan->users));// - #%s ( %d users )
+ sprintf(atcmd_output, msg_fd(fd,1409), chan->name, db_size(chan->users));// - #%s ( %d users )
clif->message(fd, atcmd_output);
}
}
@@ -8783,18 +8826,18 @@ ACMD(channel) {
} else if (strcmpi(subcmd,"setcolor") == 0) {
// sub1 = channel name; sub2 = color; sub3 = unused
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
if (chan->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
@@ -8804,17 +8847,17 @@ ACMD(channel) {
break;
}
if (k == channel->config->colors_count) {
- sprintf(atcmd_output, msg_txt(1411), sub2);// Unknown color '%s'
+ sprintf(atcmd_output, msg_fd(fd,1411), sub2);// Unknown color '%s'
clif->message(fd, atcmd_output);
return false;
}
chan->color = k;
- sprintf(atcmd_output, msg_txt(1413), sub1, channel->config->colors_name[k]);// '%s' channel color updated to '%s'
+ sprintf(atcmd_output, msg_fd(fd,1413), sub1, channel->config->colors_name[k]);// '%s' channel color updated to '%s'
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"leave") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
for (k = 0; k < sd->channel_count; k++) {
@@ -8822,7 +8865,7 @@ ACMD(channel) {
break;
}
if (k == sd->channel_count) {
- sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1425),sub1);// You're not part of the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
@@ -8838,12 +8881,12 @@ ACMD(channel) {
} else {
channel->leave(sd->channels[k],sd);
}
- sprintf(atcmd_output, msg_txt(1426),sub1); // You've left the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1426),sub1); // You've left the '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"bindto") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
@@ -8852,22 +8895,22 @@ ACMD(channel) {
break;
}
if (k == sd->channel_count) {
- sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1425),sub1);// You're not part of the '%s' channel
clif->message(fd, atcmd_output);
return false;
}
sd->gcbind = sd->channels[k];
- sprintf(atcmd_output, msg_txt(1431),sub1); // Your global chat is now bound to the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1431),sub1); // Your global chat is now bound to the '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"unbind") == 0) {
// sub1 = unused; sub2 = unused; sub3 = unused
if (sd->gcbind == NULL) {
- clif->message(fd, msg_txt(1432));// Your global chat is not bound to any channel
+ clif->message(fd, msg_fd(fd,1432));// Your global chat is not bound to any channel
return false;
}
- sprintf(atcmd_output, msg_txt(1433),sd->gcbind->name); // Your global chat is no longer bound to the '#%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1433),sd->gcbind->name); // Your global chat is no longer bound to the '#%s' channel
clif->message(fd, atcmd_output);
sd->gcbind = NULL;
@@ -8878,24 +8921,24 @@ ACMD(channel) {
enum channel_operation_status ret = HCS_STATUS_OK;
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
if (!message || !*message || sscanf(message, "%19s %19s %23[^\n]", subcmd, sub1, sub4) < 3) {
- sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found
+ sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found
clif->message(fd, atcmd_output);
return false;
}
if (sub4[0] == '\0' || (pl_sd = map->nick2sd(sub4)) == NULL) {
- sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found
+ sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found
clif->message(fd, atcmd_output);
return false;
}
@@ -8903,23 +8946,23 @@ ACMD(channel) {
ret = channel->ban(chan, sd, pl_sd);
if (ret == HCS_STATUS_NOPERM) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
if (ret == HCS_STATUS_ALREADY) {
- sprintf(atcmd_output, msg_txt(1465), pl_sd->status.name);// Player '%s' is already banned from this channel
+ sprintf(atcmd_output, msg_fd(fd,1465), pl_sd->status.name);// Player '%s' is already banned from this channel
clif->message(fd, atcmd_output);
return false;
}
if (ret != HCS_STATUS_OK/*ret == HCS_STATUS_FAIL*/) {
- clif->message(fd, msg_txt(1464)); // Ban failed, not possible to ban this user.
+ clif->message(fd, msg_fd(fd,1464)); // Ban failed, not possible to ban this user.
return false;
}
- sprintf(atcmd_output, msg_txt(1437),pl_sd->status.name,sub1); // Player '%s' has now been banned from '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1437),pl_sd->status.name,sub1); // Player '%s' has now been banned from '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"unban") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
@@ -8928,64 +8971,64 @@ ACMD(channel) {
enum channel_operation_status ret = HCS_STATUS_OK;
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
if (!message || !*message || sscanf(message, "%19s %19s %23[^\n]", subcmd, sub1, sub4) < 3) {
- sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found
+ sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found
clif->message(fd, atcmd_output);
return false;
}
if (sub4[0] == '\0' || (pl_sd = map->nick2sd(sub4)) == NULL) {
- sprintf(atcmd_output, msg_txt(1434), sub4);// Player '%s' was not found
+ sprintf(atcmd_output, msg_fd(fd,1434), sub4);// Player '%s' was not found
clif->message(fd, atcmd_output);
return false;
}
ret = channel->unban(chan, sd, pl_sd);
if (ret == HCS_STATUS_NOPERM) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
if (ret == HCS_STATUS_ALREADY) {
- sprintf(atcmd_output, msg_txt(1440), pl_sd->status.name);// Player '%s' is not banned from this channel
+ sprintf(atcmd_output, msg_fd(fd,1440), pl_sd->status.name);// Player '%s' is not banned from this channel
clif->message(fd, atcmd_output);
return false;
}
- sprintf(atcmd_output, msg_txt(1441),pl_sd->status.name,sub1); // Player '%s' has now been unbanned from the '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1441),pl_sd->status.name,sub1); // Player '%s' has now been unbanned from the '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"unbanall") == 0) {
enum channel_operation_status ret = HCS_STATUS_OK;
// sub1 = channel name; sub2 = unused; sub3 = unused
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
ret = channel->unban(chan, sd, NULL);
if (ret == HCS_STATUS_NOPERM) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
if (ret == HCS_STATUS_ALREADY) {
- sprintf(atcmd_output, msg_txt(1439), sub1);// Channel '%s' has no banned players
+ sprintf(atcmd_output, msg_fd(fd,1439), sub1);// Channel '%s' has no banned players
clif->message(fd, atcmd_output);
return false;
}
- sprintf(atcmd_output, msg_txt(1442),sub1); // Removed all bans from '%s' channel
+ sprintf(atcmd_output, msg_fd(fd,1442),sub1); // Removed all bans from '%s' channel
clif->message(fd, atcmd_output);
} else if (strcmpi(subcmd,"banlist") == 0) {
// sub1 = channel name; sub2 = unused; sub3 = unused
@@ -8994,25 +9037,25 @@ ACMD(channel) {
DBData *data;
bool isA = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)?true:false;
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
if (chan->owner != sd->status.char_id && !isA) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
if (!chan->banned) {
- sprintf(atcmd_output, msg_txt(1439), sub1);// Channel '%s' has no banned players
+ sprintf(atcmd_output, msg_fd(fd,1439), sub1);// Channel '%s' has no banned players
clif->message(fd, atcmd_output);
return false;
}
- sprintf(atcmd_output, msg_txt(1443), chan->name);// -- '%s' ban list
+ sprintf(atcmd_output, msg_fd(fd,1443), chan->name);// -- '%s' ban list
clif->message(fd, atcmd_output);
iter = db_iterator(chan->banned);
@@ -9020,9 +9063,9 @@ ACMD(channel) {
struct channel_ban_entry *entry = DB->data2ptr(data);
if (!isA)
- sprintf(atcmd_output, msg_txt(1444), entry->name);// - %s %s
+ sprintf(atcmd_output, msg_fd(fd,1444), entry->name);// - %s %s
else
- sprintf(atcmd_output, msg_txt(1445), entry->name, key.i);// - %s (%d)
+ sprintf(atcmd_output, msg_fd(fd,1445), entry->name, key.i);// - %s (%d)
clif->message(fd, atcmd_output);
}
@@ -9035,21 +9078,21 @@ ACMD(channel) {
"MessageDelay",
};
if (sub1[0] != '#') {
- clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ clif->message(fd, msg_fd(fd,1405));// Channel name must start with a '#'
return false;
}
if (!(chan = channel->search(sub1, sd))) {
- sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ sprintf(atcmd_output, msg_fd(fd,1407), sub1);// Channel '%s' is not available
clif->message(fd, atcmd_output);
return false;
}
if (chan->owner != sd->status.char_id && !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) {
- sprintf(atcmd_output, msg_txt(1412), sub1);// You're not the owner of channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1412), sub1);// You're not the owner of channel '%s'
clif->message(fd, atcmd_output);
return false;
}
if (sub2[0] == '\0') {
- clif->message(fd, msg_txt(1446));// You need to input a option
+ clif->message(fd, msg_fd(fd,1446));// You need to input a option
return false;
}
for (k = 1; k < 3; k++) {
@@ -9057,27 +9100,27 @@ ACMD(channel) {
break;
}
if (k == 3) {
- sprintf(atcmd_output, msg_txt(1447), sub2);// '%s' is not a known channel option
+ sprintf(atcmd_output, msg_fd(fd,1447), sub2);// '%s' is not a known channel option
clif->message(fd, atcmd_output);
- clif->message(fd, msg_txt(1448)); // -- Available options
+ clif->message(fd, msg_fd(fd,1448)); // -- Available options
for (k = 1; k < 3; k++) {
- sprintf(atcmd_output, msg_txt(1444), opt_str[k]);// - '%s'
+ sprintf(atcmd_output, msg_fd(fd,1444), opt_str[k]);// - '%s'
clif->message(fd, atcmd_output);
}
return false;
}
if (sub3[0] == '\0') {
if (k == HCS_OPT_MSG_DELAY) {
- sprintf(atcmd_output, msg_txt(1466), opt_str[k]);// For '%s' you need the amount of seconds (from 0 to 10)
+ sprintf(atcmd_output, msg_fd(fd,1466), opt_str[k]);// For '%s' you need the amount of seconds (from 0 to 10)
clif->message(fd, atcmd_output);
return false;
} else if (chan->options & k) {
- sprintf(atcmd_output, msg_txt(1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0'
+ sprintf(atcmd_output, msg_fd(fd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel setopt %s 0'
clif->message(fd, atcmd_output);
return false;
} else {
channel->set_options(chan, chan->options | k);
- sprintf(atcmd_output, msg_txt(1450), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1450), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
clif->message(fd, atcmd_output);
return true;
}
@@ -9085,42 +9128,42 @@ ACMD(channel) {
int v = atoi(sub3);
if (k == HCS_OPT_MSG_DELAY) {
if (v < 0 || v > 10) {
- sprintf(atcmd_output, msg_txt(1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10)
+ sprintf(atcmd_output, msg_fd(fd,1451), v, opt_str[k]);// value '%d' for option '%s' is out of range (limit is 0-10)
clif->message(fd, atcmd_output);
return false;
}
if (v == 0) {
channel->set_options(chan, chan->options&~k);
chan->msg_delay = 0;
- sprintf(atcmd_output, msg_txt(1453), opt_str[k],chan->name,v);// option '%s' is now disabled for channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1453), opt_str[k],chan->name,v);// option '%s' is now disabled for channel '%s'
clif->message(fd, atcmd_output);
return true;
} else {
channel->set_options(chan, chan->options | k);
chan->msg_delay = v;
- sprintf(atcmd_output, msg_txt(1452), opt_str[k],chan->name,v);// option '%s' is now enabled for channel '%s' with %d seconds
+ sprintf(atcmd_output, msg_fd(fd,1452), opt_str[k],chan->name,v);// option '%s' is now enabled for channel '%s' with %d seconds
clif->message(fd, atcmd_output);
return true;
}
} else {
if (v) {
if (chan->options & k) {
- sprintf(atcmd_output, msg_txt(1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel opt %s 0'
+ sprintf(atcmd_output, msg_fd(fd,1449), opt_str[k],opt_str[k]); // option '%s' is already enabled, if you'd like to disable it type '@channel opt %s 0'
clif->message(fd, atcmd_output);
return false;
} else {
channel->set_options(chan, chan->options | k);
- sprintf(atcmd_output, msg_txt(1454), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1454), opt_str[k],chan->name);//option '%s' is now enabled for channel '%s'
clif->message(fd, atcmd_output);
}
} else {
if (!(chan->options & k)) {
- sprintf(atcmd_output, msg_txt(1454), opt_str[k],chan->name); // option '%s' is not enabled on channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1454), opt_str[k],chan->name); // option '%s' is not enabled on channel '%s'
clif->message(fd, atcmd_output);
return false;
} else {
channel->set_options(chan, chan->options&~k);
- sprintf(atcmd_output, msg_txt(1453), opt_str[k],chan->name);// option '%s' is now disabled for channel '%s'
+ sprintf(atcmd_output, msg_fd(fd,1453), opt_str[k],chan->name);// option '%s' is now disabled for channel '%s'
clif->message(fd, atcmd_output);
return true;
}
@@ -9163,7 +9206,7 @@ ACMD(fontcolor) {
break;
}
if( k == channel->config->colors_count ) {
- sprintf(atcmd_output, msg_txt(1411), message);// Unknown color '%s'
+ sprintf(atcmd_output, msg_fd(fd,1411), message);// Unknown color '%s'
clif->message(fd, atcmd_output);
return false;
}
@@ -9219,15 +9262,15 @@ ACMD(costume){
if( !message || !*message ) {
for( k = 0; k < len; k++ ) {
if( sd->sc.data[name2id[k]] ) {
- sprintf(atcmd_output,msg_txt(1473),names[k]);//Costume '%s' removed.
+ sprintf(atcmd_output,msg_fd(fd,1473),names[k]);//Costume '%s' removed.
clif->message(sd->fd,atcmd_output);
status_change_end(&sd->bl,name2id[k],INVALID_TIMER);
return true;
}
}
- clif->message(sd->fd,msg_txt(1472));
+ clif->message(sd->fd,msg_fd(fd,1472));
for( k = 0; k < len; k++ ) {
- sprintf(atcmd_output,msg_txt(1471),names[k]);//-- %s
+ sprintf(atcmd_output,msg_fd(fd,1471),names[k]);//-- %s
clif->message(sd->fd,atcmd_output);
}
return false;
@@ -9235,7 +9278,7 @@ ACMD(costume){
for( k = 0; k < len; k++ ) {
if( sd->sc.data[name2id[k]] ) {
- sprintf(atcmd_output,msg_txt(1470),names[k]);// You're already with a '%s' costume, type '@costume' to remove it.
+ sprintf(atcmd_output,msg_fd(fd,1470),names[k]);// You're already with a '%s' costume, type '@costume' to remove it.
clif->message(sd->fd,atcmd_output);
return false;
}
@@ -9246,7 +9289,7 @@ ACMD(costume){
break;
}
if( k == len ) {
- sprintf(atcmd_output,msg_txt(1469),message);// '%s' is not a known costume
+ sprintf(atcmd_output,msg_fd(fd,1469),message);// '%s' is not a known costume
clif->message(sd->fd,atcmd_output);
return false;
}
@@ -9312,6 +9355,42 @@ ACMD(cddebug) {
return true;
}
+
+/**
+ *
+ **/
+ACMD(lang) {
+ uint8 i;
+
+ if( !message || !*message ) {
+ clif->messages(fd,"Usage: @%s <Language>",info->command);
+ clif->messages(fd,"There are %d languages available:",script->max_lang_id);
+ for(i = 0; i < script->max_lang_id; i++)
+ clif->messages(fd,"- %s",script->languages[i]);
+ return false;
+ }
+
+ for(i = 0; i < script->max_lang_id; i++) {
+ if( strcmpi(message,script->languages[i]) == 0 ) {
+ if( i == sd->lang_id ) {
+ clif->messages(fd,"%s is already set as your language",script->languages[i]);
+ } else {
+ clif->messages(fd,"Your language has been changed from '%s' to '%s'",script->languages[sd->lang_id],script->languages[i]);
+ sd->lang_id = i;
+ }
+ break;
+ }
+ }
+
+ if( i == script->max_lang_id ) {
+ clif->messages(fd,"'%s' did not match any language available",message);
+ clif->messages(fd,"There are %d languages available:",script->max_lang_id);
+ for(i = 0; i < script->max_lang_id; i++)
+ clif->messages(fd,"- %s",script->languages[i]);
+ }
+
+ return true;
+}
/**
* Fills the reference of available commands in atcommand DBMap
**/
@@ -9582,6 +9661,7 @@ void atcommand_basecommands(void) {
ACMD_DEF(costume),
ACMD_DEF(skdebug),
ACMD_DEF(cddebug),
+ ACMD_DEF(lang),
};
int i;
@@ -9697,7 +9777,7 @@ void atcommand_get_suggestions(struct map_session_data* sd, const char *name, bo
}
// Build the suggestion string
- strcpy(buffer, msg_txt(205));
+ strcpy(buffer, msg_sd(sd,205));
strcat(buffer,"\n");
for(i=0; i < prefix_count; ++i) {
@@ -9752,7 +9832,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
if (player_invoked) {
//Commands are disabled on maps flagged as 'nocommand'
if ( map->list[sd->bl.m].nocommand && pc_get_group_level(sd) < map->list[sd->bl.m].nocommand ) {
- clif->message(fd, msg_txt(143));
+ clif->message(fd, msg_fd(fd,143));
return false;
}
}
@@ -9796,7 +9876,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
return false;/* display as normal message */
}
- sprintf(output, msg_txt(1388), atcommand->char_symbol); // Charcommand failed (usage: %c<command> <char name> <parameters>).
+ sprintf(output, msg_fd(fd,1388), atcommand->char_symbol); // Charcommand failed (usage: %c<command> <char name> <parameters>).
clif->message(fd, output);
return true;
} while(0);
@@ -9842,7 +9922,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
&& (ssd = map->nick2sd(charname)) == NULL
&& (ssd = map->nick2sd(charname2)) == NULL
) {
- sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
+ sprintf(output, msg_fd(fd,1389), command); // %s failed. Player not found.
clif->message(fd, output);
return true;
}
@@ -9859,7 +9939,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
info = atcommand->get_info_byname(atcommand->check_alias(command + 1));
if (info == NULL) {
if( pc_get_group_level(sd) ) { // TODO: remove or replace with proper permission
- sprintf(output, msg_txt(153), command); // "%s is Unknown Command."
+ sprintf(output, msg_fd(fd,153), command); // "%s is Unknown Command."
clif->message(fd, output);
atcommand->get_suggestions(sd, command + 1, *message == atcommand->at_symbol);
return true;
@@ -9874,7 +9954,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
return false;
}
if( pc_isdead(sd) && pc_has_permission(sd,PC_PERM_DISABLE_CMD_DEAD) ) {
- clif->message(fd, msg_txt(1393)); // You can't use commands while dead
+ clif->message(fd, msg_fd(fd,1393)); // You can't use commands while dead
return true;
}
for(i = 0; i < map->list[sd->bl.m].zone->disabled_commands_count; i++) {
@@ -9893,7 +9973,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
&& (ssd = map->nick2sd(charname)) == NULL
&& (ssd = map->nick2sd(charname2)) == NULL
) {
- sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
+ sprintf(output, msg_fd(fd,1389), command); // %s failed. Player not found.
clif->message(fd, output);
return true;
}
@@ -9904,7 +9984,7 @@ bool atcommand_exec(const int fd, struct map_session_data *sd, const char *messa
if( info->func == atcommand_autotrade ) /** autotrade deletes caster, so we got nothing more to do here **/
return true;
#endif
- sprintf(output,msg_txt(154), command); // %s failed.
+ sprintf(output,msg_fd(fd,154), command); // %s failed.
clif->message(fd, output);
return true;
}
@@ -10181,6 +10261,11 @@ void atcommand_doload(void) {
atcommand->config_read(map->ATCOMMAND_CONF_FILENAME);
}
+void atcommand_expand_message_table(void) {
+ RECREATE(atcommand->msg_table, char **, ++atcommand->max_message_table);
+ RECREATE(atcommand->msg_table[atcommand->max_message_table - 1], char *, MAX_MSG);
+}
+
void do_init_atcommand(bool minimal) {
if (minimal)
return;
@@ -10202,8 +10287,6 @@ void atcommand_defaults(void) {
atcommand->db = NULL;
atcommand->alias_db = NULL;
- memset(atcommand->msg_table, 0, sizeof(atcommand->msg_table));
-
atcommand->init = do_init_atcommand;
atcommand->final = do_final_atcommand;
@@ -10235,4 +10318,7 @@ void atcommand_defaults(void) {
atcommand->base_commands = atcommand_basecommands;
atcommand->add = atcommand_add;
atcommand->msg = atcommand_msg;
+ atcommand->expand_message_table = atcommand_expand_message_table;
+ atcommand->msgfd = atcommand_msgfd;
+ atcommand->msgsd = atcommand_msgsd;
}
diff --git a/src/map/atcommand.h b/src/map/atcommand.h
index 8d0399f25..c1f451ad3 100644
--- a/src/map/atcommand.h
+++ b/src/map/atcommand.h
@@ -22,6 +22,9 @@ struct block_list;
#define ATCOMMAND_LENGTH 50
#define MAX_MSG 1500
#define msg_txt(idx) atcommand->msg(idx)
+#define msg_sd(sd,msg_number) atcommand->msgsd((sd),(msg_number))
+#define msg_fd(fd,msg_number) atcommand->msgfd((fd),(msg_number))
+
/**
* Enumerations
**/
@@ -74,8 +77,12 @@ struct atcommand_interface {
/* other vars */
DBMap* db; //name -> AtCommandInfo
DBMap* alias_db; //alias -> AtCommandInfo
- /* */
- char* msg_table[MAX_MSG]; // Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
+ /**
+ * msg_table[lang_id][msg_id]
+ * Server messages (0-499 reserved for GM commands, 500-999 reserved for others)
+ **/
+ char*** msg_table;
+ uint8 max_message_table;
/* */
void (*init) (bool minimal);
void (*final) (void);
@@ -112,6 +119,9 @@ struct atcommand_interface {
void (*base_commands) (void);
bool (*add) (char *name, AtCommandFunc func, bool replace);
const char* (*msg) (int msg_number);
+ void (*expand_message_table) (void);
+ const char* (*msgfd) (int fd, int msg_number);
+ const char* (*msgsd) (struct map_session_data *sd, int msg_number);
};
struct atcommand_interface *atcommand;
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c
index a53acdbb0..85fef98aa 100644
--- a/src/map/buyingstore.c
+++ b/src/map/buyingstore.c
@@ -39,13 +39,13 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
if( map->list[sd->bl.m].flag.novending ) {
// custom: no vending maps
- clif->message(sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message(sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map"
return false;
}
if( map->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) {
// custom: no vending cells
- clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message(sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell."
return false;
}
@@ -81,7 +81,7 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
if( !pc_can_give_items(sd) )
{// custom: GM is not allowed to buy (give zeny)
sd->buyingstore.slots = 0;
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
clif->buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
return;
}
@@ -93,13 +93,13 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
if( map->list[sd->bl.m].flag.novending ) {
// custom: no vending maps
- clif->message(sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message(sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map"
return;
}
if( map->getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOVENDING) ) {
// custom: no vending cells
- clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message(sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell."
return;
}
@@ -203,7 +203,7 @@ void buyingstore_open(struct map_session_data* sd, int account_id)
if( !pc_can_give_items(sd) )
{// custom: GM is not allowed to sell
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
return;
}
@@ -241,7 +241,7 @@ void buyingstore_trade(struct map_session_data* sd, int account_id, unsigned int
if( !pc_can_give_items(sd) )
{// custom: GM is not allowed to sell
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0);
return;
}
diff --git a/src/map/channel.c b/src/map/channel.c
index 34ce60211..0704bf706 100644
--- a/src/map/channel.c
+++ b/src/map/channel.c
@@ -258,7 +258,7 @@ void channel_send(struct channel_data *chan, struct map_session_data *sd, const
if (sd && chan->msg_delay != 0
&& DIFF_TICK(sd->hchsysch_tick + chan->msg_delay*1000, timer->gettick()) > 0
&& !pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN)) {
- clif->colormes(sd->fd,COLOR_RED,msg_txt(1455));
+ clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1455));
return;
} else if (sd) {
snprintf(message, 150, "[ #%s ] %s : %s",chan->name,sd->status.name, msg);
@@ -348,9 +348,9 @@ enum channel_operation_status channel_join(struct channel_data *chan, struct map
if (!silent && !(chan->options&HCS_OPT_ANNOUNCE_JOIN)) {
char output[CHAT_SIZE_MAX];
if (chan->type == HCS_TYPE_MAP) {
- sprintf(output, msg_txt(1435), chan->name, map->list[chan->m].name); // You're now in the '#%s' channel for '%s'
+ sprintf(output, msg_sd(sd,1435), chan->name, map->list[chan->m].name); // You're now in the '#%s' channel for '%s'
} else {
- sprintf(output, msg_txt(1403), chan->name); // You're now in the '%s' channel
+ sprintf(output, msg_sd(sd,1403), chan->name); // You're now in the '%s' channel
}
clif->colormes(sd->fd, COLOR_DEFAULT, output);
}
diff --git a/src/map/chat.c b/src/map/chat.c
index 9c67e0f44..a232781ca 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -9,7 +9,7 @@
#include <stdio.h>
#include <string.h>
-#include "atcommand.h" // msg_txt()
+#include "atcommand.h" // msg_sd(sd,)
#include "battle.h" // struct battle_config
#include "clif.h"
#include "map.h"
@@ -84,12 +84,12 @@ bool chat_createpcchat(struct map_session_data* sd, const char* title, const cha
}
if( map->list[sd->bl.m].flag.nochat ) {
- clif->message(sd->fd, msg_txt(281));
+ clif->message(sd->fd, msg_sd(sd,281));
return false; //Can't create chatrooms on this map.
}
if( map->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) ) {
- clif->message (sd->fd, msg_txt(865)); // "Can't create chat rooms in this area."
+ clif->message (sd->fd, msg_sd(sd,865)); // "Can't create chat rooms in this area."
return false;
}
diff --git a/src/map/chrif.c b/src/map/chrif.c
index fd12ed013..da946f050 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -782,7 +782,7 @@ bool chrif_changesex(struct map_session_data *sd) {
WFIFOW(chrif->fd,30) = 5;
WFIFOSET(chrif->fd,44);
- clif->message(sd->fd, msg_txt(408)); //"Disconnecting to perform change-sex request..."
+ clif->message(sd->fd, msg_sd(sd,408)); //"Disconnecting to perform change-sex request..."
if (sd->fd)
clif->authfail_fd(sd->fd, 15);
@@ -815,20 +815,20 @@ bool chrif_char_ask_name_answer(int acc, const char* player_name, uint16 type, u
return false;
}
- /* re-use previous msg_txt */
+ /* re-use previous msg_number */
if( type == 6 ) type = 2;
if( type == 7 ) type = 4;
if( type > 0 && type <= 5 )
- snprintf(action,25,"%s",msg_txt(427+type)); //block|ban|unblock|unban|change the sex of
+ snprintf(action,25,"%s",msg_sd(sd,427+type)); //block|ban|unblock|unban|change the sex of
else
snprintf(action,25,"???");
switch( answer ) {
- case 0 : sprintf(output, msg_txt(charsrv?434:424), action, NAME_LENGTH, player_name); break;
- case 1 : sprintf(output, msg_txt(425), NAME_LENGTH, player_name); break;
- case 2 : sprintf(output, msg_txt(426), action, NAME_LENGTH, player_name); break;
- case 3 : sprintf(output, msg_txt(427), action, NAME_LENGTH, player_name); break;
+ case 0 : sprintf(output, msg_sd(sd,charsrv?434:424), action, NAME_LENGTH, player_name); break;
+ case 1 : sprintf(output, msg_sd(sd,425), NAME_LENGTH, player_name); break;
+ case 2 : sprintf(output, msg_sd(sd,426), action, NAME_LENGTH, player_name); break;
+ case 3 : sprintf(output, msg_sd(sd,427), action, NAME_LENGTH, player_name); break;
default: output[0] = '\0'; break;
}
@@ -943,23 +943,23 @@ void chrif_idbanned(int fd) {
if (RFIFOB(fd,6) == 0) { // 0: change of status
int ret_status = RFIFOL(fd,7); // status or final date of a banishment
if(0<ret_status && ret_status<=9)
- clif->message(sd->fd, msg_txt(411+ret_status)); // Message IDs (for search convenience): 412, 413, 414, 415, 416, 417, 418, 419, 420
+ clif->message(sd->fd, msg_sd(sd,411+ret_status)); // Message IDs (for search convenience): 412, 413, 414, 415, 416, 417, 418, 419, 420
else if(ret_status==100)
- clif->message(sd->fd, msg_txt(421));
+ clif->message(sd->fd, msg_sd(sd,421));
else
- clif->message(sd->fd, msg_txt(420)); //"Your account has not more authorized."
+ clif->message(sd->fd, msg_sd(sd,420)); //"Your account has not more authorized."
} else if (RFIFOB(fd,6) == 1) { // 1: ban
time_t timestamp;
char tmpstr[2048];
timestamp = (time_t)RFIFOL(fd,7); // status or final date of a banishment
- safestrncpy(tmpstr, msg_txt(423), sizeof(tmpstr)); //"Your account has been banished until "
+ safestrncpy(tmpstr, msg_sd(sd,423), sizeof(tmpstr)); //"Your account has been banished until "
strftime(tmpstr + strlen(tmpstr), 24, "%d-%m-%Y %H:%M:%S", localtime(&timestamp));
clif->message(sd->fd, tmpstr);
} else if (RFIFOB(fd,6) == 2) { // 2: change of status for character
time_t timestamp;
char tmpstr[2048];
timestamp = (time_t)RFIFOL(fd,7); // status or final date of a banishment
- safestrncpy(tmpstr, msg_txt(433), sizeof(tmpstr)); //"This character has been banned until "
+ safestrncpy(tmpstr, msg_sd(sd,433), sizeof(tmpstr)); //"This character has been banned until "
strftime(tmpstr + strlen(tmpstr), 24, "%d-%m-%Y %H:%M:%S", localtime(&timestamp));
clif->message(sd->fd, tmpstr);
}
diff --git a/src/map/clif.c b/src/map/clif.c
index 6800ec15b..029080958 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -6371,7 +6371,7 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res
#if PACKETVER < 20070904
if( result == 7 ) {
- clif->message(fd, msg_txt(3));
+ clif->message(fd, msg_sd(sd,3));
return;
}
#endif
@@ -6680,7 +6680,7 @@ void clif_sendegg(struct map_session_data *sd)
fd=sd->fd;
if (battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex]
- clif->message(fd, msg_txt(866)); // "Pets are not allowed in Guild Wars."
+ clif->message(fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars."
return;
}
WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4);
@@ -7183,7 +7183,7 @@ void clif_guild_basicinfo(struct map_session_data *sd) {
memcpy(WFIFOP(fd,46),g->name, NAME_LENGTH);
memcpy(WFIFOP(fd,70),g->master, NAME_LENGTH);
- safestrncpy((char*)WFIFOP(fd,94),msg_txt(300+guild->checkcastles(g)),16); // "'N' castles"
+ safestrncpy((char*)WFIFOP(fd,94),msg_sd(sd,300+guild->checkcastles(g)),16); // "'N' castles"
WFIFOL(fd,110) = 0; // zeny
WFIFOSET(fd,packet_len(0x1b6));
@@ -9103,7 +9103,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) {
// pet
if( sd->pd ) {
if( battle_config.pet_no_gvg && map_flag_gvg2(sd->bl.m) ) { //Return the pet to egg. [Skotlex]
- clif->message(sd->fd, msg_txt(866)); // "Pets are not allowed in Guild Wars."
+ clif->message(sd->fd, msg_sd(sd,866)); // "Pets are not allowed in Guild Wars."
pet->menu(sd, 3); //Option 3 is return to egg.
} else {
map->addblock(&sd->pd->bl);
@@ -9284,7 +9284,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd) {
if( sd->sc.data[SC_MONSTER_TRANSFORM] && battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ){
status_change_end(&sd->bl, SC_MONSTER_TRANSFORM, INVALID_TIMER);
- clif->message(sd->fd, msg_txt(1488)); // Transforming into monster is not allowed in Guild Wars.
+ clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars.
}
clif->weather_check(sd);
@@ -10049,7 +10049,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
if (k < sd->channel_count || channel->join(chan, sd, NULL, true) == HCS_STATUS_OK) {
channel->send(chan,sd,message);
} else {
- clif->message(fd, msg_txt(1402));
+ clif->message(fd, msg_fd(fd,1402));
}
return;
}
@@ -10536,10 +10536,10 @@ void clif_noask_sub(struct map_session_data *src, struct map_session_data *targe
const char* msg;
char output[256];
// Your request has been rejected by autoreject option.
- msg = msg_txt(392);
+ msg = msg_sd(src,392);
clif_disp_onlyself(src, msg, strlen(msg));
//Notice that a request was rejected.
- snprintf(output, 256, msg_txt(393+type), src->status.name, 256);
+ snprintf(output, 256, msg_sd(target,393+type), src->status.name, 256);
clif_disp_onlyself(target, output, strlen(output));
}
@@ -11558,7 +11558,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd) {
if( map->list[sd->bl.m].flag.partylock ) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) {
@@ -11577,7 +11577,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) {
if( map->list[sd->bl.m].flag.partylock ) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
if( battle_config.basic_skill_check && pc->checkskill(sd,NV_BASIC) < 7 ) {
@@ -11597,7 +11597,7 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
@@ -11618,7 +11618,7 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
@@ -11655,7 +11655,7 @@ void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd)
void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
party->leave(sd);
@@ -11667,7 +11667,7 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd) {
void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.partylock) {
// Party locked.
- clif->message(fd, msg_txt(227));
+ clif->message(fd, msg_fd(fd,227));
return;
}
party->removemember(sd,RFIFOL(fd,2),(char*)RFIFOP(fd,6));
@@ -12406,11 +12406,11 @@ void clif_parse_OpenVending(int fd, struct map_session_data* sd) {
if( sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM )
return;
if( map->list[sd->bl.m].flag.novending ) {
- clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map"
return;
}
if( map->getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOVENDING) ) {
- clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell."
return;
}
@@ -12428,7 +12428,7 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.guildlock) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
@@ -12697,7 +12697,7 @@ bool clif_sub_guild_invite(int fd, struct map_session_data *sd, struct map_sessi
if ( map->list[sd->bl.m].flag.guildlock ) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return false;
}
@@ -12744,11 +12744,11 @@ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd)
void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.guildlock) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
if( sd->bg_id ) {
- clif->message(fd, msg_txt(870)); //"You can't leave battleground guilds."
+ clif->message(fd, msg_fd(fd,870)); //"You can't leave battleground guilds."
return;
}
@@ -12761,7 +12761,7 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd) {
void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd) {
if( map->list[sd->bl.m].flag.guildlock || sd->bg_id ) {
// Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
guild->expulsion(sd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),(char*)RFIFOP(fd,14));
@@ -12814,7 +12814,7 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.guildlock) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
@@ -12852,7 +12852,7 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.guildlock) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
guild->delalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
@@ -12869,7 +12869,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
if(map->list[sd->bl.m].flag.guildlock) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
@@ -12893,7 +12893,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd) {
void clif_parse_GuildBreak(int fd, struct map_session_data *sd) {
if( map->list[sd->bl.m].flag.guildlock ) {
//Guild locked.
- clif->message(fd, msg_txt(228));
+ clif->message(fd, msg_fd(fd,228));
return;
}
guild->dobreak(sd,(char*)RFIFOP(fd,2));
@@ -13599,7 +13599,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) {
// Friend doesn't exist (no player with this name)
if (f_sd == NULL) {
- clif->message(fd, msg_txt(3));
+ clif->message(fd, msg_fd(fd,3));
return;
}
@@ -13616,7 +13616,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd) {
// Friend already exists
for (i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id != 0; i++) {
if (sd->status.friends[i].char_id == f_sd->status.char_id) {
- clif->message(fd, msg_txt(871)); //"Friend already exists."
+ clif->message(fd, msg_fd(fd,871)); //"Friend already exists."
return;
}
}
@@ -13712,7 +13712,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
(sd->status.friends[i].char_id != char_id || sd->status.friends[i].account_id != account_id); i++);
if (i == MAX_FRIENDS) {
- clif->message(fd, msg_txt(872)); //"Name not found in list."
+ clif->message(fd, msg_fd(fd,872)); //"Name not found in list."
return;
}
@@ -13737,7 +13737,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
} else { //friend not online -- ask char server to delete from his friendlist
if(!chrif->removefriend(char_id,sd->status.char_id)) { // char-server offline, abort
- clif->message(fd, msg_txt(873)); //"This action can't be performed at the moment. Please try again later."
+ clif->message(fd, msg_fd(fd,873)); //"This action can't be performed at the moment. Please try again later."
return;
}
}
@@ -13750,7 +13750,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
memcpy(&sd->status.friends[j-1], &sd->status.friends[j], sizeof(sd->status.friends[0]));
memset(&sd->status.friends[MAX_FRIENDS-1], 0, sizeof(sd->status.friends[MAX_FRIENDS-1]));
- clif->message(fd, msg_txt(874)); //"Friend removed"
+ clif->message(fd, msg_fd(fd,874)); //"Friend removed"
WFIFOHEAD(fd,packet_len(0x20a));
WFIFOW(fd,0) = 0x20a;
@@ -14617,7 +14617,7 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
}
if( DIFF_TICK(sd->cansendmail_tick, timer->gettick()) > 0 ) {
- clif->message(sd->fd,msg_txt(875)); //"Cannot send mails too fast!!."
+ clif->message(sd->fd,msg_sd(sd,875)); //"Cannot send mails too fast!!."
clif->mail_send(fd, true); // fail
return;
}
@@ -14901,7 +14901,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
// Auction checks...
if( sd->status.inventory[sd->auction.index].bound && !pc_can_give_bound_items(sd) ) {
- clif->message(sd->fd, msg_txt(293));
+ clif->message(sd->fd, msg_sd(sd,293));
clif->auction_message(fd, 2); // The auction has been canceled
return;
}
@@ -14954,7 +14954,7 @@ void clif_parse_Auction_bid(int fd, struct map_session_data *sd)
int bid = RFIFOL(fd,6);
if( !pc_can_give_items(sd) ) { //They aren't supposed to give zeny [Inkfish]
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
return;
}
@@ -17094,7 +17094,7 @@ void __attribute__ ((unused)) clif_parse_dull(int fd,struct map_session_data *sd
void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) {
if( map->list[sd->bl.m].flag.nocashshop ) {
- clif->colormes(fd,COLOR_RED,msg_txt(1489)); //Cash Shop is disabled in this map
+ clif->colormes(fd,COLOR_RED,msg_fd(fd,1489)); //Cash Shop is disabled in this map
return;
}
@@ -17135,7 +17135,7 @@ void clif_parse_CashShopBuy(int fd, struct map_session_data *sd) {
unsigned int kafra_pay = RFIFOL(fd, 6);// [Ryuuzaki] - These are free cash points (strangely #CASH = main cash currently for us, confusing)
if( map->list[sd->bl.m].flag.nocashshop ) {
- clif->colormes(fd,COLOR_RED,msg_txt(1489)); //Cash Shop is disabled in this map
+ clif->colormes(fd,COLOR_RED,msg_fd(fd,1489)); //Cash Shop is disabled in this map
return;
}
@@ -17537,7 +17537,7 @@ void clif_parse_BankDeposit(int fd, struct map_session_data* sd) {
int money;
if( !battle_config.feature_banking ) {
- clif->colormes(fd,COLOR_RED,msg_txt(1483));
+ clif->colormes(fd,COLOR_RED,msg_fd(fd,1483));
return;
}
@@ -17551,7 +17551,7 @@ void clif_parse_BankWithdraw(int fd, struct map_session_data* sd) {
int money;
if( !battle_config.feature_banking ) {
- clif->colormes(fd,COLOR_RED,msg_txt(1483));
+ clif->colormes(fd,COLOR_RED,msg_fd(fd,1483));
return;
}
@@ -17564,7 +17564,7 @@ void clif_parse_BankCheck(int fd, struct map_session_data* sd) {
struct packet_banking_check p;
if( !battle_config.feature_banking ) {
- clif->colormes(fd,COLOR_RED,msg_txt(1483));
+ clif->colormes(fd,COLOR_RED,msg_fd(fd,1483));
return;
}
diff --git a/src/map/duel.c b/src/map/duel.c
index 964ef9e11..2dae0ae0e 100644
--- a/src/map/duel.c
+++ b/src/map/duel.c
@@ -61,13 +61,13 @@ void duel_showinfo(const unsigned int did, struct map_session_data* sd) {
char output[256];
if(duel->list[did].max_players_limit > 0)
- sprintf(output, msg_txt(370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --"
+ sprintf(output, msg_sd(sd,370), //" -- Duels: %d/%d, Members: %d/%d, Max players: %d --"
did, duel->count,
duel->list[did].members_count,
duel->list[did].members_count + duel->list[did].invites_count,
duel->list[did].max_players_limit);
else
- sprintf(output, msg_txt(371), //" -- Duels: %d/%d, Members: %d/%d --"
+ sprintf(output, msg_sd(sd,371), //" -- Duels: %d/%d, Members: %d/%d --"
did, duel->count,
duel->list[did].members_count,
duel->list[did].members_count + duel->list[did].invites_count);
@@ -89,7 +89,7 @@ int duel_create(struct map_session_data* sd, const unsigned int maxpl) {
duel->list[i].invites_count = 0;
duel->list[i].max_players_limit = maxpl;
- safestrncpy(output, msg_txt(372), sizeof(output)); // " -- Duel has been created (@invite/@leave) --"
+ safestrncpy(output, msg_sd(sd,372), sizeof(output)); // " -- Duel has been created (@invite/@leave) --"
clif_disp_onlyself(sd, output, strlen(output));
clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
@@ -101,14 +101,14 @@ void duel_invite(const unsigned int did, struct map_session_data* sd, struct map
char output[256];
// " -- Player %s invites %s to duel --"
- sprintf(output, msg_txt(373), sd->status.name, target_sd->status.name);
+ sprintf(output, msg_sd(sd,373), sd->status.name, target_sd->status.name);
clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
target_sd->duel_invite = did;
duel->list[did].invites_count++;
// "Blue -- Player %s invites you to PVP duel (@accept/@reject) --"
- sprintf(output, msg_txt(374), sd->status.name);
+ sprintf(output, msg_sd(target_sd,374), sd->status.name);
clif->broadcast((struct block_list *)target_sd, output, strlen(output)+1, BC_BLUE, SELF);
}
@@ -124,7 +124,7 @@ void duel_leave(const unsigned int did, struct map_session_data* sd) {
char output[256];
// " <- Player %s has left duel --"
- sprintf(output, msg_txt(375), sd->status.name);
+ sprintf(output, msg_sd(sd,375), sd->status.name);
clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
duel->list[did].members_count--;
@@ -149,7 +149,7 @@ void duel_accept(const unsigned int did, struct map_session_data* sd) {
sd->duel_invite = 0;
// " -> Player %s has accepted duel --"
- sprintf(output, msg_txt(376), sd->status.name);
+ sprintf(output, msg_sd(sd,376), sd->status.name);
clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
@@ -160,7 +160,7 @@ void duel_reject(const unsigned int did, struct map_session_data* sd) {
char output[256];
// " -- Player %s has rejected duel --"
- sprintf(output, msg_txt(377), sd->status.name);
+ sprintf(output, msg_sd(sd,377), sd->status.name);
clif->disp_message(&sd->bl, output, strlen(output), DUEL_WOS);
duel->list[did].invites_count--;
diff --git a/src/map/guild.c b/src/map/guild.c
index 7f116bae1..936b4c900 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -1432,7 +1432,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
if(map->agit_flag || map->agit2_flag) {
// Disable alliance creation during woe [Valaris]
- clif->message(sd->fd,msg_txt(876)); //"Alliances cannot be made during Guild Wars!"
+ clif->message(sd->fd,msg_sd(sd,876)); //"Alliances cannot be made during Guild Wars!"
return 0;
}
@@ -1548,7 +1548,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag) {
if(map->agit_flag || map->agit2_flag) {
// Disable alliance breaking during woe [Valaris]
- clif->message(sd->fd,msg_txt(877)); //"Alliances cannot be broken during Guild Wars!"
+ clif->message(sd->fd,msg_sd(sd,877)); //"Alliances cannot be broken during Guild Wars!"
return 0;
}
@@ -1839,12 +1839,12 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
strcpy(g->master, g->member[0].name);
if (g->member[pos].sd && g->member[pos].sd->fd) {
- clif->message(g->member[pos].sd->fd, msg_txt(878)); //"You no longer are the Guild Master."
+ clif->message(g->member[pos].sd->fd, msg_sd(g->member[pos].sd,878)); //"You no longer are the Guild Master."
g->member[pos].sd->state.gmaster_flag = 0;
}
if (g->member[0].sd && g->member[0].sd->fd) {
- clif->message(g->member[0].sd->fd, msg_txt(879)); //"You have become the Guild Master!"
+ clif->message(g->member[0].sd->fd, msg_sd(g->member[0].sd,879)); //"You have become the Guild Master!"
g->member[0].sd->state.gmaster_flag = 1;
//Block his skills for 5 minutes to prevent abuse.
guild->block_skill(g->member[0].sd, 300000);
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 17336a00d..51686d3aa 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -689,7 +689,7 @@ bool homunculus_change_name_ack(struct map_session_data *sd, char* name, int fla
normalize_name(name," ");//bugreport:3032
if ( !flag || !strlen(name) ) {
- clif->message(sd->fd, msg_txt(280)); // You cannot use this name
+ clif->message(sd->fd, msg_sd(sd,280)); // You cannot use this name
return false;
}
safestrncpy(hd->homunculus.name,name,NAME_LENGTH);
diff --git a/src/map/intif.c b/src/map/intif.c
index 4dbb7e3eb..50857baa8 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -1582,7 +1582,7 @@ void intif_parse_MailInboxReceived(int fd) {
clif->mail_refreshinbox(sd);
else if( battle_config.mail_show_status && ( battle_config.mail_show_status == 1 || sd->mail.inbox.unread ) ) {
char output[128];
- sprintf(output, msg_txt(510), sd->mail.inbox.unchecked, sd->mail.inbox.unread + sd->mail.inbox.unchecked);
+ sprintf(output, msg_sd(sd,510), sd->mail.inbox.unchecked, sd->mail.inbox.unread + sd->mail.inbox.unchecked);
clif_disp_onlyself(sd, output, strlen(output));
}
}
diff --git a/src/map/map.c b/src/map/map.c
index 745814f78..c79d49c3e 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -3595,6 +3595,8 @@ int map_config_read(char *cfgName) {
map->enable_grf = config_switch(w2);
else if (strcmpi(w1, "console_msg_log") == 0)
console_msg_log = atoi(w2);//[Ind]
+ else if (strcmpi(w1, "default_language") == 0)
+ safestrncpy(map->default_lang_str, w2, sizeof(map->default_lang_str));
else if (strcmpi(w1, "import") == 0)
map->config_read(w2);
else
@@ -5821,6 +5823,24 @@ static CMDLINEARG(loadscript)
map->extra_scripts[map->extra_scripts_count-1] = aStrdup(params);
return true;
}
+
+/**
+ * --generate-translations
+ *
+ * Creates "./generated_translations.pot"
+ * @see cmdline->exec
+ **/
+static CMDLINEARG(generatetranslations) {
+ script->lang_export_file = aStrdup("./generated_translations.pot");
+
+ if( !(script->lang_export_fp = fopen(script->lang_export_file,"wb")) ) {
+ ShowError("export-dialog: failed to open '%s' for writing\n",script->lang_export_file);
+ }
+
+ runflag = CORE_ST_STOP;
+ return true;
+}
+
/**
* Defines the local command line arguments
*/
@@ -5837,6 +5857,7 @@ void cmdline_args_init_local(void)
CMDLINEARG_DEF2(log-config, logconfig, "Alternative logging configuration.", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM);
CMDLINEARG_DEF2(script-check, scriptcheck, "Doesn't run the server, only tests the scripts passed through --load-script.", CMDLINE_OPT_SILENT);
CMDLINEARG_DEF2(load-script, loadscript, "Loads an additional script (can be repeated).", CMDLINE_OPT_NORMAL|CMDLINE_OPT_PARAM);
+ CMDLINEARG_DEF2(generate-translations, generatetranslations, "Creates './generated_translations.pot' file with all translateable strings from scripts, server terminates afterwards.", CMDLINE_OPT_NORMAL);
}
int do_init(int argc, char *argv[])
@@ -6087,6 +6108,7 @@ void map_defaults(void) {
sprintf(map->server_pw,"ragnarok");
sprintf(map->server_db,"ragnarok");
map->mysql_handle = NULL;
+ map->default_lang_str[0] = '\0';
map->cpsd_active = false;
diff --git a/src/map/map.h b/src/map/map.h
index da69bacee..26aac7720 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -867,6 +867,8 @@ struct map_interface {
char npc_market_data_db[32];
char default_codepage[32];
+ char default_lang_str[64];
+ uint8 default_lang_id;
int server_port;
char server_ip[32];
diff --git a/src/map/npc.c b/src/map/npc.c
index 6cc192f66..16789b726 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -1175,17 +1175,17 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd) {
strftime(time, sizeof(time), "%H:%M", localtime(&nd->u.tomb.kill_time));
// TODO: Find exact color?
- snprintf(buffer, sizeof(buffer), msg_txt(857), nd->u.tomb.md->db->name); // "[ ^EE0000%s^000000 ]"
+ snprintf(buffer, sizeof(buffer), msg_sd(sd,857), nd->u.tomb.md->db->name); // "[ ^EE0000%s^000000 ]"
clif->scriptmes(sd, nd->bl.id, buffer);
- clif->scriptmes(sd, nd->bl.id, msg_txt(858)); // "Has met its demise"
+ clif->scriptmes(sd, nd->bl.id, msg_sd(sd,858)); // "Has met its demise"
- snprintf(buffer, sizeof(buffer), msg_txt(859), time); // "Time of death : ^EE0000%s^000000"
+ snprintf(buffer, sizeof(buffer), msg_sd(sd,859), time); // "Time of death : ^EE0000%s^000000"
clif->scriptmes(sd, nd->bl.id, buffer);
- clif->scriptmes(sd, nd->bl.id, msg_txt(860)); // "Defeated by"
+ clif->scriptmes(sd, nd->bl.id, msg_sd(sd,860)); // "Defeated by"
- snprintf(buffer, sizeof(buffer), msg_txt(861), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : msg_txt(15)); // "[^EE0000%s^000000]" / "Unknown"
+ snprintf(buffer, sizeof(buffer), msg_sd(sd,861), nd->u.tomb.killer_name[0] ? nd->u.tomb.killer_name : msg_sd(sd,15)); // "[^EE0000%s^000000]" / "Unknown"
clif->scriptmes(sd, nd->bl.id, buffer);
clif->scriptclose(sd, nd->bl.id);
@@ -1566,7 +1566,7 @@ bool npc_trader_open(struct map_session_data *sd, struct npc_data *nd) {
/* nothing to display, no items available */
if( i == nd->u.scr.shop->items ) {
- clif->colormes(sd->fd,COLOR_RED, msg_txt(881));
+ clif->colormes(sd->fd,COLOR_RED, msg_sd(sd,881));
return false;
}
@@ -2924,7 +2924,13 @@ const char* npc_parse_script(char* w1, char* w2, char* w3, char* w4, const char*
if( end == NULL )
return NULL;// (simple) parse error, don't continue
+
+ script->parser_current_npc_name = w3;
+
scriptroot = script->parse(script_start, filepath, strline(buffer,script_start-buffer), SCRIPT_USE_LABEL_DB, retval);
+
+ script->parser_current_npc_name = NULL;
+
label_list = NULL;
label_list_num = 0;
if( script->label_count ) {
@@ -3435,7 +3441,12 @@ const char* npc_parse_function(char* w1, char* w2, char* w3, char* w4, const cha
if( end == NULL )
return NULL;// (simple) parse error, don't continue
+ script->parser_current_npc_name = w3;
+
scriptroot = script->parse(script_start, filepath, strline(buffer,start-buffer), SCRIPT_RETURN_EMPTY_SCRIPT, retval);
+
+ script->parser_current_npc_name = NULL;
+
if( scriptroot == NULL )// parse error, continue
return end;
@@ -4611,6 +4622,11 @@ int do_init_npc(bool minimal) {
timer->add_func_list(npc->event_do_clock,"npc_event_do_clock");
timer->add_func_list(npc->timerevent,"npc_timerevent");
}
+
+ if( script->lang_export_fp ) {
+ fclose(script->lang_export_fp);
+ script->lang_export_fp = NULL;
+ }
// Init dummy NPC
npc->fake_nd = (struct npc_data *)aCalloc(1,sizeof(struct npc_data));
diff --git a/src/map/party.c b/src/map/party.c
index f2071de12..fb738a12b 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -338,7 +338,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
ARR_FIND(0, MAX_PARTY, i, p->data[i].sd == sd);
if( i == MAX_PARTY || !p->party.member[i].leader ) {
- clif->message(sd->fd, msg_txt(282));
+ clif->message(sd->fd, msg_sd(sd,282));
return 0;
}
@@ -352,7 +352,7 @@ int party_invite(struct map_session_data *sd,struct map_session_data *tsd)
// confirm whether the account has the ability to invite before checking the player
if( !pc_has_permission(sd, PC_PERM_PARTY) || (tsd && !pc_has_permission(tsd, PC_PERM_PARTY)) ) {
- clif->message(sd->fd, msg_txt(81)); // "Your GM level doesn't authorize you to preform this action on the specified player."
+ clif->message(sd->fd, msg_sd(sd,81)); // "Your GM level doesn't authorize you to preform this action on the specified player."
return 0;
}
@@ -660,12 +660,12 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
return false;
if (!tsd || tsd->status.party_id != sd->status.party_id) {
- clif->message(sd->fd, msg_txt(283));
+ clif->message(sd->fd, msg_sd(sd,283));
return false;
}
if( map->list[sd->bl.m].flag.partylock ) {
- clif->message(sd->fd, msg_txt(287));
+ clif->message(sd->fd, msg_sd(sd,287));
return false;
}
@@ -678,7 +678,7 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
if (!p->party.member[mi].leader) {
//Need to be a party leader.
- clif->message(sd->fd, msg_txt(282));
+ clif->message(sd->fd, msg_sd(sd,282));
return false;
}
diff --git a/src/map/pc.c b/src/map/pc.c
index 550425c0c..3d5e240f8 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1133,6 +1133,8 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
sd->vars_ok = false;
sd->vars_received = 0x0;
+ sd->lang_id = map->default_lang_id;
+
//warp player
if ((i=pc->setpos(sd,sd->status.last_point.map, sd->status.last_point.x, sd->status.last_point.y, CLR_OUTSIGHT)) != 0) {
ShowError ("Last_point_map %s - id %d not found (error code %d)\n", mapindex_id2name(sd->status.last_point.map), sd->status.last_point.map, i);
@@ -1164,7 +1166,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
if (battle_config.display_version == 1) {
char buf[256];
- sprintf(buf, msg_txt(1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
+ sprintf(buf, msg_sd(sd,1295), sysinfo->vcstype(), sysinfo->vcsrevision_src(), sysinfo->vcsrevision_scripts()); // %s revision '%s' (src) / '%s' (scripts)
clif->message(sd->fd, buf);
}
@@ -1340,7 +1342,7 @@ int pc_reg_received(struct map_session_data *sd)
if (pc_isinvisible(sd)) {
sd->vd.class_ = INVISIBLE_CLASS;
- clif->message(sd->fd, msg_txt(11)); // Invisible: On
+ clif->message(sd->fd, msg_sd(sd,11)); // Invisible: On
// decrement the number of pvp players on the map
map->list[sd->bl.m].users_pvp--;
@@ -3866,7 +3868,7 @@ int pc_paycash(struct map_session_data *sd, int price, int points)
if( battle_config.cashshop_show_points )
{
char output[128];
- sprintf(output, msg_txt(504), points, cash, sd->kafraPoints, sd->cashPoints);
+ sprintf(output, msg_sd(sd,504), points, cash, sd->kafraPoints, sd->cashPoints);
clif_disp_onlyself(sd, output, strlen(output));
}
return cash+points;
@@ -3891,7 +3893,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
if( battle_config.cashshop_show_points )
{
- sprintf(output, msg_txt(505), cash, sd->cashPoints);
+ sprintf(output, msg_sd(sd,505), cash, sd->cashPoints);
clif_disp_onlyself(sd, output, strlen(output));
}
return cash;
@@ -3914,7 +3916,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points)
if( battle_config.cashshop_show_points )
{
- sprintf(output, msg_txt(506), points, sd->kafraPoints);
+ sprintf(output, msg_sd(sd,506), points, sd->kafraPoints);
clif_disp_onlyself(sd, output, strlen(output));
}
return points;
@@ -4157,13 +4159,13 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
return 0;
if( map->list[sd->bl.m].flag.nodrop ) {
- clif->message (sd->fd, msg_txt(271));
+ clif->message (sd->fd, msg_sd(sd,271));
return 0; //Can't drop items in nodrop mapflag maps.
}
if( !pc->candrop(sd,&sd->status.inventory[n]) )
{
- clif->message (sd->fd, msg_txt(263));
+ clif->message (sd->fd, msg_sd(sd,263));
return 0;
}
@@ -4272,7 +4274,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
}
if (sd->state.storage_flag && item->type != IT_CASH) {
- clif->colormes(sd->fd, COLOR_RED, msg_txt(1475));
+ clif->colormes(sd->fd, COLOR_RED, msg_sd(sd,1475));
return 0; // You cannot use this item while storage is open.
}
@@ -4301,7 +4303,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
case ITEMID_WOB_LOCAL: // Blue Butterfly Wing
case ITEMID_SIEGE_TELEPORT_SCROLL:
if( sd->duel_group && !battle_config.duel_allow_teleport ) {
- clif->message(sd->fd, msg_txt(863)); // "Duel: Can't use this item in duel."
+ clif->message(sd->fd, msg_sd(sd,863)); // "Duel: Can't use this item in duel."
return 0;
}
if( nameid != ITEMID_WING_OF_FLY && nameid != ITEMID_GIANT_FLY_WING && map->list[sd->bl.m].flag.noreturn )
@@ -4376,7 +4378,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
return 0;
}
if( !pc->inventoryblank(sd) ) {
- clif->colormes(sd->fd,COLOR_RED,msg_txt(1477));
+ clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1477));
return 0;
}
}
@@ -4607,7 +4609,7 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
if (!itemdb_cancartstore(item_data, pc_get_group_level(sd)) || (item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd))) {
// Check item trade restrictions
- clif->message (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_sd(sd,264));
return 1;/* TODO: there is no official response to this? */
}
@@ -5055,7 +5057,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
sd->regen.state.gc = 0;
// make sure vending is allowed here
if (sd->state.vending && map->list[m].flag.novending) {
- clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message (sd->fd, msg_sd(sd,276)); // "You can't open a shop on this map"
vending->close(sd);
}
@@ -5102,7 +5104,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short map_index, int x, int
}
if (sd->state.vending && map->getcell(m,x,y,CELL_CHKNOVENDING)) {
- clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message (sd->fd, msg_sd(sd,204)); // "You can't open a shop on this cell."
vending->close(sd);
}
@@ -10595,7 +10597,7 @@ void pc_bank_withdraw(struct map_session_data *sd, int money) {
return;
} else if ( limit_check > MAX_ZENY ) {
/* no official response for this scenario exists. */
- clif->colormes(sd->fd,COLOR_RED,msg_txt(1482));
+ clif->colormes(sd->fd,COLOR_RED,msg_sd(sd,1482));
return;
}
@@ -10616,7 +10618,7 @@ void pc_scdata_received(struct map_session_data *sd) {
if (sd->expiration_time != 0) { // don't display if it's unlimited or unknow value
time_t exp_time = sd->expiration_time;
char tmpstr[1024];
- strftime(tmpstr, sizeof(tmpstr) - 1, msg_txt(501), localtime(&exp_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S."
+ strftime(tmpstr, sizeof(tmpstr) - 1, msg_sd(sd,501), localtime(&exp_time)); // "Your account time limit is: %d-%m-%Y %H:%M:%S."
clif->wis_message(sd->fd, map->wisp_server_name, tmpstr, strlen(tmpstr)+1);
pc->expire_check(sd);
diff --git a/src/map/pc.h b/src/map/pc.h
index 1f7c72837..56380447e 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -550,6 +550,8 @@ struct map_session_data {
bool claimPrize;
} roulette;
+ uint8 lang_id;
+
// temporary debugging of bug #3504
const char* delunit_prevfile;
int delunit_prevline;
diff --git a/src/map/pet.c b/src/map/pet.c
index f78a4a488..b37d3c350 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -602,7 +602,7 @@ int pet_menu(struct map_session_data *sd,int menunum)
egg_id = itemdb->exists(sd->pd->petDB->EggID);
if (egg_id) {
if ((egg_id->flag.trade_restriction&ITR_NODROP) && !pc->inventoryblank(sd)) {
- clif->message(sd->fd, msg_txt(451)); // You can't return your pet because your inventory is full.
+ clif->message(sd->fd, msg_sd(sd,451)); // You can't return your pet because your inventory is full.
return 1;
}
}
@@ -653,7 +653,7 @@ int pet_change_name_ack(struct map_session_data *sd, char* name, int flag)
normalize_name(name," ");//bugreport:3032
if ( !flag || !strlen(name) ) {
- clif->message(sd->fd, msg_txt(280)); // You cannot use this name for your pet.
+ clif->message(sd->fd, msg_sd(sd,280)); // You cannot use this name for your pet.
clif->send_petstatus(sd); //Send status so client knows oet name change got rejected.
return 0;
}
diff --git a/src/map/script.c b/src/map/script.c
index f5d4008c8..d5cf58946 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -62,6 +62,8 @@
#include <sys/time.h>
#endif
+struct script_interface script_s;
+
static inline int GETVALUE(const unsigned char* buf, int i) {
return (int)MakeDWord(MakeWord(buf[i], buf[i+1]), MakeWord(buf[i+2], 0));
}
@@ -71,7 +73,29 @@ static inline void SETVALUE(unsigned char* buf, int i, int n) {
buf[i+2] = GetByte(n, 2);
}
-struct script_interface script_s;
+static inline void script_string_buf_ensure(struct script_string_buf *buf, size_t ensure) {
+ if( buf->pos+ensure >= buf->size ) {
+ do {
+ buf->size += 512;
+ } while ( buf->pos+ensure >= buf->size );
+ RECREATE(buf->ptr, char, buf->size);
+ }
+}
+
+static inline void script_string_buf_addb(struct script_string_buf *buf,uint8 b) {
+ if( buf->pos+1 >= buf->size ) {
+ buf->size += 512;
+ RECREATE(buf->ptr, char, buf->size);
+ }
+
+ buf->ptr[buf->pos++] = b;
+}
+
+static inline void script_string_buf_destroy(struct script_string_buf *buf) {
+ if( buf->ptr )
+ aFree(buf->ptr);
+ memset(buf,0,sizeof(struct script_string_buf));
+}
const char* script_op2name(int op) {
#define RETURN_OP_NAME(type) case type: return #type
@@ -91,6 +115,7 @@ const char* script_op2name(int op) {
RETURN_OP_NAME(C_USERFUNC_POS);
RETURN_OP_NAME(C_REF);
+ RETURN_OP_NAME(C_LSTR);
// operators
RETURN_OP_NAME(C_OP3);
@@ -771,13 +796,30 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom)
char *arg = NULL;
char null_arg = '\0';
int func;
+ bool nested_call = false, macro = false;
// is need add check for arg null pointer below?
func = script->add_word(p);
if( script->str_data[func].type == C_FUNC ) {
- // buildin function
- script->addl(func);
- script->addc(C_ARG);
+ /** only when unset (-1), valid values are >= 0 **/
+ if( script->syntax.last_func == -1 )
+ script->syntax.last_func = script->str_data[func].val;
+ else { //Nested function call
+ script->syntax.nested_call++;
+ nested_call = true;
+
+ if( script->str_data[func].val == script->buildin_lang_macro_offset ) {
+ script->syntax.lang_macro_active = true;
+ macro = true;
+ }
+ }
+
+ if( !macro ) {
+ // buildin function
+ script->addl(func);
+ script->addc(C_ARG);
+ }
+
arg = script->buildin[script->str_data[func].val];
if (script->str_data[func].deprecated)
DeprecationWarning(p);
@@ -861,8 +903,19 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom)
if( *p != ')' )
disp_error_message("parse_callfunc: expected ')' to close argument list",p);
++p;
+
+ if( script->str_data[func].val == script->buildin_lang_macro_offset )
+ script->syntax.lang_macro_active = false;
}
- script->addc(C_FUNC);
+
+ if( nested_call )
+ script->syntax.nested_call--;
+
+ if( !script->syntax.nested_call )
+ script->syntax.last_func = -1;
+
+ if( !macro )
+ script->addc(C_FUNC);
return p;
}
@@ -1090,6 +1143,24 @@ bool is_number(const char *p) {
return false;
}
+/**
+ *
+ **/
+int script_string_dup(char *str) {
+ size_t len = strlen(str);
+ int pos = script->string_list_pos;
+
+ while( pos+len+1 >= script->string_list_size ) {
+ script->string_list_size += (1024*1024)/2;
+ RECREATE(script->string_list,char,script->string_list_size);
+ }
+
+ safestrncpy(script->string_list+pos, str, len+1);
+ script->string_list_pos += len+1;
+
+ return pos;
+}
+
/*==========================================
* Analysis section
*------------------------------------------*/
@@ -1133,7 +1204,11 @@ const char* parse_simpleexpr(const char *p)
script->addi((int)lli); // Cast is safe, as it's already been checked for overflows
p=np;
} else if(*p=='"') {
- script->addc(C_STR);
+ struct string_translation *st = NULL;
+ const char *start_point = p;
+ bool duplicate = true;
+ struct script_string_buf *sbuf = &script->parse_simpleexpr_str;
+
do {
p++;
while( *p && *p != '"' ) {
@@ -1144,19 +1219,121 @@ const char* parse_simpleexpr(const char *p)
if( n != 1 )
ShowDebug("parse_simpleexpr: unexpected length %d after unescape (\"%.*s\" -> %.*s)\n", (int)n, (int)len, p, (int)n, buf);
p += len;
- script->addb(*buf);
+ script_string_buf_addb(sbuf, *buf);
continue;
} else if( *p == '\n' ) {
disp_error_message("parse_simpleexpr: unexpected newline @ string",p);
}
- script->addb(*p++);
+ script_string_buf_addb(sbuf, *p++);
}
if(!*p)
disp_error_message("parse_simpleexpr: unexpected end of file @ string",p);
p++; //'"'
p = script->skip_space(p);
} while( *p && *p == '"' );
- script->addb(0);
+
+ script_string_buf_addb(sbuf, 0);
+
+ if( !(script->syntax.translation_db && (st = strdb_get(script->syntax.translation_db, sbuf->ptr))) ) {
+ script->addc(C_STR);
+
+ if( script->pos+sbuf->pos >= script->size ) {
+ do {
+ script->size += SCRIPT_BLOCK_SIZE;
+ } while( script->pos+sbuf->pos >= script->size );
+ RECREATE(script->buf,unsigned char,script->size);
+ }
+
+ memcpy(script->buf+script->pos, sbuf->ptr, sbuf->pos);
+ script->pos += sbuf->pos;
+
+ } else {
+ int expand = sizeof(int) + sizeof(uint8);
+ unsigned char j;
+ unsigned int st_cursor = 0;
+
+ script->addc(C_LSTR);
+
+ expand += (sizeof(char*) + sizeof(uint8)) * st->translations;
+
+ while( script->pos+expand >= script->size ) {
+ script->size += SCRIPT_BLOCK_SIZE;
+ RECREATE(script->buf,unsigned char,script->size);
+ }
+
+ *((int *)(&script->buf[script->pos])) = st->string_id;
+ *((uint8 *)(&script->buf[script->pos + sizeof(int)])) = st->translations;
+
+ script->pos += sizeof(int) + sizeof(uint8);
+
+ for(j = 0; j < st->translations; j++) {
+ *((uint8 *)(&script->buf[script->pos])) = RBUFB(st->buf, st_cursor);
+ *((char **)(&script->buf[script->pos+sizeof(uint8)])) = &st->buf[st_cursor + sizeof(uint8)];
+ script->pos += sizeof(char*) + sizeof(uint8);
+ st_cursor += sizeof(uint8);
+ while(st->buf[st_cursor++]);
+ st_cursor += sizeof(uint8);
+ }
+ }
+
+ /* When exporting we don't know what is a translation and what isn't */
+ if( script->lang_export_fp && sbuf->pos > 1 ) {//sbuf->pos will always be at least 1 because of the '\0'
+ if( !script->syntax.strings ) {
+ script->syntax.strings = strdb_alloc(DB_OPT_DUP_KEY|DB_OPT_ALLOW_NULL_DATA, 0);
+ }
+
+ if( !strdb_exists(script->syntax.strings,sbuf->ptr) ) {
+ strdb_put(script->syntax.strings, sbuf->ptr, NULL);
+ duplicate = false;
+ }
+ }
+
+ if( script->lang_export_fp && !duplicate &&
+ ( ( ( script->syntax.last_func == script->buildin_mes_offset ||
+ script->syntax.last_func == script->buildin_select_offset ) && !script->syntax.nested_call
+ ) || script->syntax.lang_macro_active ) ) {
+ const char *line_start = start_point;
+ const char *line_end = start_point;
+ struct script_string_buf *lbuf = &script->lang_export_line_buf;
+ size_t line_length;
+
+ while( line_start > script->parser_current_src ) {
+ if( *line_start != '\n' )
+ line_start--;
+ else
+ break;
+ }
+
+ while( *line_end != '\n' && *line_end != '\0' )
+ line_end++;
+
+ line_length = (size_t)(line_end - line_start);
+
+ if( line_length > 0 ) {
+ script_string_buf_ensure(lbuf,line_length + 1);
+
+ memcpy(lbuf->ptr, line_start, line_length);
+ lbuf->pos = line_length;
+ script_string_buf_addb(lbuf, 0);
+
+ normalize_name(lbuf->ptr, "\r\n\t ");
+ }
+
+ fprintf(script->lang_export_fp, "#: %s\n"
+ "# %s\n"
+ "msgctxt \"%s\"\n"
+ "msgid \"%s\"\n"
+ "msgstr \"\"\n",
+ script->parser_current_file ? script->parser_current_file : "Unknown File",
+ lbuf->ptr,
+ script->parser_current_npc_name ? script->parser_current_npc_name : "Unknown NPC",
+ sbuf->ptr
+ );
+
+ lbuf->pos = 0;
+ }
+
+ sbuf->pos = 0;
} else {
int l;
const char* pv;
@@ -2234,7 +2411,21 @@ struct script_code* parse_script(const char *src,const char *file,int line,int o
if( src == NULL )
return NULL;// empty script
+ if( script->parse_cleanup_timer_id == INVALID_TIMER ) {
+ script->parse_cleanup_timer_id = timer->add(timer->gettick() + 10, script->parse_cleanup_timer, 0, 0);
+ }
+
+ if( script->syntax.strings ) /* used only when generating translation file */
+ db_destroy(script->syntax.strings);
+
memset(&script->syntax,0,sizeof(script->syntax));
+ script->syntax.last_func = -1;/* as valid values are >= 0 */
+ if( script->parser_current_npc_name ) {
+ if( !script->translation_db )
+ script->load_translations();
+ if( script->translation_db )
+ script->syntax.translation_db = strdb_get(script->translation_db, script->parser_current_npc_name);
+ }
script->buf=(unsigned char *)aMalloc(SCRIPT_BLOCK_SIZE*sizeof(unsigned char));
script->pos=0;
@@ -4014,6 +4205,36 @@ void run_script_main(struct script_state *st) {
script->push_str(stack,C_CONSTSTR,(char*)(st->script->script_buf+st->pos));
while(st->script->script_buf[st->pos++]);
break;
+ case C_LSTR:
+ {
+ int string_id = *((int *)(&st->script->script_buf[st->pos]));
+ uint8 translations = *((uint8 *)(&st->script->script_buf[st->pos+sizeof(int)]));
+ struct map_session_data *lsd = NULL;
+
+ st->pos += sizeof(int) + sizeof(uint8);
+
+ if( (!st->rid || !(lsd = map->id2sd(st->rid)) || !lsd->lang_id) && !map->default_lang_id )
+ script->push_str(stack,C_CONSTSTR,script->string_list+string_id);
+ else {
+ uint8 k, wlang_id = lsd ? lsd->lang_id : map->default_lang_id;
+ int offset = st->pos;
+
+ for(k = 0; k < translations; k++) {
+ uint8 lang_id = *(uint8 *)(&st->script->script_buf[offset]);
+ offset += sizeof(uint8);
+ if( lang_id == wlang_id )
+ break;
+ offset += sizeof(char*);
+ }
+
+ script->push_str(stack,C_CONSTSTR,
+ ( k == translations ) ? script->string_list+string_id : *(char**)(&st->script->script_buf[offset]) );
+
+ }
+
+ st->pos += ( ( sizeof(char*) + sizeof(uint8) ) * translations );
+ }
+ break;
case C_FUNC:
script->run_func(st);
if(st->state==GOTO) {
@@ -4430,11 +4651,355 @@ void do_final_script(void) {
if( script->generic_ui_array )
aFree(script->generic_ui_array);
+
+ script->clear_translations(false);
+
+ script->parser_clean_leftovers();
+
+ if( script->lang_export_file )
+ aFree(script->lang_export_file);
}
+
+/**
+ *
+ **/
+uint8 script_add_language(const char *name) {
+ uint8 lang_id = script->max_lang_id;
+
+ RECREATE(script->languages, char *, ++script->max_lang_id);
+
+ script->languages[lang_id] = aStrdup(name);
+
+ return lang_id;
+}
+/**
+ * Goes thru db/translations.conf file
+ **/
+void script_load_translations(void) {
+ config_t translations_conf;
+ const char *config_filename = "db/translations.conf"; // FIXME hardcoded name
+ config_setting_t *translations = NULL;
+ int i, size;
+ uint32 total = 0;
+ uint8 lang_id = 0, k;
+
+ script->translation_db = strdb_alloc(DB_OPT_DUP_KEY, NAME_LENGTH*2+1);
+
+ if( script->languages ) {
+ for(i = 0; i < script->max_lang_id; i++)
+ aFree(script->languages[i]);
+ aFree(script->languages);
+ }
+ script->languages = NULL;
+ script->max_lang_id = 0;
+
+ script->add_language("English");/* 0 is default, which is whatever is in the npc files hardcoded (in our case, English) */
+
+ if (libconfig->read_file(&translations_conf, config_filename)) {
+ ShowError("load_translations: can't read '%s'\n", config_filename);
+ return;
+ }
+
+ if( !(translations = libconfig->lookup(&translations_conf, "translations")) ) {
+ ShowError("load_translations: invalid format on '%s'\n",config_filename);
+ return;
+ }
+
+ if( script->string_list )
+ aFree(script->string_list);
+
+ script->string_list = NULL;
+ script->string_list_pos = 0;
+ script->string_list_size = 0;
+
+ size = libconfig->setting_length(translations);
+
+ for(i = 0; i < size; i++) {
+ const char *translation_file = libconfig->setting_get_string_elem(translations, i);
+
+ script->load_translation(translation_file, ++lang_id, &total);
+ }
+
+ if( total ) {
+ DBIterator *main_iter;
+ DBIterator *sub_iter;
+ DBMap *string_db;
+ struct string_translation *st = NULL;
+ uint32 j = 0;
+
+
+ CREATE(script->translation_buf, char *, total);
+ script->translation_buf_size = total;
+
+ main_iter = db_iterator(script->translation_db);
+
+ for( string_db = dbi_first(main_iter); dbi_exists(main_iter); string_db = dbi_next(main_iter) ) {
+ sub_iter = db_iterator(string_db);
+
+ for( st = dbi_first(sub_iter); dbi_exists(sub_iter); st = dbi_next(sub_iter) ) {
+ script->translation_buf[j++] = st->buf;
+ }
+
+ dbi_destroy(sub_iter);
+ }
+
+ dbi_destroy(main_iter);
+ }
+
+ for(k = 0; k < script->max_lang_id; k++) {
+ if( !strcmpi(script->languages[k],map->default_lang_str) ) {
+ break;
+ }
+ }
+
+ if( k == script->max_lang_id ) {
+ ShowError("load_translations: map server default_language setting '%s' is not a loaded language\n",map->default_lang_str);
+ map->default_lang_id = 0;
+ } else {
+ map->default_lang_id = k;
+ }
+}
+
+/**
+ *
+ **/
+const char * script_get_translation_file_name(const char *file) {
+ static char file_name[200];
+ int i, len = (int)strlen(file), last_bar = -1, last_dot = -1;
+
+ for(i = 0; i < len; i++) {
+ if( file[i] == '/' || file[i] == '\\' )
+ last_bar = i;
+ else if ( file[i] == '.' )
+ last_dot = i;
+ }
+
+ if( last_bar != -1 || last_dot != -1 ) {
+ if( last_bar != -1 && last_dot < last_bar )
+ last_dot = -1;
+ safestrncpy(file_name, file+(last_bar >= 0 ? last_bar+1 : 0), ( last_dot >= 0 ? ( last_bar >= 0 ? last_dot - last_bar : last_dot ) : sizeof(file_name) ));
+ return file_name;
+ }
+
+ return file;
+}
+
+/**
+ * Parses a individual translation file
+ **/
+void script_load_translation(const char *file, uint8 lang_id, uint32 *total) {
+ uint32 translations = 0;
+ char line[1024];
+ char msgctxt[NAME_LENGTH*2+1] = { 0 };
+ DBMap *string_db;
+ size_t i;
+ FILE *fp;
+ struct script_string_buf msgid = { 0 }, msgstr = { 0 };
+
+ if( !(fp = fopen(file,"rb")) ) {
+ ShowError("load_translation: failed to open '%s' for reading\n",file);
+ return;
+ }
+
+ script->add_language(script->get_translation_file_name(file));
+ if( lang_id >= atcommand->max_message_table )
+ atcommand->expand_message_table();
+
+ while(fgets(line, sizeof(line), fp)) {
+ size_t len = strlen(line), cursor = 0;
+
+ if( len <= 1 )
+ continue;
+
+ if( line[0] == '#' )
+ continue;
+
+ if( strncasecmp(line,"msgctxt \"", 9) == 0 ) {
+ for(i = 9; i < len - 2; i++) {
+ if( line[i] == '\\' && line[i+1] == '"' ) {
+ msgctxt[cursor] = '"';
+ i++;
+ } else
+ msgctxt[cursor] = line[i];
+ if( ++cursor >= sizeof(msgctxt) - 1 )
+ break;
+ }
+ msgctxt[cursor] = '\0';
+ } else if ( strncasecmp(line, "msgid \"", 7) == 0 ) {
+ for(i = 7; i < len - 2; i++) {
+ if( line[i] == '\\' && line[i+1] == '"' ) {
+ script_string_buf_addb(&msgid, '"');
+ i++;
+ } else
+ script_string_buf_addb(&msgid, line[i]);
+ }
+ script_string_buf_addb(&msgid,0);
+ } else if ( len > 9 && line[9] != '"' && strncasecmp(line, "msgstr \"",8) == 0 ) {
+ for(i = 8; i < len - 2; i++) {
+ if( line[i] == '\\' && line[i+1] == '"' ) {
+ script_string_buf_addb(&msgstr, '"');
+ i++;
+ } else
+ script_string_buf_addb(&msgstr, line[i]);
+ }
+ script_string_buf_addb(&msgstr,0);
+ }
+
+ if( msgctxt[0] && msgid.pos > 1 && msgstr.pos > 1 ) {
+ size_t msgstr_len = msgstr.pos;
+ unsigned int inner_len = 1 + (uint32)msgstr_len + 1; //uint8 lang_id + msgstr_len + '\0'
+
+ if( strcasecmp(msgctxt, "messages.conf") == 0 ) {
+ int k;
+
+ for(k = 0; k < MAX_MSG; k++) {
+ if( atcommand->msg_table[0][k] && strcmpi(atcommand->msg_table[0][k],msgid.ptr) == 0 ) {
+ if( atcommand->msg_table[lang_id][k] )
+ aFree(atcommand->msg_table[lang_id][k]);
+ atcommand->msg_table[lang_id][k] = aStrdup(msgstr.ptr);
+ break;
+ }
+ }
+
+ } else {
+ struct string_translation *st = NULL;
+
+ if( !( string_db = strdb_get(script->translation_db, msgctxt) ) ) {
+ string_db = strdb_alloc(DB_OPT_DUP_KEY, 0);
+
+ strdb_put(script->translation_db, msgctxt, string_db);
+ }
+
+ if( !(st = strdb_get(string_db, msgid.ptr) ) ) {
+ CREATE(st, struct string_translation, 1);
+
+ st->string_id = script->string_dup(msgid.ptr);
+
+ strdb_put(string_db, msgid.ptr, st);
+ }
+
+ RECREATE(st->buf, char, st->len + inner_len);
+
+ WBUFB(st->buf, st->len) = lang_id;
+ safestrncpy((char*)WBUFP(st->buf, st->len + 1), msgstr.ptr, msgstr_len + 1);
+
+ st->translations++;
+ st->len += inner_len;
+ }
+
+ msgctxt[0] = '\0';
+ msgid.pos = msgstr.pos = 0;
+ translations++;
+ }
+ }
+
+ *total += translations;
+
+ fclose(fp);
+
+ script_string_buf_destroy(&msgid);
+ script_string_buf_destroy(&msgstr);
+
+ ShowStatus("Done reading '"CL_WHITE"%u"CL_RESET"' translations in '"CL_WHITE"%s"CL_RESET"'.\n", translations, file);
+}
+
+/**
+ *
+ **/
+void script_clear_translations(bool reload) {
+ uint32 i;
+
+ if( script->string_list )
+ aFree(script->string_list);
+
+ script->string_list = NULL;
+ script->string_list_pos = 0;
+ script->string_list_size = 0;
+
+ if( script->translation_buf ) {
+ for(i = 0; i < script->translation_buf_size; i++) {
+ aFree(script->translation_buf[i]);
+ }
+ aFree(script->translation_buf);
+ }
+
+ script->translation_buf = NULL;
+ script->translation_buf_size = 0;
+
+ if( script->languages ) {
+ for(i = 0; i < script->max_lang_id; i++)
+ aFree(script->languages[i]);
+ aFree(script->languages);
+ }
+ script->languages = NULL;
+ script->max_lang_id = 0;
+
+ if( script->translation_db ) {
+ script->translation_db->clear(script->translation_db,script->translation_db_destroyer);
+ }
+
+ if( reload )
+ script->load_translations();
+}
+
+/**
+ *
+ **/
+int script_translation_db_destroyer(DBKey key, DBData *data, va_list ap) {
+ DBMap *string_db = DB->data2ptr(data);
+
+ if( db_size(string_db) ) {
+ DBIterator *iter = db_iterator(string_db);
+ struct string_translation *st = NULL;
+
+ for( st = dbi_first(iter); dbi_exists(iter); st = dbi_next(iter) ) {
+ aFree(st);
+ }
+
+ dbi_destroy(iter);
+ }
+
+ db_destroy(string_db);
+ return 0;
+}
+
+/**
+ *
+ **/
+void script_parser_clean_leftovers(void) {
+ if( script->translation_db ) {
+ script->translation_db->destroy(script->translation_db,script->translation_db_destroyer);
+ script->translation_db = NULL;
+ }
+
+ if( script->syntax.strings ) { /* used only when generating translation file */
+ db_destroy(script->syntax.strings);
+ script->syntax.strings = NULL;
+ }
+
+ script_string_buf_destroy(&script->parse_simpleexpr_str);
+ script_string_buf_destroy(&script->lang_export_line_buf);
+}
+
+/**
+ * Performs cleanup after all parsing is processed
+ **/
+int script_parse_cleanup_timer(int tid, int64 tick, int id, intptr_t data) {
+
+ script->parser_clean_leftovers();
+
+ script->parse_cleanup_timer_id = INVALID_TIMER;
+
+ return 0;
+}
+
+
/*==========================================
* Initialization
*------------------------------------------*/
void do_init_script(bool minimal) {
+ script->parse_cleanup_timer_id = INVALID_TIMER;
+
script->st_db = idb_alloc(DB_OPT_BASE);
script->userfunc_db = strdb_alloc(DB_OPT_DUP_KEY,0);
script->autobonus_db = strdb_alloc(DB_OPT_DUP_KEY,0);
@@ -4454,6 +5019,8 @@ void do_init_script(bool minimal) {
return;
mapreg->init();
+
+ script->load_translations();
}
int script_reload(void) {
@@ -4486,6 +5053,13 @@ int script_reload(void) {
atcommand->binding_count = 0;
db_clear(script->st_db);
+
+ script->clear_translations(true);
+
+ if( script->parse_cleanup_timer_id != INVALID_TIMER ) {
+ timer->delete(script->parse_cleanup_timer_id,script->parse_cleanup_timer);
+ script->parse_cleanup_timer_id = INVALID_TIMER;
+ }
mapreg->reload();
@@ -12985,7 +13559,7 @@ BUILDIN(recovery)
status->revive(&sd->bl, 100, 100);
else
status_percent_heal(&sd->bl, 100, 100);
- clif->message(sd->fd,msg_txt(880)); // "You have been recovered!"
+ clif->message(sd->fd,msg_sd(sd,880)); // "You have been recovered!"
}
mapit->free(iter);
return true;
@@ -18132,16 +18706,16 @@ BUILDIN(montransform) {
return true;
if( battle_config.mon_trans_disable_in_gvg && map_flag_gvg2(sd->bl.m) ) {
- clif->message(sd->fd, msg_txt(1488)); // Transforming into monster is not allowed in Guild Wars.
+ clif->message(sd->fd, msg_sd(sd,1488)); // Transforming into monster is not allowed in Guild Wars.
return true;
}
if( sd->disguise != -1 ) {
- clif->message(sd->fd, msg_txt(1486)); // Cannot transform into monster while in disguise.
+ clif->message(sd->fd, msg_sd(sd,1486)); // Cannot transform into monster while in disguise.
return true;
}
- sprintf(msg, msg_txt(1485), monster->name); // Traaaansformation-!! %s form!!
+ sprintf(msg, msg_sd(sd,1485), monster->name); // Traaaansformation-!! %s form!!
clif->ShowScript(&sd->bl, msg);
status_change_end(bl, SC_MONSTER_TRANSFORM, INVALID_TIMER); // Clear previous
sc_start2(NULL, bl, SC_MONSTER_TRANSFORM, 100, mob_id, type, tick);
@@ -19043,6 +19617,11 @@ BUILDIN(channelmes)
return true;
}
+/** place holder for the translation macro **/
+BUILDIN(_) {
+ return true;
+}
+
// declarations that were supposed to be exported from npc_chat.c
#ifdef PCRE_SUPPORT
BUILDIN(defpattern);
@@ -19118,6 +19697,9 @@ bool script_add_builtin(const struct script_function *buildin, bool override) {
else if( strcmp(buildin->name, "callsub") == 0 ) script->buildin_callsub_ref = n;
else if( strcmp(buildin->name, "callfunc") == 0 ) script->buildin_callfunc_ref = n;
else if( strcmp(buildin->name, "getelementofarray") == 0 ) script->buildin_getelementofarray_ref = n;
+ else if( strcmp(buildin->name, "mes") == 0 ) script->buildin_mes_offset = script->buildin_count;
+ else if( strcmp(buildin->name, "select") == 0 ) script->buildin_select_offset = script->buildin_count;
+ else if( strcmp(buildin->name, "_") == 0 ) script->buildin_lang_macro_offset = script->buildin_count;
offset = script->buildin_count;
@@ -19670,6 +20252,7 @@ void script_parse_builtin(void) {
BUILDIN_DEF(shopcount, "i"),
BUILDIN_DEF(channelmes, "ss"),
+ BUILDIN_DEF(_,"s"),
};
int i, len = ARRAYLENGTH(BUILDIN);
RECREATE(script->buildin, char *, script->buildin_count + len); // Pre-alloc to speed up
@@ -20046,5 +20629,14 @@ void script_defaults(void) {
/* */
script->hardcoded_constants = script_hardcoded_constants;
script->mapindexname2id = script_mapindexname2id;
+ script->string_dup = script_string_dup;
+ script->load_translations = script_load_translations;
+ script->load_translation = script_load_translation;
+ script->translation_db_destroyer = script_translation_db_destroyer;
+ script->clear_translations = script_clear_translations;
+ script->parse_cleanup_timer = script_parse_cleanup_timer;
+ script->add_language = script_add_language;
+ script->get_translation_file_name = script_get_translation_file_name;
+ script->parser_clean_leftovers = script_parser_clean_leftovers;
}
diff --git a/src/map/script.h b/src/map/script.h
index ad63c1ad7..51bdf23b5 100644
--- a/src/map/script.h
+++ b/src/map/script.h
@@ -187,6 +187,7 @@ typedef enum c_op {
C_USERFUNC, // internal script function
C_USERFUNC_POS, // internal script function label
C_REF, // the next call to c_op2 should push back a ref to the left operand
+ C_LSTR, //Language Str (struct script_code_str)
// operators
C_OP3, // a ? b : c
@@ -464,6 +465,11 @@ struct script_syntax_data {
} curly[256]; // Information right parenthesis
int curly_count; // The number of right brackets
int index; // Number of the syntax used in the script
+ int last_func; // buildin index of the last parsed function
+ unsigned int nested_call; //Dont really know what to call this
+ bool lang_macro_active;
+ DBMap *strings; // string map parsed (used when exporting strings only)
+ DBMap *translation_db; //non-null if this npc has any translated strings to be linked
};
struct casecheck_data {
@@ -485,6 +491,18 @@ struct script_array {
unsigned int *members;/* member list */
};
+struct script_string_buf {
+ char *ptr;
+ size_t pos,size;
+};
+
+struct string_translation {
+ int string_id;
+ uint8 translations;
+ unsigned int len;
+ char *buf;
+};
+
/**
* Interface
**/
@@ -518,6 +536,10 @@ struct script_interface {
/* */
char *word_buf;
size_t word_size;
+ /* Script string storage */
+ char *string_list;
+ int string_list_size;
+ int string_list_pos;
/* */
unsigned short current_item_id;
/* */
@@ -564,6 +586,27 @@ struct script_interface {
/* */
unsigned int *generic_ui_array;
unsigned int generic_ui_array_size;
+ /* Set during startup when attempting to export the lang, unset after server initialization is over */
+ FILE *lang_export_fp;
+ char *lang_export_file;/* for lang_export_fp */
+ /* set and unset on npc_parse_script */
+ char *parser_current_npc_name;
+ /* */
+ int buildin_mes_offset;
+ int buildin_select_offset;
+ int buildin_lang_macro_offset;
+ /* */
+ DBMap *translation_db;/* npc_name => DBMap (strings) */
+ char **translation_buf;/* */
+ uint32 translation_buf_size;
+ /* */
+ char **languages;
+ uint8 max_lang_id;
+ /* */
+ struct script_string_buf parse_simpleexpr_str;
+ struct script_string_buf lang_export_line_buf;
+ /* */
+ int parse_cleanup_timer_id;
/* */
void (*init) (bool minimal);
void (*final) (void);
@@ -712,6 +755,15 @@ struct script_interface {
/* */
void (*hardcoded_constants) (void);
unsigned short (*mapindexname2id) (struct script_state *st, const char* name);
+ int (*string_dup) (char *str);
+ void (*load_translations) (void);
+ void (*load_translation) (const char *file, uint8 lang_id, uint32 *total);
+ int (*translation_db_destroyer) (DBKey key, DBData *data, va_list ap);
+ void (*clear_translations) (bool reload);
+ int (*parse_cleanup_timer) (int tid, int64 tick, int id, intptr_t data);
+ uint8 (*add_language) (const char *name);
+ const char *(*get_translation_file_name) (const char *file);
+ void (*parser_clean_leftovers) (void);
};
struct script_interface *script;
diff --git a/src/map/skill.c b/src/map/skill.c
index e1e60dbdb..96ade3908 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -5724,7 +5724,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
if (sd)
clif->skill_fail(sd,skill_id,USESKILL_FAIL_LEVEL,0);
if (skill->break_equip(bl, EQP_WEAPON, 10000, BCT_PARTY) && sd && sd != dstsd)
- clif->message(sd->fd, msg_txt(869)); // "You broke the target's weapon."
+ clif->message(sd->fd, msg_sd(sd,869)); // "You broke the target's weapon."
}
break;
@@ -6667,7 +6667,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin
break;
}
if(!battle_config.duel_allow_teleport && sd->duel_group && skill_lv <= 2) { // duel restriction [LuzZza]
- char output[128]; sprintf(output, msg_txt(365), skill->get_name(AL_TELEPORT));
+ char output[128]; sprintf(output, msg_sd(sd,365), skill->get_name(AL_TELEPORT));
clif->message(sd->fd, output); //"Duel: Can't use %s in duel."
break;
}
@@ -13189,7 +13189,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
break;
case AL_WARP:
if(!battle_config.duel_allow_teleport && sd->duel_group) { // duel restriction [LuzZza]
- char output[128]; sprintf(output, msg_txt(365), skill->get_name(AL_WARP));
+ char output[128]; sprintf(output, msg_sd(sd,365), skill->get_name(AL_WARP));
clif->message(sd->fd, output); //"Duel: Can't use %s in duel."
return 0;
}
diff --git a/src/map/storage.c b/src/map/storage.c
index 755f50cb7..79a5ad52d 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -88,7 +88,7 @@ int storage_storageopen(struct map_session_data *sd)
if( !pc_can_give_items(sd) ) {
//check is this GM level is allowed to put items to storage
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
return 1;
}
@@ -138,12 +138,12 @@ int storage_additem(struct map_session_data* sd, struct item* item_data, int amo
if (!itemdb_canstore(item_data, pc_get_group_level(sd))) {
//Check if item is storable. [Skotlex]
- clif->message (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_sd(sd,264));
return 1;
}
if( item_data->bound > IBT_ACCOUNT && !pc_can_give_bound_items(sd) ) {
- clif->message(sd->fd, msg_txt(294));
+ clif->message(sd->fd, msg_sd(sd,294));
return 1;
}
@@ -384,7 +384,7 @@ int storage_guild_storageopen(struct map_session_data* sd)
return 1; //Can't open both storages at a time.
if( !pc_can_give_items(sd) ) { //check is this GM level can open guild storage and store items [Lupus]
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
return 1;
}
@@ -433,12 +433,12 @@ int guild_storage_additem(struct map_session_data* sd, struct guild_storage* sto
if (!itemdb_canguildstore(item_data, pc_get_group_level(sd)) || item_data->expire_time) {
//Check if item is storable. [Skotlex]
- clif->message (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_sd(sd,264));
return 1;
}
if( item_data->bound && item_data->bound != IBT_GUILD && !pc_can_give_bound_items(sd) ) {
- clif->message(sd->fd, msg_txt(294));
+ clif->message(sd->fd, msg_sd(sd,294));
return 1;
}
diff --git a/src/map/trade.c b/src/map/trade.c
index 379756394..7417f05af 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -34,7 +34,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
nullpo_retv(sd);
if (map->list[sd->bl.m].flag.notrade) {
- clif->message (sd->fd, msg_txt(272));
+ clif->message (sd->fd, msg_sd(sd,272));
return; //Can't trade in notrade mapflag maps.
}
@@ -73,7 +73,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
if (!pc_can_give_items(sd) || !pc_can_give_items(target_sd)) //check if both GMs are allowed to trade
{
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
clif->tradestart(sd, 2); // GM is not allowed to trade
return;
}
@@ -355,14 +355,14 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
if( !itemdb_cantrade(item, src_lv, dst_lv) && //Can't trade
(pc->get_partner(sd) != target_sd || !itemdb_canpartnertrade(item, src_lv, dst_lv)) ) //Can't partner-trade
{
- clif->message (sd->fd, msg_txt(260));
+ clif->message (sd->fd, msg_sd(sd,260));
clif->tradeitemok(sd, index+2, TIO_INDROCKS);
return;
}
if( item->expire_time )
{ // Rental System
- clif->message (sd->fd, msg_txt(260));
+ clif->message (sd->fd, msg_sd(sd,260));
clif->tradeitemok(sd, index+2, TIO_INDROCKS);
return;
}
@@ -371,7 +371,7 @@ void trade_tradeadditem(struct map_session_data *sd, short index, short amount)
!( item->bound == IBT_GUILD && sd->status.guild_id == target_sd->status.guild_id ) &&
!( item->bound == IBT_PARTY && sd->status.party_id == target_sd->status.party_id )
&& !pc_can_give_bound_items(sd) ) {
- clif->message(sd->fd, msg_txt(293));
+ clif->message(sd->fd, msg_sd(sd,293));
clif->tradeitemok(sd, index+2, TIO_INDROCKS);
return;
}
diff --git a/src/map/vending.c b/src/map/vending.c
index bd61d482f..8ae3f36a4 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -58,7 +58,7 @@ void vending_vendinglistreq(struct map_session_data* sd, unsigned int id) {
if (!pc_can_give_items(sd) || !pc_can_give_items(vsd)) { //check if both GMs are allowed to trade
// GM is not allowed to trade
- clif->message(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_sd(sd,246));
return;
}
@@ -181,7 +181,7 @@ void vending_purchasereq(struct map_session_data* sd, int aid, unsigned int uid,
//print buyer's name
if( battle_config.buyer_name ) {
char temp[256];
- sprintf(temp, msg_txt(265), sd->status.name);
+ sprintf(temp, msg_sd(vsd,265), sd->status.name);
clif_disp_onlyself(vsd,temp,strlen(temp));
}
}
@@ -273,7 +273,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
}
if( i != j )
- clif->message (sd->fd, msg_txt(266)); //"Some of your items cannot be vended and were removed from the shop."
+ clif->message (sd->fd, msg_sd(sd,266)); //"Some of your items cannot be vended and were removed from the shop."
if( i == 0 ) { // no valid item found
clif->skill_fail(sd, MC_VENDING, USESKILL_FAIL_LEVEL, 0); // custom reply packet