summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/atcommand.conf1
-rw-r--r--conf/battle/items.conf2
-rw-r--r--conf/channels.conf39
-rw-r--r--conf/groups.conf3
-rw-r--r--conf/help.txt1
-rw-r--r--conf/inter-server.conf4
-rw-r--r--conf/messages.conf43
-rw-r--r--doc/permissions.txt5
-rw-r--r--src/char/char.c2
-rw-r--r--src/char/inter.c3
-rw-r--r--src/char/inter.h2
-rw-r--r--src/common/mmo.h5
-rw-r--r--src/map/atcommand.c1901
-rw-r--r--src/map/battle.c54
-rw-r--r--src/map/buyingstore.c14
-rw-r--r--src/map/chat.c4
-rw-r--r--src/map/chrif.c14
-rw-r--r--src/map/clif.c3536
-rw-r--r--src/map/clif.h313
-rw-r--r--src/map/guild.c153
-rw-r--r--src/map/homunculus.c2
-rw-r--r--src/map/intif.c13
-rw-r--r--src/map/map.c38
-rw-r--r--src/map/map.h7
-rw-r--r--src/map/npc.c2
-rw-r--r--src/map/party.c14
-rw-r--r--src/map/pc.c39
-rw-r--r--src/map/pc.h12
-rw-r--r--src/map/pc_groups.h2
-rw-r--r--src/map/pet.c2
-rw-r--r--src/map/script.c26
-rw-r--r--src/map/skill.c10
-rw-r--r--src/map/storage.c8
-rw-r--r--src/map/trade.c8
-rw-r--r--src/map/vending.c4
35 files changed, 3668 insertions, 2618 deletions
diff --git a/conf/atcommand.conf b/conf/atcommand.conf
index 5a0a5b289..67af3b91f 100644
--- a/conf/atcommand.conf
+++ b/conf/atcommand.conf
@@ -56,6 +56,7 @@ aliases: {
guildstorage: ["gstorage"]
accinfo: ["accountinfo"]
itemreset: ["clearinventory"]
+ channel: ["main"]
}
/* Commands help file */
diff --git a/conf/battle/items.conf b/conf/battle/items.conf
index 4401072d5..05aadfecd 100644
--- a/conf/battle/items.conf
+++ b/conf/battle/items.conf
@@ -76,7 +76,7 @@ gtb_sc_immunity: 50
// always work independently of each other regardless of setting.
autospell_stacking: no
-// Will disabled consumables (disabled by item_noequip.txt) be consumed when trying to use them?
+// Will disabled consumables (disabled by map_zone_db.conf) be consumed when trying to use them?
// 1 (official): yes
// 0: no
item_restricted_consumption_type:1
diff --git a/conf/channels.conf b/conf/channels.conf
new file mode 100644
index 000000000..b12d2da8b
--- /dev/null
+++ b/conf/channels.conf
@@ -0,0 +1,39 @@
+chsys: (
+{
+ /* default channels (available on boot) */
+ default_channels: {
+ /* channel_name : channel_messages_color */
+ main: "Orange" /* available as #main */
+ support: "Blue" /* available as #support */
+ trade: "Red" /* available as #trade */
+ offtopic: "Cyan" /* available as #offtopic */
+ /* as many channels as you like */
+ }
+ /* colors available */
+ colors: {
+ Default: "0xffffff" /* custom channels will use the first in the list unless a font is selected thru @channel */
+ Red: "0xff0000"
+ Blue: "0x83cfe9"
+ Orange: "0xe57c00"
+ Cyan: "0x00b89d"
+ Yellow: "0xffff90"
+ Green: "0x28bf00"
+ Normal: "0x00ff00"
+ /* as many colors as you like */
+ }
+ /* allow users to create their own (private) channels through @channels command? */
+ /* (must also allow players to use @channels in groups.conf) */
+ allow_user_channel_creation: true
+ /* "map_local_channel" is a instanced channel unique to each map */
+ map_local_channel: true
+ map_local_channel_name: "map" /* available as #map */
+ map_local_channel_color: "Yellow"
+ map_local_channel_autojoin: true /* can disable autojoin in specific maps through a mapflag or zone */
+ /* "ally_channel" is a channel shared by all your guild allies */
+ ally_channel_enabled: true
+ ally_channel_name: "ally" /* available as #ally */
+ ally_channel_color: "Green"
+ ally_channel_autojoin: true
+}
+)
+
diff --git a/conf/groups.conf b/conf/groups.conf
index a243716e6..879361387 100644
--- a/conf/groups.conf
+++ b/conf/groups.conf
@@ -123,13 +123,13 @@ groups: (
refresh: true
noask: true
noks: true
- main: true
autoloot: true
alootid: true
autotrade: true
request: true
go: true
breakguild: true
+ channel: true
}
permissions: {
}
@@ -272,6 +272,7 @@ groups: (
use_check: true
use_changemaptype: true
all_commands: true
+ hchsys_admin: true
}
}
)
diff --git a/conf/help.txt b/conf/help.txt
index 105371e9f..6f202091e 100644
--- a/conf/help.txt
+++ b/conf/help.txt
@@ -6,7 +6,6 @@
// This file uses libconfig syntax.
help: "Params: <command>\n" "Shows help for specified command."
-main: "Params: [on|off|<message>]\n" "Turns on or off main (server-wide) chat. Sends message to main chat."
noask: "Auto rejects deals/invites."
gmotd: "Broadcasts the Message of The Day to all players."
me: "Params: <message>\n" "Displays normal text as a message in this format: *name message* (like /me in mIRC)."
diff --git a/conf/inter-server.conf b/conf/inter-server.conf
index 523437007..bf8d9e7a3 100644
--- a/conf/inter-server.conf
+++ b/conf/inter-server.conf
@@ -119,8 +119,4 @@ mapreg_db: mapreg
//Use SQL item_db, mob_db and mob_skill_db for the map server
use_sql_db: no
-// Nick for sending mainchat
-// messages like whisper
-main_chat_nick: Main
-
import: conf/import/inter_conf.txt
diff --git a/conf/messages.conf b/conf/messages.conf
index 6025ecd81..7666badf3 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -1409,5 +1409,48 @@
// @skillid (extension)
1398: -- Displaying first %d partial matches
+// @join
+1399: Unknown Channel (usage: %s <#channel_name>)
+1400: Unknown Channel '%s' (usage: %s <#channel_name>)
+1401: '%s' Channel is password protected (usage: %s <#channel_name> <password>)
+1403: You're now in the '%s' channel
+
+// Hercules Chat Feature
+1402: You're not in that channel, type '@join <#channel_name>'
+1434: You're already in the '%s' channel
+1435: You're now in the '#%s' channel for '%s'
+
+// @channel
+1404: %s failed
+1405: Channel name must start with a '#'
+1406: Channel length must be between 3 and %d
+1407: Channel '%s' is not available
+1408: Channel password may not contain spaces
+1409: - #%s ( %d users )
+1410: -- Public Channels
+1411: Unknown color '%s'
+1412: You're not the owner of channel '%s'
+1413: '%s' channel color updated to '%s'
+1414: --- Available options:
+1415: -- %s create <channel name> <channel password>
+1416: - creates a new channel
+1417: -- %s list
+1418: - lists public channels
+1419: -- %s list colors
+1420: - lists colors available to select for custom channels
+1421: -- %s setcolor <channel name> <color name>
+1422: - changes <channel name> color to <color name>
+1423: -- %s leave <channel name>
+1424: - leaves <channel name>
+1425: You're not part of the '%s' channel
+1426: You've left the '%s' channel
+1427: -- %s bindto <channel name>
+1428: - binds your global chat to <channel name>, making anything you type in global be sent to the channel
+1429: -- %s unbind
+1430: - unbinds your global chat from its attached channel (if binded)
+1431: Your global chat is now binded to the '%s' channel
+1432: Your global chat is not binded to any channel
+1433: Your global chat is now unbinded from the '#%s' channel
+
//Custom translations
import: conf/import/msg_conf.txt
diff --git a/doc/permissions.txt b/doc/permissions.txt
index 619282c94..1dbfd0056 100644
--- a/doc/permissions.txt
+++ b/doc/permissions.txt
@@ -3,7 +3,7 @@
//===== By: ==================================================
//= Hercules Dev Team
//===== Current Version: =====================================
-//= 20120606
+//= 20130330
//===== Description: =========================================
//= Player group permissions, configured in /conf/groups.conf.
//============================================================
@@ -30,4 +30,5 @@ receive_requests : Ability to receive @requests.
show_bossmobs : Ability to see boss mobs with @showmobs.
disable_pvm : Ability to disable Player vs. Monster.
disable_pvp : Ability to disable Player vs. Player.
-disable_commands_when_dead : Ability to disable @command usage when dead. \ No newline at end of file
+disable_commands_when_dead : Ability to disable @command usage when dead.
+hchsys_admin : Hercules Chat System Admin (can modify channels settings regardless of ownership and join password-protected channels without password) \ No newline at end of file
diff --git a/src/char/char.c b/src/char/char.c
index 1745c061f..9e2400ddf 100644
--- a/src/char/char.c
+++ b/src/char/char.c
@@ -1465,7 +1465,7 @@ int check_char_name(char * name, char * esc_name)
return -2; // control chars in name
// check for reserved names
- if( strcmpi(name, main_chat_nick) == 0 || strcmpi(name, wisp_server_name) == 0 )
+ if( strcmpi(name, wisp_server_name) == 0 )
return -1; // nick reserved for internal server messages
// Check Authorised letters/symbols in the name of the character
diff --git a/src/char/inter.c b/src/char/inter.c
index da790e200..dec217d02 100644
--- a/src/char/inter.c
+++ b/src/char/inter.c
@@ -43,7 +43,6 @@ char default_codepage[32] = ""; //Feature by irmin.
static struct accreg *accreg_pt;
unsigned int party_share_level = 10;
-char main_chat_nick[16] = "Main";
// recv. packet list
int inter_recv_packet_length[] = {
@@ -731,8 +730,6 @@ static int inter_config_read(const char* cfgName)
party_share_level = atoi(w2);
else if(!strcmpi(w1,"log_inter"))
log_inter = atoi(w2);
- else if(!strcmpi(w1,"main_chat_nick"))
- safestrncpy(main_chat_nick, w2, sizeof(main_chat_nick));
else if(!strcmpi(w1,"import"))
inter_config_read(w2);
}
diff --git a/src/char/inter.h b/src/char/inter.h
index 9f99197eb..e34c54c16 100644
--- a/src/char/inter.h
+++ b/src/char/inter.h
@@ -23,8 +23,6 @@ extern unsigned int party_share_level;
extern Sql* sql_handle;
extern Sql* lsql_handle;
-extern char main_chat_nick[16];
-
int inter_accreg_tosql(int account_id, int char_id, struct accreg *reg, int type);
uint64 inter_chk_lastuid(int8 flag, uint64 value);
diff --git a/src/common/mmo.h b/src/common/mmo.h
index 56770fe02..7d1928201 100644
--- a/src/common/mmo.h
+++ b/src/common/mmo.h
@@ -5,6 +5,7 @@
#define _MMO_H_
#include "cbasetypes.h"
+#include "../common/db.h"
#include <time.h>
// server->client protocol version
@@ -510,8 +511,10 @@ struct guild {
struct guild_alliance alliance[MAX_GUILDALLIANCE];
struct guild_expulsion expulsion[MAX_GUILDEXPULSION];
struct guild_skill skill[MAX_GUILDSKILL];
-
+
+ /* TODO: still used for something?|: */
unsigned short save_flag; // for TXT saving
+ void *channel;
};
struct guild_castle {
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index a585e6cc8..94838f699 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -219,21 +219,21 @@ ACMD_FUNC(send)
{
int i;
for (i = 900; i <= 903; ++i)
- clif->displaymessage(fd, msg_txt(i));
+ clif->message(fd, msg_txt(i));
return -1;
}
#define PARSE_ERROR(error,p) \
{\
- clif->displaymessage(fd, (error));\
+ clif->message(fd, (error));\
sprintf(atcmd_output, ">%s", (p));\
- clif->displaymessage(fd, atcmd_output);\
+ clif->message(fd, atcmd_output);\
}
//define PARSE_ERROR
#define CHECK_EOS(p) \
if(*(p) == 0){\
- clif->displaymessage(fd, "Unexpected end of string");\
+ clif->message(fd, "Unexpected end of string");\
return -1;\
}
//define CHECK_EOS
@@ -259,7 +259,7 @@ ACMD_FUNC(send)
if(len)
{// show packet length
sprintf(atcmd_output, msg_txt(904), type, packet_db[sd->packet_ver][type].len); // Packet 0x%x length: %d
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -268,7 +268,7 @@ ACMD_FUNC(send)
if(len == 0)
{// unknown packet - ERROR
sprintf(atcmd_output, msg_txt(905), type); // Unknown packet: 0x%x
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
} else if(len == -1)
{// dynamic packet
@@ -425,11 +425,11 @@ ACMD_FUNC(send)
WFIFOSET(fd,len);
}
} else {
- clif->displaymessage(fd, msg_txt(259)); // Invalid packet
+ clif->message(fd, msg_txt(259)); // Invalid packet
return -1;
}
sprintf (atcmd_output, msg_txt(258), type, type); // Sent packet 0x%x (%d)
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
#undef PARSE_ERROR
#undef CHECK_EOS
@@ -455,7 +455,7 @@ ACMD_FUNC(mapmove)
(sscanf(message, "%15s %hd %hd", map_name, &x, &y) < 3 &&
sscanf(message, "%15[^,],%hd,%hd", map_name, &x, &y) < 1)) {
- clif->displaymessage(fd, msg_txt(909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>).
+ clif->message(fd, msg_txt(909)); // Please enter a map (usage: @warp/@rura/@mapmove <mapname> <x> <y>).
return -1;
}
@@ -464,30 +464,30 @@ ACMD_FUNC(mapmove)
m = map_mapindex2mapid(mapindex);
if (!mapindex) { // m < 0 means on different server! [Kevin]
- clif->displaymessage(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_txt(1)); // Map not found.
return -1;
}
if ((x || y) && map_getcell(m, x, y, CELL_CHKNOPASS))
{ //This is to prevent the pc_setpos call from printing an error.
- clif->displaymessage(fd, msg_txt(2));
+ clif->message(fd, msg_txt(2));
if (!map_search_freecell(NULL, m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
if (map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(247));
+ clif->message(fd, msg_txt(247));
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(248));
+ clif->message(fd, msg_txt(248));
return -1;
}
if (pc_setpos(sd, mapindex, x, y, CLR_TELEPORT) != 0) {
- clif->displaymessage(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_txt(1)); // Map not found.
return -1;
}
- clif->displaymessage(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_txt(0)); // Warped.
return 0;
}
@@ -502,7 +502,7 @@ ACMD_FUNC(where)
memset(atcmd_player_name, '\0', sizeof atcmd_player_name);
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(910)); // Please enter a player name (usage: @where <char name>).
+ clif->message(fd, msg_txt(910)); // Please enter a player name (usage: @where <char name>).
return -1;
}
@@ -511,12 +511,12 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
snprintf(atcmd_output, sizeof atcmd_output, "%s %s %d %d", pl_sd->status.name, mapindex_id2name(pl_sd->mapindex), pl_sd->bl.x, pl_sd->bl.y);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -531,37 +531,37 @@ ACMD_FUNC(jumpto)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>).
+ clif->message(fd, msg_txt(911)); // Please enter a player name (usage: @jumpto/@warpto/@goto <char name/ID>).
return -1;
}
if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL)
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
{
- clif->displaymessage(fd, msg_txt(247)); // You are not authorized to warp to this map.
+ clif->message(fd, msg_txt(247)); // You are not authorized to warp to this map.
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE))
{
- clif->displaymessage(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
return -1;
}
if( pc_isdead(sd) )
{
- clif->displaymessage(fd, msg_txt(664));
+ clif->message(fd, msg_txt(664));
return -1;
}
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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -580,26 +580,26 @@ ACMD_FUNC(jump)
sscanf(message, "%hd %hd", &x, &y);
if (map[sd->bl.m].flag.noteleport && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
return -1;
}
if( pc_isdead(sd) )
{
- clif->displaymessage(fd, msg_txt(664));
+ clif->message(fd, msg_txt(664));
return -1;
}
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->displaymessage(fd, msg_txt(2));
+ clif->message(fd, msg_txt(2));
if (!map_search_freecell(NULL, sd->bl.m, &x, &y, 10, 10, 1))
x = y = 0; //Invalid cell, use random spot.
}
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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -667,7 +667,7 @@ ACMD_FUNC(who)
}
default: {
struct party_data *p = party_search(pl_sd->status.party_id);
- struct guild *g = guild_search(pl_sd->status.guild_id);
+ struct guild *g = pl_sd->guild;
StringBuf_Printf(&buf, msg_txt(343), pl_sd->status.name); // "Name: %s "
if (pc_get_group_id(pl_sd) > 0) // Player title, if exists
@@ -679,7 +679,7 @@ ACMD_FUNC(who)
break;
}
}
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Clear(&buf);
count++;
}
@@ -701,7 +701,7 @@ ACMD_FUNC(who)
else
StringBuf_Printf(&buf, msg_txt(56), count, map[map_id].name); // %d players found in map '%s'.
}
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Destroy(&buf);
return 0;
}
@@ -754,7 +754,7 @@ ACMD_FUNC(whogm)
if (pl_sd->sc.option & OPTION_INVISIBLE)
continue;
sprintf(atcmd_output, msg_txt(913), pl_sd->status.name); // Name: %s (GM)
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count++;
continue;
}
@@ -762,31 +762,31 @@ ACMD_FUNC(whogm)
sprintf(atcmd_output, msg_txt(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->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(915), // BLvl: %d | Job: %s (Lvl: %d)
pl_sd->status.base_level,
job_name(pl_sd->status.class_), pl_sd->status.job_level);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
p = party_search(pl_sd->status.party_id);
- g = guild_search(pl_sd->status.guild_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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count++;
}
mapit_free(iter);
if (count == 0)
- clif->displaymessage(fd, msg_txt(150)); // No GM found.
+ clif->message(fd, msg_txt(150)); // No GM found.
else if (count == 1)
- clif->displaymessage(fd, msg_txt(151)); // 1 GM found.
+ clif->message(fd, msg_txt(151)); // 1 GM found.
else {
sprintf(atcmd_output, msg_txt(152), count); // %d GMs found.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -805,7 +805,7 @@ ACMD_FUNC(save)
chrif_save(sd,0);
- clif->displaymessage(fd, msg_txt(6)); // Your save point has been changed.
+ clif->message(fd, msg_txt(6)); // Your save point has been changed.
return 0;
}
@@ -821,16 +821,16 @@ ACMD_FUNC(load)
m = map_mapindex2mapid(sd->status.save_point.map);
if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(249)); // You are not authorized to warp to your save map.
+ clif->message(fd, msg_txt(249)); // You are not authorized to warp to your save map.
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(248)); // You are not authorized to warp from your current map.
+ clif->message(fd, msg_txt(248)); // You are not authorized to warp from your current map.
return -1;
}
pc_setpos(sd, sd->status.save_point.map, sd->status.save_point.x, sd->status.save_point.y, CLR_OUTSIGHT);
- clif->displaymessage(fd, msg_txt(7)); // Warping to save point..
+ clif->message(fd, msg_txt(7)); // Warping to save point..
return 0;
}
@@ -848,13 +848,13 @@ ACMD_FUNC(speed)
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>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
sd->base_status.speed = cap_value(speed, MIN_WALK_SPEED, MAX_WALK_SPEED);
status_calc_bl(&sd->bl, SCB_SPEED);
- clif->displaymessage(fd, msg_txt(8)); // Speed changed.
+ clif->message(fd, msg_txt(8)); // Speed changed.
return 0;
}
@@ -870,11 +870,11 @@ ACMD_FUNC(storage)
if (storage_storageopen(sd) == 1)
{ //Already open.
- clif->displaymessage(fd, msg_txt(250));
+ clif->message(fd, msg_txt(250));
return -1;
}
- clif->displaymessage(fd, msg_txt(919)); // Storage opened.
+ clif->message(fd, msg_txt(919)); // Storage opened.
return 0;
}
@@ -888,7 +888,7 @@ ACMD_FUNC(guildstorage)
nullpo_retr(-1, sd);
if (!sd->status.guild_id) {
- clif->displaymessage(fd, msg_txt(252));
+ clif->message(fd, msg_txt(252));
return -1;
}
@@ -896,17 +896,17 @@ ACMD_FUNC(guildstorage)
return -1;
if (sd->state.storage_flag == 1) {
- clif->displaymessage(fd, msg_txt(250));
+ clif->message(fd, msg_txt(250));
return -1;
}
if (sd->state.storage_flag == 2) {
- clif->displaymessage(fd, msg_txt(251));
+ clif->message(fd, msg_txt(251));
return -1;
}
storage_guild_storageopen(sd);
- clif->displaymessage(fd, msg_txt(920)); // Guild storage opened.
+ clif->message(fd, msg_txt(920)); // Guild storage opened.
return 0;
}
@@ -926,11 +926,11 @@ ACMD_FUNC(option)
text = atcommand_help_string( command );
// notify the user of the requirement to enter an option
- clif->displaymessage(fd, msg_txt(921)); // Please enter at least one option.
+ clif->message(fd, msg_txt(921)); // Please enter at least one option.
if( text )
{// send the help text associated with this command
- clif->displaymessage( fd, text );
+ clif->message( fd, text );
}
return -1;
@@ -940,7 +940,7 @@ ACMD_FUNC(option)
sd->sc.opt2 = param2;
pc_setoption(sd, param3);
- clif->displaymessage(fd, msg_txt(9)); // Options changed.
+ clif->message(fd, msg_txt(9)); // Options changed.
return 0;
}
@@ -957,7 +957,7 @@ ACMD_FUNC(hide)
status_set_viewdata(&sd->bl, sd->disguise);
else
status_set_viewdata(&sd->bl, sd->status.class_);
- clif->displaymessage(fd, msg_txt(10)); // Invisible: Off
+ clif->message(fd, msg_txt(10)); // Invisible: Off
// increment the number of pvp players on the map
map[sd->bl.m].users_pvp++;
@@ -971,7 +971,7 @@ ACMD_FUNC(hide)
} else {
sd->sc.option |= OPTION_INVISIBLE;
sd->vd.class_ = INVISIBLE_CLASS;
- clif->displaymessage(fd, msg_txt(11)); // Invisible: On
+ clif->message(fd, msg_txt(11)); // Invisible: On
// decrement the number of pvp players on the map
map[sd->bl.m].users_pvp--;
@@ -1011,7 +1011,7 @@ ACMD_FUNC(jobchange)
if (!found) {
text = atcommand_help_string(command);
if (text)
- clif->displaymessage(fd, text);
+ clif->message(fd, text);
return -1;
}
}
@@ -1020,21 +1020,21 @@ ACMD_FUNC(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)
) // Deny direct transformation into dummy jobs
- {clif->displaymessage(fd, msg_txt(923)); //"You can not change to this job by command."
+ {clif->message(fd, msg_txt(923)); //"You can not change to this job by command."
return 0;}
if (pcdb_checkid(job))
{
if (pc_jobchange(sd, job, upper) == 0)
- clif->displaymessage(fd, msg_txt(12)); // Your job has been changed.
+ clif->message(fd, msg_txt(12)); // Your job has been changed.
else {
- clif->displaymessage(fd, msg_txt(155)); // You are unable to change your job.
+ clif->message(fd, msg_txt(155)); // You are unable to change your job.
return -1;
}
} else {
text = atcommand_help_string(command);
if (text)
- clif->displaymessage(fd, text);
+ clif->message(fd, text);
return -1;
}
@@ -1048,9 +1048,9 @@ ACMD_FUNC(kill)
{
nullpo_retr(-1, sd);
status_kill(&sd->bl);
- clif->displaymessage(sd->fd, msg_txt(13)); // A pity! You've died.
+ clif->message(sd->fd, msg_txt(13)); // A pity! You've died.
if (fd != sd->fd)
- clif->displaymessage(fd, msg_txt(14)); // Character killed.
+ clif->message(fd, msg_txt(14)); // Character killed.
return 0;
}
@@ -1062,11 +1062,11 @@ ACMD_FUNC(alive)
nullpo_retr(-1, sd);
if (!status_revive(&sd->bl, 100, 100))
{
- clif->displaymessage(fd, msg_txt(667));
+ clif->message(fd, msg_txt(667));
return -1;
}
clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
- clif->displaymessage(fd, msg_txt(16)); // You've been revived! It's a miracle!
+ clif->message(fd, msg_txt(16)); // You've been revived! It's a miracle!
return 0;
}
@@ -1082,7 +1082,7 @@ ACMD_FUNC(kami)
if(*(command + 5) != 'c' && *(command + 5) != 'C') {
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(980)); // Please enter a message (usage: @kami <message>).
+ clif->message(fd, msg_txt(980)); // Please enter a message (usage: @kami <message>).
return -1;
}
@@ -1093,12 +1093,12 @@ ACMD_FUNC(kami)
intif_broadcast(atcmd_output, strlen(atcmd_output) + 1, (*(command + 5) == 'b' || *(command + 5) == 'B') ? 0x10 : 0);
} else {
if(!message || !*message || (sscanf(message, "%lx %199[^\n]", &color, atcmd_output) < 2)) {
- clif->displaymessage(fd, msg_txt(981)); // Please enter color and message (usage: @kamic <color> <message>).
+ clif->message(fd, msg_txt(981)); // Please enter color and message (usage: @kamic <color> <message>).
return -1;
}
if(color > 0xFFFFFF) {
- clif->displaymessage(fd, msg_txt(982)); // Invalid color.
+ clif->message(fd, msg_txt(982)); // Invalid color.
return -1;
}
intif_broadcast2(atcmd_output, strlen(atcmd_output) + 1, color, 0x190, 12, 0, 0);
@@ -1113,33 +1113,40 @@ ACMD_FUNC(heal)
{
int hp = 0, sp = 0; // [Valaris] thanks to fov
nullpo_retr(-1, sd);
-
+
sscanf(message, "%d %d", &hp, &sp);
+ WFIFOHEAD(fd, 4);
+ WFIFOW(fd, 0) = 0x23e;
+ WFIFOW(fd, 2) = hp;
+ WFIFOSET(fd, 4);
+ ShowDebug("Sending~! %d\n",hp);
+
+
// 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->displaymessage(fd, msg_txt(157)); // HP and SP have already been recovered.
+ clif->message(fd, msg_txt(157)); // HP and SP have already been recovered.
else
- clif->displaymessage(fd, msg_txt(17)); // HP, SP recovered.
+ clif->message(fd, msg_txt(17)); // HP, SP recovered.
return 0;
}
if ( hp > 0 && sp >= 0 ) {
if(!status_heal(&sd->bl, hp, sp, 0))
- clif->displaymessage(fd, msg_txt(157)); // HP and SP are already with the good value.
+ clif->message(fd, msg_txt(157)); // HP and SP are already with the good value.
else
- clif->displaymessage(fd, msg_txt(17)); // HP, SP recovered.
+ clif->message(fd, msg_txt(17)); // HP, SP recovered.
return 0;
}
if ( hp < 0 && sp <= 0 ) {
status_damage(NULL, &sd->bl, -hp, -sp, 0, 0);
clif->damage(&sd->bl,&sd->bl, gettick(), 0, 0, -hp, 0, 4, 0);
- clif->displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
+ clif->message(fd, msg_txt(156)); // HP or/and SP modified.
return 0;
}
@@ -1160,7 +1167,7 @@ ACMD_FUNC(heal)
status_damage(NULL, &sd->bl, 0, -sp, 0, 0);
}
- clif->displaymessage(fd, msg_txt(156)); // HP or/and SP modified.
+ clif->message(fd, msg_txt(156)); // HP or/and SP modified.
return 0;
}
@@ -1182,7 +1189,7 @@ ACMD_FUNC(item)
sscanf(message, "\"%99[^\"]\" %d", item_name, &number) < 1 &&
sscanf(message, "%99s %d", item_name, &number) < 1
)) {
- clif->displaymessage(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
+ clif->message(fd, msg_txt(983)); // Please enter an item name or ID (usage: @item <item name/ID> <quantity>).
return -1;
}
@@ -1192,7 +1199,7 @@ ACMD_FUNC(item)
if ((item_data = itemdb_searchname(item_name)) == NULL &&
(item_data = itemdb_exists(atoi(item_name))) == NULL)
{
- clif->displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_txt(19)); // Invalid item ID or name.
return -1;
}
@@ -1215,7 +1222,7 @@ ACMD_FUNC(item)
}
if (flag == 0)
- clif->displaymessage(fd, msg_txt(18)); // Item created.
+ clif->message(fd, msg_txt(18)); // Item created.
return 0;
}
@@ -1238,8 +1245,8 @@ ACMD_FUNC(item2)
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->displaymessage(fd, msg_txt(984)); // Please enter all parameters (usage: @item2 <item name/ID> <quantity>
- clif->displaymessage(fd, msg_txt(985)); // <identify_flag> <refine> <attribute> <card1> <card2> <card3> <card4>).
+ 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>).
return -1;
}
@@ -1287,9 +1294,9 @@ ACMD_FUNC(item2)
}
if (flag == 0)
- clif->displaymessage(fd, msg_txt(18)); // Item created.
+ clif->message(fd, msg_txt(18)); // Item created.
} else {
- clif->displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_txt(19)); // Invalid item ID or name.
return -1;
}
@@ -1309,7 +1316,7 @@ ACMD_FUNC(itemreset)
pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND);
}
}
- clif->displaymessage(fd, msg_txt(20)); // All of your items have been removed.
+ clif->message(fd, msg_txt(20)); // All of your items have been removed.
return 0;
}
@@ -1324,13 +1331,13 @@ ACMD_FUNC(baselevelup)
level = atoi(message);
if (!message || !*message || !level) {
- clif->displaymessage(fd, msg_txt(986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>).
+ clif->message(fd, msg_txt(986)); // Please enter a level adjustment (usage: @lvup/@blevel/@baselvlup <number of levels>).
return -1;
}
if (level > 0) {
if (sd->status.base_level >= pc_maxbaselv(sd)) { // check for max level by Valaris
- clif->displaymessage(fd, msg_txt(47)); // Base level can't go any higher.
+ clif->message(fd, msg_txt(47)); // Base level can't go any higher.
return -1;
} // End Addition
if ((unsigned int)level > pc_maxbaselv(sd) || (unsigned int)level > pc_maxbaselv(sd) - sd->status.base_level) // fix positiv overflow
@@ -1342,10 +1349,10 @@ ACMD_FUNC(baselevelup)
sd->status.base_level += (unsigned int)level;
status_percent_heal(&sd->bl, 100, 100);
clif->misceffect(&sd->bl, 0);
- clif->displaymessage(fd, msg_txt(21)); // Base level raised.
+ clif->message(fd, msg_txt(21)); // Base level raised.
} else {
if (sd->status.base_level == 1) {
- clif->displaymessage(fd, msg_txt(158)); // Base level can't go any lower.
+ clif->message(fd, msg_txt(158)); // Base level can't go any lower.
return -1;
}
level*=-1;
@@ -1360,7 +1367,7 @@ ACMD_FUNC(baselevelup)
else
sd->status.status_point -= status_point;
sd->status.base_level -= (unsigned int)level;
- clif->displaymessage(fd, msg_txt(22)); // Base level lowered.
+ clif->message(fd, msg_txt(22)); // Base level lowered.
}
sd->status.base_exp = 0;
clif->updatestatus(sd, SP_STATUSPOINT);
@@ -1385,12 +1392,12 @@ ACMD_FUNC(joblevelup)
level = atoi(message);
if (!message || !*message || !level) {
- clif->displaymessage(fd, msg_txt(987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>).
+ clif->message(fd, msg_txt(987)); // Please enter a level adjustment (usage: @joblvup/@jlevel/@joblvlup <number of levels>).
return -1;
}
if (level > 0) {
if (sd->status.job_level >= pc_maxjoblv(sd)) {
- clif->displaymessage(fd, msg_txt(23)); // Job level can't go any higher.
+ clif->message(fd, msg_txt(23)); // Job level can't go any higher.
return -1;
}
if ((unsigned int)level > pc_maxjoblv(sd) || (unsigned int)level > pc_maxjoblv(sd) - sd->status.job_level) // fix positiv overflow
@@ -1398,10 +1405,10 @@ ACMD_FUNC(joblevelup)
sd->status.job_level += (unsigned int)level;
sd->status.skill_point += level;
clif->misceffect(&sd->bl, 1);
- clif->displaymessage(fd, msg_txt(24)); // Job level raised.
+ clif->message(fd, msg_txt(24)); // Job level raised.
} else {
if (sd->status.job_level == 1) {
- clif->displaymessage(fd, msg_txt(159)); // Job level can't go any lower.
+ clif->message(fd, msg_txt(159)); // Job level can't go any lower.
return -1;
}
level *=-1;
@@ -1414,7 +1421,7 @@ ACMD_FUNC(joblevelup)
sd->status.skill_point = 0;
else
sd->status.skill_point -= level;
- clif->displaymessage(fd, msg_txt(25)); // Job level lowered.
+ clif->message(fd, msg_txt(25)); // Job level lowered.
}
sd->status.job_exp = 0;
clif->updatestatus(sd, SP_JOBLEVEL);
@@ -1440,7 +1447,7 @@ ACMD_FUNC(help)
help = config_lookup(&atcommand_config, "help");
if (help == NULL) {
- clif->displaymessage(fd, msg_txt(27)); // "Commands help is not available."
+ clif->message(fd, msg_txt(27)); // "Commands help is not available."
return -1;
}
@@ -1454,20 +1461,20 @@ ACMD_FUNC(help)
if (!pc_can_use_command(sd, command_name, COMMAND_ATCOMMAND)) {
sprintf(atcmd_output, msg_txt(153), message); // "%s is Unknown Command"
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
atcommand_get_suggestions(sd, command_name, true);
return -1;
}
if (!config_setting_lookup_string(help, command_name, &text)) {
sprintf(atcmd_output, msg_txt(988), atcommand_symbol, command_name); // There is no help for %c%s.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
atcommand_get_suggestions(sd, command_name, true);
return -1;
}
sprintf(atcmd_output, msg_txt(989), atcommand_symbol, command_name); // Help for command %c%s:
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
{ // Display aliases
DBIterator* iter;
@@ -1488,12 +1495,12 @@ ACMD_FUNC(help)
}
dbi_destroy(iter);
if (has_aliases)
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Destroy(&buf);
}
// Display help contents
- clif->displaymessage(fd, text);
+ clif->message(fd, text);
return 0;
}
@@ -1529,7 +1536,7 @@ ACMD_FUNC(pvpoff)
nullpo_retr(-1, sd);
if (!map[sd->bl.m].flag.pvp) {
- clif->displaymessage(fd, msg_txt(160)); // PvP is already Off.
+ clif->message(fd, msg_txt(160)); // PvP is already Off.
return -1;
}
@@ -1539,7 +1546,7 @@ ACMD_FUNC(pvpoff)
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
map_foreachinmap(atcommand_pvpoff_sub,sd->bl.m, BL_PC);
map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
- clif->displaymessage(fd, msg_txt(31)); // PvP: Off.
+ clif->message(fd, msg_txt(31)); // PvP: Off.
return 0;
}
@@ -1565,7 +1572,7 @@ ACMD_FUNC(pvpon)
nullpo_retr(-1, sd);
if (map[sd->bl.m].flag.pvp) {
- clif->displaymessage(fd, msg_txt(161)); // PvP is already On.
+ clif->message(fd, msg_txt(161)); // PvP is already On.
return -1;
}
@@ -1577,7 +1584,7 @@ ACMD_FUNC(pvpon)
map_foreachinmap(atcommand_pvpon_sub,sd->bl.m, BL_PC);
}
- clif->displaymessage(fd, msg_txt(32)); // PvP: On.
+ clif->message(fd, msg_txt(32)); // PvP: On.
return 0;
}
@@ -1590,14 +1597,14 @@ ACMD_FUNC(gvgoff)
nullpo_retr(-1, sd);
if (!map[sd->bl.m].flag.gvg) {
- clif->displaymessage(fd, msg_txt(162)); // GvG is already Off.
+ clif->message(fd, msg_txt(162)); // GvG is already Off.
return -1;
}
map[sd->bl.m].flag.gvg = 0;
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_NOTHING);
map_foreachinmap(atcommand_stopattack,sd->bl.m, BL_CHAR, 0);
- clif->displaymessage(fd, msg_txt(33)); // GvG: Off.
+ clif->message(fd, msg_txt(33)); // GvG: Off.
return 0;
}
@@ -1610,13 +1617,13 @@ ACMD_FUNC(gvgon)
nullpo_retr(-1, sd);
if (map[sd->bl.m].flag.gvg) {
- clif->displaymessage(fd, msg_txt(163)); // GvG is already On.
+ clif->message(fd, msg_txt(163)); // GvG is already On.
return -1;
}
map[sd->bl.m].flag.gvg = 1;
clif->map_property_mapall(sd->bl.m, MAPPROPERTY_AGITZONE);
- clif->displaymessage(fd, msg_txt(34)); // GvG: On.
+ clif->message(fd, msg_txt(34)); // GvG: On.
return 0;
}
@@ -1634,7 +1641,7 @@ ACMD_FUNC(model)
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>).
MIN_HAIR_STYLE, MAX_HAIR_STYLE, MIN_HAIR_COLOR, MAX_HAIR_COLOR, MIN_CLOTH_COLOR, MAX_CLOTH_COLOR);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
@@ -1644,9 +1651,9 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(36)); // Appearence changed.
+ clif->message(fd, msg_txt(36)); // Appearence changed.
} else {
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
@@ -1665,15 +1672,15 @@ ACMD_FUNC(dye)
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>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
if (cloth_color >= MIN_CLOTH_COLOR && cloth_color <= MAX_CLOTH_COLOR) {
pc_changelook(sd, LOOK_CLOTHES_COLOR, cloth_color);
- clif->displaymessage(fd, msg_txt(36)); // Appearence changed.
+ clif->message(fd, msg_txt(36)); // Appearence changed.
} else {
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
@@ -1692,15 +1699,15 @@ ACMD_FUNC(hair_style)
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>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
if (hair_style >= MIN_HAIR_STYLE && hair_style <= MAX_HAIR_STYLE) {
pc_changelook(sd, LOOK_HAIR, hair_style);
- clif->displaymessage(fd, msg_txt(36)); // Appearence changed.
+ clif->message(fd, msg_txt(36)); // Appearence changed.
} else {
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
@@ -1719,15 +1726,15 @@ ACMD_FUNC(hair_color)
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>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
if (hair_color >= MIN_HAIR_COLOR && hair_color <= MAX_HAIR_COLOR) {
pc_changelook(sd, LOOK_HAIR_COLOR, hair_color);
- clif->displaymessage(fd, msg_txt(36)); // Appearence changed.
+ clif->message(fd, msg_txt(36)); // Appearence changed.
} else {
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
@@ -1793,7 +1800,7 @@ ACMD_FUNC(go)
nullpo_retr(-1, sd);
if( map[sd->bl.m].flag.nogo && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE) ) {
- clif->displaymessage(sd->fd,msg_txt(995)); // You cannot use @go on this map.
+ clif->message(sd->fd,msg_txt(995)); // You cannot use @go on this map.
return 0;
}
@@ -1810,11 +1817,11 @@ ACMD_FUNC(go)
// attempt to find the text help string
text = atcommand_help_string( command );
- clif->displaymessage(fd, msg_txt(38)); // Invalid location number, or name.
+ clif->message(fd, msg_txt(38)); // Invalid location number, or name.
if( text )
{// send the text to the client
- clif->displaymessage( fd, text );
+ clif->message( fd, text );
}
return -1;
@@ -1913,21 +1920,21 @@ ACMD_FUNC(go)
{
m = map_mapname2mapid(data[town].map);
if (m >= 0 && map[m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(247));
+ clif->message(fd, msg_txt(247));
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(248));
+ clif->message(fd, msg_txt(248));
return -1;
}
if (pc_setpos(sd, mapindex_name2id(data[town].map), data[town].x, data[town].y, CLR_TELEPORT) == 0) {
- clif->displaymessage(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_txt(0)); // Warped.
} else {
- clif->displaymessage(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_txt(1)); // Map not found.
return -1;
}
} else { // if you arrive here, you have an error in town variable when reading of names
- clif->displaymessage(fd, msg_txt(38)); // Invalid location number or name.
+ clif->message(fd, msg_txt(38)); // Invalid location number or name.
return -1;
}
@@ -1955,7 +1962,7 @@ ACMD_FUNC(monster)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(80)); // Give the display name or monster name/id please.
+ clif->message(fd, msg_txt(80)); // Give the display name or monster name/id please.
return -1;
}
if (sscanf(message, "\"%23[^\"]\" %23s %d", name, monster, &number) > 1 ||
@@ -1971,7 +1978,7 @@ ACMD_FUNC(monster)
//As before, name may be already filled.
name[0] = '\0';
} else {
- clif->displaymessage(fd, msg_txt(80)); // Give a display name and monster name/id please.
+ clif->message(fd, msg_txt(80)); // Give a display name and monster name/id please.
return -1;
}
@@ -1979,12 +1986,12 @@ ACMD_FUNC(monster)
mob_id = mobdb_checkid(atoi(monster));
if (mob_id == 0) {
- clif->displaymessage(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
return -1;
}
if (mob_id == MOBID_EMPERIUM) {
- clif->displaymessage(fd, msg_txt(83)); // Monster 'Emperium' cannot be spawned.
+ clif->message(fd, msg_txt(83)); // Monster 'Emperium' cannot be spawned.
return -1;
}
@@ -2018,13 +2025,13 @@ ACMD_FUNC(monster)
if (count != 0)
if (number == count)
- clif->displaymessage(fd, msg_txt(39)); // All monster summoned!
+ clif->message(fd, msg_txt(39)); // All monster summoned!
else {
sprintf(atcmd_output, msg_txt(240), count); // %d monster(s) summoned!
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
else {
- clif->displaymessage(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
return -1;
}
@@ -2071,7 +2078,7 @@ ACMD_FUNC(killmonster)
map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag);
- clif->displaymessage(fd, msg_txt(165)); // All monsters killed!
+ clif->message(fd, msg_txt(165)); // All monsters killed!
return 0;
}
@@ -2088,27 +2095,27 @@ ACMD_FUNC(refine)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d %d", &position, &refine) < 2) {
- clif->displaymessage(fd, msg_txt(996)); // Please enter a position and an amount (usage: @refine <equip position> <+/- amount>).
+ 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->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(998), EQP_HAND_R); // %d: Right Hand
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(999), EQP_GARMENT); // %d: Garment
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1000), EQP_ACC_L); // %d: Left Accessory
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1001), EQP_ARMOR); // %d: Body Armor
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1002), EQP_HAND_L); // %d: Left Hand
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1003), EQP_SHOES); // %d: Shoes
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1004), EQP_ACC_R); // %d: Right Accessory
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1005), EQP_HEAD_TOP); // %d: Top Headgear
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1006), EQP_HEAD_MID); // %d: Mid Headgear
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
@@ -2143,12 +2150,12 @@ ACMD_FUNC(refine)
}
if (count == 0)
- clif->displaymessage(fd, msg_txt(166)); // No item has been refined.
+ clif->message(fd, msg_txt(166)); // No item has been refined.
else if (count == 1)
- clif->displaymessage(fd, msg_txt(167)); // 1 item has been refined.
+ clif->message(fd, msg_txt(167)); // 1 item has been refined.
else {
sprintf(atcmd_output, msg_txt(168), count); // %d items have been refined.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -2172,13 +2179,13 @@ ACMD_FUNC(produce)
sscanf(message, "\"%99[^\"]\" %d %d", item_name, &attribute, &star) < 1 &&
sscanf(message, "%99s %d %d", item_name, &attribute, &star) < 1
)) {
- clif->displaymessage(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_txt(1007)); // Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>).
return -1;
}
if ( (item_data = itemdb_searchname(item_name)) == NULL &&
(item_data = itemdb_exists(atoi(item_name))) == NULL ) {
- clif->displaymessage(fd, msg_txt(170)); //This item is not an equipment.
+ clif->message(fd, msg_txt(170)); //This item is not an equipment.
return -1;
}
@@ -2206,7 +2213,7 @@ ACMD_FUNC(produce)
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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
@@ -2226,14 +2233,14 @@ ACMD_FUNC(memo)
if( !message || !*message || sscanf(message, "%d", &position) < 1 )
{
int i;
- clif->displaymessage(sd->fd, msg_txt(668));
+ clif->message(sd->fd, msg_txt(668));
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
- clif->displaymessage(sd->fd, atcmd_output);
+ clif->message(sd->fd, atcmd_output);
}
return 0;
}
@@ -2241,7 +2248,7 @@ ACMD_FUNC(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>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
@@ -2268,7 +2275,7 @@ ACMD_FUNC(gat)
map_getcell(sd->bl.m, sd->bl.x + 1, sd->bl.y + y, CELL_GETTYPE),
map_getcell(sd->bl.m, sd->bl.x + 2, sd->bl.y + y, CELL_GETTYPE));
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -2283,7 +2290,7 @@ ACMD_FUNC(displaystatus)
nullpo_retr(-1, sd);
if (!message || !*message || (i = sscanf(message, "%d %d %d %d %d %d", &type, &flag, &tick, &val1, &val2, &val3)) < 1) {
- clif->displaymessage(fd, msg_txt(1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
+ clif->message(fd, msg_txt(1009)); // Please enter a status type/flag (usage: @displaystatus <status type> <flag> <tick> {<val1> {<val2> {<val3>}}}).
return -1;
}
if (i < 2) flag = 1;
@@ -2303,7 +2310,7 @@ ACMD_FUNC(statuspoint)
unsigned int new_status_point;
if (!message || !*message || (point = atoi(message)) == 0) {
- clif->displaymessage(fd, msg_txt(1010)); // Please enter a number (usage: @stpoint <number of points>).
+ clif->message(fd, msg_txt(1010)); // Please enter a number (usage: @stpoint <number of points>).
return -1;
}
@@ -2330,12 +2337,12 @@ ACMD_FUNC(statuspoint)
if (new_status_point != sd->status.status_point) {
sd->status.status_point = new_status_point;
clif->updatestatus(sd, SP_STATUSPOINT);
- clif->displaymessage(fd, msg_txt(174)); // Number of status points changed.
+ clif->message(fd, msg_txt(174)); // Number of status points changed.
} else {
if (point < 0)
- clif->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
else
- clif->displaymessage(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
return -1;
}
@@ -2352,7 +2359,7 @@ ACMD_FUNC(skillpoint)
nullpo_retr(-1, sd);
if (!message || !*message || (point = atoi(message)) == 0) {
- clif->displaymessage(fd, msg_txt(1011)); // Please enter a number (usage: @skpoint <number of points>).
+ clif->message(fd, msg_txt(1011)); // Please enter a number (usage: @skpoint <number of points>).
return -1;
}
@@ -2379,12 +2386,12 @@ ACMD_FUNC(skillpoint)
if (new_skill_point != sd->status.skill_point) {
sd->status.skill_point = new_skill_point;
clif->updatestatus(sd, SP_SKILLPOINT);
- clif->displaymessage(fd, msg_txt(175)); // Number of skill points changed.
+ clif->message(fd, msg_txt(175)); // Number of skill points changed.
} else {
if (point < 0)
- clif->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
else
- clif->displaymessage(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
return -1;
}
@@ -2400,20 +2407,20 @@ ACMD_FUNC(zeny)
nullpo_retr(-1, sd);
if (!message || !*message || (zeny = atoi(message)) == 0) {
- clif->displaymessage(fd, msg_txt(1012)); // Please enter an amount (usage: @zeny <amount>).
+ clif->message(fd, msg_txt(1012)); // Please enter an amount (usage: @zeny <amount>).
return -1;
}
if(zeny > 0){
if((ret=pc_getzeny(sd,zeny,LOG_TYPE_COMMAND,NULL)) == 1)
- clif->displaymessage(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_txt(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->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
}
- if(!ret) clif->displaymessage(fd, msg_txt(176)); //ret=0 mean cmd success
+ if(!ret) clif->message(fd, msg_txt(176)); //ret=0 mean cmd success
return 0;
}
@@ -2431,14 +2438,14 @@ ACMD_FUNC(param)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%d", &value) < 1 || value == 0) {
- clif->displaymessage(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
+ clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
return -1;
}
ARR_FIND( 0, ARRAYLENGTH(param), i, strcmpi(command+1, param[i]) == 0 );
if( i == ARRAYLENGTH(param) || i > MAX_STATUS_TYPE) { // normally impossible...
- clif->displaymessage(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
+ clif->message(fd, msg_txt(1013)); // Please enter a valid value (usage: @str/@agi/@vit/@int/@dex/@luk <+/-adjustment>).
return -1;
}
@@ -2467,12 +2474,12 @@ ACMD_FUNC(param)
clif->updatestatus(sd, SP_STR + i);
clif->updatestatus(sd, SP_USTR + i);
status_calc_pc(sd, 0);
- clif->displaymessage(fd, msg_txt(42)); // Stat changed.
+ clif->message(fd, msg_txt(42)); // Stat changed.
} else {
if (value < 0)
- clif->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
else
- clif->displaymessage(fd, msg_txt(149)); // Unable to increase the number/value.
+ clif->message(fd, msg_txt(149)); // Unable to increase the number/value.
return -1;
}
@@ -2526,12 +2533,12 @@ ACMD_FUNC(stat_all)
if (count > 0) { // if at least 1 stat modified
status_calc_pc(sd, 0);
- clif->displaymessage(fd, msg_txt(84)); // All stats changed!
+ clif->message(fd, msg_txt(84)); // All stats changed!
} else {
if (value < 0)
- clif->displaymessage(fd, msg_txt(177)); // You cannot decrease that stat anymore.
+ clif->message(fd, msg_txt(177)); // You cannot decrease that stat anymore.
else
- clif->displaymessage(fd, msg_txt(178)); // You cannot increase that stat anymore.
+ clif->message(fd, msg_txt(178)); // You cannot increase that stat anymore.
return -1;
}
@@ -2549,16 +2556,16 @@ ACMD_FUNC(guildlevelup)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%d", &level) < 1 || level == 0) {
- clif->displaymessage(fd, msg_txt(1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>).
+ clif->message(fd, msg_txt(1014)); // Please enter a valid level (usage: @guildlvup/@guildlvlup <# of levels>).
return -1;
}
- if (sd->status.guild_id <= 0 || (guild_info = guild_search(sd->status.guild_id)) == NULL) {
- clif->displaymessage(fd, msg_txt(43)); // You're not in a guild.
+ if (sd->status.guild_id <= 0 || (guild_info = sd->guild) == NULL) {
+ clif->message(fd, msg_txt(43)); // You're not in a guild.
return -1;
}
//if (strcmp(sd->status.name, guild_info->master) != 0) {
- // clif->displaymessage(fd, msg_txt(44)); // You're not the master of your guild.
+ // clif->message(fd, msg_txt(44)); // You're not the master of your guild.
// return -1;
//}
@@ -2570,9 +2577,9 @@ ACMD_FUNC(guildlevelup)
if (added_level != 0) {
intif_guild_change_basicinfo(guild_info->guild_id, GBI_GUILDLV, &added_level, sizeof(added_level));
- clif->displaymessage(fd, msg_txt(179)); // Guild level changed.
+ clif->message(fd, msg_txt(179)); // Guild level changed.
} else {
- clif->displaymessage(fd, msg_txt(45)); // Guild level change failed.
+ clif->message(fd, msg_txt(45)); // Guild level change failed.
return -1;
}
@@ -2589,7 +2596,7 @@ ACMD_FUNC(makeegg)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
+ clif->message(fd, msg_txt(1015)); // Please enter a monster/egg name/ID (usage: @makeegg <pet>).
return -1;
}
@@ -2612,7 +2619,7 @@ ACMD_FUNC(makeegg)
(short)pet_db[pet_id].EggID, 0, (short)pet_db[pet_id].intimate,
100, 0, 1, pet_db[pet_id].jname);
} else {
- clif->displaymessage(fd, msg_txt(180)); // The monster/egg name/id doesn't exist.
+ clif->message(fd, msg_txt(180)); // The monster/egg name/id doesn't exist.
return -1;
}
@@ -2628,7 +2635,7 @@ ACMD_FUNC(hatch)
if (sd->status.pet_id <= 0)
clif->sendegg(sd);
else {
- clif->displaymessage(fd, msg_txt(181)); // You already have a pet.
+ clif->message(fd, msg_txt(181)); // You already have a pet.
return -1;
}
@@ -2645,30 +2652,30 @@ ACMD_FUNC(petfriendly)
nullpo_retr(-1, sd);
if (!message || !*message || (friendly = atoi(message)) < 0) {
- clif->displaymessage(fd, msg_txt(1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
+ clif->message(fd, msg_txt(1016)); // Please enter a valid value (usage: @petfriendly <0-1000>).
return -1;
}
pd = sd->pd;
if (!pd) {
- clif->displaymessage(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
return -1;
}
if (friendly < 0 || friendly > 1000)
{
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
if (friendly == pd->pet.intimate) {
- clif->displaymessage(fd, msg_txt(183)); // Pet intimacy is already at maximum.
+ clif->message(fd, msg_txt(183)); // Pet intimacy is already at maximum.
return -1;
}
pet_set_intimate(pd, friendly);
clif->send_petstatus(sd);
- clif->displaymessage(fd, msg_txt(182)); // Pet intimacy changed.
+ clif->message(fd, msg_txt(182)); // Pet intimacy changed.
return 0;
}
@@ -2682,27 +2689,27 @@ ACMD_FUNC(pethungry)
nullpo_retr(-1, sd);
if (!message || !*message || (hungry = atoi(message)) < 0) {
- clif->displaymessage(fd, msg_txt(1017)); // Please enter a valid number (usage: @pethungry <0-100>).
+ clif->message(fd, msg_txt(1017)); // Please enter a valid number (usage: @pethungry <0-100>).
return -1;
}
pd = sd->pd;
if (!sd->status.pet_id || !pd) {
- clif->displaymessage(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
return -1;
}
if (hungry < 0 || hungry > 100) {
- clif->displaymessage(fd, msg_txt(37)); // An invalid number was specified.
+ clif->message(fd, msg_txt(37)); // An invalid number was specified.
return -1;
}
if (hungry == pd->pet.hungry) {
- clif->displaymessage(fd, msg_txt(186)); // Pet hunger is already at maximum.
+ clif->message(fd, msg_txt(186)); // Pet hunger is already at maximum.
return -1;
}
pd->pet.hungry = hungry;
clif->send_petstatus(sd);
- clif->displaymessage(fd, msg_txt(185)); // Pet hunger changed.
+ clif->message(fd, msg_txt(185)); // Pet hunger changed.
return 0;
}
@@ -2715,19 +2722,19 @@ ACMD_FUNC(petrename)
struct pet_data *pd;
nullpo_retr(-1, sd);
if (!sd->status.pet_id || !sd->pd) {
- clif->displaymessage(fd, msg_txt(184)); // Sorry, but you have no pet.
+ clif->message(fd, msg_txt(184)); // Sorry, but you have no pet.
return -1;
}
pd = sd->pd;
if (!pd->pet.rename_flag) {
- clif->displaymessage(fd, msg_txt(188)); // You can already rename your pet.
+ clif->message(fd, msg_txt(188)); // You can already rename your pet.
return -1;
}
pd->pet.rename_flag = 0;
intif_save_petdata(sd->status.account_id, &pd->pet);
clif->send_petstatus(sd);
- clif->displaymessage(fd, msg_txt(187)); // You can now rename your pet.
+ clif->message(fd, msg_txt(187)); // You can now rename your pet.
return 0;
}
@@ -2741,28 +2748,28 @@ ACMD_FUNC(recall) {
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1018)); // Please enter a player name (usage: @recall <char name/ID>).
+ clif->message(fd, msg_txt(1018)); // Please enter a player name (usage: @recall <char name/ID>).
return -1;
}
if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL)
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->displaymessage(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player.
+ clif->message(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player.
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(1019)); // You are not authorized to warp someone to this map.
+ clif->message(fd, msg_txt(1019)); // You are not authorized to warp someone to this map.
return -1;
}
if (pl_sd->bl.m >= 0 && map[pl_sd->bl.m].flag.nowarp && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(1020)); // You are not authorized to warp this player from their map.
+ clif->message(fd, msg_txt(1020)); // You are not authorized to warp this player from their map.
return -1;
}
if (pl_sd->bl.m == sd->bl.m && pl_sd->bl.x == sd->bl.x && pl_sd->bl.y == sd->bl.y) {
@@ -2770,7 +2777,7 @@ ACMD_FUNC(recall) {
}
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!
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -2786,12 +2793,12 @@ ACMD_FUNC(char_block)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1021)); // Please enter a player name (usage: @charblock/@block <char name>).
+ clif->message(fd, msg_txt(1021)); // Please enter a player name (usage: @charblock/@block <char name>).
return -1;
}
chrif_char_ask_name(sd->status.account_id, atcmd_player_name, 1, 0, 0, 0, 0, 0, 0); // type: 1 - block
- clif->displaymessage(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
return 0;
}
@@ -2823,7 +2830,7 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(1022)); // Please enter ban time and a player name (usage: @charban/@ban/@banish/@charbanish <time> <char name>).
+ clif->message(fd, msg_txt(1022)); // Please enter ban time and a player name (usage: @charban/@ban/@banish/@charbanish <time> <char name>).
return -1;
}
@@ -2867,7 +2874,7 @@ ACMD_FUNC(char_ban)
}
}
if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0 && second == 0) {
- clif->displaymessage(fd, msg_txt(85)); // Invalid time for ban command.
+ clif->message(fd, msg_txt(85)); // Invalid time for ban command.
return -1;
}
/**
@@ -2883,12 +2890,12 @@ ACMD_FUNC(char_ban)
tmtime->tm_sec = tmtime->tm_sec + second;
timestamp = mktime(tmtime);
if( timestamp <= time(NULL) && !pc_can_use_command(sd, "unban", COMMAND_ATCOMMAND) ) {
- clif->displaymessage(fd,msg_txt(1023)); // You are not allowed to reduce the length of a ban.
+ clif->message(fd,msg_txt(1023)); // You are not allowed to reduce the length of a ban.
return -1;
}
chrif_char_ask_name(sd->status.account_id, atcmd_player_name, 2, year, month, day, hour, minute, second); // type: 2 - ban
- clif->displaymessage(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
return 0;
}
@@ -2903,13 +2910,13 @@ ACMD_FUNC(char_unblock)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1024)); // Please enter a player name (usage: @charunblock <char name>).
+ clif->message(fd, msg_txt(1024)); // Please enter a player name (usage: @charunblock <char name>).
return -1;
}
// 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->displaymessage(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
return 0;
}
@@ -2924,13 +2931,13 @@ ACMD_FUNC(char_unban)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1025)); // Please enter a player name (usage: @charunban <char name>).
+ clif->message(fd, msg_txt(1025)); // Please enter a player name (usage: @charunban <char name>).
return -1;
}
// send answer to login server via char-server
chrif_char_ask_name(sd->status.account_id, atcmd_player_name, 4, 0, 0, 0, 0, 0, 0); // type: 4 - unban
- clif->displaymessage(fd, msg_txt(88)); // Character name sent to char-server to ask it.
+ clif->message(fd, msg_txt(88)); // Character name sent to char-server to ask it.
return 0;
}
@@ -2945,7 +2952,7 @@ ACMD_FUNC(night)
if (night_flag != 1) {
map_night_timer(night_timer_tid, 0, 0, 1);
} else {
- clif->displaymessage(fd, msg_txt(89)); // Night mode is already enabled.
+ clif->message(fd, msg_txt(89)); // Night mode is already enabled.
return -1;
}
@@ -2962,7 +2969,7 @@ ACMD_FUNC(day)
if (night_flag != 0) {
map_day_timer(day_timer_tid, 0, 0, 1);
} else {
- clif->displaymessage(fd, msg_txt(90)); // Day mode is already enabled.
+ clif->message(fd, msg_txt(90)); // Day mode is already enabled.
return -1;
}
@@ -2986,12 +2993,12 @@ ACMD_FUNC(doom)
{
status_kill(&pl_sd->bl);
clif->specialeffect(&pl_sd->bl,450,AREA);
- clif->displaymessage(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
+ clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
}
}
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(62)); // Judgement was made.
+ clif->message(fd, msg_txt(62)); // Judgement was made.
return 0;
}
@@ -3013,12 +3020,12 @@ ACMD_FUNC(doommap)
{
status_kill(&pl_sd->bl);
clif->specialeffect(&pl_sd->bl,450,AREA);
- clif->displaymessage(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
+ clif->message(pl_sd->fd, msg_txt(61)); // The holy messenger has given judgement.
}
}
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(62)); // Judgement was made.
+ clif->message(fd, msg_txt(62)); // Judgement was made.
return 0;
}
@@ -3031,7 +3038,7 @@ static 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->displaymessage(sd->fd, msg_txt(63)); // Mercy has been shown.
+ clif->message(sd->fd, msg_txt(63)); // Mercy has been shown.
}
/*==========================================
@@ -3050,7 +3057,7 @@ ACMD_FUNC(raise)
atcommand_raise_sub(pl_sd);
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(64)); // Mercy has been granted.
+ clif->message(fd, msg_txt(64)); // Mercy has been granted.
return 0;
}
@@ -3071,7 +3078,7 @@ ACMD_FUNC(raisemap)
atcommand_raise_sub(pl_sd);
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(64)); // Mercy has been granted.
+ clif->message(fd, msg_txt(64)); // Mercy has been granted.
return 0;
}
@@ -3087,19 +3094,19 @@ ACMD_FUNC(kick)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1026)); // Please enter a player name (usage: @kick <char name/ID>).
+ clif->message(fd, msg_txt(1026)); // Please enter a player name (usage: @kick <char name/ID>).
return -1;
}
if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL)
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
@@ -3127,7 +3134,7 @@ ACMD_FUNC(kickall)
}
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(195)); // All players have been kicked!
+ clif->message(fd, msg_txt(195)); // All players have been kicked!
return 0;
}
@@ -3141,7 +3148,7 @@ ACMD_FUNC(allskill)
pc_allskillup(sd); // all skills
sd->status.skill_point = 0; // 0 skill points
clif->updatestatus(sd, SP_SKILLPOINT); // update
- clif->displaymessage(fd, msg_txt(76)); // All skills have been added to your skill tree.
+ clif->message(fd, msg_txt(76)); // All skills have been added to your skill tree.
return 0;
}
@@ -3162,30 +3169,30 @@ ACMD_FUNC(questskill)
text = atcommand_help_string( command );
// send the error message as always
- clif->displaymessage(fd, msg_txt(1027)); // Please enter a quest skill number.
+ clif->message(fd, msg_txt(1027)); // Please enter a quest skill number.
if( text )
{// send the skill ID list associated with this command
- clif->displaymessage( fd, text );
+ clif->message( fd, text );
}
return -1;
}
if (skill_id >= MAX_SKILL_DB) {
- clif->displaymessage(fd, msg_txt(198)); // This skill number doesn't exist.
+ clif->message(fd, msg_txt(198)); // This skill number doesn't exist.
return -1;
}
if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) {
- clif->displaymessage(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
+ clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
return -1;
}
if (pc_checkskill(sd, skill_id) > 0) {
- clif->displaymessage(fd, msg_txt(196)); // You already have this quest skill.
+ clif->message(fd, msg_txt(196)); // You already have this quest skill.
return -1;
}
pc_skill(sd, skill_id, 1, 0);
- clif->displaymessage(fd, msg_txt(70)); // You have learned the skill.
+ clif->message(fd, msg_txt(70)); // You have learned the skill.
return 0;
}
@@ -3206,32 +3213,32 @@ ACMD_FUNC(lostskill)
text = atcommand_help_string( command );
// send the error message as always
- clif->displaymessage(fd, msg_txt(1027)); // Please enter a quest skill number.
+ clif->message(fd, msg_txt(1027)); // Please enter a quest skill number.
if( text )
{// send the skill ID list associated with this command
- clif->displaymessage( fd, text );
+ clif->message( fd, text );
}
return -1;
}
if (skill_id >= MAX_SKILL) {
- clif->displaymessage(fd, msg_txt(198)); // This skill number doesn't exist.
+ clif->message(fd, msg_txt(198)); // This skill number doesn't exist.
return -1;
}
if (!(skill->get_inf2(skill_id) & INF2_QUEST_SKILL)) {
- clif->displaymessage(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
+ clif->message(fd, msg_txt(197)); // This skill number doesn't exist or isn't a quest skill.
return -1;
}
if (pc_checkskill(sd, skill_id) == 0) {
- clif->displaymessage(fd, msg_txt(201)); // You don't have this quest skill.
+ clif->message(fd, msg_txt(201)); // You don't have this quest skill.
return -1;
}
sd->status.skill[skill_id].lv = 0;
sd->status.skill[skill_id].flag = 0;
clif->deleteskill(sd,skill_id);
- clif->displaymessage(fd, msg_txt(71)); // You have forgotten the skill.
+ clif->message(fd, msg_txt(71)); // You have forgotten the skill.
return 0;
}
@@ -3251,7 +3258,7 @@ ACMD_FUNC(spiritball)
{
char msg[CHAT_SIZE_MAX];
safesnprintf(msg, sizeof(msg), msg_txt(1028), max_spiritballs); // Please enter a party name (usage: @party <party_name>).
- clif->displaymessage(fd, msg);
+ clif->message(fd, msg);
return -1;
}
@@ -3275,7 +3282,7 @@ ACMD_FUNC(party)
memset(party, '\0', sizeof(party));
if (!message || !*message || sscanf(message, "%23[^\n]", party) < 1) {
- clif->displaymessage(fd, msg_txt(1029)); // Please enter a party name (usage: @party <party_name>).
+ clif->message(fd, msg_txt(1029)); // Please enter a party name (usage: @party <party_name>).
return -1;
}
@@ -3296,7 +3303,7 @@ ACMD_FUNC(guild)
memset(guild, '\0', sizeof(guild));
if (!message || !*message || sscanf(message, "%23[^\n]", guild) < 1) {
- clif->displaymessage(fd, msg_txt(1030)); // Please enter a guild name (usage: @guild <guild_name>).
+ clif->message(fd, msg_txt(1030)); // Please enter a guild name (usage: @guild <guild_name>).
return -1;
}
@@ -3314,7 +3321,7 @@ ACMD_FUNC(breakguild)
if (sd->status.guild_id) { // Check if the player has a guild
struct guild *g;
- g = guild_search(sd->status.guild_id); // Search the guild
+ g = sd->guild; // Search the guild
if (g) { // Check if guild was found
if (sd->state.gmaster_flag) { // Check if player is guild master
int ret = 0;
@@ -3325,15 +3332,15 @@ ACMD_FUNC(breakguild)
return -1; // Something went wrong
}
} else { // Not guild master
- clif->displaymessage(fd, msg_txt(1181)); // You need to be a Guild Master to use this command.
+ clif->message(fd, msg_txt(1181)); // You need to be a Guild Master to use this command.
return -1;
}
} else { // Guild was not found. HOW?
- clif->displaymessage(fd, msg_txt(252)); // You are not in a guild.
+ clif->message(fd, msg_txt(252)); // You are not in a guild.
return -1;
}
} else { // Player does not have a guild
- clif->displaymessage(fd, msg_txt(252)); // You are not in a guild.
+ clif->message(fd, msg_txt(252)); // You are not in a guild.
return -1;
}
return 0;
@@ -3346,13 +3353,13 @@ ACMD_FUNC(agitstart)
{
nullpo_retr(-1, sd);
if (agit_flag == 1) {
- clif->displaymessage(fd, msg_txt(73)); // War of Emperium is currently in progress.
+ clif->message(fd, msg_txt(73)); // War of Emperium is currently in progress.
return -1;
}
agit_flag = 1;
guild_agit_start();
- clif->displaymessage(fd, msg_txt(72)); // War of Emperium has been initiated.
+ clif->message(fd, msg_txt(72)); // War of Emperium has been initiated.
return 0;
}
@@ -3364,13 +3371,13 @@ ACMD_FUNC(agitstart2)
{
nullpo_retr(-1, sd);
if (agit2_flag == 1) {
- clif->displaymessage(fd, msg_txt(404)); // "War of Emperium SE is currently in progress."
+ clif->message(fd, msg_txt(404)); // "War of Emperium SE is currently in progress."
return -1;
}
agit2_flag = 1;
guild_agit2_start();
- clif->displaymessage(fd, msg_txt(403)); // "War of Emperium SE has been initiated."
+ clif->message(fd, msg_txt(403)); // "War of Emperium SE has been initiated."
return 0;
}
@@ -3382,13 +3389,13 @@ ACMD_FUNC(agitend)
{
nullpo_retr(-1, sd);
if (agit_flag == 0) {
- clif->displaymessage(fd, msg_txt(75)); // War of Emperium is currently not in progress.
+ clif->message(fd, msg_txt(75)); // War of Emperium is currently not in progress.
return -1;
}
agit_flag = 0;
guild_agit_end();
- clif->displaymessage(fd, msg_txt(74)); // War of Emperium has been ended.
+ clif->message(fd, msg_txt(74)); // War of Emperium has been ended.
return 0;
}
@@ -3400,13 +3407,13 @@ ACMD_FUNC(agitend2)
{
nullpo_retr(-1, sd);
if (agit2_flag == 0) {
- clif->displaymessage(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress."
+ clif->message(fd, msg_txt(406)); // "War of Emperium SE is currently not in progress."
return -1;
}
agit2_flag = 0;
guild_agit2_end();
- clif->displaymessage(fd, msg_txt(405)); // "War of Emperium SE has been ended."
+ clif->message(fd, msg_txt(405)); // "War of Emperium SE has been ended."
return 0;
}
@@ -3436,24 +3443,24 @@ ACMD_FUNC(idsearch)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%99s", item_name) < 0) {
- clif->displaymessage(fd, msg_txt(1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>).
+ clif->message(fd, msg_txt(1031)); // Please enter part of an item name (usage: @idsearch <part_of_item_name>).
return -1;
}
sprintf(atcmd_output, msg_txt(77), item_name); // The reference result of '%s' (name: id):
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
match = itemdb_searchname_array(item_array, MAX_SEARCH, item_name);
if (match > MAX_SEARCH) {
sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, match);
- clif->displaymessage(fd, atcmd_output);
+ 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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
sprintf(atcmd_output, msg_txt(79), match); // It is %d affair above.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -3471,7 +3478,7 @@ ACMD_FUNC(recallall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
+ clif->message(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
return -1;
}
@@ -3496,10 +3503,10 @@ ACMD_FUNC(recallall)
}
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(92)); // All characters recalled!
+ clif->message(fd, msg_txt(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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -3521,19 +3528,19 @@ ACMD_FUNC(guildrecall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->displaymessage(fd, msg_txt(1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>).
+ clif->message(fd, msg_txt(1034)); // Please enter a guild name/ID (usage: @guildrecall <guild_name/ID>).
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
+ clif->message(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
return -1;
}
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->displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
return -1;
}
@@ -3555,10 +3562,10 @@ ACMD_FUNC(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.
- clif->displaymessage(fd, atcmd_output);
+ 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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -3580,19 +3587,19 @@ ACMD_FUNC(partyrecall)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) {
- clif->displaymessage(fd, msg_txt(1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>).
+ clif->message(fd, msg_txt(1035)); // Please enter a party name/ID (usage: @partyrecall <party_name/ID>).
return -1;
}
if (sd->bl.m >= 0 && map[sd->bl.m].flag.nowarpto && !pc_has_permission(sd, PC_PERM_WARP_ANYWHERE)) {
- clif->displaymessage(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
+ clif->message(fd, msg_txt(1032)); // You are not authorized to warp somenone to your current map.
return -1;
}
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->displaymessage(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online.
+ clif->message(fd, msg_txt(96)); // Incorrect name or ID, or no one from the party is online.
return -1;
}
@@ -3614,10 +3621,10 @@ ACMD_FUNC(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.
- clif->displaymessage(fd, atcmd_output);
+ 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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -3630,7 +3637,7 @@ ACMD_FUNC(reloaditemdb)
{
nullpo_retr(-1, sd);
itemdb_reload();
- clif->displaymessage(fd, msg_txt(97)); // Item database has been reloaded.
+ clif->message(fd, msg_txt(97)); // Item database has been reloaded.
return 0;
}
@@ -3647,7 +3654,7 @@ ACMD_FUNC(reloadmobdb)
read_mercenarydb();
read_mercenary_skilldb();
reload_elementaldb();
- clif->displaymessage(fd, msg_txt(98)); // Monster database has been reloaded.
+ clif->message(fd, msg_txt(98)); // Monster database has been reloaded.
return 0;
}
@@ -3662,7 +3669,7 @@ ACMD_FUNC(reloadskilldb)
merc_skill_reload();
reload_elemental_skilldb();
read_mercenary_skilldb();
- clif->displaymessage(fd, msg_txt(99)); // Skill database has been reloaded.
+ clif->message(fd, msg_txt(99)); // Skill database has been reloaded.
return 0;
}
@@ -3675,14 +3682,14 @@ ACMD_FUNC(reloadatcommand) {
config_t run_test;
if (conf_read_file(&run_test, "conf/groups.conf")) {
- clif->displaymessage(fd, msg_txt(1036)); // Error reading groups.conf, reload failed.
+ clif->message(fd, msg_txt(1036)); // Error reading groups.conf, reload failed.
return -1;
}
config_destroy(&run_test);
if (conf_read_file(&run_test, ATCOMMAND_CONF_FILENAME)) {
- clif->displaymessage(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed.
+ clif->message(fd, msg_txt(1037)); // Error reading atcommand.conf, reload failed.
return -1;
}
@@ -3690,7 +3697,7 @@ ACMD_FUNC(reloadatcommand) {
atcommand_doload();
pc_groups_reload();
- clif->displaymessage(fd, msg_txt(254));
+ clif->message(fd, msg_txt(254));
return 0;
}
/*==========================================
@@ -3738,7 +3745,7 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(255));
+ clif->message(fd, msg_txt(255));
return 0;
}
/*==========================================
@@ -3747,7 +3754,7 @@ ACMD_FUNC(reloadbattleconf)
ACMD_FUNC(reloadstatusdb)
{
status_readdb();
- clif->displaymessage(fd, msg_txt(256));
+ clif->message(fd, msg_txt(256));
return 0;
}
/*==========================================
@@ -3756,7 +3763,7 @@ ACMD_FUNC(reloadstatusdb)
ACMD_FUNC(reloadpcdb)
{
pc_readdb();
- clif->displaymessage(fd, msg_txt(257));
+ clif->message(fd, msg_txt(257));
return 0;
}
@@ -3766,7 +3773,7 @@ ACMD_FUNC(reloadpcdb)
ACMD_FUNC(reloadmotd)
{
pc_read_motd();
- clif->displaymessage(fd, msg_txt(268));
+ clif->message(fd, msg_txt(268));
return 0;
}
@@ -3784,7 +3791,7 @@ ACMD_FUNC(reloadscript)
script_reload();
npc_reload();
- clif->displaymessage(fd, msg_txt(100)); // Scripts have been reloaded.
+ clif->message(fd, msg_txt(100)); // Scripts have been reloaded.
return 0;
}
@@ -3817,7 +3824,7 @@ ACMD_FUNC(mapinfo) {
sscanf(message, "%d %23[^\n]", &list, mapname);
if (list < 0 || list > 3) {
- clif->displaymessage(fd, msg_txt(1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
+ clif->message(fd, msg_txt(1038)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
return -1;
}
@@ -3829,12 +3836,12 @@ ACMD_FUNC(mapinfo) {
}
if (m_id < 0) {
- clif->displaymessage(fd, msg_txt(1)); // Map not found.
+ clif->message(fd, msg_txt(1)); // Map not found.
return -1;
}
m_index = mapindex_name2id(mapname); //This one shouldn't fail since the previous seek did not.
- clif->displaymessage(fd, msg_txt(1039)); // ------ Map Info ------
+ clif->message(fd, msg_txt(1039)); // ------ Map Info ------
// count chats (for initial message)
chat_num = 0;
@@ -3850,18 +3857,18 @@ ACMD_FUNC(mapinfo) {
mapit_free(iter);
sprintf(atcmd_output, msg_txt(1040), mapname, map[m_id].zone->name, map[m_id].users, map[m_id].npc_num, chat_num, vend_num); // Map: %s (Zone:%s) | Players: %d | NPCs: %d | Chats: %d | Vendings: %d
- clif->displaymessage(fd, atcmd_output);
- clif->displaymessage(fd, msg_txt(1041)); // ------ Map Flags ------
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1041)); // ------ Map Flags ------
if (map[m_id].flag.town)
- clif->displaymessage(fd, msg_txt(1042)); // Town Map
+ clif->message(fd, msg_txt(1042)); // Town Map
if (battle_config.autotrade_mapflag == map[m_id].flag.autotrade)
- clif->displaymessage(fd, msg_txt(1043)); // Autotrade Enabled
+ clif->message(fd, msg_txt(1043)); // Autotrade Enabled
else
- clif->displaymessage(fd, msg_txt(1044)); // Autotrade Disabled
+ clif->message(fd, msg_txt(1044)); // Autotrade Disabled
if (map[m_id].flag.battleground)
- clif->displaymessage(fd, msg_txt(1045)); // Battlegrounds ON
+ clif->message(fd, msg_txt(1045)); // Battlegrounds ON
strcpy(atcmd_output,msg_txt(1046)); // PvP Flags:
if (map[m_id].flag.pvp)
@@ -3874,7 +3881,7 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1050)); // NightmareDrop |
if (map[m_id].flag.pvp_nocalcrank)
strcat(atcmd_output, msg_txt(1051)); // NoCalcRank |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output,msg_txt(1052)); // GvG Flags:
if (map[m_id].flag.gvg)
@@ -3885,7 +3892,7 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1055)); // GvG Castle |
if (map[m_id].flag.gvg_noparty)
strcat(atcmd_output, msg_txt(1056)); // NoParty |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output,msg_txt(1057)); // Teleport Flags:
if (map[m_id].flag.noteleport)
@@ -3902,23 +3909,23 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1063)); // NoGo |
if (map[m_id].flag.nomemo)
strcat(atcmd_output, msg_txt(1064)); // NoMemo |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1065), // No Exp Penalty: %s | No Zeny Penalty: %s
(map[m_id].flag.noexppenalty) ? msg_txt(1066) : msg_txt(1067), (map[m_id].flag.nozenypenalty) ? msg_txt(1066) : msg_txt(1067)); // On / Off
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
if (map[m_id].flag.nosave) {
if (!map[m_id].save.map)
- clif->displaymessage(fd, msg_txt(1068)); // No Save (Return to last Save Point)
+ clif->message(fd, msg_txt(1068)); // No Save (Return to last Save Point)
else if (map[m_id].save.x == -1 || map[m_id].save.y == -1 ) {
sprintf(atcmd_output, msg_txt(1069), mapindex_id2name(map[m_id].save.map)); // No Save, Save Point: %s,Random
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
else {
sprintf(atcmd_output, msg_txt(1070), // No Save, Save Point: %s,%d,%d
mapindex_id2name(map[m_id].save.map),map[m_id].save.x,map[m_id].save.y);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
@@ -3939,7 +3946,7 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1078)); // Leaves |
if (map[m_id].flag.nightenabled)
strcat(atcmd_output, msg_txt(1080)); // Displays Night |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output,msg_txt(1081)); // Other Flags:
if (map[m_id].flag.nobranch)
@@ -3958,7 +3965,7 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1088)); // AllowKS |
if (map[m_id].flag.reset)
strcat(atcmd_output, msg_txt(1089)); // Reset |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output,msg_txt(1090)); // Other Flags:
if (map[m_id].nocommand)
@@ -3975,27 +3982,27 @@ ACMD_FUNC(mapinfo) {
strcat(atcmd_output, msg_txt(1096)); // PartyLock |
if (map[m_id].flag.guildlock)
strcat(atcmd_output, msg_txt(1097)); // GuildLock |
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
switch (list) {
case 0:
// Do nothing. It's list 0, no additional display.
break;
case 1:
- clif->displaymessage(fd, msg_txt(1098)); // ----- Players in Map -----
+ clif->message(fd, msg_txt(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
pl_sd->status.name, pl_sd->fd, pl_sd->bl.x, pl_sd->bl.y);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
mapit_free(iter);
break;
case 2:
- clif->displaymessage(fd, msg_txt(1100)); // ----- NPCs in Map -----
+ clif->message(fd, msg_txt(1100)); // ----- NPCs in Map -----
for (i = 0; i < map[m_id].npc_num;)
{
nd = map[m_id].npc[i];
@@ -4017,11 +4024,11 @@ ACMD_FUNC(mapinfo) {
else
sprintf(atcmd_output, msg_txt(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->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
break;
case 3:
- clif->displaymessage(fd, msg_txt(1113)); // ----- Chats in Map -----
+ clif->message(fd, msg_txt(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) )
{
@@ -4031,16 +4038,16 @@ ACMD_FUNC(mapinfo) {
{
sprintf(atcmd_output, msg_txt(1114), // Chat: %s | Player: %s | Location: %d %d
cd->title, pl_sd->status.name, cd->bl.x, cd->bl.y);
- clif->displaymessage(fd, atcmd_output);
+ 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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
mapit_free(iter);
break;
default: // normally impossible to arrive here
- clif->displaymessage(fd, msg_txt(1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
+ clif->message(fd, msg_txt(1118)); // Please enter at least one valid list number (usage: @mapinfo <0-3> <map>).
return -1;
break;
}
@@ -4056,36 +4063,36 @@ ACMD_FUNC(mount_peco)
nullpo_retr(-1, sd);
if (sd->disguise) {
- clif->displaymessage(fd, msg_txt(212)); // Cannot mount while in disguise.
+ clif->message(fd, msg_txt(212)); // Cannot mount while in disguise.
return -1;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT && pc_checkskill(sd,RK_DRAGONTRAINING) > 0 ) {
if( !(sd->sc.option&OPTION_DRAGON1) ) {
- clif->displaymessage(sd->fd,msg_txt(1119)); // You have mounted your Dragon.
+ clif->message(sd->fd,msg_txt(1119)); // You have mounted your Dragon.
pc_setoption(sd, sd->sc.option|OPTION_DRAGON1);
} else {
- clif->displaymessage(sd->fd,msg_txt(1120)); // You have released your Dragon.
+ clif->message(sd->fd,msg_txt(1120)); // You have released your Dragon.
pc_setoption(sd, sd->sc.option&~OPTION_DRAGON1);
}
return 0;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_RANGER && pc_checkskill(sd,RA_WUGRIDER) > 0 ) {
if( !pc_isridingwug(sd) ) {
- clif->displaymessage(sd->fd,msg_txt(1121)); // You have mounted your Warg.
+ clif->message(sd->fd,msg_txt(1121)); // You have mounted your Warg.
pc_setoption(sd, sd->sc.option|OPTION_WUGRIDER);
} else {
- clif->displaymessage(sd->fd,msg_txt(1122)); // You have released your Warg.
+ clif->message(sd->fd,msg_txt(1122)); // You have released your Warg.
pc_setoption(sd, sd->sc.option&~OPTION_WUGRIDER);
}
return 0;
}
if( (sd->class_&MAPID_THIRDMASK) == MAPID_MECHANIC ) {
if( !pc_ismadogear(sd) ) {
- clif->displaymessage(sd->fd,msg_txt(1123)); // You have mounted your Mado Gear.
+ clif->message(sd->fd,msg_txt(1123)); // You have mounted your Mado Gear.
pc_setoption(sd, sd->sc.option|OPTION_MADOGEAR);
} else {
- clif->displaymessage(sd->fd,msg_txt(1124)); // You have released your Mado Gear.
+ clif->message(sd->fd,msg_txt(1124)); // You have released your Mado Gear.
pc_setoption(sd, sd->sc.option&~OPTION_MADOGEAR);
}
return 0;
@@ -4093,15 +4100,15 @@ ACMD_FUNC(mount_peco)
if (!pc_isriding(sd)) { // if actually no peco
if (!pc_checkskill(sd, KN_RIDING)) {
- clif->displaymessage(fd, msg_txt(213)); // You can not mount a Peco Peco with your current job.
+ clif->message(fd, msg_txt(213)); // You can not mount a Peco Peco with your current job.
return -1;
}
pc_setoption(sd, sd->sc.option | OPTION_RIDING);
- clif->displaymessage(fd, msg_txt(102)); // You have mounted a Peco Peco.
+ clif->message(fd, msg_txt(102)); // You have mounted a Peco Peco.
} else {//Dismount
pc_setoption(sd, sd->sc.option & ~OPTION_RIDING);
- clif->displaymessage(fd, msg_txt(214)); // You have released your Peco Peco.
+ clif->message(fd, msg_txt(214)); // You have released your Peco Peco.
}
return 0;
@@ -4121,11 +4128,11 @@ ACMD_FUNC(guildspy)
if (!enable_spy)
{
- clif->displaymessage(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
+ clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
return -1;
}
if (!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->displaymessage(fd, msg_txt(1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>).
+ clif->message(fd, msg_txt(1126)); // Please enter a guild name/ID (usage: @guildspy <guild_name/ID>).
return -1;
}
@@ -4134,14 +4141,14 @@ ACMD_FUNC(guildspy)
if (sd->guildspy == g->guild_id) {
sd->guildspy = 0;
sprintf(atcmd_output, msg_txt(103), g->name); // No longer spying on the %s guild.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
} else {
sd->guildspy = g->guild_id;
sprintf(atcmd_output, msg_txt(104), g->name); // Spying on the %s guild.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
} else {
- clif->displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the specified guild is online.
+ clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the specified guild is online.
return -1;
}
@@ -4162,12 +4169,12 @@ ACMD_FUNC(partyspy)
if (!enable_spy)
{
- clif->displaymessage(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
+ clif->message(fd, msg_txt(1125)); // The mapserver has spy command support disabled.
return -1;
}
if (!message || !*message || sscanf(message, "%23[^\n]", party_name) < 1) {
- clif->displaymessage(fd, msg_txt(1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>).
+ clif->message(fd, msg_txt(1127)); // Please enter a party name/ID (usage: @partyspy <party_name/ID>).
return -1;
}
@@ -4176,14 +4183,14 @@ ACMD_FUNC(partyspy)
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.
- clif->displaymessage(fd, atcmd_output);
+ 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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
} else {
- clif->displaymessage(fd, msg_txt(96)); // Incorrect name/ID, or no one from the specified party is online.
+ clif->message(fd, msg_txt(96)); // Incorrect name/ID, or no one from the specified party is online.
return -1;
}
@@ -4210,9 +4217,9 @@ ACMD_FUNC(repairall)
if (count > 0) {
clif->misceffect(&sd->bl, 3);
clif->equiplist(sd);
- clif->displaymessage(fd, msg_txt(107)); // All items have been repaired.
+ clif->message(fd, msg_txt(107)); // All items have been repaired.
} else {
- clif->displaymessage(fd, msg_txt(108)); // No item need to be repaired.
+ clif->message(fd, msg_txt(108)); // No item need to be repaired.
return -1;
}
@@ -4230,20 +4237,20 @@ ACMD_FUNC(nuke)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1128)); // Please enter a player name (usage: @nuke <char name>).
+ clif->message(fd, msg_txt(1128)); // Please enter a player name (usage: @nuke <char name>).
return -1;
}
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, gettick(), 0);
- clif->displaymessage(fd, msg_txt(109)); // Player has been nuked!
+ clif->message(fd, msg_txt(109)); // Player has been nuked!
} else {
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
} else {
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
@@ -4263,17 +4270,17 @@ ACMD_FUNC(tonpc)
memset(npcname, 0, sizeof(npcname));
if (!message || !*message || sscanf(message, "%23[^\n]", npcname) < 1) {
- clif->displaymessage(fd, msg_txt(1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>).
+ clif->message(fd, msg_txt(1129)); // Please enter a NPC name (usage: @tonpc <NPC_name>).
return -1;
}
if ((nd = npc_name2id(npcname)) != NULL) {
if (pc_setpos(sd, map_id2index(nd->bl.m), nd->bl.x, nd->bl.y, CLR_TELEPORT) == 0)
- clif->displaymessage(fd, msg_txt(0)); // Warped.
+ clif->message(fd, msg_txt(0)); // Warped.
else
return -1;
} else {
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return -1;
}
@@ -4291,15 +4298,15 @@ ACMD_FUNC(shownpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) {
- clif->displaymessage(fd, msg_txt(1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>).
+ clif->message(fd, msg_txt(1130)); // Please enter a NPC name (usage: @enablenpc <NPC_name>).
return -1;
}
if (npc_name2id(NPCname) != NULL) {
npc_enable(NPCname, 1);
- clif->displaymessage(fd, msg_txt(110)); // Npc Enabled.
+ clif->message(fd, msg_txt(110)); // Npc Enabled.
} else {
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return -1;
}
@@ -4317,17 +4324,17 @@ ACMD_FUNC(hidenpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%23[^\n]", NPCname) < 1) {
- clif->displaymessage(fd, msg_txt(1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>).
+ clif->message(fd, msg_txt(1131)); // Please enter a NPC name (usage: @hidenpc <NPC_name>).
return -1;
}
if (npc_name2id(NPCname) == NULL) {
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return -1;
}
npc_enable(NPCname, 0);
- clif->displaymessage(fd, msg_txt(112)); // Npc Disabled.
+ clif->message(fd, msg_txt(112)); // Npc Disabled.
return 0;
}
@@ -4336,13 +4343,13 @@ ACMD_FUNC(loadnpc)
FILE *fp;
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1132)); // Please enter a script file name (usage: @loadnpc <file name>).
+ clif->message(fd, msg_txt(1132)); // Please enter a script file name (usage: @loadnpc <file name>).
return -1;
}
// check if script file exists
if ((fp = fopen(message, "r")) == NULL) {
- clif->displaymessage(fd, msg_txt(261));
+ clif->message(fd, msg_txt(261));
return -1;
}
fclose(fp);
@@ -4352,7 +4359,7 @@ ACMD_FUNC(loadnpc)
npc_parsesrcfile(message,true);
npc_read_event_script();
- clif->displaymessage(fd, msg_txt(262));
+ clif->message(fd, msg_txt(262));
return 0;
}
@@ -4366,19 +4373,19 @@ ACMD_FUNC(unloadnpc)
memset(NPCname, '\0', sizeof(NPCname));
if (!message || !*message || sscanf(message, "%24[^\n]", NPCname) < 1) {
- clif->displaymessage(fd, msg_txt(1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>).
+ clif->message(fd, msg_txt(1133)); // Please enter a NPC name (usage: @npcoff <NPC_name>).
return -1;
}
if ((nd = npc_name2id(NPCname)) == NULL) {
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return -1;
}
npc_unload_duplicates(nd);
npc_unload(nd,true);
npc_read_event_script();
- clif->displaymessage(fd, msg_txt(112)); // Npc Disabled.
+ clif->message(fd, msg_txt(112)); // Npc Disabled.
return 0;
}
@@ -4440,54 +4447,54 @@ ACMD_FUNC(servertime)
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.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
if (battle_config.night_duration == 0 && battle_config.day_duration == 0) {
if (night_flag == 0)
- clif->displaymessage(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
+ clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
else
- clif->displaymessage(fd, msg_txt(232)); // Game time: The game is in permanent night.
+ clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
} else if (battle_config.night_duration == 0)
if (night_flag == 1) { // we start with night
timer_data = get_timer(day_timer_tid);
sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in night for %s.
- clif->displaymessage(fd, temp);
- clif->displaymessage(fd, msg_txt(234)); // Game time: After, the game will be in permanent daylight.
+ clif->message(fd, temp);
+ clif->message(fd, msg_txt(234)); // Game time: After, the game will be in permanent daylight.
} else
- clif->displaymessage(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
+ clif->message(fd, msg_txt(231)); // Game time: The game is in permanent daylight.
else if (battle_config.day_duration == 0)
if (night_flag == 0) { // we start with day
timer_data = get_timer(night_timer_tid);
sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in daylight for %s.
- clif->displaymessage(fd, temp);
- clif->displaymessage(fd, msg_txt(236)); // Game time: After, the game will be in permanent night.
+ clif->message(fd, temp);
+ clif->message(fd, msg_txt(236)); // Game time: After, the game will be in permanent night.
} else
- clif->displaymessage(fd, msg_txt(232)); // Game time: The game is in permanent night.
+ clif->message(fd, msg_txt(232)); // Game time: The game is in permanent night.
else {
if (night_flag == 0) {
timer_data = get_timer(night_timer_tid);
timer_data2 = get_timer(day_timer_tid);
sprintf(temp, msg_txt(235), txt_time(DIFF_TICK(timer_data->tick,gettick())/1000)); // Game time: The game is actualy in daylight for %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
if (DIFF_TICK(timer_data->tick, timer_data2->tick) > 0)
sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data->interval,DIFF_TICK(timer_data->tick,timer_data2->tick)) / 1000)); // Game time: After, the game will be in night for %s.
else
sprintf(temp, msg_txt(237), txt_time(DIFF_TICK(timer_data2->tick,timer_data->tick)/1000)); // Game time: After, the game will be in night for %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
} else {
timer_data = get_timer(day_timer_tid);
timer_data2 = get_timer(night_timer_tid);
sprintf(temp, msg_txt(233), txt_time(DIFF_TICK(timer_data->tick,gettick()) / 1000)); // Game time: The game is actualy in night for %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
if (DIFF_TICK(timer_data->tick,timer_data2->tick) > 0)
sprintf(temp, msg_txt(239), txt_time((timer_data->interval - DIFF_TICK(timer_data->tick, timer_data2->tick)) / 1000)); // Game time: After, the game will be in daylight for %s.
else
sprintf(temp, msg_txt(239), txt_time(DIFF_TICK(timer_data2->tick, timer_data->tick) / 1000)); // Game time: After, the game will be in daylight for %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
sprintf(temp, msg_txt(238), txt_time(timer_data->interval / 1000)); // Game time: A day cycle has a normal duration of %s.
- clif->displaymessage(fd, temp);
+ clif->message(fd, temp);
}
}
@@ -4536,24 +4543,24 @@ ACMD_FUNC(jail)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1134)); // Please enter a player name (usage: @jail <char_name>).
+ clif->message(fd, msg_txt(1134)); // Please enter a player name (usage: @jail <char_name>).
return -1;
}
if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) {
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if (pc_get_group_level(sd) < pc_get_group_level(pl_sd))
{ // you can jail only lower or same GM
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
if (pl_sd->sc.data[SC_JAILED])
{
- clif->displaymessage(fd, msg_txt(118)); // Player warped in jails.
+ clif->message(fd, msg_txt(118)); // Player warped in jails.
return -1;
}
@@ -4572,8 +4579,8 @@ ACMD_FUNC(jail)
//Duration of INT_MAX to specify infinity.
sc_start4(&pl_sd->bl,SC_JAILED,100,INT_MAX,m_index,x,y,1000);
- clif->displaymessage(pl_sd->fd, msg_txt(117)); // GM has send you in jails.
- clif->displaymessage(fd, msg_txt(118)); // Player warped in jails.
+ clif->message(pl_sd->fd, msg_txt(117)); // GM has send you in jails.
+ clif->message(fd, msg_txt(118)); // Player warped in jails.
return 0;
}
@@ -4588,31 +4595,31 @@ ACMD_FUNC(unjail)
memset(atcmd_player_name, '\0', sizeof(atcmd_player_name));
if (!message || !*message || sscanf(message, "%23[^\n]", atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>).
+ clif->message(fd, msg_txt(1135)); // Please enter a player name (usage: @unjail/@discharge <char_name>).
return -1;
}
if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) {
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { // you can jail only lower or same GM
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
if (!pl_sd->sc.data[SC_JAILED])
{
- clif->displaymessage(fd, msg_txt(119)); // This player is not in jails.
+ clif->message(fd, msg_txt(119)); // This player is not in jails.
return -1;
}
//Reset jail time to 1 sec.
sc_start(&pl_sd->bl,SC_JAILED,100,1,1000);
- clif->displaymessage(pl_sd->fd, msg_txt(120)); // A GM has discharged you from jail.
- clif->displaymessage(fd, msg_txt(121)); // Player unjailed.
+ clif->message(pl_sd->fd, msg_txt(120)); // A GM has discharged you from jail.
+ clif->message(fd, msg_txt(121)); // Player unjailed.
return 0;
}
@@ -4626,7 +4633,7 @@ ACMD_FUNC(jailfor)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%255s %23[^\n]",atcmd_output,atcmd_player_name) < 2) {
- clif->displaymessage(fd, msg_txt(400)); //Usage: @jailfor <time> <character name>
+ clif->message(fd, msg_txt(400)); //Usage: @jailfor <time> <character name>
return -1;
}
@@ -4668,24 +4675,24 @@ ACMD_FUNC(jailfor)
}
if (year == 0 && month == 0 && day == 0 && hour == 0 && minute == 0) {
- clif->displaymessage(fd, msg_txt(1136)); // Invalid time for jail command.
+ clif->message(fd, msg_txt(1136)); // Invalid time for jail command.
return -1;
}
if ((pl_sd = map_nick2sd(atcmd_player_name)) == NULL) {
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if (pc_get_group_level(pl_sd) > pc_get_group_level(sd)) {
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
jailtime = year*12*30*24*60 + month*30*24*60 + day*24*60 + hour*60 + minute; //In minutes
if(jailtime==0) {
- clif->displaymessage(fd, msg_txt(1136)); // Invalid time for jail command.
+ clif->message(fd, msg_txt(1136)); // Invalid time for jail command.
return -1;
}
@@ -4696,17 +4703,17 @@ ACMD_FUNC(jailfor)
jailtime += pl_sd->sc.data[SC_JAILED]->val1;
if (jailtime <= 0) {
jailtime = 0;
- clif->displaymessage(pl_sd->fd, msg_txt(120)); // GM has discharge you.
- clif->displaymessage(fd, msg_txt(121)); // Player unjailed
+ clif->message(pl_sd->fd, msg_txt(120)); // GM has discharge you.
+ clif->message(fd, msg_txt(121)); // Player unjailed
} else {
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
- clif->displaymessage(pl_sd->fd, atcmd_output);
+ 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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
} else if (jailtime < 0) {
- clif->displaymessage(fd, msg_txt(1136));
+ clif->message(fd, msg_txt(1136));
return -1;
}
@@ -4736,17 +4743,17 @@ ACMD_FUNC(jailtime)
nullpo_retr(-1, sd);
if (!sd->sc.data[SC_JAILED]) {
- clif->displaymessage(fd, msg_txt(1139)); // You are not in jail.
+ clif->message(fd, msg_txt(1139)); // You are not in jail.
return -1;
}
if (sd->sc.data[SC_JAILED]->val1 == INT_MAX) {
- clif->displaymessage(fd, msg_txt(1140)); // You have been jailed indefinitely.
+ clif->message(fd, msg_txt(1140)); // You have been jailed indefinitely.
return 0;
}
if (sd->sc.data[SC_JAILED]->val1 <= 0) { // Was not jailed with @jailfor (maybe @jail? or warped there? or got recalled?)
- clif->displaymessage(fd, msg_txt(1141)); // You have been jailed for an unknown amount of time.
+ clif->message(fd, msg_txt(1141)); // You have been jailed for an unknown amount of time.
return -1;
}
@@ -4754,7 +4761,7 @@ ACMD_FUNC(jailtime)
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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -4768,7 +4775,7 @@ ACMD_FUNC(disguise)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>).
+ clif->message(fd, msg_txt(1143)); // Please enter a Monster/NPC name/ID (usage: @disguise <name/ID>).
return -1;
}
@@ -4787,18 +4794,18 @@ ACMD_FUNC(disguise)
if (id == 0)
{
- clif->displaymessage(fd, msg_txt(123)); // Invalid Monster/NPC name/ID specified.
+ clif->message(fd, msg_txt(123)); // Invalid Monster/NPC name/ID specified.
return -1;
}
if(pc_isriding(sd))
{
- clif->displaymessage(fd, msg_txt(1144)); // Character cannot be disguised while mounted.
+ clif->message(fd, msg_txt(1144)); // Character cannot be disguised while mounted.
return -1;
}
pc_disguise(sd, id);
- clif->displaymessage(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_txt(122)); // Disguise applied.
return 0;
}
@@ -4814,7 +4821,7 @@ ACMD_FUNC(disguiseall)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>).
+ clif->message(fd, msg_txt(1145)); // Please enter a Monster/NPC name/ID (usage: @disguiseall <name/ID>).
return -1;
}
@@ -4822,7 +4829,7 @@ ACMD_FUNC(disguiseall)
mob_id = atoi(message);
if (!mobdb_checkid(mob_id) && !npcdb_checkid(mob_id)) { //if mob or npc...
- clif->displaymessage(fd, msg_txt(123)); // Monster/NPC name/id not found.
+ clif->message(fd, msg_txt(123)); // Monster/NPC name/id not found.
return -1;
}
@@ -4831,7 +4838,7 @@ ACMD_FUNC(disguiseall)
pc_disguise(pl_sd, mob_id);
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_txt(122)); // Disguise applied.
return 0;
}
@@ -4849,7 +4856,7 @@ ACMD_FUNC(disguiseguild)
memset(guild, '\0', sizeof(guild));
if( !message || !*message || sscanf(message, "%23[^,], %23[^\r\n]", monster, guild) < 2 ) {
- clif->displaymessage(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_txt(1146)); // Please enter a mob name/ID and guild name/ID (usage: @disguiseguild <mob name/ID>, <guild name/ID>).
return -1;
}
@@ -4865,12 +4872,12 @@ ACMD_FUNC(disguiseguild)
}
if( id == 0 ) {
- clif->displaymessage(fd, msg_txt(123)); // Monster/NPC name/id hasn't been found.
+ clif->message(fd, msg_txt(123)); // Monster/NPC name/id hasn't been found.
return -1;
}
if( (g = guild_searchname(guild)) == NULL && (g = guild_search(atoi(guild))) == NULL ) {
- clif->displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
return -1;
}
@@ -4878,7 +4885,7 @@ ACMD_FUNC(disguiseguild)
if( (pl_sd = g->member[i].sd) && !pc_isriding(pl_sd) )
pc_disguise(pl_sd, id);
- clif->displaymessage(fd, msg_txt(122)); // Disguise applied.
+ clif->message(fd, msg_txt(122)); // Disguise applied.
return 0;
}
@@ -4891,9 +4898,9 @@ ACMD_FUNC(undisguise)
nullpo_retr(-1, sd);
if (sd->disguise) {
pc_disguise(sd, 0);
- clif->displaymessage(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Undisguise applied.
} else {
- clif->displaymessage(fd, msg_txt(125)); // You're not disguised.
+ clif->message(fd, msg_txt(125)); // You're not disguised.
return -1;
}
@@ -4915,7 +4922,7 @@ ACMD_FUNC(undisguiseall)
pc_disguise(pl_sd, 0);
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Undisguise applied.
return 0;
}
@@ -4934,12 +4941,12 @@ ACMD_FUNC(undisguiseguild)
memset(guild_name, '\0', sizeof(guild_name));
if(!message || !*message || sscanf(message, "%23[^\n]", guild_name) < 1) {
- clif->displaymessage(fd, msg_txt(1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>).
+ clif->message(fd, msg_txt(1147)); // Please enter guild name/ID (usage: @undisguiseguild <guild name/ID>).
return -1;
}
if( (g = guild_searchname(guild_name)) == NULL && (g = guild_search(atoi(message))) == NULL ) {
- clif->displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
return -1;
}
@@ -4947,7 +4954,7 @@ ACMD_FUNC(undisguiseguild)
if( (pl_sd = g->member[i].sd) && pl_sd->disguise )
pc_disguise(pl_sd, 0);
- clif->displaymessage(fd, msg_txt(124)); // Undisguise applied.
+ clif->message(fd, msg_txt(124)); // Undisguise applied.
return 0;
}
@@ -4971,7 +4978,7 @@ ACMD_FUNC(exp)
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%%)
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return 0;
}
@@ -4986,7 +4993,7 @@ ACMD_FUNC(broadcast)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1149)); // Please enter a message (usage: @broadcast <message>).
+ clif->message(fd, msg_txt(1149)); // Please enter a message (usage: @broadcast <message>).
return -1;
}
@@ -5006,7 +5013,7 @@ ACMD_FUNC(localbroadcast)
memset(atcmd_output, '\0', sizeof(atcmd_output));
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1150)); // Please enter a message (usage: @localbroadcast <message>).
+ clif->message(fd, msg_txt(1150)); // Please enter a message (usage: @localbroadcast <message>).
return -1;
}
@@ -5030,26 +5037,26 @@ ACMD_FUNC(email)
memset(new_email, '\0', sizeof(new_email));
if (!message || !*message || sscanf(message, "%99s %99s", actual_email, new_email) < 2) {
- clif->displaymessage(fd, msg_txt(1151)); // Please enter 2 emails (usage: @email <actual@email> <new@email>).
+ clif->message(fd, msg_txt(1151)); // Please enter 2 emails (usage: @email <actual@email> <new@email>).
return -1;
}
if (e_mail_check(actual_email) == 0) {
- clif->displaymessage(fd, msg_txt(144)); // Invalid actual email. If you have default e-mail, give a@a.com.
+ clif->message(fd, msg_txt(144)); // Invalid actual email. If you have default e-mail, give a@a.com.
return -1;
} else if (e_mail_check(new_email) == 0) {
- clif->displaymessage(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail.
+ clif->message(fd, msg_txt(145)); // Invalid new email. Please enter a real e-mail.
return -1;
} else if (strcmpi(new_email, "a@a.com") == 0) {
- clif->displaymessage(fd, msg_txt(146)); // New email must be a real e-mail.
+ clif->message(fd, msg_txt(146)); // New email must be a real e-mail.
return -1;
} else if (strcmpi(actual_email, new_email) == 0) {
- clif->displaymessage(fd, msg_txt(147)); // New email must be different of the actual e-mail.
+ clif->message(fd, msg_txt(147)); // New email must be different of the actual e-mail.
return -1;
}
chrif_changeemail(sd->status.account_id, actual_email, new_email);
- clif->displaymessage(fd, msg_txt(148)); // Information sended to login-server via char-server.
+ clif->message(fd, msg_txt(148)); // Information sended to login-server via char-server.
return 0;
}
@@ -5062,12 +5069,12 @@ ACMD_FUNC(effect)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%d", &type) < 1) {
- clif->displaymessage(fd, msg_txt(1152)); // Please enter an effect number (usage: @effect <effect number>).
+ clif->message(fd, msg_txt(1152)); // Please enter an effect number (usage: @effect <effect number>).
return -1;
}
clif->specialeffect(&sd->bl, type, (send_target)flag);
- clif->displaymessage(fd, msg_txt(229)); // Your effect has changed.
+ clif->message(fd, msg_txt(229)); // Your effect has changed.
return 0;
}
@@ -5081,9 +5088,9 @@ ACMD_FUNC(killer)
sd->state.killer = !sd->state.killer;
if(sd->state.killer)
- clif->displaymessage(fd, msg_txt(241));
+ clif->message(fd, msg_txt(241));
else {
- clif->displaymessage(fd, msg_txt(292));
+ clif->message(fd, msg_txt(292));
pc_stop_attack(sd);
}
return 0;
@@ -5099,9 +5106,9 @@ ACMD_FUNC(killable)
sd->state.killable = !sd->state.killable;
if(sd->state.killable)
- clif->displaymessage(fd, msg_txt(242));
+ clif->message(fd, msg_txt(242));
else {
- clif->displaymessage(fd, msg_txt(288));
+ clif->message(fd, msg_txt(288));
map_foreachinrange(atcommand_stopattack,&sd->bl, AREA_SIZE, BL_CHAR, sd->bl.id);
}
return 0;
@@ -5115,7 +5122,7 @@ ACMD_FUNC(skillon)
{
nullpo_retr(-1, sd);
map[sd->bl.m].flag.noskill = 0;
- clif->displaymessage(fd, msg_txt(244));
+ clif->message(fd, msg_txt(244));
return 0;
}
@@ -5127,7 +5134,7 @@ ACMD_FUNC(skilloff)
{
nullpo_retr(-1, sd);
map[sd->bl.m].flag.noskill = 1;
- clif->displaymessage(fd, msg_txt(243));
+ clif->message(fd, msg_txt(243));
return 0;
}
@@ -5143,19 +5150,19 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(1153)); // Usage: @npcmove <X> <Y> <npc_name>
+ clif->message(fd, msg_txt(1153)); // Usage: @npcmove <X> <Y> <npc_name>
return -1;
}
if ((nd = npc_name2id(atcmd_player_name)) == NULL)
{
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist.
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist.
return -1;
}
if ((m=nd->bl.m) < 0 || nd->bl.prev == NULL)
{
- clif->displaymessage(fd, msg_txt(1154)); // NPC is not on this map.
+ clif->message(fd, msg_txt(1154)); // NPC is not on this map.
return -1; //Not on a map.
}
@@ -5164,7 +5171,7 @@ ACMD_FUNC(npcmove)
map_foreachinrange(clif->outsight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
map_moveblock(&nd->bl, x, y, gettick());
map_foreachinrange(clif->insight, &nd->bl, AREA_SIZE, BL_PC, &nd->bl);
- clif->displaymessage(fd, msg_txt(1155)); // NPC moved.
+ clif->message(fd, msg_txt(1155)); // NPC moved.
return 0;
}
@@ -5184,7 +5191,7 @@ ACMD_FUNC(addwarp)
memset(warpname, '\0', sizeof(warpname));
if (!message || !*message || sscanf(message, "%31s %d %d %23[^\n]", mapname, &x, &y, warpname) < 4) {
- clif->displaymessage(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name>
+ clif->message(fd, msg_txt(1156)); // Usage: @addwarp <mapname> <X> <Y> <npc name>
return -1;
}
@@ -5192,7 +5199,7 @@ ACMD_FUNC(addwarp)
if( m == 0 )
{
sprintf(atcmd_output, msg_txt(1157), mapname); // Unknown map '%s'.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
@@ -5201,7 +5208,7 @@ ACMD_FUNC(addwarp)
return -1;
sprintf(atcmd_output, msg_txt(1158), nd->exname); // New warp NPC '%s' created.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -5219,22 +5226,22 @@ ACMD_FUNC(follow)
return -1;
pc_stop_following (sd);
- clif->displaymessage(fd, msg_txt(1159)); // Follow mode OFF.
+ clif->message(fd, msg_txt(1159)); // Follow mode OFF.
return 0;
}
if ( (pl_sd = map_nick2sd((char *)message)) == NULL )
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if (sd->followtarget == pl_sd->bl.id) {
pc_stop_following (sd);
- clif->displaymessage(fd, msg_txt(1159)); // Follow mode OFF.
+ clif->message(fd, msg_txt(1159)); // Follow mode OFF.
} else {
pc_follow(sd, pl_sd->bl.id);
- clif->displaymessage(fd, msg_txt(1160)); // Follow mode ON.
+ clif->message(fd, msg_txt(1160)); // Follow mode ON.
}
return 0;
@@ -5271,7 +5278,7 @@ ACMD_FUNC(storeall)
if (sd->state.storage_flag != 1)
{ //Open storage.
if( storage_storageopen(sd) == 1 ) {
- clif->displaymessage(fd, msg_txt(1161)); // You currently cannot open your storage.
+ clif->message(fd, msg_txt(1161)); // You currently cannot open your storage.
return -1;
}
}
@@ -5285,7 +5292,7 @@ ACMD_FUNC(storeall)
}
storage_storageclose(sd);
- clif->displaymessage(fd, msg_txt(1162)); // All items stored.
+ clif->message(fd, msg_txt(1162)); // All items stored.
return 0;
}
@@ -5295,7 +5302,7 @@ ACMD_FUNC(clearstorage)
nullpo_retr(-1, sd);
if (sd->state.storage_flag == 1) {
- clif->displaymessage(fd, msg_txt(250));
+ clif->message(fd, msg_txt(250));
return -1;
}
@@ -5305,7 +5312,7 @@ ACMD_FUNC(clearstorage)
}
storage_storageclose(sd);
- clif->displaymessage(fd, msg_txt(1394)); // Your storage was cleaned.
+ clif->message(fd, msg_txt(1394)); // Your storage was cleaned.
return 0;
}
@@ -5316,20 +5323,20 @@ ACMD_FUNC(cleargstorage)
struct guild_storage *gstorage;
nullpo_retr(-1, sd);
- g = guild_search(sd->status.guild_id);
+ g = sd->guild;
if (g == NULL) {
- clif->displaymessage(fd, msg_txt(43));
+ clif->message(fd, msg_txt(43));
return -1;
}
if (sd->state.storage_flag == 1) {
- clif->displaymessage(fd, msg_txt(250));
+ clif->message(fd, msg_txt(250));
return -1;
}
if (sd->state.storage_flag == 2) {
- clif->displaymessage(fd, msg_txt(251));
+ clif->message(fd, msg_txt(251));
return -1;
}
@@ -5346,7 +5353,7 @@ ACMD_FUNC(cleargstorage)
storage_guild_storageclose(sd);
gstorage->lock = 0; // Cleaning done, release lock
- clif->displaymessage(fd, msg_txt(1395)); // Your guild storage was cleaned.
+ clif->message(fd, msg_txt(1395)); // Your guild storage was cleaned.
return 0;
}
@@ -5356,7 +5363,7 @@ ACMD_FUNC(clearcart)
nullpo_retr(-1, sd);
if (pc_iscarton(sd) == 0) {
- clif->displaymessage(fd, msg_txt(1396)); // You do not have a cart to be cleaned.
+ clif->message(fd, msg_txt(1396)); // You do not have a cart to be cleaned.
return -1;
}
@@ -5371,7 +5378,7 @@ ACMD_FUNC(clearcart)
clif->clearcart(fd);
clif->updatestatus(sd,SP_CARTINFO);
- clif->displaymessage(fd, msg_txt(1397)); // Your cart was cleaned.
+ clif->message(fd, msg_txt(1397)); // Your cart was cleaned.
return 0;
}
@@ -5391,7 +5398,7 @@ ACMD_FUNC(skillid) {
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1163)); // Please enter a skill name to look up (usage: @skillid <skill name>).
+ clif->message(fd, msg_txt(1163)); // Please enter a skill name to look up (usage: @skillid <skill name>).
return -1;
}
@@ -5403,7 +5410,7 @@ ACMD_FUNC(skillid) {
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)
- clif->displaymessage(fd, atcmd_output);
+ 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);
}
@@ -5413,11 +5420,11 @@ ACMD_FUNC(skillid) {
if( found ) {
sprintf(atcmd_output, msg_txt(1398), found); // -- Displaying first %d partial matches
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
for(i = 0; i < found; i++) { /* partials */
- clif->displaymessage(fd, partials[i]);
+ clif->message(fd, partials[i]);
}
return 0;
@@ -5437,19 +5444,19 @@ ACMD_FUNC(useskill)
nullpo_retr(-1, sd);
if(!message || !*message || sscanf(message, "%hu %hu %23[^\n]", &skill_id, &skill_lv, target) != 3) {
- clif->displaymessage(fd, msg_txt(1165)); // Usage: @useskill <skill ID> <skill level> <target>
+ clif->message(fd, msg_txt(1165)); // Usage: @useskill <skill ID> <skill level> <target>
return -1;
}
if(!strcmp(target,"self")) pl_sd = sd; //quick keyword
else if ( (pl_sd = map_nick2sd(target)) == NULL ){
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
@@ -5482,7 +5489,7 @@ ACMD_FUNC(displayskill)
if (!message || !*message || sscanf(message, "%hu %hu", &skill_id, &skill_lv) < 1)
{
- clif->displaymessage(fd, msg_txt(1166)); // Usage: @displayskill <skill ID> {<skill level>}
+ clif->message(fd, msg_txt(1166)); // Usage: @displayskill <skill ID> {<skill level>}
return -1;
}
status = status_get_status_data(&sd->bl);
@@ -5507,13 +5514,13 @@ ACMD_FUNC(skilltree)
nullpo_retr(-1, sd);
if(!message || !*message || sscanf(message, "%hu %23[^\r\n]", &skill_id, target) != 2) {
- clif->displaymessage(fd, msg_txt(1167)); // Usage: @skilltree <skill ID> <target>
+ clif->message(fd, msg_txt(1167)); // Usage: @skilltree <skill ID> <target>
return -1;
}
if ( (pl_sd = map_nick2sd(target)) == NULL )
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
@@ -5521,12 +5528,12 @@ ACMD_FUNC(skilltree)
c = pc_mapid2jobid(c, pl_sd->status.sex);
sprintf(atcmd_output, msg_txt(1168), job_name(c), pc_checkskill(pl_sd, NV_BASIC)); // Player is using %s skill tree (%d basic points).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
ARR_FIND( 0, MAX_SKILL_TREE, j, skill_tree[c][j].id == 0 || skill_tree[c][j].id == skill_id );
if( j == MAX_SKILL_TREE || skill_tree[c][j].id == 0 )
{
- clif->displaymessage(fd, msg_txt(1169)); // The player cannot use that skill.
+ clif->message(fd, msg_txt(1169)); // The player cannot use that skill.
return 0;
}
@@ -5538,12 +5545,12 @@ ACMD_FUNC(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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
meets = 0;
}
}
if (meets == 1) {
- clif->displaymessage(fd, msg_txt(1171)); // The player meets all the requirements for that skill.
+ clif->message(fd, msg_txt(1171)); // The player meets all the requirements for that skill.
}
return 0;
@@ -5581,24 +5588,24 @@ ACMD_FUNC(marry)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%23s", player_name) != 1) {
- clif->displaymessage(fd, msg_txt(1172)); // Usage: @marry <char name>
+ clif->message(fd, msg_txt(1172)); // Usage: @marry <char name>
return -1;
}
if ((pl_sd = map_nick2sd(player_name)) == NULL) {
- clif->displaymessage(fd, msg_txt(3));
+ clif->message(fd, msg_txt(3));
return -1;
}
if (pc_marriage(sd, pl_sd) == 0) {
- clif->displaymessage(fd, msg_txt(1173)); // They are married... wish them well.
+ clif->message(fd, msg_txt(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 0;
}
- clif->displaymessage(fd, msg_txt(1174)); // The two cannot wed because one is either a baby or already married.
+ clif->message(fd, msg_txt(1174)); // The two cannot wed because one is either a baby or already married.
return -1;
}
@@ -5612,12 +5619,12 @@ ACMD_FUNC(divorce)
if (pc_divorce(sd) != 0) {
sprintf(atcmd_output, msg_txt(1175), sd->status.name); // '%s' is not married.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
sprintf(atcmd_output, msg_txt(1176), sd->status.name); // '%s' and his/her partner are now divorced.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -5630,8 +5637,8 @@ ACMD_FUNC(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->displaymessage(fd, msg_txt(1177)); // Usage: @changelook {<position>} <view id>
- clif->displaymessage(fd, msg_txt(1178)); // Position: 1-Top 2-Middle 3-Bottom 4-Weapon 5-Shield 6-Shoes 7-Robe
+ 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
return -1;
} else if ( i == 2 ) {
if (j < 1 || j > 7)
@@ -5656,17 +5663,17 @@ ACMD_FUNC(autotrade)
nullpo_retr(-1, sd);
if( map[sd->bl.m].flag.autotrade != battle_config.autotrade_mapflag ) {
- clif->displaymessage(fd, msg_txt(1179)); // Autotrade is not allowed on this map.
+ clif->message(fd, msg_txt(1179)); // Autotrade is not allowed on this map.
return -1;
}
if( pc_isdead(sd) ) {
- clif->displaymessage(fd, msg_txt(1180)); // You cannot autotrade when dead.
+ clif->message(fd, msg_txt(1180)); // You cannot autotrade when dead.
return -1;
}
if( !sd->state.vending && !sd->state.buyingstore ) { //check if player is vending or buying
- clif->displaymessage(fd, msg_txt(549)); // "You should have a shop open to use @autotrade."
+ clif->message(fd, msg_txt(549)); // "You should have a shop open to use @autotrade."
return -1;
}
@@ -5690,23 +5697,23 @@ ACMD_FUNC(changegm)
struct map_session_data *pl_sd;
nullpo_retr(-1, sd);
- if (sd->status.guild_id == 0 || (g = guild_search(sd->status.guild_id)) == NULL || strcmp(g->master,sd->status.name)) {
- clif->displaymessage(fd, msg_txt(1181)); // You need to be a Guild Master to use this command.
+ 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.
return -1;
}
if( map[sd->bl.m].flag.guildlock || map[sd->bl.m].flag.gvg_castle ) {
- clif->displaymessage(fd, msg_txt(1182)); // You cannot change guild leaders on this map.
+ clif->message(fd, msg_txt(1182)); // You cannot change guild leaders on this map.
return -1;
}
if( !message[0] ) {
- clif->displaymessage(fd, msg_txt(1183)); // Usage: @changegm <guild_member_name>
+ clif->message(fd, msg_txt(1183)); // Usage: @changegm <guild_member_name>
return -1;
}
if((pl_sd=map_nick2sd((char *) message)) == NULL || pl_sd->status.guild_id != sd->status.guild_id) {
- clif->displaymessage(fd, msg_txt(1184)); // Target character must be online and be a guild member.
+ clif->message(fd, msg_txt(1184)); // Target character must be online and be a guild member.
return -1;
}
@@ -5724,7 +5731,7 @@ ACMD_FUNC(changeleader)
if( !message[0] )
{
- clif->displaymessage(fd, msg_txt(1185)); // Usage: @changeleader <party_member_name>
+ clif->message(fd, msg_txt(1185)); // Usage: @changeleader <party_member_name>
return -1;
}
@@ -5746,7 +5753,7 @@ ACMD_FUNC(partyoption)
if (sd->status.party_id == 0 || (p = party_search(sd->status.party_id)) == NULL)
{
- clif->displaymessage(fd, msg_txt(282));
+ clif->message(fd, msg_txt(282));
return -1;
}
@@ -5756,13 +5763,13 @@ ACMD_FUNC(partyoption)
if (!p->party.member[mi].leader)
{
- clif->displaymessage(fd, msg_txt(282));
+ clif->message(fd, msg_txt(282));
return -1;
}
if(!message || !*message || sscanf(message, "%15s %15s", w1, w2) < 2)
{
- clif->displaymessage(fd, msg_txt(1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no>
+ clif->message(fd, msg_txt(1186)); // Usage: @partyoption <pickup share: yes/no> <item distribution: yes/no>
return -1;
}
@@ -5772,7 +5779,7 @@ ACMD_FUNC(partyoption)
if (option != p->party.item)
party_changeoption(sd, p->party.exp, option);
else
- clif->displaymessage(fd, msg_txt(286));
+ clif->message(fd, msg_txt(286));
return 0;
}
@@ -5803,9 +5810,9 @@ ACMD_FUNC(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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}else
- clif->displaymessage(fd, msg_txt(1188)); // Autoloot is now off.
+ clif->message(fd, msg_txt(1188)); // Autoloot is now off.
return 0;
}
@@ -5838,7 +5845,7 @@ ACMD_FUNC(autolootitem)
item_data = itemdb_searchname(message);
if (!item_data) {
// No items founds in the DB with Id or Name
- clif->displaymessage(fd, msg_txt(1189)); // Item not found.
+ clif->message(fd, msg_txt(1189)); // Item not found.
return -1;
}
}
@@ -5847,28 +5854,28 @@ ACMD_FUNC(autolootitem)
case 1:
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == item_data->nameid);
if (i != AUTOLOOTITEM_SIZE) {
- clif->displaymessage(fd, msg_txt(1190)); // You're already autolooting this item.
+ clif->message(fd, msg_txt(1190)); // You're already autolooting this item.
return -1;
}
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] == 0);
if (i == AUTOLOOTITEM_SIZE) {
- clif->displaymessage(fd, msg_txt(1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>.
+ clif->message(fd, msg_txt(1191)); // Your autolootitem list is full. Remove some items first with @autolootid -<item name or ID>.
return -1;
}
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}
- clif->displaymessage(fd, atcmd_output);
+ 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->displaymessage(fd, msg_txt(1193)); // You're currently not autolooting this item.
+ clif->message(fd, msg_txt(1193)); // You're currently not autolooting this item.
return -1;
}
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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0);
if (i == AUTOLOOTITEM_SIZE) {
sd->state.autolooting = 0;
@@ -5876,14 +5883,14 @@ ACMD_FUNC(autolootitem)
break;
case 3:
sprintf(atcmd_output, msg_txt(1195), AUTOLOOTITEM_SIZE); // You can have %d items on your autolootitem list.
- clif->displaymessage(fd, atcmd_output);
- clif->displaymessage(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->displaymessage(fd, msg_txt(1197)); // "@alootid reset" will clear 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.
ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0);
if (i == AUTOLOOTITEM_SIZE) {
- clif->displaymessage(fd, msg_txt(1198)); // Your autolootitem list is empty.
+ clif->message(fd, msg_txt(1198)); // Your autolootitem list is empty.
} else {
- clif->displaymessage(fd, msg_txt(1199)); // Items on your autolootitem list:
+ clif->message(fd, msg_txt(1199)); // Items on your autolootitem list:
for(i = 0; i < AUTOLOOTITEM_SIZE; i++)
{
if (sd->state.autolootid[i] == 0)
@@ -5893,13 +5900,13 @@ ACMD_FUNC(autolootitem)
continue;
}
sprintf(atcmd_output, "'%s'/'%s' {%d}", item_data->name, item_data->jname, item_data->nameid);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
break;
case 4:
memset(sd->state.autolootid, 0, sizeof(sd->state.autolootid));
- clif->displaymessage(fd, msg_txt(1200)); // Your autolootitem list has been reset.
+ clif->message(fd, msg_txt(1200)); // Your autolootitem list has been reset.
sd->state.autolooting = 0;
break;
}
@@ -5917,11 +5924,11 @@ ACMD_FUNC(autolootitem)
// if (map[sd->bl.m].flag.rain) {
// map[sd->bl.m].flag.rain=0;
// clif->weather(sd->bl.m);
-// clif->displaymessage(fd, msg_txt(1201)); // The rain has stopped.
+// clif->message(fd, msg_txt(1201)); // The rain has stopped.
// } else {
// map[sd->bl.m].flag.rain=1;
// clif->weather(sd->bl.m);
-// clif->displaymessage(fd, msg_txt(1202)); // It has started to rain.
+// clif->message(fd, msg_txt(1202)); // It has started to rain.
// }
// return 0;
//}
@@ -5935,11 +5942,11 @@ ACMD_FUNC(snow)
if (map[sd->bl.m].flag.snow) {
map[sd->bl.m].flag.snow=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1203)); // Snow has stopped falling.
+ clif->message(fd, msg_txt(1203)); // Snow has stopped falling.
} else {
map[sd->bl.m].flag.snow=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1204)); // It has started to snow.
+ clif->message(fd, msg_txt(1204)); // It has started to snow.
}
return 0;
@@ -5954,11 +5961,11 @@ ACMD_FUNC(sakura)
if (map[sd->bl.m].flag.sakura) {
map[sd->bl.m].flag.sakura=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1205)); // Cherry tree leaves no longer fall.
+ clif->message(fd, msg_txt(1205)); // Cherry tree leaves no longer fall.
} else {
map[sd->bl.m].flag.sakura=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1206)); // Cherry tree leaves have begun to fall.
+ clif->message(fd, msg_txt(1206)); // Cherry tree leaves have begun to fall.
}
return 0;
}
@@ -5972,11 +5979,11 @@ ACMD_FUNC(clouds)
if (map[sd->bl.m].flag.clouds) {
map[sd->bl.m].flag.clouds=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1207)); // The clouds has disappear.
+ clif->message(fd, msg_txt(1207)); // The clouds has disappear.
} else {
map[sd->bl.m].flag.clouds=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1208)); // Clouds appear.
+ clif->message(fd, msg_txt(1208)); // Clouds appear.
}
return 0;
@@ -5991,11 +5998,11 @@ ACMD_FUNC(clouds2)
if (map[sd->bl.m].flag.clouds2) {
map[sd->bl.m].flag.clouds2=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1209)); // The alternative clouds disappear.
+ clif->message(fd, msg_txt(1209)); // The alternative clouds disappear.
} else {
map[sd->bl.m].flag.clouds2=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1210)); // Alternative clouds appear.
+ clif->message(fd, msg_txt(1210)); // Alternative clouds appear.
}
return 0;
@@ -6010,11 +6017,11 @@ ACMD_FUNC(fog)
if (map[sd->bl.m].flag.fog) {
map[sd->bl.m].flag.fog=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1211)); // The fog has gone.
+ clif->message(fd, msg_txt(1211)); // The fog has gone.
} else {
map[sd->bl.m].flag.fog=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1212)); // Fog hangs over.
+ clif->message(fd, msg_txt(1212)); // Fog hangs over.
}
return 0;
}
@@ -6028,11 +6035,11 @@ ACMD_FUNC(leaves)
if (map[sd->bl.m].flag.leaves) {
map[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1213)); // Leaves no longer fall.
+ clif->message(fd, msg_txt(1213)); // Leaves no longer fall.
} else {
map[sd->bl.m].flag.leaves=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1214)); // Fallen leaves fall.
+ clif->message(fd, msg_txt(1214)); // Fallen leaves fall.
}
return 0;
@@ -6047,11 +6054,11 @@ ACMD_FUNC(fireworks)
if (map[sd->bl.m].flag.fireworks) {
map[sd->bl.m].flag.fireworks=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1215)); // Fireworks have ended.
+ clif->message(fd, msg_txt(1215)); // Fireworks have ended.
} else {
map[sd->bl.m].flag.fireworks=1;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(1216)); // Fireworks have launched.
+ clif->message(fd, msg_txt(1216)); // Fireworks have launched.
}
return 0;
@@ -6075,7 +6082,7 @@ ACMD_FUNC(clearweather)
map[sd->bl.m].flag.fireworks=0;
map[sd->bl.m].flag.leaves=0;
clif->weather(sd->bl.m);
- clif->displaymessage(fd, msg_txt(291));
+ clif->message(fd, msg_txt(291));
return 0;
}
@@ -6090,7 +6097,7 @@ ACMD_FUNC(sound)
memset(sound_file, '\0', sizeof(sound_file));
if(!message || !*message || sscanf(message, "%99[^\n]", sound_file) < 1) {
- clif->displaymessage(fd, msg_txt(1217)); // Please enter a sound filename (usage: @sound <filename>).
+ clif->message(fd, msg_txt(1217)); // Please enter a sound filename (usage: @sound <filename>).
return -1;
}
@@ -6115,7 +6122,7 @@ ACMD_FUNC(mobsearch)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%99[^\n]", mob_name) < 1) {
- clif->displaymessage(fd, msg_txt(1218)); // Please enter a monster name (usage: @mobsearch <monster name>).
+ clif->message(fd, msg_txt(1218)); // Please enter a monster name (usage: @mobsearch <monster name>).
return -1;
}
@@ -6123,7 +6130,7 @@ ACMD_FUNC(mobsearch)
mob_id = mobdb_searchname(mob_name);
if(mob_id > 0 && mobdb_checkid(mob_id) == 0){
snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1219),mob_name); // Invalid mob ID %s!
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
if(mob_id == atoi(mob_name) && mob_db(mob_id)->jname)
@@ -6131,7 +6138,7 @@ ACMD_FUNC(mobsearch)
// 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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
it = mapit_geteachmob();
for(;;)
@@ -6150,7 +6157,7 @@ ACMD_FUNC(mobsearch)
snprintf(atcmd_output, sizeof(atcmd_output), "%2d[%3d:%3d] %s", number, md->bl.x, md->bl.y, md->name);
else
snprintf(atcmd_output, sizeof(atcmd_output), "%2d[%s] %s", number, "dead", md->name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
mapit_free(it);
@@ -6172,7 +6179,7 @@ static int atcommand_cleanfloor_sub(struct block_list *bl, va_list ap)
ACMD_FUNC(cleanmap)
{
map_foreachinmap(atcommand_cleanfloor_sub, sd->bl.m, BL_ITEM);
- clif->displaymessage(fd, msg_txt(1221)); // All dropped items have been cleaned up.
+ clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
return 0;
}
@@ -6190,7 +6197,7 @@ ACMD_FUNC(cleanarea)
map_foreachinarea(atcommand_cleanfloor_sub, sd->bl.m, x0, y0, x1, y1, BL_ITEM);
}
- clif->displaymessage(fd, msg_txt(1221)); // All dropped items have been cleaned up.
+ clif->message(fd, msg_txt(1221)); // All dropped items have been cleaned up.
return 0;
}
@@ -6212,19 +6219,19 @@ ACMD_FUNC(npctalk)
if(!ifcolor) {
if (!message || !*message || sscanf(message, "%23[^,], %99[^\n]", name, mes) < 2) {
- clif->displaymessage(fd, msg_txt(1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>).
+ clif->message(fd, msg_txt(1222)); // Please enter the correct parameters (usage: @npctalk <npc name>, <message>).
return -1;
}
}
else {
if (!message || !*message || sscanf(message, "%lx %23[^,], %99[^\n]", &color, name, mes) < 3) {
- clif->displaymessage(fd, msg_txt(1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>).
+ clif->message(fd, msg_txt(1223)); // Please enter the correct parameters (usage: @npctalkc <color> <npc name>, <message>).
return -1;
}
}
if (!(nd = npc_name2id(name))) {
- clif->displaymessage(fd, msg_txt(111)); // This NPC doesn't exist
+ clif->message(fd, msg_txt(111)); // This NPC doesn't exist
return -1;
}
@@ -6232,7 +6239,7 @@ ACMD_FUNC(npctalk)
snprintf(temp, sizeof(temp), "%s : %s", name, mes);
if(ifcolor) clif->messagecolor(&nd->bl,color,temp);
- else clif->message(&nd->bl, temp);
+ else clif->disp_overhead(&nd->bl, temp);
return 0;
}
@@ -6252,7 +6259,7 @@ ACMD_FUNC(pettalk)
if(!sd->status.pet_id || !(pd=sd->pd))
{
- clif->displaymessage(fd, msg_txt(184));
+ clif->message(fd, msg_txt(184));
return -1;
}
@@ -6262,7 +6269,7 @@ ACMD_FUNC(pettalk)
return -1;
if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) {
- clif->displaymessage(fd, msg_txt(1224)); // Please enter a message (usage: @pettalk <message>).
+ clif->message(fd, msg_txt(1224)); // Please enter a message (usage: @pettalk <message>).
return -1;
}
@@ -6296,7 +6303,7 @@ ACMD_FUNC(pettalk)
}
snprintf(temp, sizeof temp ,"%s : %s", pd->pet.name, mes);
- clif->message(&pd->bl, temp);
+ clif->disp_overhead(&pd->bl, temp);
return 0;
}
@@ -6337,12 +6344,12 @@ ACMD_FUNC(users)
continue;// empty
safesnprintf(buf, sizeof(buf), "%s: %d (%.2f%%)", mapindex_id2name(i), users[i], (float)(100.0f*users[i]/users_all));
- clif->displaymessage(sd->fd, buf);
+ clif->message(sd->fd, buf);
}
// display overall count
safesnprintf(buf, sizeof(buf), "all: %d", users_all);
- clif->displaymessage(sd->fd, buf);
+ clif->message(sd->fd, buf);
return 0;
}
@@ -6355,7 +6362,7 @@ ACMD_FUNC(reset)
pc_resetstate(sd);
pc_resetskill(sd,1);
sprintf(atcmd_output, msg_txt(208), sd->status.name); // '%s' skill and stats points reseted!
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -6374,7 +6381,7 @@ ACMD_FUNC(summon)
if (!message || !*message || sscanf(message, "%23s %d", name, &duration) < 1)
{
- clif->displaymessage(fd, msg_txt(1225)); // Please enter a monster name (usage: @summon <monster name> {duration}).
+ clif->message(fd, msg_txt(1225)); // Please enter a monster name (usage: @summon <monster name> {duration}).
return -1;
}
@@ -6387,7 +6394,7 @@ ACMD_FUNC(summon)
mob_id = mobdb_searchname(name);
if(mob_id == 0 || mobdb_checkid(mob_id) == 0)
{
- clif->displaymessage(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
return -1;
}
@@ -6403,7 +6410,7 @@ ACMD_FUNC(summon)
mob_spawn(md);
sc_start4(&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->displaymessage(fd, msg_txt(39)); // All monster summoned!
+ clif->message(fd, msg_txt(39)); // All monster summoned!
return 0;
}
@@ -6419,19 +6426,19 @@ ACMD_FUNC(adjgroup)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%d", &new_group) != 1) {
- clif->displaymessage(fd, msg_txt(1226)); // Usage: @adjgroup <group_id>
+ clif->message(fd, msg_txt(1226)); // Usage: @adjgroup <group_id>
return -1;
}
if (!pc_group_exists(new_group)) {
- clif->displaymessage(fd, msg_txt(1227)); // Specified group does not exist.
+ clif->message(fd, msg_txt(1227)); // Specified group does not exist.
return -1;
}
sd->group_id = new_group;
pc_group_pc_load(sd);/* update cache */
- clif->displaymessage(fd, msg_txt(1228)); // Group changed successfully.
- clif->displaymessage(sd->fd, msg_txt(1229)); // Your group has changed.
+ clif->message(fd, msg_txt(1228)); // Group changed successfully.
+ clif->message(sd->fd, msg_txt(1229)); // Your group has changed.
return 0;
}
@@ -6445,13 +6452,13 @@ ACMD_FUNC(trade)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1230)); // Please enter a player name (usage: @trade <char name>).
+ clif->message(fd, msg_txt(1230)); // Please enter a player name (usage: @trade <char name>).
return -1;
}
if ( (pl_sd = map_nick2sd((char *)message)) == NULL )
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
@@ -6469,16 +6476,16 @@ ACMD_FUNC(setbattleflag)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%127s %127s", flag, value) != 2) {
- clif->displaymessage(fd, msg_txt(1231)); // Usage: @setbattleflag <flag> <value>
+ clif->message(fd, msg_txt(1231)); // Usage: @setbattleflag <flag> <value>
return -1;
}
if (battle->config_set_value(flag, value) == 0) {
- clif->displaymessage(fd, msg_txt(1232)); // Unknown battle_config flag.
+ clif->message(fd, msg_txt(1232)); // Unknown battle_config flag.
return -1;
}
- clif->displaymessage(fd, msg_txt(1233)); // Set battle_config as requested.
+ clif->message(fd, msg_txt(1233)); // Set battle_config as requested.
return 0;
}
@@ -6492,24 +6499,24 @@ ACMD_FUNC(unmute)
nullpo_retr(-1, sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1234)); // Please enter a player name (usage: @unmute <char name>).
+ clif->message(fd, msg_txt(1234)); // Please enter a player name (usage: @unmute <char name>).
return -1;
}
if ( (pl_sd = map_nick2sd((char *)message)) == NULL )
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if(!pl_sd->sc.data[SC_NOCHAT]) {
- clif->displaymessage(sd->fd,msg_txt(1235)); // Player is not muted.
+ clif->message(sd->fd,msg_txt(1235)); // Player is not muted.
return -1;
}
pl_sd->status.manner = 0;
status_change_end(&pl_sd->bl, SC_NOCHAT, INVALID_TIMER);
- clif->displaymessage(sd->fd,msg_txt(1236)); // Player unmuted.
+ clif->message(sd->fd,msg_txt(1236)); // Player unmuted.
return 0;
}
@@ -6532,7 +6539,7 @@ ACMD_FUNC(uptime)
seconds -= (seconds/minute>0)?(seconds/minute)*minute:0;
snprintf(atcmd_output, sizeof(atcmd_output), msg_txt(245), days, hours, minutes, seconds);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -6563,19 +6570,19 @@ ACMD_FUNC(mute)
nullpo_retr(-1, sd);
if (!message || !*message || sscanf(message, "%d %23[^\n]", &manner, atcmd_player_name) < 1) {
- clif->displaymessage(fd, msg_txt(1237)); // Usage: @mute <time> <char name>
+ clif->message(fd, msg_txt(1237)); // Usage: @mute <time> <char name>
return -1;
}
if ( (pl_sd = map_nick2sd(atcmd_player_name)) == NULL )
{
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return -1;
}
if ( pc_get_group_level(sd) < pc_get_group_level(pl_sd) )
{
- clif->displaymessage(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
+ clif->message(fd, msg_txt(81)); // Your GM level don't authorise you to do this action on this player.
return -1;
}
@@ -6636,7 +6643,7 @@ ACMD_FUNC(identify)
if (num > 0) {
clif->item_identify_list(sd);
} else {
- clif->displaymessage(fd,msg_txt(1238)); // There are no items to appraise.
+ clif->message(fd,msg_txt(1238)); // There are no items to appraise.
}
return 0;
}
@@ -6722,7 +6729,7 @@ ACMD_FUNC(mobinfo)
memset(atcmd_output2, '\0', sizeof(atcmd_output2));
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>).
+ clif->message(fd, msg_txt(1239)); // Please enter a monster name/ID (usage: @mobinfo <monster_name_or_monster_ID>).
return -1;
}
@@ -6735,13 +6742,13 @@ ACMD_FUNC(mobinfo)
count = mobdb_searchname_array(mob_array, MAX_SEARCH, message);
if (!count) {
- clif->displaymessage(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
return -1;
}
if (count > MAX_SEARCH) {
sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (k = 0; k < count; k++) {
@@ -6752,21 +6759,21 @@ ACMD_FUNC(mobinfo)
sprintf(atcmd_output, msg_txt(1240), mob->name, mob->jname, mob->sprite, mob->vd.class_); // MVP Monster: '%s'/'%s'/'%s' (%d)
else
sprintf(atcmd_output, msg_txt(1241), mob->name, mob->jname, mob->sprite, mob->vd.class_); // Monster: '%s'/'%s'/'%s' (%d)
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1242), mob->lv, mob->status.max_hp, mob->base_exp, mob->job_exp,MOB_HIT(mob), MOB_FLEE(mob)); // Lv:%d HP:%d Base EXP:%u Job EXP:%u HIT:%d FLEE:%d
- clif->displaymessage(fd, atcmd_output);
+ 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
mob->status.def, mob->status.mdef,mob->status.str, mob->status.agi,
mob->status.vit, mob->status.int_, mob->status.dex, mob->status.luk);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output, msg_txt(1244), // ATK:%d~%d Range:%d~%d~%d Size:%s Race: %s Element: %s (Lv:%d)
mob->status.rhw.atk, mob->status.rhw.atk2, mob->status.rhw.range,
mob->range2 , mob->range3, msize[mob->status.size],
mrace[mob->status.race], melement[mob->status.def_ele], mob->status.ele_lv);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
// drops
- clif->displaymessage(fd, msg_txt(1245)); // Drops:
+ clif->message(fd, msg_txt(1245)); // Drops:
strcpy(atcmd_output, " ");
j = 0;
for (i = 0; i < MAX_MOB_DROP; i++) {
@@ -6781,18 +6788,18 @@ ACMD_FUNC(mobinfo)
sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)droprate / 100);
strcat(atcmd_output, atcmd_output2);
if (++j % 3 == 0) {
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output, " ");
}
}
if (j == 0)
- clif->displaymessage(fd, msg_txt(1246)); // This monster has no drops.
+ clif->message(fd, msg_txt(1246)); // This monster has no drops.
else if (j % 3 != 0)
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
// mvp
if (mob->mexp) {
sprintf(atcmd_output, msg_txt(1247), mob->mexp); // MVP Bonus EXP:%u
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
strcpy(atcmd_output, msg_txt(1248)); // MVP Items:
j = 0;
for (i = 0; i < MAX_MVP_DROP; i++) {
@@ -6808,9 +6815,9 @@ ACMD_FUNC(mobinfo)
}
}
if (j == 0)
- clif->displaymessage(fd, msg_txt(1249)); // This monster has no MVP prizes.
+ clif->message(fd, msg_txt(1249)); // This monster has no MVP prizes.
else
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
return 0;
@@ -6836,12 +6843,12 @@ ACMD_FUNC(showmobs)
mob_id = mobdb_searchname(mob_name);
if(mob_id > 0 && mobdb_checkid(mob_id) == 0){
snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1250),mob_name); // Invalid mob id %s!
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
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->displaymessage(fd, msg_txt(1251)); // Can't show boss mobs!
+ clif->message(fd, msg_txt(1251)); // Can't show boss mobs!
return 0;
}
@@ -6851,7 +6858,7 @@ ACMD_FUNC(showmobs)
snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1252), // Mob Search... %s %s
mob_name, mapindex_id2name(sd->mapindex));
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
it = mapit_geteachmob();
for(;;)
@@ -6888,12 +6895,12 @@ ACMD_FUNC(homlevel)
nullpo_retr(-1, sd);
if ( !message || !*message || ( level = atoi(message) ) < 1 ) {
- clif->displaymessage(fd, msg_txt(1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>).
+ clif->message(fd, msg_txt(1253)); // Please enter a level adjustment (usage: @homlevel <number of levels>).
return -1;
}
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
@@ -6920,12 +6927,12 @@ ACMD_FUNC(homevolution)
nullpo_retr(-1, sd);
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
if ( !merc_hom_evolution(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1255)); // Your homunculus doesn't evolve.
+ clif->message(fd, msg_txt(1255)); // Your homunculus doesn't evolve.
return -1;
}
clif->homskillinfoblock(sd);
@@ -6938,7 +6945,7 @@ ACMD_FUNC(hommutate)
nullpo_retr(-1, sd);
if (!merc_is_hom_active(sd->hd)) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
@@ -6968,19 +6975,19 @@ ACMD_FUNC(makehomun)
nullpo_retr(-1, sd);
if ( sd->status.hom_id ) {
- clif->displaymessage(fd, msg_txt(450));
+ clif->message(fd, msg_txt(450));
return -1;
}
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>).
+ clif->message(fd, msg_txt(1256)); // Please enter a homunculus ID (usage: @makehomun <homunculus id>).
return -1;
}
homunid = atoi(message);
if( homunid < HM_CLASS_BASE || homunid > HM_CLASS_BASE + MAX_HOMUNCULUS_CLASS - 1 )
{
- clif->displaymessage(fd, msg_txt(1257)); // Invalid Homunculus ID.
+ clif->message(fd, msg_txt(1257)); // Invalid Homunculus ID.
return -1;
}
@@ -6998,12 +7005,12 @@ ACMD_FUNC(homfriendly)
nullpo_retr(-1, sd);
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>).
+ clif->message(fd, msg_txt(1258)); // Please enter a friendly value (usage: @homfriendly <friendly value [0-1000]>).
return -1;
}
@@ -7025,12 +7032,12 @@ ACMD_FUNC(homhungry)
nullpo_retr(-1, sd);
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>).
+ clif->message(fd, msg_txt(1259)); // Please enter a hunger value (usage: @homhungry <hunger value [0-100]>).
return -1;
}
@@ -7063,17 +7070,17 @@ ACMD_FUNC(homtalk)
return -1;
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
if (!message || !*message || sscanf(message, "%99[^\n]", mes) < 1) {
- clif->displaymessage(fd, msg_txt(1260)); // Please enter a message (usage: @homtalk <message>).
+ clif->message(fd, msg_txt(1260)); // Please enter a message (usage: @homtalk <message>).
return -1;
}
snprintf(temp, sizeof temp ,"%s : %s", sd->hd->homunculus.name, mes);
- clif->message(&sd->hd->bl, temp);
+ clif->disp_overhead(&sd->hd->bl, temp);
return 0;
}
@@ -7088,31 +7095,31 @@ ACMD_FUNC(hominfo)
nullpo_retr(-1, sd);
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
hd = sd->hd;
status = status_get_status_data(&hd->bl);
- clif->displaymessage(fd, msg_txt(1261)); // Homunculus stats:
+ clif->message(fd, msg_txt(1261)); // Homunculus stats:
snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1262), // HP: %d/%d - SP: %d/%d
status->hp, status->max_hp, status->sp, status->max_sp);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1263), // ATK: %d - MATK: %d~%d
status->rhw.atk2 +status->batk, status->matk_min, status->matk_max);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
snprintf(atcmd_output, sizeof(atcmd_output) ,msg_txt(1264), // Hungry: %d - Intimacy: %u
hd->homunculus.hunger, hd->homunculus.intimacy/100);
- clif->displaymessage(fd, atcmd_output);
+ 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
status->str, status->agi, status->vit,
status->int_, status->dex, status->luk);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -7127,7 +7134,7 @@ ACMD_FUNC(homstats)
nullpo_retr(-1, sd);
if ( !merc_is_hom_active(sd->hd) ) {
- clif->displaymessage(fd, msg_txt(1254)); // You do not have a homunculus.
+ clif->message(fd, msg_txt(1254)); // You do not have a homunculus.
return -1;
}
@@ -7139,49 +7146,49 @@ ACMD_FUNC(homstats)
snprintf(atcmd_output, sizeof(atcmd_output) ,
msg_txt(1266), lv, db->name); // Homunculus growth stats (Lv %d %s):
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ 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)
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -7196,7 +7203,7 @@ ACMD_FUNC(homshuffle)
if(!merc_hom_shuffle(sd->hd))
return -1;
- clif->displaymessage(sd->fd, msg_txt(1275)); // Homunculus stats altered.
+ clif->message(sd->fd, msg_txt(1275)); // Homunculus stats altered.
atcommand_homstats(fd, sd, command, message); //Print out the new stats
return 0;
}
@@ -7211,20 +7218,20 @@ ACMD_FUNC(iteminfo)
int i, count = 1;
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>).
+ clif->message(fd, msg_txt(1276)); // Please enter an item name/ID (usage: @ii/@iteminfo <item name/ID>).
return -1;
}
if ((item_array[0] = itemdb_exists(atoi(message))) == NULL)
count = itemdb_searchname_array(item_array, MAX_SEARCH, message);
if (!count) {
- clif->displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_txt(19)); // Invalid item ID or name.
return -1;
}
if (count > MAX_SEARCH) {
sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (i = 0; i < count; i++) {
@@ -7234,10 +7241,10 @@ ACMD_FUNC(iteminfo)
itemdb_typename(item_data->type),
(item_data->script==NULL)? msg_txt(1278) : msg_txt(1279) // None / With script
);
- clif->displaymessage(fd, atcmd_output);
+ 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
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
if (item_data->maxchance == -1)
strcpy(atcmd_output, msg_txt(1281)); // - Available in the shops only.
@@ -7245,7 +7252,7 @@ ACMD_FUNC(iteminfo)
sprintf(atcmd_output, msg_txt(1282), (float)item_data->maxchance / 100 ); // - Maximal monsters drop chance: %02.02f%%
else
strcpy(atcmd_output, msg_txt(1283)); // - Monsters don't drop this item.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -7260,38 +7267,38 @@ ACMD_FUNC(whodrops)
int i,j, count = 1;
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>).
+ clif->message(fd, msg_txt(1284)); // Please enter item name/ID (usage: @whodrops <item name/ID>).
return -1;
}
if ((item_array[0] = itemdb_exists(atoi(message))) == NULL)
count = itemdb_searchname_array(item_array, MAX_SEARCH, message);
if (!count) {
- clif->displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_txt(19)); // Invalid item ID or name.
return -1;
}
if (count > MAX_SEARCH) {
sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count); // Displaying first %d out of %d matches
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (i = 0; i < count; i++) {
item_data = item_array[i];
sprintf(atcmd_output, msg_txt(1285), item_data->jname,item_data->slot); // Item: '%s'[%d]
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
if (item_data->mob[0].chance == 0) {
strcpy(atcmd_output, msg_txt(1286)); // - Item is not dropped by mobs.
- clif->displaymessage(fd, atcmd_output);
+ 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):
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
for (j=0; j < MAX_SEARCH && item_data->mob[j].chance > 0; j++)
{
sprintf(atcmd_output, "- %s (%02.02f%%)", mob_db(item_data->mob[j].id)->jname, item_data->mob[j].chance/100.);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
}
@@ -7305,7 +7312,7 @@ ACMD_FUNC(whereis)
int i, j, k;
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>).
+ clif->message(fd, msg_txt(1288)); // Please enter a monster name/ID (usage: @whereis <monster_name_or_monster_ID>).
return -1;
}
@@ -7318,29 +7325,29 @@ ACMD_FUNC(whereis)
count = mobdb_searchname_array(mob_array, MAX_SEARCH, message);
if (!count) {
- clif->displaymessage(fd, msg_txt(40)); // Invalid monster ID or name.
+ clif->message(fd, msg_txt(40)); // Invalid monster ID or name.
return -1;
}
if (count > MAX_SEARCH) {
sprintf(atcmd_output, msg_txt(269), MAX_SEARCH, count);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
count = MAX_SEARCH;
}
for (k = 0; k < count; k++) {
mob = mob_array[k];
snprintf(atcmd_output, sizeof atcmd_output, msg_txt(1289), mob->jname); // %s spawns in:
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
for (i = 0; i < ARRAYLENGTH(mob->spawn) && mob->spawn[i].qty; i++)
{
j = map_mapindex2mapid(mob->spawn[i].mapindex);
if (j < 0) continue;
snprintf(atcmd_output, sizeof atcmd_output, "%s (%d)", map[j].name, mob->spawn[i].qty);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
if (i == 0)
- clif->displaymessage(fd, msg_txt(1290)); // This monster does not spawn normally.
+ clif->message(fd, msg_txt(1290)); // This monster does not spawn normally.
}
return 0;
@@ -7352,9 +7359,9 @@ ACMD_FUNC(version)
if ((revision = get_svn_revision()) != 0) {
sprintf(atcmd_output,msg_txt(1295),revision); // rAthena Version SVN r%s
- clif->displaymessage(fd,atcmd_output);
+ clif->message(fd,atcmd_output);
} else
- clif->displaymessage(fd,msg_txt(1296)); // Cannot determine SVN revision.
+ clif->message(fd,msg_txt(1296)); // Cannot determine SVN revision.
return 0;
}
@@ -7389,7 +7396,7 @@ ACMD_FUNC(mutearea)
nullpo_ret(sd);
if (!message || !*message) {
- clif->displaymessage(fd, msg_txt(1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>).
+ clif->message(fd, msg_txt(1297)); // Please enter a time in minutes (usage: @mutearea/@stfu <time in minutes>).
return -1;
}
@@ -7412,16 +7419,16 @@ ACMD_FUNC(rates)
snprintf(buf, CHAT_SIZE_MAX, msg_txt(1298), // Experience rates: Base %.2fx / Job %.2fx
battle_config.base_exp_rate/100., battle_config.job_exp_rate/100.);
- clif->displaymessage(fd, buf);
+ 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
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->displaymessage(fd, buf);
+ 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
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->displaymessage(fd, buf);
+ clif->message(fd, buf);
snprintf(buf, CHAT_SIZE_MAX, msg_txt(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->displaymessage(fd, buf);
+ clif->message(fd, buf);
return 0;
}
@@ -7444,12 +7451,12 @@ ACMD_FUNC(me)
return -1;
if (!message || !*message || sscanf(message, "%199[^\n]", tempmes) < 0) {
- clif->displaymessage(fd, msg_txt(1302)); // Please enter a message (usage: @me <message>).
+ clif->message(fd, msg_txt(1302)); // Please enter a message (usage: @me <message>).
return -1;
}
sprintf(atcmd_output, msg_txt(270), sd->status.name, tempmes); // *%s %s*
- clif->disp_overhead(sd, atcmd_output);
+ clif->disp_overhead(&sd->bl, atcmd_output);
return 0;
@@ -7477,7 +7484,7 @@ ACMD_FUNC(size)
else if( size == SZ_BIG )
clif->specialeffect(&sd->bl,422,AREA);
- clif->displaymessage(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_txt(1303)); // Size change applied.
return 0;
}
@@ -7507,7 +7514,7 @@ ACMD_FUNC(sizeall)
}
mapit_free(iter);
- clif->displaymessage(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_txt(1303)); // Size change applied.
return 0;
}
@@ -7522,12 +7529,12 @@ ACMD_FUNC(sizeguild)
memset(guild, '\0', sizeof(guild));
if( !message || !*message || sscanf(message, "%d %23[^\n]", &size, guild) < 2 ) {
- clif->displaymessage(fd, msg_txt(1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>).
+ clif->message(fd, msg_txt(1304)); // Please enter guild name/ID (usage: @sizeguild <size> <guild name/ID>).
return -1;
}
if( (g = guild_searchname(guild)) == NULL && (g = guild_search(atoi(guild))) == NULL ) {
- clif->displaymessage(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
+ clif->message(fd, msg_txt(94)); // Incorrect name/ID, or no one from the guild is online.
return -1;
}
@@ -7548,7 +7555,7 @@ ACMD_FUNC(sizeguild)
}
}
- clif->displaymessage(fd, msg_txt(1303)); // Size change applied.
+ clif->message(fd, msg_txt(1303)); // Size change applied.
return 0;
}
@@ -7562,10 +7569,10 @@ ACMD_FUNC(monsterignore)
if (!sd->state.monster_ignore) {
sd->state.monster_ignore = 1;
- clif->displaymessage(sd->fd, msg_txt(1305)); // You are now immune to attacks.
+ clif->message(sd->fd, msg_txt(1305)); // You are now immune to attacks.
} else {
sd->state.monster_ignore = 0;
- clif->displaymessage(sd->fd, msg_txt(1306)); // Returned to normal state.
+ clif->message(sd->fd, msg_txt(1306)); // Returned to normal state.
}
return 0;
@@ -7584,23 +7591,23 @@ ACMD_FUNC(fakename)
{
sd->fakename[0] = '\0';
clif->charnameack(0, &sd->bl);
- clif->displaymessage(sd->fd, msg_txt(1307)); // Returned to real name.
+ clif->message(sd->fd, msg_txt(1307)); // Returned to real name.
return 0;
}
- clif->displaymessage(sd->fd, msg_txt(1308)); // You must enter a name.
+ clif->message(sd->fd, msg_txt(1308)); // You must enter a name.
return -1;
}
if( strlen(message) < 2 )
{
- clif->displaymessage(sd->fd, msg_txt(1309)); // Fake name must be at least two characters.
+ clif->message(sd->fd, msg_txt(1309)); // Fake name must be at least two characters.
return -1;
}
safestrncpy(sd->fakename, message, sizeof(sd->fakename));
clif->charnameack(0, &sd->bl);
- clif->displaymessage(sd->fd, msg_txt(1310)); // Fake name enabled.
+ clif->message(sd->fd, msg_txt(1310)); // Fake name enabled.
return 0;
}
@@ -7609,12 +7616,12 @@ ACMD_FUNC(fakename)
* Ragnarok Resources
*------------------------------------------*/
ACMD_FUNC(mapflag) {
-#define checkflag( cmd ) if ( map[ sd->bl.m ].flag.cmd ) clif->displaymessage(sd->fd,#cmd)
+#define checkflag( cmd ) if ( map[ sd->bl.m ].flag.cmd ) clif->message(sd->fd,#cmd)
#define setflag( cmd ) \
if ( strcmp( flag_name , #cmd ) == 0 ){\
map[ sd->bl.m ].flag.cmd = flag;\
sprintf(atcmd_output,"[ @mapflag ] %s flag has been set to %s value = %hd",#cmd,flag?"On":"Off",flag);\
- clif->displaymessage(sd->fd,atcmd_output);\
+ clif->message(sd->fd,atcmd_output);\
return 0;\
}
char flag_name[100];
@@ -7623,8 +7630,8 @@ ACMD_FUNC(mapflag) {
memset(flag_name, '\0', sizeof(flag_name));
if (!message || !*message || (sscanf(message, "%99s %hd", flag_name, &flag) < 1)) {
- clif->displaymessage(sd->fd,msg_txt(1311)); // Enabled Mapflags in this map:
- clif->displaymessage(sd->fd,"----------------------------------");
+ clif->message(sd->fd,msg_txt(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);
checkflag(noexppenalty); checkflag(pvp); checkflag(pvp_noparty); checkflag(pvp_noguild);
@@ -7637,9 +7644,9 @@ ACMD_FUNC(mapflag) {
checkflag(nojobexp); checkflag(nomobloot); checkflag(nomvploot); checkflag(nightenabled);
checkflag(nodrop); checkflag(novending); checkflag(loadevent);
checkflag(nochat); checkflag(partylock); checkflag(guildlock); checkflag(src4instance);
- clif->displaymessage(sd->fd," ");
- clif->displaymessage(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
- clif->displaymessage(sd->fd,msg_txt(1313)); // Type "@mapflag available" to list the available mapflags.
+ 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.
return 1;
}
for (i = 0; flag_name[i]; i++) flag_name[i] = (char)tolower(flag_name[i]); //lowercase
@@ -7657,17 +7664,17 @@ ACMD_FUNC(mapflag) {
setflag(nodrop); setflag(novending); setflag(loadevent);
setflag(nochat); setflag(partylock); setflag(guildlock); setflag(src4instance);
- clif->displaymessage(sd->fd,msg_txt(1314)); // Invalid flag name or flag.
- clif->displaymessage(sd->fd,msg_txt(1312)); // Usage: "@mapflag monster_noteleport 1" (0=Off | 1=On)
- clif->displaymessage(sd->fd,msg_txt(1315)); // Available Flags:
- clif->displaymessage(sd->fd,"----------------------------------");
- clif->displaymessage(sd->fd,"town, autotrade, allowks, nomemo, noteleport, noreturn, monster_noteleport, nosave,");
- clif->displaymessage(sd->fd,"nobranch, noexppenalty, pvp, pvp_noparty, pvp_noguild, pvp_nightmaredrop,");
- clif->displaymessage(sd->fd,"pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground,");
- clif->displaymessage(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
- clif->displaymessage(sd->fd,"fog, fireworks, sakura, leaves, nogo, nobaseexp, nojobexp, nomobloot,");
- clif->displaymessage(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
- clif->displaymessage(sd->fd,"guildlock, src4instance");
+ 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,"----------------------------------");
+ 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,");
+ clif->message(sd->fd,"pvp_nocalcrank, gvg_castle, gvg, gvg_dungeon, gvg_noparty, battleground,");
+ clif->message(sd->fd,"nozenypenalty, notrade, noskill, nowarp, nowarpto, noicewall, snow, clouds, clouds2,");
+ clif->message(sd->fd,"fog, fireworks, sakura, leaves, nogo, nobaseexp, nojobexp, nomobloot,");
+ clif->message(sd->fd,"nomvploot, nightenabled, nodrop, novending, loadevent, nochat, partylock,");
+ clif->message(sd->fd,"guildlock, src4instance");
#undef checkflag
#undef setflag
@@ -7682,12 +7689,12 @@ ACMD_FUNC(showexp)
{
if (sd->state.showexp) {
sd->state.showexp = 0;
- clif->displaymessage(fd, msg_txt(1316)); // Gained exp will not be shown.
+ clif->message(fd, msg_txt(1316)); // Gained exp will not be shown.
return 0;
}
sd->state.showexp = 1;
- clif->displaymessage(fd, msg_txt(1317)); // Gained exp is now shown.
+ clif->message(fd, msg_txt(1317)); // Gained exp is now shown.
return 0;
}
@@ -7695,12 +7702,12 @@ ACMD_FUNC(showzeny)
{
if (sd->state.showzeny) {
sd->state.showzeny = 0;
- clif->displaymessage(fd, msg_txt(1318)); // Gained zeny will not be shown.
+ clif->message(fd, msg_txt(1318)); // Gained zeny will not be shown.
return 0;
}
sd->state.showzeny = 1;
- clif->displaymessage(fd, msg_txt(1319)); // Gained zeny is now shown.
+ clif->message(fd, msg_txt(1319)); // Gained zeny is now shown.
return 0;
}
@@ -7708,12 +7715,12 @@ ACMD_FUNC(showdelay)
{
if (sd->state.showdelay) {
sd->state.showdelay = 0;
- clif->displaymessage(fd, msg_txt(1320)); // Skill delay failures will not be shown.
+ clif->message(fd, msg_txt(1320)); // Skill delay failures will not be shown.
return 0;
}
sd->state.showdelay = 1;
- clif->displaymessage(fd, msg_txt(1321)); // Skill delay failures are now shown.
+ clif->message(fd, msg_txt(1321)); // Skill delay failures are now shown.
return 0;
}
@@ -7733,7 +7740,7 @@ ACMD_FUNC(invite)
if(did == 0) {
// "Duel: @invite without @duel."
- clif->displaymessage(fd, msg_txt(350));
+ clif->message(fd, msg_txt(350));
return 0;
}
@@ -7741,32 +7748,32 @@ ACMD_FUNC(invite)
duel_list[did].members_count >= duel_list[did].max_players_limit) {
// "Duel: Limit of players is reached."
- clif->displaymessage(fd, msg_txt(351));
+ clif->message(fd, msg_txt(351));
return 0;
}
if(target_sd == NULL) {
// "Duel: Player not found."
- clif->displaymessage(fd, msg_txt(352));
+ clif->message(fd, msg_txt(352));
return 0;
}
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
// "Duel: Player already in duel."
- clif->displaymessage(fd, msg_txt(353));
+ clif->message(fd, msg_txt(353));
return 0;
}
if(battle_config.duel_only_on_same_map && target_sd->bl.m != sd->bl.m)
{
sprintf(atcmd_output, msg_txt(364), message);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
duel_invite(did, sd, target_sd);
// "Duel: Invitation has been sent."
- clif->displaymessage(fd, msg_txt(354));
+ clif->message(fd, msg_txt(354));
return 0;
}
@@ -7781,7 +7788,7 @@ ACMD_FUNC(duel)
if(sd->duel_invite > 0) {
// "Duel: @duel without @reject."
- clif->displaymessage(fd, msg_txt(355));
+ clif->message(fd, msg_txt(355));
return 0;
}
@@ -7789,14 +7796,14 @@ ACMD_FUNC(duel)
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);
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return 0;
}
if( message[0] ) {
if(sscanf(message, "%d", &maxpl) >= 1) {
if(maxpl < 2 || maxpl > 65535) {
- clif->displaymessage(fd, msg_txt(357)); // "Duel: Invalid value."
+ clif->message(fd, msg_txt(357)); // "Duel: Invalid value."
return 0;
}
duel_create(sd, maxpl);
@@ -7807,15 +7814,15 @@ ACMD_FUNC(duel)
unsigned int newduel;
if((newduel = duel_create(sd, 2)) != -1) {
if(target_sd->duel_group > 0 || target_sd->duel_invite > 0) {
- clif->displaymessage(fd, msg_txt(353)); // "Duel: Player already in duel."
+ clif->message(fd, msg_txt(353)); // "Duel: Player already in duel."
return 0;
}
duel_invite(newduel, sd, target_sd);
- clif->displaymessage(fd, msg_txt(354)); // "Duel: Invitation has been sent."
+ clif->message(fd, msg_txt(354)); // "Duel: Invitation has been sent."
}
} else {
// "Duel: Player not found."
- clif->displaymessage(fd, msg_txt(352));
+ clif->message(fd, msg_txt(352));
return 0;
}
}
@@ -7830,12 +7837,12 @@ ACMD_FUNC(leave)
{
if(sd->duel_group <= 0) {
// "Duel: @leave without @duel."
- clif->displaymessage(fd, msg_txt(358));
+ clif->message(fd, msg_txt(358));
return 0;
}
duel_leave(sd->duel_group, sd);
- clif->displaymessage(fd, msg_txt(359)); // "Duel: You left the duel."
+ clif->message(fd, msg_txt(359)); // "Duel: You left the duel."
return 0;
}
@@ -7845,26 +7852,26 @@ ACMD_FUNC(accept)
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);
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return 0;
}
if(sd->duel_invite <= 0) {
// "Duel: @accept without invititation."
- clif->displaymessage(fd, msg_txt(360));
+ clif->message(fd, msg_txt(360));
return 0;
}
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->displaymessage(fd, msg_txt(351));
+ clif->message(fd, msg_txt(351));
return 0;
}
duel_accept(sd->duel_invite, sd);
// "Duel: Invitation has been accepted."
- clif->displaymessage(fd, msg_txt(361));
+ clif->message(fd, msg_txt(361));
return 0;
}
@@ -7872,13 +7879,13 @@ ACMD_FUNC(reject)
{
if(sd->duel_invite <= 0) {
// "Duel: @reject without invititation."
- clif->displaymessage(fd, msg_txt(362));
+ clif->message(fd, msg_txt(362));
return 0;
}
duel_reject(sd->duel_invite, sd);
// "Duel: Invitation has been rejected."
- clif->displaymessage(fd, msg_txt(363));
+ clif->message(fd, msg_txt(363));
return 0;
}
@@ -7893,7 +7900,7 @@ ACMD_FUNC(cash)
nullpo_retr(-1, sd);
if( !message || !*message || (value = atoi(message)) == 0 ) {
- clif->displaymessage(fd, msg_txt(1322)); // Please enter an amount.
+ clif->message(fd, msg_txt(1322)); // Please enter an amount.
return -1;
}
@@ -7904,13 +7911,13 @@ ACMD_FUNC(cash)
sprintf(output, msg_txt(505), ret, sd->cashPoints);
clif->disp_onlyself(sd, output, strlen(output));
}
- else clif->displaymessage(fd, msg_txt(149)); // Unable to decrease the number/value.
+ else clif->message(fd, msg_txt(149)); // Unable to decrease the number/value.
} else {
if( (ret=pc_paycash(sd, -value, 0)) >= 0){
sprintf(output, msg_txt(410), ret, sd->cashPoints);
clif->disp_onlyself(sd, output, strlen(output));
}
- else clif->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ else clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
}
}
else
@@ -7920,13 +7927,13 @@ ACMD_FUNC(cash)
sprintf(output, msg_txt(506), ret, sd->kafraPoints);
clif->disp_onlyself(sd, output, strlen(output));
}
- else clif->displaymessage(fd, msg_txt(149)); // Unable to decrease the number/value.
+ else clif->message(fd, msg_txt(149)); // Unable to decrease the number/value.
} else {
if( (ret=pc_paycash(sd, -value, -value)) >= 0){
sprintf(output, msg_txt(411), ret, sd->kafraPoints);
clif->disp_onlyself(sd, output, strlen(output));
}
- else clif->displaymessage(fd, msg_txt(41)); // Unable to decrease the number/value.
+ else clif->message(fd, msg_txt(41)); // Unable to decrease the number/value.
}
}
@@ -7940,17 +7947,17 @@ ACMD_FUNC(clone)
struct map_session_data *pl_sd=NULL;
if (!message || !*message) {
- clif->displaymessage(sd->fd,msg_txt(1323)); // You must enter a player name or ID.
+ clif->message(sd->fd,msg_txt(1323)); // You must enter a player name or ID.
return 0;
}
if((pl_sd=map_nick2sd((char *)message)) == NULL && (pl_sd=map_charid2sd(atoi(message))) == NULL) {
- clif->displaymessage(fd, msg_txt(3)); // Character not found.
+ clif->message(fd, msg_txt(3)); // Character not found.
return 0;
}
if(pc_get_group_level(pl_sd) > pc_get_group_level(sd)) {
- clif->displaymessage(fd, msg_txt(126)); // Cannot clone a player of higher GM level than yourself.
+ clif->message(fd, msg_txt(126)); // Cannot clone a player of higher GM level than yourself.
return 0;
}
@@ -7959,13 +7966,13 @@ ACMD_FUNC(clone)
else if (strcmpi(command+1, "slaveclone") == 0) {
flag = 2;
if(pc_isdead(sd)){
- clif->displaymessage(fd, msg_txt(129+flag*2));
+ clif->message(fd, msg_txt(129+flag*2));
return 0;
}
master = sd->bl.id;
if (battle_config.atc_slave_clone_limit
&& mob_countslave(&sd->bl) >= battle_config.atc_slave_clone_limit) {
- clif->displaymessage(fd, msg_txt(127)); // You've reached your slave clones limit.
+ clif->message(fd, msg_txt(127)); // You've reached your slave clones limit.
return 0;
}
}
@@ -7981,62 +7988,10 @@ ACMD_FUNC(clone)
}
if((x = mob_clone_spawn(pl_sd, sd->bl.m, x, y, "", master, 0, flag?1:0, 0)) > 0) {
- clif->displaymessage(fd, msg_txt(128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned.
+ clif->message(fd, msg_txt(128+flag*2)); // Evil Clone spawned. Clone spawned. Slave clone spawned.
return 0;
}
- clif->displaymessage(fd, msg_txt(129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone.
- return 0;
-}
-
-/*===================================
- * Main chat [LuzZza]
- * Usage: @main <on|off|message>
- *-----------------------------------*/
-ACMD_FUNC(main)
-{
- if( message[0] ) {
-
- if(strcmpi(message, "on") == 0) {
- if(!sd->state.mainchat) {
- sd->state.mainchat = 1;
- clif->displaymessage(fd, msg_txt(380)); // Main chat has been activated.
- } else {
- clif->displaymessage(fd, msg_txt(381)); // Main chat already activated.
- }
- } else if(strcmpi(message, "off") == 0) {
- if(sd->state.mainchat) {
- sd->state.mainchat = 0;
- clif->displaymessage(fd, msg_txt(382)); // Main chat has been disabled.
- } else {
- clif->displaymessage(fd, msg_txt(383)); // Main chat already disabled.
- }
- } else {
- if(!sd->state.mainchat) {
- sd->state.mainchat = 1;
- clif->displaymessage(fd, msg_txt(380)); // Main chat has been activated.
- }
- if (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCHAT) {
- clif->displaymessage(fd, msg_txt(387));
- return -1;
- }
-
- if ( battle_config.min_chat_delay ) {
- if( DIFF_TICK(sd->cantalk_tick, gettick()) > 0 )
- return 0;
- sd->cantalk_tick = gettick() + battle_config.min_chat_delay;
- }
-
- // send the message using inter-server system
- intif_main_message( sd, message );
- }
-
- } else {
-
- if(sd->state.mainchat)
- clif->displaymessage(fd, msg_txt(384)); // Main chat currently enabled. Usage: @main <on|off>, @main <message>.
- else
- clif->displaymessage(fd, msg_txt(385)); // Main chat currently disabled. Usage: @main <on|off>, @main <message>.
- }
+ clif->message(fd, msg_txt(129+flag*2)); // Unable to spawn evil clone. Unable to spawn clone. Unable to spawn slave clone.
return 0;
}
@@ -8047,10 +8002,10 @@ ACMD_FUNC(main)
ACMD_FUNC(noask)
{
if(sd->state.noask) {
- clif->displaymessage(fd, msg_txt(391)); // Autorejecting is deactivated.
+ clif->message(fd, msg_txt(391)); // Autorejecting is deactivated.
sd->state.noask = 0;
} else {
- clif->displaymessage(fd, msg_txt(390)); // Autorejecting is activated.
+ clif->message(fd, msg_txt(390)); // Autorejecting is activated.
sd->state.noask = 1;
}
@@ -8064,14 +8019,14 @@ ACMD_FUNC(noask)
ACMD_FUNC(request)
{
if (!message || !*message) {
- clif->displaymessage(sd->fd,msg_txt(277)); // Usage: @request <petition/message to online GMs>.
+ clif->message(sd->fd,msg_txt(277)); // Usage: @request <petition/message to online GMs>.
return -1;
}
sprintf(atcmd_output, msg_txt(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->displaymessage(sd->fd,msg_txt(279)); // @request sent.
+ clif->message(sd->fd,msg_txt(279)); // @request sent.
return 0;
}
@@ -8081,7 +8036,7 @@ ACMD_FUNC(request)
ACMD_FUNC(feelreset)
{
pc_resetfeel(sd);
- clif->displaymessage(fd, msg_txt(1324)); // Reset 'Feeling' maps.
+ clif->message(fd, msg_txt(1324)); // Reset 'Feeling' maps.
return 0;
}
@@ -8107,27 +8062,27 @@ ACMD_FUNC(ksprotection)
if( sd->state.noks ) {
sd->state.noks = 0;
- clif->displaymessage(fd, msg_txt(1325)); // [ K.S Protection Inactive ]
+ clif->message(fd, msg_txt(1325)); // [ K.S Protection Inactive ]
}
else
{
if( !message || !*message || !strcmpi(message, "party") )
{ // Default is Party
sd->state.noks = 2;
- clif->displaymessage(fd, msg_txt(1326)); // [ K.S Protection Active - Option: Party ]
+ clif->message(fd, msg_txt(1326)); // [ K.S Protection Active - Option: Party ]
}
else if( !strcmpi(message, "self") )
{
sd->state.noks = 1;
- clif->displaymessage(fd, msg_txt(1327)); // [ K.S Protection Active - Option: Self ]
+ clif->message(fd, msg_txt(1327)); // [ K.S Protection Active - Option: Self ]
}
else if( !strcmpi(message, "guild") )
{
sd->state.noks = 3;
- clif->displaymessage(fd, msg_txt(1328)); // [ K.S Protection Active - Option: Guild ]
+ clif->message(fd, msg_txt(1328)); // [ K.S Protection Active - Option: Guild ]
}
else
- clif->displaymessage(fd, msg_txt(1329)); // Usage: @noks <self|party|guild>
+ clif->message(fd, msg_txt(1329)); // Usage: @noks <self|party|guild>
}
return 0;
}
@@ -8140,10 +8095,10 @@ ACMD_FUNC(allowks)
if( map[sd->bl.m].flag.allowks ) {
map[sd->bl.m].flag.allowks = 0;
- clif->displaymessage(fd, msg_txt(1330)); // [ Map K.S Protection Active ]
+ clif->message(fd, msg_txt(1330)); // [ Map K.S Protection Active ]
} else {
map[sd->bl.m].flag.allowks = 1;
- clif->displaymessage(fd, msg_txt(1331)); // [ Map K.S Protection Inactive ]
+ clif->message(fd, msg_txt(1331)); // [ Map K.S Protection Inactive ]
}
return 0;
}
@@ -8154,7 +8109,7 @@ ACMD_FUNC(resetstat)
pc_resetstate(sd);
sprintf(atcmd_output, msg_txt(207), sd->status.name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -8164,7 +8119,7 @@ ACMD_FUNC(resetskill)
pc_resetskill(sd,1);
sprintf(atcmd_output, msg_txt(206), sd->status.name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
@@ -8224,7 +8179,7 @@ ACMD_FUNC(itemlist)
if( count == 1 )
{
StringBuf_Printf(&buf, msg_txt(1332), location, sd->status.name); // ------ %s items list of '%s' ------
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Clear(&buf);
}
@@ -8270,7 +8225,7 @@ ACMD_FUNC(itemlist)
StringBuf_AppendStr(&buf, equipstr);
}
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Clear(&buf);
if( it->card[0] == CARD0_PET )
@@ -8317,7 +8272,7 @@ ACMD_FUNC(itemlist)
}
if( StringBuf_Length(&buf) > 0 )
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Clear(&buf);
}
@@ -8327,7 +8282,7 @@ ACMD_FUNC(itemlist)
else
StringBuf_Printf(&buf, msg_txt(1354), counter, count, location); // %d item(s) found in %d %s slots.
- clif->displaymessage(fd, StringBuf_Value(&buf));
+ clif->message(fd, StringBuf_Value(&buf));
StringBuf_Destroy(&buf);
@@ -8387,11 +8342,11 @@ ACMD_FUNC(stats)
sprintf(job_jobname, "Job - %s %s", job_name(sd->status.class_), "(level %d)");
sprintf(output, msg_txt(53), sd->status.name); // '%s' stats:
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
for (i = 0; output_table[i].format != NULL; i++) {
sprintf(output, output_table[i].format, output_table[i].value);
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
}
return 0;
@@ -8407,7 +8362,7 @@ ACMD_FUNC(delitem)
if( !message || !*message || ( sscanf(message, "\"%99[^\"]\" %d", item_name, &amount) < 2 && sscanf(message, "%99s %d", item_name, &amount) < 2 ) || amount < 1 )
{
- clif->displaymessage(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_txt(1355)); // Please enter an item name/ID, a quantity, and a player name (usage: #delitem <player> <item_name_or_ID> <quantity>).
return -1;
}
@@ -8417,7 +8372,7 @@ ACMD_FUNC(delitem)
}
else
{
- clif->displaymessage(fd, msg_txt(19)); // Invalid item ID or name.
+ clif->message(fd, msg_txt(19)); // Invalid item ID or name.
return -1;
}
@@ -8439,22 +8394,22 @@ ACMD_FUNC(delitem)
// notify target
sprintf(atcmd_output, msg_txt(113), total-amount); // %d item(s) removed by a GM.
- clif->displaymessage(sd->fd, atcmd_output);
+ clif->message(sd->fd, atcmd_output);
// notify source
if( amount == total )
{
- clif->displaymessage(fd, msg_txt(116)); // Character does not have the item.
+ clif->message(fd, msg_txt(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.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
else
{
sprintf(atcmd_output, msg_txt(114), total); // %d item(s) removed from the player.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return 0;
@@ -8474,25 +8429,25 @@ ACMD_FUNC(font)
if( sd->user_font )
{
sd->user_font = 0;
- clif->displaymessage(fd, msg_txt(1356)); // Returning to normal font.
+ clif->message(fd, msg_txt(1356)); // Returning to normal font.
clif->font(sd);
}
else
{
- clif->displaymessage(fd, msg_txt(1357)); // Use @font <1-9> to change your message font.
- clif->displaymessage(fd, msg_txt(1358)); // Use 0 or no parameter to return to normal font.
+ 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.
}
}
else if( font_id < 0 || font_id > 9 )
- clif->displaymessage(fd, msg_txt(1359)); // Invalid font. Use a value from 0 to 9.
+ clif->message(fd, msg_txt(1359)); // Invalid font. Use a value from 0 to 9.
else if( font_id != sd->user_font )
{
sd->user_font = font_id;
clif->font(sd);
- clif->displaymessage(fd, msg_txt(1360)); // Font changed.
+ clif->message(fd, msg_txt(1360)); // Font changed.
}
else
- clif->displaymessage(fd, msg_txt(1361)); // Already using this font.
+ clif->message(fd, msg_txt(1361)); // Already using this font.
return 0;
}
@@ -8511,7 +8466,7 @@ static void atcommand_commands_sub(struct map_session_data* sd, const int fd, At
memset(line_buff,' ',CHATBOX_SIZE);
line_buff[CHATBOX_SIZE-1] = 0;
- clif->displaymessage(fd, msg_txt(273)); // "Commands available:"
+ clif->message(fd, msg_txt(273)); // "Commands available:"
for (cmd = dbi_first(iter); dbi_exists(iter); cmd = dbi_next(iter)) {
unsigned int slen = 0;
@@ -8535,7 +8490,7 @@ static void atcommand_commands_sub(struct map_session_data* sd, const int fd, At
// flush the text buffer if this command won't fit into it
if ( slen + cur - line_buff >= CHATBOX_SIZE )
{
- clif->displaymessage(fd,line_buff);
+ clif->message(fd,line_buff);
cur = line_buff;
memset(line_buff,' ',CHATBOX_SIZE);
line_buff[CHATBOX_SIZE-1] = 0;
@@ -8547,10 +8502,10 @@ static void atcommand_commands_sub(struct map_session_data* sd, const int fd, At
count++;
}
dbi_destroy(iter);
- clif->displaymessage(fd,line_buff);
+ clif->message(fd,line_buff);
sprintf(atcmd_output, msg_txt(274), count); // "%d commands found."
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return;
}
@@ -8575,12 +8530,12 @@ ACMD_FUNC(charcommands)
/* for new mounts */
ACMD_FUNC(mount2) {
- clif->displaymessage(sd->fd,msg_txt(1362)); // NOTICE: If you crash with mount your LUA is outdated.
+ clif->message(sd->fd,msg_txt(1362)); // NOTICE: If you crash with mount your LUA is outdated.
if( !(sd->sc.option&OPTION_MOUNTING) ) {
- clif->displaymessage(sd->fd,msg_txt(1363)); // You have mounted.
+ clif->message(sd->fd,msg_txt(1363)); // You have mounted.
pc_setoption(sd, sd->sc.option|OPTION_MOUNTING);
} else {
- clif->displaymessage(sd->fd,msg_txt(1364)); // You have released your mount.
+ clif->message(sd->fd,msg_txt(1364)); // You have released your mount.
pc_setoption(sd, sd->sc.option&~OPTION_MOUNTING);
}
return 0;
@@ -8590,8 +8545,8 @@ ACMD_FUNC(accinfo) {
char query[NAME_LENGTH];
if (!message || !*message || strlen(message) > NAME_LENGTH ) {
- clif->displaymessage(fd, msg_txt(1365)); // Usage: @accinfo/@accountinfo <account_id/char name>
- clif->displaymessage(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_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".
return -1;
}
@@ -8611,19 +8566,19 @@ ACMD_FUNC(set) {
bool is_str = false;
if( !message || !*message || (toset = sscanf(message, "%31s %128[^\n]s", reg, val)) < 1 ) {
- clif->displaymessage(fd, msg_txt(1367)); // Usage: @set <variable name> <value>
- clif->displaymessage(fd, msg_txt(1368)); // Usage: ex. "@set PoringCharVar 50"
- clif->displaymessage(fd, msg_txt(1369)); // Usage: ex. "@set PoringCharVarSTR$ Super Duper String"
- clif->displaymessage(fd, msg_txt(1370)); // Usage: ex. "@set PoringCharVarSTR$" outputs its value, Super Duper String.
+ 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.
return -1;
}
/* disabled variable types (they require a proper script state to function, so allowing them would crash the server) */
if( reg[0] == '.' ) {
- clif->displaymessage(fd, msg_txt(1371)); // NPC variables may not be used with @set.
+ clif->message(fd, msg_txt(1371)); // NPC variables may not be used with @set.
return -1;
} else if( reg[0] == '\'' ) {
- clif->displaymessage(fd, msg_txt(1372)); // Instance variables may not be used with @set.
+ clif->message(fd, msg_txt(1372)); // Instance variables may not be used with @set.
return -1;
}
@@ -8714,7 +8669,7 @@ ACMD_FUNC(set) {
break;
}
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
aFree(data);
@@ -8722,7 +8677,7 @@ ACMD_FUNC(set) {
}
ACMD_FUNC(reloadquestdb) {
do_reload_quest();
- clif->displaymessage(fd, msg_txt(1377)); // Quest database has been reloaded.
+ clif->message(fd, msg_txt(1377)); // Quest database has been reloaded.
return 0;
}
ACMD_FUNC(addperm) {
@@ -8732,11 +8687,11 @@ ACMD_FUNC(addperm) {
if( !message || !*message ) {
sprintf(atcmd_output, msg_txt(1378),command); // Usage: %s <permission_name>
- clif->displaymessage(fd, atcmd_output);
- clif->displaymessage(fd, msg_txt(1379)); // -- Permission List
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1379)); // -- Permission List
for( i = 0; i < perm_size; i++ ) {
sprintf(atcmd_output,"- %s",pc_g_permission_name[i].name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return -1;
}
@@ -8745,28 +8700,28 @@ ACMD_FUNC(addperm) {
if( i == perm_size ) {
sprintf(atcmd_output,msg_txt(1380),message); // '%s' is not a known permission.
- clif->displaymessage(fd, atcmd_output);
- clif->displaymessage(fd, msg_txt(1379)); // -- Permission List
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1379)); // -- Permission List
for( i = 0; i < perm_size; i++ ) {
sprintf(atcmd_output,"- %s",pc_g_permission_name[i].name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
return -1;
}
if( add && (sd->permissions&pc_g_permission_name[i].permission) ) {
sprintf(atcmd_output, msg_txt(1381),sd->status.name,pc_g_permission_name[i].name); // User '%s' already possesses the '%s' permission.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
} else if ( !add && !(sd->permissions&pc_g_permission_name[i].permission) ) {
sprintf(atcmd_output, msg_txt(1382),sd->status.name,pc_g_permission_name[i].name); // User '%s' doesn't possess the '%s' permission.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
sprintf(atcmd_output,msg_txt(1383),sd->status.name); // -- User '%s' Permissions
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
for( i = 0; i < perm_size; i++ ) {
if( sd->permissions&pc_g_permission_name[i].permission ) {
sprintf(atcmd_output,"- %s",pc_g_permission_name[i].name);
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
}
}
@@ -8780,21 +8735,21 @@ ACMD_FUNC(addperm) {
sprintf(atcmd_output, msg_txt(1384),sd->status.name); // User '%s' permissions updated successfully. The changes are temporary.
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return 0;
}
ACMD_FUNC(unloadnpcfile) {
if( !message || !*message ) {
- clif->displaymessage(fd, msg_txt(1385)); // Usage: @unloadnpcfile <file name>
+ clif->message(fd, msg_txt(1385)); // Usage: @unloadnpcfile <file name>
return -1;
}
if( npc_unloadfile(message) )
- clif->displaymessage(fd, msg_txt(1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed.
+ clif->message(fd, msg_txt(1386)); // File unloaded. Be aware that mapflags and monsters spawned directly are not removed.
else {
- clif->displaymessage(fd, msg_txt(1387)); // File not found.
+ clif->message(fd, msg_txt(1387)); // File not found.
return -1;
}
return 0;
@@ -8810,12 +8765,12 @@ ACMD_FUNC(cart) {
if( !message || !*message || val < 0 || val > MAX_CARTS ) {
sprintf(atcmd_output, msg_txt(1390),command,MAX_CARTS); // Unknown Cart (usage: %s <0-%d>).
- clif->displaymessage(fd, atcmd_output);
+ clif->message(fd, atcmd_output);
return -1;
}
if( val == 0 && !pc_iscarton(sd) ) {
- clif->displaymessage(fd, msg_txt(1391)); // You do not possess a cart to be removed
+ clif->message(fd, msg_txt(1391)); // You do not possess a cart to be removed
return -1;
}
@@ -8834,12 +8789,302 @@ ACMD_FUNC(cart) {
MC_CART_MDFY(0);
}
- clif->displaymessage(fd, msg_txt(1392)); // Cart Added
+ clif->message(fd, msg_txt(1392)); // Cart Added
return 0;
#undef MC_CART_MDFY
}
+/* [Ind/Hercules] */
+ACMD_FUNC(join) {
+ struct hChSysCh *channel;
+ char name[HCHSYS_NAME_LENGTH], pass[HCHSYS_NAME_LENGTH];
+
+ if( !message || !*message || sscanf(message, "%s %s", name, pass) < 1 ) {
+ sprintf(atcmd_output, msg_txt(1399),command); // Unknown Channel (usage: %s <#channel_name>)
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+ if( hChSys.local && strcmpi(name + 1, hChSys.local_name) == 0 ) {
+ if( !map[sd->bl.m].channel ) {
+ clif->chsys_mjoin(sd);
+ return 0;
+ } else
+ channel = map[sd->bl.m].channel;
+ } else if( hChSys.ally && sd->status.guild_id && strcmpi(name + 1, hChSys.ally_name) == 0 ) {
+ struct guild *g = sd->guild;
+ if( !g ) return -1;/* unlikely, but we wont let it crash anyway. */
+ channel = (struct hChSysCh *)g->channel;
+ } else if( !( channel = strdb_get(clif->channel_db, name + 1) ) ) {
+ sprintf(atcmd_output, msg_txt(1400),name,command); // Unknown Channel '%s' (usage: %s <#channel_name>)
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ if( idb_exists(channel->users, sd->status.char_id) ) {
+ sprintf(atcmd_output, msg_txt(1434),name); // You're already in the '%s' channel
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+ if( channel->pass[0] != '\0' && strcmp(channel->pass,pass) != 0 ) {
+ if( pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ) {
+ sd->stealth = true;
+ } else {
+ sprintf(atcmd_output, msg_txt(1401),name,command); // '%s' Channel is password protected (usage: %s <#channel_name> <password>)
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+ }
+
+ if( !( channel->opt & hChSys_OPT_ANNOUNCE_JOIN ) ) {
+ sprintf(atcmd_output, msg_txt(1403),name); // You're now in the '%s' channel
+ clif->message(fd, atcmd_output);
+ }
+
+ clif->chsys_join(channel,sd);
+
+ return 0;
+}
+/* [Ind/Hercules] */
+inline void atcmd_channel_help(int fd, const char *command, bool can_create) {
+ sprintf(atcmd_output, msg_txt(1404),command); // %s failed.
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1414));// --- Available options:
+ if( can_create ) {
+ sprintf(atcmd_output, msg_txt(1415),command);// -- %s create <channel name> <channel password>
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1416));// - creates a new channel
+ }
+ sprintf(atcmd_output, msg_txt(1417),command);// -- %s list
+ clif->message(fd, atcmd_output);
+ clif->message(fd, msg_txt(1418));// - lists public channels
+ if( can_create ) {
+ sprintf(atcmd_output, msg_txt(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, atcmd_output);
+ clif->message(fd, msg_txt(1422));// - changes <channel name> color to <color name>
+ }
+ sprintf(atcmd_output, msg_txt(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, 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, atcmd_output);
+ clif->message(fd, msg_txt(1430));// - unbinds your global chat from its attached channel (if binded)
+
+}
+/* [Ind/Hercules] */
+ACMD_FUNC(channel) {
+ struct hChSysCh *channel;
+ char key[HCHSYS_NAME_LENGTH], sub1[HCHSYS_NAME_LENGTH], sub2[HCHSYS_NAME_LENGTH], sub3[HCHSYS_NAME_LENGTH];
+ unsigned char k = 0;
+ sub1[0] = sub2[0] = sub3[0] = '\0';
+
+ if( !message || !*message || sscanf(message, "%s %s %s %s", key, sub1, sub2, sub3) < 1 ) {
+ atcmd_channel_help(fd,command,( hChSys.allow_user_channel_creation || pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ));
+ return 0;
+ }
+
+ if( strcmpi(key,"create") == 0 && ( hChSys.allow_user_channel_creation || pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ) ) {
+ if( sub1[0] != '#' ) {
+ clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ return -1;
+ } else if ( strlen(sub1) < 3 || strlen(sub1) > HCHSYS_NAME_LENGTH ) {
+ sprintf(atcmd_output, msg_txt(1406), HCHSYS_NAME_LENGTH);// Channel length must be between 3 and %d
+ clif->message(fd, atcmd_output);
+ return -1;
+ } else if ( sub3[0] != '\0' ) {
+ clif->message(fd, msg_txt(1408)); // Channel password may not contain spaces
+ return -1;
+ }
+ if( strcmpi(sub1 + 1,hChSys.local_name) == 0 || strcmpi(sub1 + 1,hChSys.ally_name) == 0 || strdb_exists(clif->channel_db, sub1 + 1) ) {
+ sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ CREATE( channel, struct hChSysCh, 1 );
+
+ clif->chsys_create(channel,sub1 + 1,sub2,0);
+
+ channel->owner = sd->status.char_id;
+
+ if( !( channel->opt & hChSys_OPT_ANNOUNCE_JOIN ) ) {
+ sprintf(atcmd_output, msg_txt(1403),sub1); // You're now in the '%s' channel
+ clif->message(fd, atcmd_output);
+ }
+
+ clif->chsys_join(channel,sd);
+
+ } else if ( strcmpi(key,"list") == 0 ) {
+ if( sub1[0] != '\0' && strcmpi(sub1,"colors") == 0 ) {
+ char mout[40];
+ for( k = 0; k < hChSys.colors_count; k++ ) {
+ unsigned short msg_len = 1;
+ msg_len += sprintf(mout, "[ %s list colors ] : %s",command,hChSys.colors_name[k]);
+
+ WFIFOHEAD(fd,msg_len + 12);
+ WFIFOW(fd,0) = 0x2C1;
+ WFIFOW(fd,2) = msg_len + 12;
+ WFIFOL(fd,4) = 0;
+ WFIFOL(fd,8) = hChSys.colors[k];
+ safestrncpy((char*)WFIFOP(fd,12), mout, msg_len);
+ WFIFOSET(fd, msg_len + 12);
+ }
+ } else {
+ DBIterator *iter = db_iterator(clif->channel_db);
+ bool show_all = pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ? true : false;
+ clif->message(fd, msg_txt(1410)); // -- Public Channels
+ if( hChSys.local ) {
+ sprintf(atcmd_output, msg_txt(1409), hChSys.local_name, map[sd->bl.m].channel ? db_size(map[sd->bl.m].channel->users) : 0);// - #%s ( %d users )
+ clif->message(fd, atcmd_output);
+ }
+ if( hChSys.ally && sd->status.guild_id ) {
+ struct guild *g = sd->guild;
+ if( !g ) return -1;
+ sprintf(atcmd_output, msg_txt(1409), hChSys.ally_name, db_size(((struct hChSysCh *)g->channel)->users));// - #%s ( %d users )
+ clif->message(fd, atcmd_output);
+ }
+ for(channel = dbi_first(iter); dbi_exists(iter); channel = dbi_next(iter)) {
+ if( show_all || channel->type == hChSys_PUBLIC ) {
+ sprintf(atcmd_output, msg_txt(1409), channel->name, db_size(channel->users));// - #%s ( %d users )
+ clif->message(fd, atcmd_output);
+ }
+ }
+ dbi_destroy(iter);
+ }
+ } else if ( strcmpi(key,"setcolor") == 0 ) {
+
+ if( sub1[0] != '#' ) {
+ clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ return -1;
+ }
+
+ if( !(channel = strdb_get(clif->channel_db, sub1 + 1)) ) {
+ sprintf(atcmd_output, msg_txt(1407), sub1);// Channel '%s' is not available
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ if( channel->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'
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ for( k = 0; k < hChSys.colors_count; k++ ) {
+ if( strcmpi(sub2,hChSys.colors_name[k]) == 0 )
+ break;
+ }
+ if( k == hChSys.colors_count ) {
+ sprintf(atcmd_output, msg_txt(1411), sub2);// Unknown color '%s'
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+ channel->color = k;
+ sprintf(atcmd_output, msg_txt(1413),sub1,hChSys.colors_name[k]);// '%s' channel color updated to '%s'
+ clif->message(fd, atcmd_output);
+ } else if ( strcmpi(key,"leave") == 0 ) {
+
+ if( sub1[0] != '#' ) {
+ clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ return -1;
+ }
+
+ for(k = 0; k < sd->channel_count; k++) {
+ if( strcmpi(sub1+1,sd->channels[k]->name) == 0 )
+ break;
+ }
+ if( k == sd->channel_count ) {
+ sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+ clif->chsys_left(sd->channels[k],sd);
+ sprintf(atcmd_output, msg_txt(1425),sub1); // You've left the '%s' channel
+ clif->message(fd, atcmd_output);
+ } else if ( strcmpi(key,"bindto") == 0 ) {
+
+ if( sub1[0] != '#' ) {
+ clif->message(fd, msg_txt(1405));// Channel name must start with a '#'
+ return -1;
+ }
+
+ for(k = 0; k < sd->channel_count; k++) {
+ if( strcmpi(sub1+1,sd->channels[k]->name) == 0 )
+ break;
+ }
+ if( k == sd->channel_count ) {
+ sprintf(atcmd_output, msg_txt(1425),sub1);// You're not part of the '%s' channel
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ sd->gcbind = sd->channels[k];
+ sprintf(atcmd_output, msg_txt(1431),sub1); // Your global chat is now binded to the '%s' channel
+ clif->message(fd, atcmd_output);
+ } else if ( strcmpi(key,"unbind") == 0 ) {
+
+ if( sd->gcbind == NULL ) {
+ clif->message(fd, msg_txt(1432));// Your global chat is not binded to any channel
+ return -1;
+ }
+
+ sprintf(atcmd_output, msg_txt(1433),sd->gcbind->name); // Your global chat is now unbinded from the '#%s' channel
+ clif->message(fd, atcmd_output);
+
+ sd->gcbind = NULL;
+ } else {
+ atcmd_channel_help(fd,command,( hChSys.allow_user_channel_creation || pc_has_permission(sd, PC_PERM_HCHSYS_ADMIN) ));
+ }
+
+ return 0;
+}
+/* debug only, delete after */
+ACMD_FUNC(fontcolor) {
+ unsigned char k;
+
+ if( !message || !*message ) {
+ char mout[40];
+ for( k = 0; k < hChSys.colors_count; k++ ) {
+ unsigned short msg_len = 1;
+ msg_len += sprintf(mout, "[ %s ] : %s",command,hChSys.colors_name[k]);
+
+ WFIFOHEAD(fd,msg_len + 12);
+ WFIFOW(fd,0) = 0x2C1;
+ WFIFOW(fd,2) = msg_len + 12;
+ WFIFOL(fd,4) = 0;
+ WFIFOL(fd,8) = hChSys.colors[k];
+ safestrncpy((char*)WFIFOP(fd,12), mout, msg_len);
+ WFIFOSET(fd, msg_len + 12);
+ }
+ return -1;
+ }
+
+ if( message[0] == '0' ) {
+ sd->fontcolor = 0;
+ pc_disguise(sd,0);
+ return 0;
+ }
+
+ for( k = 0; k < hChSys.colors_count; k++ ) {
+ if( strcmpi(message,hChSys.colors_name[k]) == 0 )
+ break;
+ }
+ if( k == hChSys.colors_count ) {
+ sprintf(atcmd_output, msg_txt(1411), message);// Unknown color '%s'
+ clif->message(fd, atcmd_output);
+ return -1;
+ }
+
+ sd->fontcolor = k + 1;
+ pc_disguise(sd,sd->status.class_);
+ return 0;
+}
/**
* Fills the reference of available commands in atcommand DBMap
**/
@@ -9052,7 +9297,6 @@ void atcommand_basecommands(void) {
ACMD_DEF(leave),
ACMD_DEF(accept),
ACMD_DEF(reject),
- ACMD_DEF(main),
ACMD_DEF(clone),
ACMD_DEF2("slaveclone", clone),
ACMD_DEF2("evilclone", clone),
@@ -9100,7 +9344,10 @@ void atcommand_basecommands(void) {
ACMD_DEF2("rmvperm", addperm),
ACMD_DEF(unloadnpcfile),
ACMD_DEF(cart),
- ACMD_DEF(mount2)
+ ACMD_DEF(mount2),
+ ACMD_DEF(join),
+ ACMD_DEF(channel),
+ ACMD_DEF(fontcolor)
};
AtCommandInfo* atcommand;
int i;
@@ -9206,7 +9453,7 @@ static void atcommand_get_suggestions(struct map_session_data* sd, const char *n
strcat(buffer," ");
}
- clif->displaymessage(sd->fd, buffer);
+ clif->message(sd->fd, buffer);
}
dbi_destroy(atcommand_iter);
@@ -9250,7 +9497,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
if ( type == 1) {
//Commands are disabled on maps flagged as 'nocommand'
if ( map[sd->bl.m].nocommand && pc_get_group_level(sd) < map[sd->bl.m].nocommand ) {
- clif->displaymessage(fd, msg_txt(143));
+ clif->message(fd, msg_txt(143));
return false;
}
}
@@ -9294,7 +9541,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
}
sprintf(output, msg_txt(1388), charcommand_symbol); // Charcommand failed (usage: %c<command> <char name> <parameters>).
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return true;
} while(0);
}
@@ -9321,7 +9568,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
if (*message == charcommand_symbol &&
(ssd = map_nick2sd(charname)) == NULL && (ssd = map_nick2sd(charname2)) == NULL ) {
sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return true;
}
@@ -9345,7 +9592,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
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."
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
atcommand_get_suggestions(sd, command + 1, *message == atcommand_symbol);
return true;
} else
@@ -9359,7 +9606,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
return false;
}
if( pc_isdead(sd) && pc_has_permission(sd,PC_PERM_DISABLE_CMD_DEAD) ) {
- clif->displaymessage(fd, msg_txt(1393)); // You can't use commands while dead
+ clif->message(fd, msg_txt(1393)); // You can't use commands while dead
return true;
}
}
@@ -9368,7 +9615,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
if (*message == charcommand_symbol &&
(ssd = map_nick2sd(charname)) == NULL && (ssd = map_nick2sd(charname2)) == NULL ) {
sprintf(output, msg_txt(1389), command); // %s failed. Player not found.
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return true;
}
@@ -9376,7 +9623,7 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message
if ( (info->func(fd, (*atcmd_msg == atcommand_symbol) ? sd : ssd, command, params) != 0) )
{
sprintf(output,msg_txt(154), command); // %s failed.
- clif->displaymessage(fd, output);
+ clif->message(fd, output);
return true;
}
diff --git a/src/map/battle.c b/src/map/battle.c
index 8f97ca58d..692750bdb 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1324,7 +1324,7 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama
}
}
if(src->type != BL_MOB) {
- struct guild *g = guild_search(status_get_guild_id(src));
+ struct guild *g = src->type == BL_PC ? ((TBL_PC *)src)->guild : guild_search(status_get_guild_id(src));
if (class_ == MOBID_EMPERIUM && (!g || guild_checkskill(g,GD_APPROVAL) <= 0 ))
return 0;
@@ -1335,32 +1335,32 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama
}
switch (skill_id) {
- //Skills with no damage reduction.
- case PA_PRESSURE:
- case HW_GRAVITATION:
- case NJ_ZENYNAGE:
- case KO_MUCHANAGE:
- break;
- default:
- /* Uncomment if you want god-mode Emperiums at 100 defense. [Kisuka]
- if (md && md->guardian_data) {
- damage -= damage * (md->guardian_data->castle->defense/100) * battle_config.castle_defense_rate/100;
- }
- */
- if (flag & BF_SKILL) { //Skills get a different reduction than non-skills. [Skotlex]
- if (flag&BF_WEAPON)
- damage = damage * battle_config.gvg_weapon_damage_rate / 100;
- if (flag&BF_MAGIC)
- damage = damage * battle_config.gvg_magic_damage_rate / 100;
- if (flag&BF_MISC)
- damage = damage * battle_config.gvg_misc_damage_rate / 100;
- } else { //Normal attacks get reductions based on range.
- if (flag & BF_SHORT)
- damage = damage * battle_config.gvg_short_damage_rate / 100;
- if (flag & BF_LONG)
- damage = damage * battle_config.gvg_long_damage_rate / 100;
- }
- if(!damage) damage = 1;
+ //Skills with no damage reduction.
+ case PA_PRESSURE:
+ case HW_GRAVITATION:
+ case NJ_ZENYNAGE:
+ case KO_MUCHANAGE:
+ break;
+ default:
+ /* Uncomment if you want god-mode Emperiums at 100 defense. [Kisuka]
+ if (md && md->guardian_data) {
+ damage -= damage * (md->guardian_data->castle->defense/100) * battle_config.castle_defense_rate/100;
+ }
+ */
+ if (flag & BF_SKILL) { //Skills get a different reduction than non-skills. [Skotlex]
+ if (flag&BF_WEAPON)
+ damage = damage * battle_config.gvg_weapon_damage_rate / 100;
+ if (flag&BF_MAGIC)
+ damage = damage * battle_config.gvg_magic_damage_rate / 100;
+ if (flag&BF_MISC)
+ damage = damage * battle_config.gvg_misc_damage_rate / 100;
+ } else { //Normal attacks get reductions based on range.
+ if (flag & BF_SHORT)
+ damage = damage * battle_config.gvg_short_damage_rate / 100;
+ if (flag & BF_LONG)
+ damage = damage * battle_config.gvg_long_damage_rate / 100;
+ }
+ if(!damage) damage = 1;
}
return damage;
}
diff --git a/src/map/buyingstore.c b/src/map/buyingstore.c
index bd7d92727..fb186917b 100644
--- a/src/map/buyingstore.c
+++ b/src/map/buyingstore.c
@@ -58,13 +58,13 @@ bool buyingstore_setup(struct map_session_data* sd, unsigned char slots)
if( map[sd->bl.m].flag.novending )
{// custom: no vending maps
- clif->displaymessage(sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message(sd->fd, msg_txt(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->displaymessage(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
return false;
}
@@ -101,7 +101,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
clif->buyingstore_open_failed(sd, BUYINGSTORE_CREATE, 0);
return;
}
@@ -113,13 +113,13 @@ void buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha
if( map[sd->bl.m].flag.novending )
{// custom: no vending maps
- clif->displaymessage(sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message(sd->fd, msg_txt(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->displaymessage(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message(sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
return;
}
@@ -221,7 +221,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
return;
}
@@ -259,7 +259,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
clif->buyingstore_trade_failed_seller(sd, BUYINGSTORE_TRADE_SELLER_FAILED, 0);
return;
}
diff --git a/src/map/chat.c b/src/map/chat.c
index 98f866133..f908e94ef 100644
--- a/src/map/chat.c
+++ b/src/map/chat.c
@@ -83,13 +83,13 @@ int chat_createpcchat(struct map_session_data* sd, const char* title, const char
if( map[sd->bl.m].flag.nochat )
{
- clif->displaymessage(sd->fd, msg_txt(281));
+ clif->message(sd->fd, msg_txt(281));
return 0; //Can't create chatrooms on this map.
}
if( map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNOCHAT) )
{
- clif->displaymessage (sd->fd, msg_txt(665));
+ clif->message (sd->fd, msg_txt(665));
return 0;
}
diff --git a/src/map/chrif.c b/src/map/chrif.c
index d3abb8680..3672aa52f 100644
--- a/src/map/chrif.c
+++ b/src/map/chrif.c
@@ -811,7 +811,7 @@ int chrif_changesex(struct map_session_data *sd) {
WFIFOW(char_fd,30) = 5;
WFIFOSET(char_fd,44);
- clif->displaymessage(sd->fd, msg_txt(408)); //"Need disconnection to perform change-sex request..."
+ clif->message(sd->fd, msg_txt(408)); //"Need disconnection to perform change-sex request..."
if (sd->fd)
clif->authfail_fd(sd->fd, 15);
@@ -856,7 +856,7 @@ static void chrif_char_ask_name_answer(int acc, const char* player_name, uint16
default: output[0] = '\0'; break;
}
- clif->displaymessage(sd->fd, output);
+ clif->message(sd->fd, output);
}
/*==========================================
@@ -908,7 +908,7 @@ int chrif_changedsex(int fd) {
// save character
sd->login_id1++; // change identify, because if player come back in char within the 5 seconds, he can change its characters
// do same modify in login-server for the account, but no in char-server (it ask again login_id1 to login, and don't remember it)
- clif->displaymessage(sd->fd, msg_txt(409)); //"Your sex has been changed (need disconnection by the server)..."
+ clif->message(sd->fd, msg_txt(409)); //"Your sex has been changed (need disconnection by the server)..."
set_eof(sd->fd); // forced to disconnect for the change
map_quit(sd); // Remove leftovers (e.g. autotrading) [Paradox924X]
}
@@ -1004,18 +1004,18 @@ int chrif_accountban(int fd) {
if (RFIFOB(fd,6) == 0) { // 0: change of statut, 1: ban
int ret_status = RFIFOL(fd,7); // status or final date of a banishment
if(0<ret_status && ret_status<=9)
- clif->displaymessage(sd->fd, msg_txt(411+ret_status));
+ clif->message(sd->fd, msg_txt(411+ret_status));
else if(ret_status==100)
- clif->displaymessage(sd->fd, msg_txt(421));
+ clif->message(sd->fd, msg_txt(421));
else
- clif->displaymessage(sd->fd, msg_txt(420)); //"Your account has not more authorised."
+ clif->message(sd->fd, msg_txt(420)); //"Your account has not more authorised."
} else if (RFIFOB(fd,6) == 1) { // 0: change of statut, 1: ban
time_t timestamp;
char tmpstr[2048];
timestamp = (time_t)RFIFOL(fd,7); // status or final date of a banishment
strcpy(tmpstr, msg_txt(423)); //"Your account has been banished until "
strftime(tmpstr + strlen(tmpstr), 24, "%d-%m-%Y %H:%M:%S", localtime(&timestamp));
- clif->displaymessage(sd->fd, tmpstr);
+ clif->message(sd->fd, tmpstr);
}
set_eof(sd->fd); // forced to disconnect for the change
diff --git a/src/map/clif.c b/src/map/clif.c
index 120de98c2..51320dd56 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -13,6 +13,7 @@
#include "../common/strlib.h"
#include "../common/utils.h"
#include "../common/ers.h"
+#include "../common/conf.h"
#include "map.h"
#include "chrif.h"
@@ -50,9 +51,6 @@
#include <stdarg.h>
#include <time.h>
-/* for clif_clearunit_delayed */
-static struct eri *delay_clearunit_ers;
-
//#define DUMP_UNKNOWN_PACKET
//#define DUMP_INVALID_PACKET
@@ -61,17 +59,13 @@ struct Clif_Config {
int connect_cmd[MAX_PACKET_VER + 1]; //Store the connect command for all versions. [Skotlex]
} clif_config;
-struct s_packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB + 1];
-
//Converts item type in case of pet eggs.
-static inline int itemtype(int type)
-{
+static inline int itemtype(int type) {
return ( type == IT_PETEGG ) ? IT_WEAPON : type;
}
-static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsigned char dir)
-{
+static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsigned char dir) {
p += pos;
p[0] = (uint8)(x>>2);
p[1] = (uint8)((x<<6) | ((y>>4)&0x3f));
@@ -80,8 +74,7 @@ static inline void WBUFPOS(uint8* p, unsigned short pos, short x, short y, unsig
// client-side: x0+=sx0*0.0625-0.5 and y0+=sy0*0.0625-0.5
-static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
-{
+static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
p += pos;
p[0] = (uint8)(x0>>2);
p[1] = (uint8)((x0<<6) | ((y0>>4)&0x3f));
@@ -92,20 +85,17 @@ static inline void WBUFPOS2(uint8* p, unsigned short pos, short x0, short y0, sh
}
-static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir)
-{
+static inline void WFIFOPOS(int fd, unsigned short pos, short x, short y, unsigned char dir) {
WBUFPOS(WFIFOP(fd,pos), 0, x, y, dir);
}
-static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0)
-{
+static inline void WFIFOPOS2(int fd, unsigned short pos, short x0, short y0, short x1, short y1, unsigned char sx0, unsigned char sy0) {
WBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
-static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short* y, unsigned char* dir)
-{
+static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short* y, unsigned char* dir) {
p += pos;
if( x ) {
@@ -122,8 +112,7 @@ static inline void RBUFPOS(const uint8* p, unsigned short pos, short* x, short*
}
-static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0)
-{
+static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
p += pos;
if( x0 ) {
@@ -152,28 +141,24 @@ static inline void RBUFPOS2(const uint8* p, unsigned short pos, short* x0, short
}
-static inline void RFIFOPOS(int fd, unsigned short pos, short* x, short* y, unsigned char* dir)
-{
+static inline void RFIFOPOS(int fd, unsigned short pos, short* x, short* y, unsigned char* dir) {
RBUFPOS(RFIFOP(fd,pos), 0, x, y, dir);
}
-static inline void RFIFOPOS2(int fd, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0)
-{
+static inline void RFIFOPOS2(int fd, unsigned short pos, short* x0, short* y0, short* x1, short* y1, unsigned char* sx0, unsigned char* sy0) {
RBUFPOS2(WFIFOP(fd,pos), 0, x0, y0, x1, y1, sx0, sy0);
}
//To idenfity disguised characters.
-static inline bool disguised(struct block_list* bl)
-{
+static inline bool disguised(struct block_list* bl) {
return (bool)( bl->type == BL_PC && ((TBL_PC*)bl)->disguise );
}
//Guarantees that the given string does not exceeds the allowed size, as well as making sure it's null terminated. [Skotlex]
-static inline unsigned int mes_len_check(char* mes, unsigned int len, unsigned int max)
-{
+static inline unsigned int mes_len_check(char* mes, unsigned int len, unsigned int max) {
if( len > max )
len = max;
@@ -182,14 +167,10 @@ static inline unsigned int mes_len_check(char* mes, unsigned int len, unsigned i
return len;
}
-
-static int clif_parse (int fd);
-
/*==========================================
* Ip setting of map-server
*------------------------------------------*/
-int clif_setip(const char* ip)
-{
+int clif_setip(const char* ip) {
char ip_str[16];
clif->map_ip = host2ip(ip);
if (!clif->map_ip) {
@@ -202,8 +183,7 @@ int clif_setip(const char* ip)
return 1;
}
-void clif_setbindip(const char* ip)
-{
+void clif_setbindip(const char* ip) {
clif->bind_ip = host2ip(ip);
if (clif->bind_ip) {
char ip_str[16];
@@ -253,7 +233,7 @@ uint32 clif_refresh_ip(void) {
#if PACKETVER >= 20071106
static inline unsigned char clif_bl_type(struct block_list *bl) {
switch (bl->type) {
- case BL_PC: return disguised(bl)?0x1:0x0; //PC_TYPE
+ case BL_PC: return disguised(bl) && pcdb_checkid(status_get_viewdata(bl)->class_)? 0x1:0x0; //PC_TYPE
case BL_ITEM: return 0x2; //ITEM_TYPE
case BL_SKILL: return 0x3; //SKILL_TYPE
case BL_CHAT: return 0x4; //UNKNOWN_TYPE
@@ -278,8 +258,7 @@ static inline unsigned char clif_bl_type(struct block_list *bl) {
* - AREA_WOS (AREA WITHOUT SELF) : Not run for self
* - AREA_CHAT_WOC : Everyone in the area of your chat without a chat
*------------------------------------------*/
-static int clif_send_sub(struct block_list *bl, va_list ap)
-{
+int clif_send_sub(struct block_list *bl, va_list ap) {
struct block_list *src_bl;
struct map_session_data *sd;
unsigned char *buf;
@@ -356,7 +335,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target
int x0 = 0, x1 = 0, y0 = 0, y1 = 0, fd;
struct s_mapiterator* iter;
- if( type != ALL_CLIENT && type != CHAT_MAINCHAT )
+ if( type != ALL_CLIENT )
nullpo_ret(bl);
sd = BL_CAST(BL_PC, bl);
@@ -393,11 +372,11 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target
clif->send (buf, len, bl, SELF);
case AREA_WOC:
case AREA_WOS:
- map_foreachinarea(clif_send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE,
+ map_foreachinarea(clif->send_sub, bl->m, bl->x-AREA_SIZE, bl->y-AREA_SIZE, bl->x+AREA_SIZE, bl->y+AREA_SIZE,
BL_PC, buf, len, bl, type);
break;
case AREA_CHAT_WOC:
- map_foreachinarea(clif_send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5),
+ map_foreachinarea(clif->send_sub, bl->m, bl->x-(AREA_SIZE-5), bl->y-(AREA_SIZE-5),
bl->x+(AREA_SIZE-5), bl->y+(AREA_SIZE-5), BL_PC, buf, len, bl, AREA_WOC);
break;
@@ -427,20 +406,6 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target
}
break;
- case CHAT_MAINCHAT: //[LuzZza]
- iter = mapit_getallusers();
- while( (tsd = (TBL_PC*)mapit_next(iter)) != NULL )
- {
- if( tsd->state.mainchat && tsd->chatID == 0 && packet_db[tsd->packet_ver][RBUFW(buf,0)].len )
- { // packet must exist for the client version
- WFIFOHEAD(tsd->fd, len);
- memcpy(WFIFOP(tsd->fd,0), buf, len);
- WFIFOSET(tsd->fd,len);
- }
- }
- mapit_free(iter);
- break;
-
case PARTY_AREA:
case PARTY_AREA_WOS:
x0 = bl->x - AREA_SIZE;
@@ -535,7 +500,7 @@ int clif_send(const uint8* buf, int len, struct block_list* bl, enum send_target
case GUILD_WOS:
case GUILD_NOBG:
if (sd && sd->status.guild_id)
- g = guild_search(sd->status.guild_id);
+ g = sd->guild;
if (g) {
for(i = 0; i < g->max_member; i++) {
@@ -698,7 +663,7 @@ void clif_authrefuse(int fd, uint8 error_code)
/// ? = disconnected -> MsgStringTable[3]
void clif_authfail_fd(int fd, int type)
{
- if (!fd || !session[fd] || session[fd]->func_parse != clif_parse) //clif_authfail should only be invoked on players!
+ if (!fd || !session[fd] || session[fd]->func_parse != clif->parse) //clif_authfail should only be invoked on players!
return;
WFIFOHEAD(fd, packet_len(0x81));
@@ -825,18 +790,17 @@ void clif_clearunit_area(struct block_list* bl, clr_type type)
/// Used to make monsters with player-sprites disappear after dying
/// like normal monsters, because the client does not remove those
/// automatically.
-static int clif_clearunit_delayed_sub(int tid, unsigned int tick, int id, intptr_t data)
-{
+int clif_clearunit_delayed_sub(int tid, unsigned int tick, int id, intptr_t data) {
struct block_list *bl = (struct block_list *)data;
- clif_clearunit_area(bl, (clr_type) id);
- ers_free(delay_clearunit_ers,bl);
+ clif->clearunit_area(bl, (clr_type) id);
+ ers_free(clif->delay_clearunit_ers,bl);
return 0;
}
void clif_clearunit_delayed(struct block_list* bl, clr_type type, unsigned int tick)
{
- struct block_list *tbl = ers_alloc(delay_clearunit_ers, struct block_list);
+ struct block_list *tbl = ers_alloc(clif->delay_clearunit_ers, struct block_list);
memcpy (tbl, bl, sizeof (struct block_list));
- add_timer(tick, clif_clearunit_delayed_sub, (int)type, (intptr_t)tbl);
+ add_timer(tick, clif->clearunit_delayed_sub, (int)type, (intptr_t)tbl);
}
void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand)
@@ -877,31 +841,23 @@ void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, un
}
//To make the assignation of the level based on limits clearer/easier. [Skotlex]
-static int clif_setlevel_sub(int lv)
-{
- if( lv < battle_config.max_lv )
- {
+static int clif_setlevel_sub(int lv) {
+ if( lv < battle_config.max_lv ) {
;
- }
- else if( lv < battle_config.aura_lv )
- {
+ } else if( lv < battle_config.aura_lv ) {
lv = battle_config.max_lv - 1;
- }
- else
- {
+ } else {
lv = battle_config.max_lv;
}
return lv;
}
-static int clif_setlevel(struct block_list* bl)
-{
+static int clif_setlevel(struct block_list* bl) {
int lv = status_get_lv(bl);
if( battle_config.client_limit_unit_lv&bl->type )
return clif_setlevel_sub(lv);
- switch( bl->type )
- {
+ switch( bl->type ) {
case BL_NPC:
case BL_PET:
// npcs and pets do not have level
@@ -913,8 +869,7 @@ static int clif_setlevel(struct block_list* bl)
/*==========================================
* Prepares 'unit standing/spawning' packet
*------------------------------------------*/
-static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool spawn)
-{
+int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool spawn) {
struct map_session_data* sd;
struct status_change* sc = status_get_sc(bl);
struct view_data* vd = status_get_viewdata(bl);
@@ -1079,8 +1034,7 @@ static int clif_set_unit_idle(struct block_list* bl, unsigned char* buffer, bool
/*==========================================
* Prepares 'unit walking' packet
*------------------------------------------*/
-static int clif_set_unit_walking(struct block_list* bl, struct unit_data* ud, unsigned char* buffer)
-{
+int clif_set_unit_walking(struct block_list* bl, struct unit_data* ud, unsigned char* buffer) {
struct map_session_data* sd;
struct status_change* sc = status_get_sc(bl);
struct view_data* vd = status_get_viewdata(bl);
@@ -1185,8 +1139,7 @@ static int clif_set_unit_walking(struct block_list* bl, struct unit_data* ud, un
//Modifies the buffer for disguise characters and sends it to self.
//Used for spawn/walk packets, where the ID offset changes for packetver >=9
-static void clif_setdisguise(struct block_list *bl, unsigned char *buf,int len)
-{
+void clif_setdisguise(struct block_list *bl, unsigned char *buf,int len) {
#if PACKETVER >= 20091103
WBUFB(buf,4)= pcdb_checkid(status_get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
WBUFL(buf,5)=-bl->id;
@@ -1223,8 +1176,7 @@ void clif_class_change(struct block_list *bl,int class_,int type)
/// Notifies the client of an object's spirits.
/// 01d0 <id>.L <amount>.W (ZC_SPIRITS)
/// 01e1 <id>.L <amount>.W (ZC_SPIRITS2)
-static void clif_spiritball_single(int fd, struct map_session_data *sd)
-{
+void clif_spiritball_single(int fd, struct map_session_data *sd) {
WFIFOHEAD(fd, packet_len(0x1e1));
WFIFOW(fd,0)=0x1e1;
WFIFOL(fd,2)=sd->bl.id;
@@ -1235,8 +1187,7 @@ static void clif_spiritball_single(int fd, struct map_session_data *sd)
/*==========================================
* Kagerou/Oboro amulet spirit
*------------------------------------------*/
-static void clif_talisman_single(int fd, struct map_session_data *sd, short type)
-{
+void clif_talisman_single(int fd, struct map_session_data *sd, short type) {
WFIFOHEAD(fd, packet_len(0x08cf));
WFIFOW(fd,0)=0x08cf;
WFIFOL(fd,2)=sd->bl.id;
@@ -1249,8 +1200,7 @@ static void clif_talisman_single(int fd, struct map_session_data *sd, short type
* Run when player changes map / refreshes
* Tells its client to display all weather settings being used by this map
*------------------------------------------*/
-static void clif_weather_check(struct map_session_data *sd)
-{
+void clif_weather_check(struct map_session_data *sd) {
int16 m = sd->bl.m;
int fd = sd->fd;
@@ -1260,12 +1210,7 @@ static void clif_weather_check(struct map_session_data *sd)
|| map[m].flag.fireworks
|| map[m].flag.sakura
|| map[m].flag.leaves
- /**
- * No longer available, keeping here just in case it's back someday. [Ind]
- **/
- //|| map[m].flag.rain
- || map[m].flag.clouds2)
- {
+ || map[m].flag.clouds2) {
if (map[m].flag.snow)
clif->specialeffect_single(&sd->bl, 162, fd);
if (map[m].flag.clouds)
@@ -1320,10 +1265,10 @@ int clif_spawn(struct block_list *bl)
if(bl->type == BL_NPC && !((TBL_NPC*)bl)->chat_id && (((TBL_NPC*)bl)->sc.option&OPTION_INVISIBLE))
return 0;
- len = clif_set_unit_idle(bl, buf,true);
+ len = clif->set_unit_idle(bl, buf,true);
clif->send(buf, len, bl, AREA_WOS);
if (disguised(bl))
- clif_setdisguise(bl, buf, len);
+ clif->setdisguise(bl, buf, len);
if (vd->cloth_color)
clif->refreshlook(bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,AREA_WOS);
@@ -1549,44 +1494,42 @@ void clif_walkok(struct map_session_data *sd)
}
-static void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud)
-{
+void clif_move2(struct block_list *bl, struct view_data *vd, struct unit_data *ud) {
uint8 buf[128];
int len;
- len = clif_set_unit_walking(bl,ud,buf);
+ len = clif->set_unit_walking(bl,ud,buf);
clif->send(buf,len,bl,AREA_WOS);
if (disguised(bl))
- clif_setdisguise(bl, buf, len);
+ clif->setdisguise(bl, buf, len);
if(vd->cloth_color)
clif->refreshlook(bl,bl->id,LOOK_CLOTHES_COLOR,vd->cloth_color,AREA_WOS);
- switch(bl->type)
- {
- case BL_PC:
- {
- TBL_PC *sd = ((TBL_PC*)bl);
-// clif_movepc(sd);
- if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
- clif->specialeffect(&sd->bl,423,AREA);
- else if(sd->state.size==SZ_MEDIUM)
- clif->specialeffect(&sd->bl,421,AREA);
- }
- break;
- case BL_MOB:
- {
- TBL_MOB *md = ((TBL_MOB*)bl);
- if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
- clif->specialeffect(&md->bl,423,AREA);
- else if(md->special_state.size==SZ_MEDIUM)
- clif->specialeffect(&md->bl,421,AREA);
- }
- break;
- case BL_PET:
- if( vd->head_bottom ) // needed to display pet equip properly
- clif->send_petdata(NULL, (TBL_PET*)bl, 3, vd->head_bottom);
- break;
+ switch(bl->type) {
+ case BL_PC:
+ {
+ TBL_PC *sd = ((TBL_PC*)bl);
+ // clif_movepc(sd);
+ if(sd->state.size==SZ_BIG) // tiny/big players [Valaris]
+ clif->specialeffect(&sd->bl,423,AREA);
+ else if(sd->state.size==SZ_MEDIUM)
+ clif->specialeffect(&sd->bl,421,AREA);
+ }
+ break;
+ case BL_MOB:
+ {
+ TBL_MOB *md = ((TBL_MOB*)bl);
+ if(md->special_state.size==SZ_BIG) // tiny/big mobs [Valaris]
+ clif->specialeffect(&md->bl,423,AREA);
+ else if(md->special_state.size==SZ_MEDIUM)
+ clif->specialeffect(&md->bl,421,AREA);
+ }
+ break;
+ case BL_PET:
+ if( vd->head_bottom ) // needed to display pet equip properly
+ clif->send_petdata(NULL, (TBL_PET*)bl, 3, vd->head_bottom);
+ break;
}
}
@@ -1614,7 +1557,7 @@ void clif_move(struct unit_data *ud)
// Since we don't know how to update the speed of other objects,
// use the old walk packet to update the data.
ud->state.speed_changed = 0;
- clif_move2(bl, vd, ud);
+ clif->move2(bl, vd, ud);
return;
}
@@ -1634,8 +1577,7 @@ void clif_move(struct unit_data *ud)
/*==========================================
* Delays the map_quit of a player after they are disconnected. [Skotlex]
*------------------------------------------*/
-static int clif_delayquit(int tid, unsigned int tick, int id, intptr_t data)
-{
+int clif_delayquit(int tid, unsigned int tick, int id, intptr_t data) {
struct map_session_data *sd = NULL;
//Remove player from map server
@@ -1647,17 +1589,16 @@ static int clif_delayquit(int tid, unsigned int tick, int id, intptr_t data)
/*==========================================
*
*------------------------------------------*/
-void clif_quitsave(int fd,struct map_session_data *sd)
-{
+void clif_quitsave(int fd,struct map_session_data *sd) {
if (!battle_config.prevent_logout ||
DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout)
map_quit(sd);
- else if (sd->fd)
- { //Disassociate session from player (session is deleted after this function was called)
+ else if (sd->fd) {
+ //Disassociate session from player (session is deleted after this function was called)
//And set a timer to make him quit later.
session[sd->fd]->session_data = NULL;
sd->fd = 0;
- add_timer(gettick() + 10000, clif_delayquit, sd->bl.id, 0);
+ add_timer(gettick() + 10000, clif->delayquit, sd->bl.id, 0);
}
}
@@ -1773,7 +1714,21 @@ void clif_buylist(struct map_session_data *sd, struct npc_data *nd)
WFIFOW(fd,2) = 4 + c*11;
WFIFOSET(fd,WFIFOW(fd,2));
}
-
+void clif_hercules_chsys_create(struct hChSysCh *channel, char *name, char *pass, unsigned char color) {
+ channel->users = idb_alloc(DB_OPT_BASE);
+ if( name )
+ safestrncpy(channel->name, name, HCHSYS_NAME_LENGTH);
+ channel->color = color;
+ if( !pass )
+ channel->pass[0] = '\0';
+ else
+ safestrncpy(channel->pass, pass, HCHSYS_NAME_LENGTH);
+
+ channel->opt = hChSys_OPT_BASE;
+
+ if( channel->type != hChSys_MAP && channel->type != hChSys_ALLY )
+ strdb_put(clif->channel_db, channel->name, channel);
+}
/// Presents list of items, that can be sold to an NPC shop (ZC_PC_SELL_ITEMLIST).
/// 00c7 <packet len>.W { <index>.W <price>.L <overcharge price>.L }*
@@ -2038,8 +1993,25 @@ void clif_viewpoint(struct map_session_data *sd, int npc_id, int type, int x, in
WFIFOL(fd,19)=color;
WFIFOSET(fd,packet_len(0x144));
}
-
-
+void clif_hercules_chsys_join(struct hChSysCh *channel, struct map_session_data *sd) {
+ RECREATE(sd->channels, struct hChSysCh *, ++sd->channel_count);
+ sd->channels[ sd->channel_count - 1 ] = channel;
+ idb_put(channel->users, sd->status.char_id, sd);
+
+ if( sd->stealth ) {
+ sd->stealth = false;
+ } else if( channel->opt & hChSys_OPT_ANNOUNCE_JOIN ) {
+ char message[60];
+ sprintf(message, "#%s '%s' joined",channel->name,sd->status.name);
+ clif->chsys_msg(channel,sd,message);
+ }
+
+ /* someone is cheating, we kindly disconnect the bastard */
+ if( sd->channel_count > 200 ) {
+ set_eof(sd->fd);
+ }
+
+}
/// Displays an illustration image.
/// 0145 <image name>.16B <type>.B (ZC_SHOW_IMAGE)
/// 01b3 <image name>.64B <type>.B (ZC_SHOW_IMAGE2)
@@ -2067,8 +2039,7 @@ void clif_cutin(struct map_session_data* sd, const char* image, int type)
/*==========================================
* Fills in card data from the given item and into the buffer. [Skotlex]
*------------------------------------------*/
-static void clif_addcards(unsigned char* buf, struct item* item)
-{
+void clif_addcards(unsigned char* buf, struct item* item) {
int i=0,j;
if( item == NULL ) { //Blank data
WBUFW(buf,0) = 0;
@@ -2177,7 +2148,7 @@ void clif_additem(struct map_session_data *sd, int n, int amount, int fail)
WFIFOB(fd,8)=sd->status.inventory[n].identify;
WFIFOB(fd,9)=sd->status.inventory[n].attribute;
WFIFOB(fd,10)=sd->status.inventory[n].refine;
- clif_addcards(WFIFOP(fd,11), &sd->status.inventory[n]);
+ clif->addcards(WFIFOP(fd,11), &sd->status.inventory[n]);
WFIFOW(fd,19)=pc_equippoint(sd,n);
WFIFOB(fd,21)=itemtype(sd->inventory_data[n]->type);
WFIFOB(fd,22)=fail;
@@ -2224,7 +2195,7 @@ void clif_dropitem(struct map_session_data *sd,int n,int amount)
void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
{
#if PACKETVER < 20091117
- clif_dropitem(sd,n,amount);
+ clif->dropitem(sd,n,amount);
#else
int fd;
@@ -2245,8 +2216,7 @@ void clif_delitem(struct map_session_data *sd,int n,int amount, short reason)
// Simplifies inventory/cart/storage packets by handling the packet section relevant to items. [Skotlex]
// Equip is >= 0 for equippable items (holds the equip-point, is 0 for pet
// armor/egg) -1 for stackable items, -2 for stackable items where arrows must send in the equip-point.
-void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip)
-{
+void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *id, int equip) {
if (id->view_id > 0)
WBUFW(buf,n)=id->view_id;
else
@@ -2267,10 +2237,8 @@ void clif_item_sub(unsigned char *buf, int n, struct item *i, struct item_data *
}
}
-void clif_favorite_item(struct map_session_data* sd, unsigned short index);
//Unified inventory function which sends all of the inventory (requires two packets, one for equipable items and one for stackable ones. [Skotlex]
-void clif_inventorylist(struct map_session_data *sd)
-{
+void clif_inventorylist(struct map_session_data *sd) {
int i,n,ne,arrow=-1;
unsigned char *buf;
unsigned char *bufe;
@@ -2301,8 +2269,8 @@ void clif_inventorylist(struct map_session_data *sd)
if( !itemdb_isstackable2(sd->inventory_data[i]) )
{ //Non-stackable (Equippable)
WBUFW(bufe,ne*se+4)=i+2;
- clif_item_sub(bufe, ne*se+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i));
- clif_addcards(WBUFP(bufe, ne*se+16), &sd->status.inventory[i]);
+ clif->item_sub(bufe, ne*se+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i));
+ clif->addcards(WBUFP(bufe, ne*se+16), &sd->status.inventory[i]);
#if PACKETVER >= 20071002
WBUFL(bufe,ne*se+24)=sd->status.inventory[i].expire_time;
WBUFW(bufe,ne*se+28)=0; //Unknown
@@ -2318,11 +2286,11 @@ void clif_inventorylist(struct map_session_data *sd)
else
{ //Stackable.
WBUFW(buf,n*s+4)=i+2;
- clif_item_sub(buf, n*s+6, &sd->status.inventory[i], sd->inventory_data[i], -2);
+ clif->item_sub(buf, n*s+6, &sd->status.inventory[i], sd->inventory_data[i], -2);
if( sd->inventory_data[i]->equip == EQP_AMMO && sd->status.inventory[i].equip )
arrow=i;
#if PACKETVER >= 5
- clif_addcards(WBUFP(buf, n*s+14), &sd->status.inventory[i]);
+ clif->addcards(WBUFP(buf, n*s+14), &sd->status.inventory[i]);
#endif
#if PACKETVER >= 20080102
WBUFL(buf,n*s+22)=sd->status.inventory[i].expire_time;
@@ -2359,7 +2327,7 @@ void clif_inventorylist(struct map_session_data *sd)
continue;
if ( sd->status.inventory[i].favorite )
- clif_favorite_item(sd, i);
+ clif->favorite_item(sd, i);
}
#endif
@@ -2391,8 +2359,8 @@ void clif_equiplist(struct map_session_data *sd)
continue;
//Equippable
WBUFW(buf,n*cmd+4)=i+2;
- clif_item_sub(buf, n*cmd+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i));
- clif_addcards(WBUFP(buf, n*cmd+16), &sd->status.inventory[i]);
+ clif->item_sub(buf, n*cmd+6, &sd->status.inventory[i], sd->inventory_data[i], pc_equippoint(sd,i));
+ clif->addcards(WBUFP(buf, n*cmd+16), &sd->status.inventory[i]);
#if PACKETVER >= 20071002
WBUFL(buf,n*cmd+24)=sd->status.inventory[i].expire_time;
WBUFW(buf,n*cmd+28)=0; //Unknown
@@ -2448,8 +2416,8 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
if( !itemdb_isstackable2(id) )
{ //Equippable
WBUFW(bufe,ne*cmd+4)=i+1;
- clif_item_sub(bufe, ne*cmd+6, &items[i], id, id->equip);
- clif_addcards(WBUFP(bufe, ne*cmd+16), &items[i]);
+ clif->item_sub(bufe, ne*cmd+6, &items[i], id, id->equip);
+ clif->addcards(WBUFP(bufe, ne*cmd+16), &items[i]);
#if PACKETVER >= 20071002
WBUFL(bufe,ne*cmd+24)=items[i].expire_time;
WBUFW(bufe,ne*cmd+28)=0; //Unknown
@@ -2459,9 +2427,9 @@ void clif_storagelist(struct map_session_data* sd, struct item* items, int items
else
{ //Stackable
WBUFW(buf,n*s+4)=i+1;
- clif_item_sub(buf, n*s+6, &items[i], id,-1);
+ clif->item_sub(buf, n*s+6, &items[i], id,-1);
#if PACKETVER >= 5
- clif_addcards(WBUFP(buf,n*s+14), &items[i]);
+ clif->addcards(WBUFP(buf,n*s+14), &items[i]);
#endif
#if PACKETVER >= 20080102
WBUFL(buf,n*s+22)=items[i].expire_time;
@@ -2528,8 +2496,8 @@ void clif_cartlist(struct map_session_data *sd)
if( !itemdb_isstackable2(id) )
{ //Equippable
WBUFW(bufe,ne*cmd+4)=i+2;
- clif_item_sub(bufe, ne*cmd+6, &sd->status.cart[i], id, id->equip);
- clif_addcards(WBUFP(bufe, ne*cmd+16), &sd->status.cart[i]);
+ clif->item_sub(bufe, ne*cmd+6, &sd->status.cart[i], id, id->equip);
+ clif->addcards(WBUFP(bufe, ne*cmd+16), &sd->status.cart[i]);
#if PACKETVER >= 20071002
WBUFL(bufe,ne*cmd+24)=sd->status.cart[i].expire_time;
WBUFW(bufe,ne*cmd+28)=0; //Unknown
@@ -2539,9 +2507,9 @@ void clif_cartlist(struct map_session_data *sd)
else
{ //Stackable
WBUFW(buf,n*s+4)=i+2;
- clif_item_sub(buf, n*s+6, &sd->status.cart[i], id,-1);
+ clif->item_sub(buf, n*s+6, &sd->status.cart[i], id,-1);
#if PACKETVER >= 5
- clif_addcards(WBUFP(buf,n*s+14), &sd->status.cart[i]);
+ clif->addcards(WBUFP(buf,n*s+14), &sd->status.cart[i]);
#endif
#if PACKETVER >= 20080102
WBUFL(buf,n*s+22)=sd->status.cart[i].expire_time;
@@ -2635,12 +2603,142 @@ void clif_guild_xy_remove(struct map_session_data *sd)
WBUFW(buf,8)=-1;
clif->send(buf,packet_len(0x1eb),&sd->bl,GUILD_SAMEMAP_WOS);
}
+void read_channels_config(void) {
+ config_t channels_conf;
+ config_setting_t *chsys = NULL;
+ const char *config_filename = "conf/channels.conf"; // FIXME hardcoded name
+
+ if (conf_read_file(&channels_conf, config_filename))
+ return;
+
+ chsys = config_lookup(&channels_conf, "chsys");
+
+ if (chsys != NULL) {
+ config_setting_t *settings = config_setting_get_elem(chsys, 0);
+ config_setting_t *channels;
+ config_setting_t *colors;
+ int i,k;
+ const char *local_name, *ally_name,
+ *local_color, *ally_color;
+ int ally_enabled = 0, local_enabled = 0,
+ local_autojoin = 0, ally_autojoin = 0,
+ allow_user_channel_creation = 0;
+
+ if( !config_setting_lookup_string(settings, "map_local_channel_name", &local_name) )
+ local_name = "map";
+ safestrncpy(hChSys.local_name, local_name, HCHSYS_NAME_LENGTH);
+
+ if( !config_setting_lookup_string(settings, "ally_channel_name", &ally_name) )
+ ally_name = "ally";
+ safestrncpy(hChSys.ally_name, ally_name, HCHSYS_NAME_LENGTH);
+
+ config_setting_lookup_bool(settings, "map_local_channel", &local_enabled);
+ config_setting_lookup_bool(settings, "ally_channel_enabled", &ally_enabled);
+
+ if( local_enabled )
+ hChSys.local = true;
+ if( ally_enabled )
+ hChSys.ally = true;
+
+ config_setting_lookup_bool(settings, "map_local_channel_autojoin", &local_autojoin);
+ config_setting_lookup_bool(settings, "ally_channel_autojoin", &ally_autojoin);
+
+ if( local_autojoin )
+ hChSys.local_autojoin = true;
+ if( ally_autojoin )
+ hChSys.ally_autojoin = true;
+
+ config_setting_lookup_bool(settings, "allow_user_channel_creation", &allow_user_channel_creation);
+
+ if( allow_user_channel_creation )
+ hChSys.allow_user_channel_creation = true;
+
+ if( (colors = config_setting_get_member(settings, "colors")) != NULL ) {
+ int color_count = config_setting_length(colors);
+ CREATE( hChSys.colors, unsigned long, color_count );
+ CREATE( hChSys.colors_name, char *, color_count );
+ for(i = 0; i < color_count; i++) {
+ config_setting_t *color = config_setting_get_elem(colors, i);
+
+ CREATE( hChSys.colors_name[i], char, HCHSYS_NAME_LENGTH );
+
+ safestrncpy(hChSys.colors_name[i], config_setting_name(color), HCHSYS_NAME_LENGTH);
+
+ hChSys.colors[i] = strtoul(config_setting_get_string_elem(colors,i),NULL,0);
+ hChSys.colors[i] = (hChSys.colors[i] & 0x0000FF) << 16 | (hChSys.colors[i] & 0x00FF00) | (hChSys.colors[i] & 0xFF0000) >> 16;//RGB to BGR
+ }
+ hChSys.colors_count = color_count;
+ }
+
+ config_setting_lookup_string(settings, "map_local_channel_color", &local_color);
+
+ for (k = 0; k < hChSys.colors_count; k++) {
+ if( strcmpi(hChSys.colors_name[k],local_color) == 0 )
+ break;
+ }
+
+ if( k < hChSys.colors_count ) {
+ hChSys.local_color = k;
+ } else {
+ ShowError("channels.conf: unknown color '%s' for channel 'map_local_channel_color', disabling '#%s'...\n",local_color,local_name);
+ hChSys.local = false;
+ }
+
+ config_setting_lookup_string(settings, "ally_channel_color", &ally_color);
+
+ for (k = 0; k < hChSys.colors_count; k++) {
+ if( strcmpi(hChSys.colors_name[k],ally_color) == 0 )
+ break;
+ }
+
+ if( k < hChSys.colors_count ) {
+ hChSys.ally_color = k;
+ } else {
+ ShowError("channels.conf: unknown color '%s' for channel 'ally_channel_color', disabling '#%s'...\n",local_color,ally_name);
+ hChSys.ally = false;
+ }
+
+ if( (channels = config_setting_get_member(settings, "default_channels")) != NULL ) {
+ int channel_count = config_setting_length(channels);
+
+ for(i = 0; i < channel_count; i++) {
+ config_setting_t *channel = config_setting_get_elem(channels, i);
+ const char *name = config_setting_name(channel);
+ const char *color = config_setting_get_string_elem(channels,i);
+ struct hChSysCh *chd;
+
+ for (k = 0; k < hChSys.colors_count; k++) {
+ if( strcmpi(hChSys.colors_name[k],color) == 0 )
+ break;
+ }
+ if( k == hChSys.colors_count ) {
+ ShowError("channels.conf: unknown color '%s' for channel '%s', skipping channel...\n",color,name);
+ continue;
+ }
+ if( strcmpi(name,hChSys.local_name) == 0 || strcmpi(name,hChSys.ally_name) == 0 || strdb_exists(clif->channel_db, name) ) {
+ ShowError("channels.conf: duplicate channel '%s', skipping channel...\n",name);
+ continue;
+
+ }
+ CREATE( chd, struct hChSysCh, 1 );
+
+ safestrncpy(chd->name, name, HCHSYS_NAME_LENGTH);
+ chd->type = hChSys_PUBLIC;
+
+ clif->chsys_create(chd,NULL,NULL,k);
+ }
+ }
+
+ ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' channels in '"CL_WHITE"%s"CL_RESET"'.\n", db_size(clif->channel_db), config_filename);
+ config_destroy(&channels_conf);
+ }
+}
+
/*==========================================
*
*------------------------------------------*/
-static int clif_hpmeter_sub(struct block_list *bl, va_list ap)
-{
+int clif_hpmeter_sub(struct block_list *bl, va_list ap) {
struct map_session_data *sd, *tsd;
#if PACKETVER < 20100126
const int cmd = 0x106;
@@ -2683,10 +2781,9 @@ static int clif_hpmeter_sub(struct block_list *bl, va_list ap)
* Server tells all players that are allowed to view HP bars
* and are nearby 'sd' that 'sd' hp bar was updated.
*------------------------------------------*/
-static int clif_hpmeter(struct map_session_data *sd)
-{
+int clif_hpmeter(struct map_session_data *sd) {
nullpo_ret(sd);
- map_foreachinarea(clif_hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd);
+ map_foreachinarea(clif->hpmeter_sub, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_PC, sd);
return 0;
}
@@ -2714,205 +2811,205 @@ void clif_updatestatus(struct map_session_data *sd,int type)
WFIFOW(fd,0)=0xb0;
WFIFOW(fd,2)=type;
switch(type){
- // 00b0
- case SP_WEIGHT:
- pc_updateweightstatus(sd);
- WFIFOHEAD(fd,14);
- WFIFOW(fd,0)=0xb0; //Need to re-set as pc_updateweightstatus can alter the buffer. [Skotlex]
- WFIFOW(fd,2)=type;
- WFIFOL(fd,4)=sd->weight;
- break;
- case SP_MAXWEIGHT:
- WFIFOL(fd,4)=sd->max_weight;
- break;
- case SP_SPEED:
- WFIFOL(fd,4)=sd->battle_status.speed;
- break;
- case SP_BASELEVEL:
- WFIFOL(fd,4)=sd->status.base_level;
- break;
- case SP_JOBLEVEL:
- WFIFOL(fd,4)=sd->status.job_level;
- break;
- case SP_KARMA: // Adding this back, I wonder if the client intercepts this - [Lance]
- WFIFOL(fd,4)=sd->status.karma;
- break;
- case SP_MANNER:
- WFIFOL(fd,4)=sd->status.manner;
- break;
- case SP_STATUSPOINT:
- WFIFOL(fd,4)=sd->status.status_point;
- break;
- case SP_SKILLPOINT:
- WFIFOL(fd,4)=sd->status.skill_point;
- break;
- case SP_HIT:
- WFIFOL(fd,4)=sd->battle_status.hit;
- break;
- case SP_FLEE1:
- WFIFOL(fd,4)=sd->battle_status.flee;
- break;
- case SP_FLEE2:
- WFIFOL(fd,4)=sd->battle_status.flee2/10;
- break;
- case SP_MAXHP:
- WFIFOL(fd,4)=sd->battle_status.max_hp;
- break;
- case SP_MAXSP:
- WFIFOL(fd,4)=sd->battle_status.max_sp;
- break;
- case SP_HP:
- WFIFOL(fd,4)=sd->battle_status.hp;
- // TODO: Won't these overwrite the current packet?
- clif_hpmeter(sd);
- if( !battle_config.party_hp_mode && sd->status.party_id )
- clif->party_hp(sd);
- if( sd->bg_id )
- clif->bg_hp(sd);
- break;
- case SP_SP:
- WFIFOL(fd,4)=sd->battle_status.sp;
- break;
- case SP_ASPD:
- WFIFOL(fd,4)=sd->battle_status.amotion;
- break;
- case SP_ATK1:
- WFIFOL(fd,4)=pc_leftside_atk(sd);
- break;
- case SP_DEF1:
- WFIFOL(fd,4)=pc_leftside_def(sd);
- break;
- case SP_MDEF1:
- WFIFOL(fd,4)=pc_leftside_mdef(sd);
- break;
- case SP_ATK2:
- WFIFOL(fd,4)=pc_rightside_atk(sd);
- break;
- case SP_DEF2:
- WFIFOL(fd,4)=pc_rightside_def(sd);
- break;
- case SP_MDEF2: {
- //negative check (in case you have something like Berserk active)
- int mdef2 = pc_rightside_mdef(sd);
+ // 00b0
+ case SP_WEIGHT:
+ pc_updateweightstatus(sd);
+ WFIFOHEAD(fd,14);
+ WFIFOW(fd,0)=0xb0; //Need to re-set as pc_updateweightstatus can alter the buffer. [Skotlex]
+ WFIFOW(fd,2)=type;
+ WFIFOL(fd,4)=sd->weight;
+ break;
+ case SP_MAXWEIGHT:
+ WFIFOL(fd,4)=sd->max_weight;
+ break;
+ case SP_SPEED:
+ WFIFOL(fd,4)=sd->battle_status.speed;
+ break;
+ case SP_BASELEVEL:
+ WFIFOL(fd,4)=sd->status.base_level;
+ break;
+ case SP_JOBLEVEL:
+ WFIFOL(fd,4)=sd->status.job_level;
+ break;
+ case SP_KARMA: // Adding this back, I wonder if the client intercepts this - [Lance]
+ WFIFOL(fd,4)=sd->status.karma;
+ break;
+ case SP_MANNER:
+ WFIFOL(fd,4)=sd->status.manner;
+ break;
+ case SP_STATUSPOINT:
+ WFIFOL(fd,4)=sd->status.status_point;
+ break;
+ case SP_SKILLPOINT:
+ WFIFOL(fd,4)=sd->status.skill_point;
+ break;
+ case SP_HIT:
+ WFIFOL(fd,4)=sd->battle_status.hit;
+ break;
+ case SP_FLEE1:
+ WFIFOL(fd,4)=sd->battle_status.flee;
+ break;
+ case SP_FLEE2:
+ WFIFOL(fd,4)=sd->battle_status.flee2/10;
+ break;
+ case SP_MAXHP:
+ WFIFOL(fd,4)=sd->battle_status.max_hp;
+ break;
+ case SP_MAXSP:
+ WFIFOL(fd,4)=sd->battle_status.max_sp;
+ break;
+ case SP_HP:
+ WFIFOL(fd,4)=sd->battle_status.hp;
+ // TODO: Won't these overwrite the current packet?
+ clif->hpmeter(sd);
+ if( !battle_config.party_hp_mode && sd->status.party_id )
+ clif->party_hp(sd);
+ if( sd->bg_id )
+ clif->bg_hp(sd);
+ break;
+ case SP_SP:
+ WFIFOL(fd,4)=sd->battle_status.sp;
+ break;
+ case SP_ASPD:
+ WFIFOL(fd,4)=sd->battle_status.amotion;
+ break;
+ case SP_ATK1:
+ WFIFOL(fd,4)=pc_leftside_atk(sd);
+ break;
+ case SP_DEF1:
+ WFIFOL(fd,4)=pc_leftside_def(sd);
+ break;
+ case SP_MDEF1:
+ WFIFOL(fd,4)=pc_leftside_mdef(sd);
+ break;
+ case SP_ATK2:
+ WFIFOL(fd,4)=pc_rightside_atk(sd);
+ break;
+ case SP_DEF2:
+ WFIFOL(fd,4)=pc_rightside_def(sd);
+ break;
+ case SP_MDEF2: {
+ //negative check (in case you have something like Berserk active)
+ int mdef2 = pc_rightside_mdef(sd);
- WFIFOL(fd,4)=
-#ifndef RENEWAL
- ( mdef2 < 0 ) ? 0 :
-#endif
- mdef2;
+ WFIFOL(fd,4)=
+ #ifndef RENEWAL
+ ( mdef2 < 0 ) ? 0 :
+ #endif
+ mdef2;
- }
- break;
- case SP_CRITICAL:
- WFIFOL(fd,4)=sd->battle_status.cri/10;
- break;
- case SP_MATK1:
- WFIFOL(fd,4)=pc_rightside_matk(sd);
- break;
- case SP_MATK2:
- WFIFOL(fd,4)=pc_leftside_matk(sd);
- break;
+ }
+ break;
+ case SP_CRITICAL:
+ WFIFOL(fd,4)=sd->battle_status.cri/10;
+ break;
+ case SP_MATK1:
+ WFIFOL(fd,4)=pc_rightside_matk(sd);
+ break;
+ case SP_MATK2:
+ WFIFOL(fd,4)=pc_leftside_matk(sd);
+ break;
- case SP_ZENY:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.zeny;
- break;
- case SP_BASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.base_exp;
- break;
- case SP_JOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=sd->status.job_exp;
- break;
- case SP_NEXTBASEEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc_nextbaseexp(sd);
- break;
- case SP_NEXTJOBEXP:
- WFIFOW(fd,0)=0xb1;
- WFIFOL(fd,4)=pc_nextjobexp(sd);
- break;
+ case SP_ZENY:
+ WFIFOW(fd,0)=0xb1;
+ WFIFOL(fd,4)=sd->status.zeny;
+ break;
+ case SP_BASEEXP:
+ WFIFOW(fd,0)=0xb1;
+ WFIFOL(fd,4)=sd->status.base_exp;
+ break;
+ case SP_JOBEXP:
+ WFIFOW(fd,0)=0xb1;
+ WFIFOL(fd,4)=sd->status.job_exp;
+ break;
+ case SP_NEXTBASEEXP:
+ WFIFOW(fd,0)=0xb1;
+ WFIFOL(fd,4)=pc_nextbaseexp(sd);
+ break;
+ case SP_NEXTJOBEXP:
+ WFIFOW(fd,0)=0xb1;
+ WFIFOL(fd,4)=pc_nextjobexp(sd);
+ break;
- /**
- * SP_U<STAT> are used to update the amount of points necessary to increase that stat
- **/
- case SP_USTR:
- case SP_UAGI:
- case SP_UVIT:
- case SP_UINT:
- case SP_UDEX:
- case SP_ULUK:
- WFIFOW(fd,0)=0xbe;
- WFIFOB(fd,4)=pc_need_status_point(sd,type-SP_USTR+SP_STR,1);
- len=5;
- break;
+ /**
+ * SP_U<STAT> are used to update the amount of points necessary to increase that stat
+ **/
+ case SP_USTR:
+ case SP_UAGI:
+ case SP_UVIT:
+ case SP_UINT:
+ case SP_UDEX:
+ case SP_ULUK:
+ WFIFOW(fd,0)=0xbe;
+ WFIFOB(fd,4)=pc_need_status_point(sd,type-SP_USTR+SP_STR,1);
+ len=5;
+ break;
- /**
- * Tells the client how far it is allowed to attack (weapon range)
- **/
- case SP_ATTACKRANGE:
- WFIFOW(fd,0)=0x13a;
- WFIFOW(fd,2)=sd->battle_status.rhw.range;
- len=4;
- break;
+ /**
+ * Tells the client how far it is allowed to attack (weapon range)
+ **/
+ case SP_ATTACKRANGE:
+ WFIFOW(fd,0)=0x13a;
+ WFIFOW(fd,2)=sd->battle_status.rhw.range;
+ len=4;
+ break;
- case SP_STR:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.str;
- WFIFOL(fd,10)=sd->battle_status.str - sd->status.str;
- len=14;
- break;
- case SP_AGI:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.agi;
- WFIFOL(fd,10)=sd->battle_status.agi - sd->status.agi;
- len=14;
- break;
- case SP_VIT:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.vit;
- WFIFOL(fd,10)=sd->battle_status.vit - sd->status.vit;
- len=14;
- break;
- case SP_INT:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.int_;
- WFIFOL(fd,10)=sd->battle_status.int_ - sd->status.int_;
- len=14;
- break;
- case SP_DEX:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.dex;
- WFIFOL(fd,10)=sd->battle_status.dex - sd->status.dex;
- len=14;
- break;
- case SP_LUK:
- WFIFOW(fd,0)=0x141;
- WFIFOL(fd,2)=type;
- WFIFOL(fd,6)=sd->status.luk;
- WFIFOL(fd,10)=sd->battle_status.luk - sd->status.luk;
- len=14;
- break;
+ case SP_STR:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.str;
+ WFIFOL(fd,10)=sd->battle_status.str - sd->status.str;
+ len=14;
+ break;
+ case SP_AGI:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.agi;
+ WFIFOL(fd,10)=sd->battle_status.agi - sd->status.agi;
+ len=14;
+ break;
+ case SP_VIT:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.vit;
+ WFIFOL(fd,10)=sd->battle_status.vit - sd->status.vit;
+ len=14;
+ break;
+ case SP_INT:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.int_;
+ WFIFOL(fd,10)=sd->battle_status.int_ - sd->status.int_;
+ len=14;
+ break;
+ case SP_DEX:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.dex;
+ WFIFOL(fd,10)=sd->battle_status.dex - sd->status.dex;
+ len=14;
+ break;
+ case SP_LUK:
+ WFIFOW(fd,0)=0x141;
+ WFIFOL(fd,2)=type;
+ WFIFOL(fd,6)=sd->status.luk;
+ WFIFOL(fd,10)=sd->battle_status.luk - sd->status.luk;
+ len=14;
+ break;
- case SP_CARTINFO:
- WFIFOW(fd,0)=0x121;
- WFIFOW(fd,2)=sd->cart_num;
- WFIFOW(fd,4)=MAX_CART;
- WFIFOL(fd,6)=sd->cart_weight;
- WFIFOL(fd,10)=sd->cart_weight_max;
- len=14;
- break;
+ case SP_CARTINFO:
+ WFIFOW(fd,0)=0x121;
+ WFIFOW(fd,2)=sd->cart_num;
+ WFIFOW(fd,4)=MAX_CART;
+ WFIFOL(fd,6)=sd->cart_weight;
+ WFIFOL(fd,10)=sd->cart_weight_max;
+ len=14;
+ break;
- default:
- ShowError("clif->updatestatus : unrecognized type %d\n",type);
- return;
+ default:
+ ShowError("clif->updatestatus : unrecognized type %d\n",type);
+ return;
}
WFIFOSET(fd,len);
}
@@ -2961,85 +3058,84 @@ void clif_changelook(struct block_list *bl,int type,int val)
vd = status_get_viewdata(bl);
//nullpo_ret(vd);
if( vd ) //temp hack to let Warp Portal change appearance
- switch(type)
- {
- case LOOK_WEAPON:
- if (sd)
- {
- clif_get_weapon_view(sd, &vd->weapon, &vd->shield);
- val = vd->weapon;
- }
- else vd->weapon = val;
- break;
- case LOOK_SHIELD:
- if (sd)
- {
- clif_get_weapon_view(sd, &vd->weapon, &vd->shield);
- val = vd->shield;
- }
- else vd->shield = val;
- break;
- case LOOK_BASE:
- vd->class_ = val;
- if (vd->class_ == JOB_WEDDING || vd->class_ == JOB_XMAS || vd->class_ == JOB_SUMMER)
- vd->weapon = vd->shield = 0;
- if (vd->cloth_color && (
- (vd->class_ == JOB_WEDDING && battle_config.wedding_ignorepalette) ||
- (vd->class_ == JOB_XMAS && battle_config.xmas_ignorepalette) ||
- (vd->class_ == JOB_SUMMER && battle_config.summer_ignorepalette)
- ))
- clif_changelook(bl,LOOK_CLOTHES_COLOR,0);
- break;
- case LOOK_HAIR:
- vd->hair_style = val;
- break;
- case LOOK_HEAD_BOTTOM:
- vd->head_bottom = val;
- break;
- case LOOK_HEAD_TOP:
- vd->head_top = val;
- break;
- case LOOK_HEAD_MID:
- vd->head_mid = val;
- break;
- case LOOK_HAIR_COLOR:
- vd->hair_color = val;
- break;
- case LOOK_CLOTHES_COLOR:
- if (val && (
- (vd->class_ == JOB_WEDDING && battle_config.wedding_ignorepalette) ||
- (vd->class_ == JOB_XMAS && battle_config.xmas_ignorepalette) ||
- (vd->class_ == JOB_SUMMER && battle_config.summer_ignorepalette)
- ))
- val = 0;
- vd->cloth_color = val;
- break;
- case LOOK_SHOES:
-#if PACKETVER > 3
- if (sd) {
- int n;
- if((n = sd->equip_index[2]) >= 0 && sd->inventory_data[n]) {
- if(sd->inventory_data[n]->view_id > 0)
- val = sd->inventory_data[n]->view_id;
- else
- val = sd->status.inventory[n].nameid;
- } else
+ switch(type) {
+ case LOOK_WEAPON:
+ if (sd) {
+ clif->get_weapon_view(sd, &vd->weapon, &vd->shield);
+ val = vd->weapon;
+ }
+ else
+ vd->weapon = val;
+ break;
+ case LOOK_SHIELD:
+ if (sd) {
+ clif->get_weapon_view(sd, &vd->weapon, &vd->shield);
+ val = vd->shield;
+ }
+ else
+ vd->shield = val;
+ break;
+ case LOOK_BASE:
+ vd->class_ = val;
+ if (vd->class_ == JOB_WEDDING || vd->class_ == JOB_XMAS || vd->class_ == JOB_SUMMER)
+ vd->weapon = vd->shield = 0;
+ if (vd->cloth_color && (
+ (vd->class_ == JOB_WEDDING && battle_config.wedding_ignorepalette) ||
+ (vd->class_ == JOB_XMAS && battle_config.xmas_ignorepalette) ||
+ (vd->class_ == JOB_SUMMER && battle_config.summer_ignorepalette)
+ ))
+ clif->changelook(bl,LOOK_CLOTHES_COLOR,0);
+ break;
+ case LOOK_HAIR:
+ vd->hair_style = val;
+ break;
+ case LOOK_HEAD_BOTTOM:
+ vd->head_bottom = val;
+ break;
+ case LOOK_HEAD_TOP:
+ vd->head_top = val;
+ break;
+ case LOOK_HEAD_MID:
+ vd->head_mid = val;
+ break;
+ case LOOK_HAIR_COLOR:
+ vd->hair_color = val;
+ break;
+ case LOOK_CLOTHES_COLOR:
+ if (val && (
+ (vd->class_ == JOB_WEDDING && battle_config.wedding_ignorepalette) ||
+ (vd->class_ == JOB_XMAS && battle_config.xmas_ignorepalette) ||
+ (vd->class_ == JOB_SUMMER && battle_config.summer_ignorepalette)
+ ))
val = 0;
- }
-#endif
- //Shoes? No packet uses this....
- break;
- case LOOK_BODY:
- case LOOK_FLOOR:
- // unknown purpose
- break;
- case LOOK_ROBE:
-#if PACKETVER < 20110111
- return;
-#else
- vd->robe = val;
-#endif
- break;
+ vd->cloth_color = val;
+ break;
+ case LOOK_SHOES:
+ #if PACKETVER > 3
+ if (sd) {
+ int n;
+ if((n = sd->equip_index[2]) >= 0 && sd->inventory_data[n]) {
+ if(sd->inventory_data[n]->view_id > 0)
+ val = sd->inventory_data[n]->view_id;
+ else
+ val = sd->status.inventory[n].nameid;
+ } else
+ val = 0;
+ }
+ #endif
+ //Shoes? No packet uses this....
+ break;
+ case LOOK_BODY:
+ case LOOK_FLOOR:
+ // unknown purpose
+ break;
+ case LOOK_ROBE:
+ #if PACKETVER < 20110111
+ return;
+ #else
+ vd->robe = val;
+ #endif
+ break;
}
// prevent leaking the presence of GM-hidden objects
@@ -3113,8 +3209,7 @@ void clif_refreshlook(struct block_list *bl,int id,int type,int val,enum send_ta
/// <int>.B <need int>.B <dex>.B <need dex>.B <luk>.B <need luk>.B <atk>.W <atk2>.W
/// <matk min>.W <matk max>.W <def>.W <def2>.W <mdef>.W <mdef2>.W <hit>.W
/// <flee>.W <flee2>.W <crit>.W <aspd>.W <aspd2>.W
-void clif_initialstatus(struct map_session_data *sd)
-{
+void clif_initialstatus(struct map_session_data *sd) {
int fd, mdef2;
unsigned char *buf;
@@ -3469,6 +3564,11 @@ void clif_useitemack(struct map_session_data *sd,int index,int amount,bool ok)
}
}
+void clif_hercules_chsys_send(struct hChSysCh *channel, struct map_session_data *sd, char *msg) {
+ char message[150];
+ snprintf(message, 150, "[ #%s ] %s : %s",channel->name,sd->status.name, msg);
+ clif->chsys_msg(channel,sd,message);
+}
/// Inform client whether chatroom creation was successful or not (ZC_ACK_CREATE_CHATROOM).
/// 00d6 <flag>.B
@@ -3821,7 +3921,7 @@ void clif_tradeadditem(struct map_session_data* sd, struct map_session_data* tsd
WBUFB(buf,8) = sd->status.inventory[index].identify; //identify flag
WBUFB(buf,9) = sd->status.inventory[index].attribute; // attribute
WBUFB(buf,10)= sd->status.inventory[index].refine; //refine
- clif_addcards(WBUFP(buf, 11), &sd->status.inventory[index]);
+ clif->addcards(WBUFP(buf, 11), &sd->status.inventory[index]);
}
WFIFOSET(fd,packet_len(cmd));
}
@@ -3949,7 +4049,7 @@ void clif_storageitemadded(struct map_session_data* sd, struct item* i, int inde
WFIFOB(fd,10) = i->identify; //identify flag
WFIFOB(fd,11) = i->attribute; // attribute
WFIFOB(fd,12) = i->refine; //refine
- clif_addcards(WFIFOP(fd,13), i);
+ clif->addcards(WFIFOP(fd,13), i);
WFIFOSET(fd,packet_len(0xf4));
#else
WFIFOHEAD(fd,packet_len(0x1c4));
@@ -3961,7 +4061,7 @@ void clif_storageitemadded(struct map_session_data* sd, struct item* i, int inde
WFIFOB(fd,11) = i->identify; //identify flag
WFIFOB(fd,12) = i->attribute; // attribute
WFIFOB(fd,13) = i->refine; //refine
- clif_addcards(WFIFOP(fd,14), i);
+ clif->addcards(WFIFOP(fd,14), i);
WFIFOSET(fd,packet_len(0x1c4));
#endif
}
@@ -4001,25 +4101,24 @@ void clif_storageclose(struct map_session_data* sd)
/*==========================================
* Server tells 'sd' player client the abouts of 'dstsd' player
*------------------------------------------*/
-static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd)
-{
+void clif_getareachar_pc(struct map_session_data* sd,struct map_session_data* dstsd) {
struct block_list *d_bl;
int i;
if( dstsd->chatID ) {
struct chat_data *cd = NULL;
if( (cd = (struct chat_data*)map_id2bl(dstsd->chatID)) && cd->usersd[0]==dstsd)
- clif_dispchat(cd,sd->fd);
+ clif->dispchat(cd,sd->fd);
} else if( dstsd->state.vending )
clif->showvendingboard(&dstsd->bl,dstsd->message,sd->fd);
else if( dstsd->state.buyingstore )
clif->buyingstore_entry_single(sd, dstsd);
if(dstsd->spiritball > 0)
- clif_spiritball_single(sd->fd, dstsd);
+ clif->spiritball_single(sd->fd, dstsd);
for(i = 1; i < 5; i++){
if( dstsd->talisman[i] > 0 )
- clif_talisman_single(sd->fd, dstsd, i);
+ clif->talisman_single(sd->fd, dstsd, i);
}
if( dstsd->sc.option&OPTION_MOUNTING ) {
//New Mounts are not complaint to the original method, so we gotta tell this guy that I'm mounting.
@@ -4046,8 +4145,7 @@ static void clif_getareachar_pc(struct map_session_data* sd,struct map_session_d
clif->devotion(d_bl, sd);
}
-void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
-{
+void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl) {
uint8 buf[128];
struct unit_data *ud;
struct view_data *vd;
@@ -4064,7 +4162,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
return;
ud = unit_bl2ud(bl);
- len = ( ud && ud->walktimer != INVALID_TIMER ) ? clif_set_unit_walking(bl,ud,buf) : clif_set_unit_idle(bl,buf,false);
+ len = ( ud && ud->walktimer != INVALID_TIMER ) ? clif->set_unit_walking(bl,ud,buf) : clif->set_unit_idle(bl,buf,false);
clif->send(buf,len,&sd->bl,SELF);
if (vd->cloth_color)
@@ -4074,7 +4172,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
case BL_PC:
{
TBL_PC* tsd = (TBL_PC*)bl;
- clif_getareachar_pc(sd, tsd);
+ clif->getareachar_pc(sd, tsd);
if(tsd->state.size==SZ_BIG) // tiny/big players [Valaris]
clif->specialeffect_single(bl,423,sd->fd);
else if(tsd->state.size==SZ_MEDIUM)
@@ -4095,7 +4193,7 @@ void clif_getareachar_unit(struct map_session_data* sd,struct block_list *bl)
{
TBL_NPC* nd = (TBL_NPC*)bl;
if( nd->chat_id )
- clif_dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd);
+ clif->dispchat((struct chat_data*)map_id2bl(nd->chat_id),sd->fd);
if( nd->size == SZ_BIG )
clif->specialeffect_single(bl,423,sd->fd);
else if( nd->size == SZ_MEDIUM )
@@ -4136,8 +4234,7 @@ static inline int clif_calc_delay(int type, int div, int damage, int delay)
/*==========================================
* Estimates walk delay based on the damage criteria. [Skotlex]
*------------------------------------------*/
-static int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, int div_)
-{
+int clif_calc_walkdelay(struct block_list *bl,int delay, int type, int damage, int div_) {
if (type == 4 || type == 9 || damage <=0)
return 0;
@@ -4246,7 +4343,7 @@ int clif_damage(struct block_list* src, struct block_list* dst, unsigned int tic
unit_setdir(src,unit_getdir(src));
}
//Return adjusted can't walk delay for further processing.
- return clif_calc_walkdelay(dst,ddelay,type,damage+damage2,div);
+ return clif->calc_walkdelay(dst,ddelay,type,damage+damage2,div);
}
/*==========================================
@@ -4339,8 +4436,7 @@ void clif_changemapcell(int fd, int16 m, int x, int y, int type, enum send_targe
/// Notifies the client about an item on floor (ZC_ITEM_ENTRY).
/// 009d <id>.L <name id>.W <identified>.B <x>.W <y>.W <amount>.W <subX>.B <subY>.B
-void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fitem)
-{
+void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fitem) {
int view,fd;
fd=sd->fd;
@@ -4364,8 +4460,7 @@ void clif_getareachar_item(struct map_session_data* sd,struct flooritem_data* fi
/// Notifies the client of a skill unit.
/// 011f <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B (ZC_SKILL_ENTRY)
/// 01c9 <id>.L <creator id>.L <x>.W <y>.W <unit id>.B <visible>.B <has msg>.B <msg>.80B (ZC_SKILL_ENTRY2)
-static void clif_getareachar_skillunit(struct map_session_data *sd, struct skill_unit *unit)
-{
+void clif_getareachar_skillunit(struct map_session_data *sd, struct skill_unit *unit) {
int fd = sd->fd;
if( unit->group->state.guildaura )
@@ -4403,15 +4498,14 @@ static void clif_getareachar_skillunit(struct map_session_data *sd, struct skill
WFIFOSET(fd,packet_len(0x11f));
if(unit->group->skill_id == WZ_ICEWALL)
- clif_changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,5,SELF);
+ clif->changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,5,SELF);
}
/*==========================================
* Server tells client to remove unit of id 'unit->bl.id'
*------------------------------------------*/
-static void clif_clearchar_skillunit(struct skill_unit *unit, int fd)
-{
+void clif_clearchar_skillunit(struct skill_unit *unit, int fd) {
nullpo_retv(unit);
WFIFOHEAD(fd,packet_len(0x120));
@@ -4420,7 +4514,7 @@ static void clif_clearchar_skillunit(struct skill_unit *unit, int fd)
WFIFOSET(fd,packet_len(0x120));
if(unit->group && unit->group->skill_id == WZ_ICEWALL)
- clif_changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,unit->val2,SELF);
+ clif->changemapcell(fd,unit->bl.m,unit->bl.x,unit->bl.y,unit->val2,SELF);
}
@@ -4456,8 +4550,7 @@ void clif_skillunit_update(struct block_list* bl)
/*==========================================
*
*------------------------------------------*/
-static int clif_getareachar(struct block_list* bl,va_list ap)
-{
+int clif_getareachar(struct block_list* bl,va_list ap) {
struct map_session_data *sd;
nullpo_ret(bl);
@@ -4468,17 +4561,17 @@ static int clif_getareachar(struct block_list* bl,va_list ap)
return 0;
switch(bl->type){
- case BL_ITEM:
- clif_getareachar_item(sd,(struct flooritem_data*) bl);
- break;
- case BL_SKILL:
- clif_getareachar_skillunit(sd,(TBL_SKILL*)bl);
- break;
- default:
- if(&sd->bl == bl)
+ case BL_ITEM:
+ clif->getareachar_item(sd,(struct flooritem_data*) bl);
+ break;
+ case BL_SKILL:
+ clif->getareachar_skillunit(sd,(TBL_SKILL*)bl);
+ break;
+ default:
+ if(&sd->bl == bl)
+ break;
+ clif->getareachar_unit(sd,bl);
break;
- clif_getareachar_unit(sd,bl);
- break;
}
return 0;
}
@@ -4496,44 +4589,42 @@ int clif_outsight(struct block_list *bl,va_list ap)
sd = BL_CAST(BL_PC, bl);
tsd = BL_CAST(BL_PC, tbl);
- if (tsd && tsd->fd)
- { //tsd has lost sight of the bl object.
+ if (tsd && tsd->fd) { //tsd has lost sight of the bl object.
switch(bl->type){
- case BL_PC:
- if (sd->vd.class_ != INVISIBLE_CLASS)
- clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
- if(sd->chatID){
- struct chat_data *cd;
- cd=(struct chat_data*)map_id2bl(sd->chatID);
- if(cd->usersd[0]==sd)
- clif_dispchat(cd,tsd->fd);
+ case BL_PC:
+ if (sd->vd.class_ != INVISIBLE_CLASS)
+ clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
+ if(sd->chatID){
+ struct chat_data *cd;
+ cd=(struct chat_data*)map_id2bl(sd->chatID);
+ if(cd->usersd[0]==sd)
+ clif->dispchat(cd,tsd->fd);
+ }
+ if( sd->state.vending )
+ clif->closevendingboard(bl,tsd->fd);
+ if( sd->state.buyingstore )
+ clif->buyingstore_disappear_entry_single(tsd, sd);
+ break;
+ case BL_ITEM:
+ clif->clearflooritem((struct flooritem_data*)bl,tsd->fd);
+ break;
+ case BL_SKILL:
+ clif->clearchar_skillunit((struct skill_unit *)bl,tsd->fd);
+ break;
+ case BL_NPC:
+ if( !(((TBL_NPC*)bl)->sc.option&OPTION_INVISIBLE) )
+ clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
+ break;
+ default:
+ if ((vd=status_get_viewdata(bl)) && vd->class_ != INVISIBLE_CLASS)
+ clif->clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
+ break;
}
- if( sd->state.vending )
- clif->closevendingboard(bl,tsd->fd);
- if( sd->state.buyingstore )
- clif->buyingstore_disappear_entry_single(tsd, sd);
- break;
- case BL_ITEM:
- clif->clearflooritem((struct flooritem_data*)bl,tsd->fd);
- break;
- case BL_SKILL:
- clif_clearchar_skillunit((struct skill_unit *)bl,tsd->fd);
- break;
- case BL_NPC:
- if( !(((TBL_NPC*)bl)->sc.option&OPTION_INVISIBLE) )
- clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
- break;
- default:
- if ((vd=status_get_viewdata(bl)) && vd->class_ != INVISIBLE_CLASS)
- clif_clearunit_single(bl->id,CLR_OUTSIGHT,tsd->fd);
- break;
- }
}
- if (sd && sd->fd)
- { //sd is watching tbl go out of view.
+ if (sd && sd->fd) { //sd is watching tbl go out of view.
if (((vd=status_get_viewdata(tbl)) && vd->class_ != INVISIBLE_CLASS) &&
!(tbl->type == BL_NPC && (((TBL_NPC*)tbl)->sc.option&OPTION_INVISIBLE)))
- clif_clearunit_single(tbl->id,CLR_OUTSIGHT,sd->fd);
+ clif->clearunit_single(tbl->id,CLR_OUTSIGHT,sd->fd);
}
return 0;
}
@@ -4552,23 +4643,21 @@ int clif_insight(struct block_list *bl,va_list ap)
sd = BL_CAST(BL_PC, bl);
tsd = BL_CAST(BL_PC, tbl);
- if (tsd && tsd->fd)
- { //Tell tsd that bl entered into his view
+ if (tsd && tsd->fd) { //Tell tsd that bl entered into his view
switch(bl->type){
- case BL_ITEM:
- clif_getareachar_item(tsd,(struct flooritem_data*)bl);
- break;
- case BL_SKILL:
- clif_getareachar_skillunit(tsd,(TBL_SKILL*)bl);
- break;
- default:
- clif_getareachar_unit(tsd,bl);
- break;
+ case BL_ITEM:
+ clif->getareachar_item(tsd,(struct flooritem_data*)bl);
+ break;
+ case BL_SKILL:
+ clif->getareachar_skillunit(tsd,(TBL_SKILL*)bl);
+ break;
+ default:
+ clif->getareachar_unit(tsd,bl);
+ break;
}
}
- if (sd && sd->fd)
- { //Tell sd that tbl walked into his view
- clif_getareachar_unit(sd,tbl);
+ if (sd && sd->fd) { //Tell sd that tbl walked into his view
+ clif->getareachar_unit(sd,tbl);
}
return 0;
}
@@ -4670,7 +4759,7 @@ void clif_deleteskill(struct map_session_data *sd, int id)
WFIFOW(fd,2) = id;
WFIFOSET(fd,packet_len(0x441));
#endif
- clif_skillinfoblock(sd);
+ clif->skillinfoblock(sd);
}
@@ -4933,7 +5022,7 @@ int clif_skill_damage(struct block_list *src,struct block_list *dst,unsigned int
#endif
//Because the damage delay must be synced with the client, here is where the can-walk tick must be updated. [Skotlex]
- return clif_calc_walkdelay(dst,ddelay,type,damage,div);
+ return clif->calc_walkdelay(dst,ddelay,type,damage,div);
}
@@ -5435,28 +5524,6 @@ void clif_GlobalMessage(struct block_list* bl, const char* message) {
}
-/*==========================================
- * Send main chat message [LuzZza]
- *------------------------------------------*/
-void clif_MainChatMessage(const char* message) {
- uint8 buf[200];
- int len;
-
- if(!message)
- return;
-
- len = strlen(message)+1;
- if (len+8 > sizeof(buf)) {
- ShowDebug("clif_MainChatMessage: Received message too long (len %d): %s\n", len, message);
- len = sizeof(buf)-8;
- }
- WBUFW(buf,0)=0x8d;
- WBUFW(buf,2)=len+8;
- WBUFL(buf,4)=0;
- safestrncpy((char *) WBUFP(buf,8),message,len);
- clif->send(buf,WBUFW(buf,2),NULL,CHAT_MAINCHAT);
-}
-
/// Send broadcast message with font formatting (ZC_BROADCAST2).
/// 01c3 <packet len>.W <fontColor>.L <fontType>.W <fontSize>.W <fontAlign>.W <fontY>.W <message>.?B
void clif_broadcast2(struct block_list* bl, const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target)
@@ -5510,7 +5577,7 @@ void clif_resurrection(struct block_list *bl,int type)
clif->send(buf,packet_len(0x148),bl,type==1 ? AREA : AREA_WOS);
if (disguised(bl))
- clif_spawn(bl);
+ clif->spawn(bl);
}
@@ -5532,8 +5599,7 @@ void clif_map_property(struct map_session_data* sd, enum map_property property)
/// Set the map type (ZC_NOTIFY_MAPPROPERTY2).
/// 01d6 <type>.W
-void clif_map_type(struct map_session_data* sd, enum map_type type)
-{
+void clif_map_type(struct map_session_data* sd, enum map_type type) {
int fd;
nullpo_retv(sd);
@@ -5816,7 +5882,7 @@ void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *
WFIFOW(fd,c*13+4) = i;
WFIFOW(fd,c*13+6) = nameid;
WFIFOB(fd,c*13+8) = dstsd->status.inventory[i].refine;
- clif_addcards(WFIFOP(fd,c*13+9), &dstsd->status.inventory[i]);
+ clif->addcards(WFIFOP(fd,c*13+9), &dstsd->status.inventory[i]);
c++;
}
}
@@ -5827,7 +5893,7 @@ void clif_item_repair_list(struct map_session_data *sd,struct map_session_data *
sd->menuskill_val = dstsd->bl.id;
sd->menuskill_val2 = lv;
}else
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
}
@@ -5899,7 +5965,7 @@ void clif_item_refine_list(struct map_session_data *sd)
WFIFOW(fd,c*13+ 4)=i+2;
WFIFOW(fd,c*13+ 6)=sd->status.inventory[i].nameid;
WFIFOB(fd,c*13+ 8)=sd->status.inventory[i].refine;
- clif_addcards(WFIFOP(fd,c*13+9), &sd->status.inventory[i]);
+ clif->addcards(WFIFOP(fd,c*13+9), &sd->status.inventory[i]);
c++;
}
}
@@ -5962,7 +6028,7 @@ void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail)
WBUFB(buf,10)=sd->status.cart[n].identify;
WBUFB(buf,11)=sd->status.cart[n].attribute;
WBUFB(buf,12)=sd->status.cart[n].refine;
- clif_addcards(WBUFP(buf,13), &sd->status.cart[n]);
+ clif->addcards(WBUFP(buf,13), &sd->status.cart[n]);
WFIFOSET(fd,packet_len(0x124));
#else
WFIFOHEAD(fd,packet_len(0x1c5));
@@ -5978,7 +6044,7 @@ void clif_cart_additem(struct map_session_data *sd,int n,int amount,int fail)
WBUFB(buf,11)=sd->status.cart[n].identify;
WBUFB(buf,12)=sd->status.cart[n].attribute;
WBUFB(buf,13)=sd->status.cart[n].refine;
- clif_addcards(WBUFP(buf,14), &sd->status.cart[n]);
+ clif->addcards(WBUFP(buf,14), &sd->status.cart[n]);
WFIFOSET(fd,packet_len(0x1c5));
#endif
}
@@ -6105,7 +6171,7 @@ void clif_vendinglist(struct map_session_data* sd, int id, struct s_vending* ven
WFIFOB(fd,offset+11+i*22) = vsd->status.cart[index].identify;
WFIFOB(fd,offset+12+i*22) = vsd->status.cart[index].attribute;
WFIFOB(fd,offset+13+i*22) = vsd->status.cart[index].refine;
- clif_addcards(WFIFOP(fd,offset+14+i*22), &vsd->status.cart[index]);
+ clif->addcards(WFIFOP(fd,offset+14+i*22), &vsd->status.cart[index]);
}
WFIFOSET(fd,WFIFOW(fd,2));
}
@@ -6153,8 +6219,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
WFIFOW(fd,0) = 0x136;
WFIFOW(fd,2) = 8+count*22;
WFIFOL(fd,4) = id;
- for( i = 0; i < count; i++ )
- {
+ for( i = 0; i < count; i++ ) {
int index = vending[i].index;
struct item_data* data = itemdb_search(sd->status.cart[index].nameid);
WFIFOL(fd, 8+i*22) = vending[i].value;
@@ -6165,7 +6230,7 @@ void clif_openvending(struct map_session_data* sd, int id, struct s_vending* ven
WFIFOB(fd,19+i*22) = sd->status.cart[index].identify;
WFIFOB(fd,20+i*22) = sd->status.cart[index].attribute;
WFIFOB(fd,21+i*22) = sd->status.cart[index].refine;
- clif_addcards(WFIFOP(fd,22+i*22), &sd->status.cart[index]);
+ clif->addcards(WFIFOP(fd,22+i*22), &sd->status.cart[index]);
}
WFIFOSET(fd,WFIFOW(fd,2));
}
@@ -6356,7 +6421,7 @@ void clif_party_inviteack(struct map_session_data* sd, const char* nick, int res
#if PACKETVER < 20070904
if( result == 7 ) {
- clif_displaymessage(fd, msg_txt(3));
+ clif->message(fd, msg_txt(3));
return;
}
#endif
@@ -6608,7 +6673,7 @@ void clif_produceeffect(struct map_session_data* sd,int flag,int nameid)
nullpo_retv(sd);
fd = sd->fd;
- clif_solved_charname(fd, sd->status.char_id, sd->status.name);
+ clif->solved_charname(fd, sd->status.char_id, sd->status.name);
WFIFOHEAD(fd,packet_len(0x18f));
WFIFOW(fd, 0)=0x18f;
WFIFOW(fd, 2)=flag;
@@ -6662,9 +6727,8 @@ void clif_sendegg(struct map_session_data *sd)
nullpo_retv(sd);
fd=sd->fd;
- if (battle_config.pet_no_gvg && map_flag_gvg(sd->bl.m))
- { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex]
- clif_displaymessage(fd, msg_txt(666));
+ if (battle_config.pet_no_gvg && map_flag_gvg(sd->bl.m)) { //Disable pet hatching in GvG grounds during Guild Wars [Skotlex]
+ clif->message(fd, msg_txt(666));
return;
}
WFIFOHEAD(fd, MAX_INVENTORY * 2 + 4);
@@ -7094,7 +7158,7 @@ void clif_guild_send_onlineinfo(struct map_session_data *sd)
p_len = packet_len(0x16d);
- if(!(g = guild_search(sd->status.guild_id)))
+ if(!(g = sd->guild))
return;
for(i=0; i<g->max_member; i++) {
@@ -7148,7 +7212,7 @@ void clif_guild_basicinfo(struct map_session_data *sd) {
nullpo_retv(sd);
fd = sd->fd;
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
WFIFOHEAD(fd,packet_len(0x1b6));
@@ -7182,7 +7246,7 @@ void clif_guild_allianceinfo(struct map_session_data *sd)
struct guild *g;
nullpo_retv(sd);
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
fd = sd->fd;
@@ -7218,7 +7282,7 @@ void clif_guild_memberlist(struct map_session_data *sd)
if( (fd = sd->fd) == 0 )
return;
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
WFIFOHEAD(fd, g->max_member * 104 + 4);
@@ -7248,13 +7312,12 @@ void clif_guild_memberlist(struct map_session_data *sd)
/// Guild position name information (ZC_POSITION_ID_NAME_INFO).
/// 0166 <packet len>.W { <position id>.L <position name>.24B }*
-void clif_guild_positionnamelist(struct map_session_data *sd)
-{
+void clif_guild_positionnamelist(struct map_session_data *sd) {
int i,fd;
struct guild *g;
nullpo_retv(sd);
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
fd = sd->fd;
@@ -7276,13 +7339,12 @@ void clif_guild_positionnamelist(struct map_session_data *sd)
/// &0x10 = allow expel
/// ranking:
/// TODO
-void clif_guild_positioninfolist(struct map_session_data *sd)
-{
+void clif_guild_positioninfolist(struct map_session_data *sd) {
int i,fd;
struct guild *g;
nullpo_retv(sd);
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
fd = sd->fd;
@@ -7404,7 +7466,7 @@ void clif_guild_skillinfo(struct map_session_data* sd)
int i,c;
nullpo_retv(sd);
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
fd = sd->fd;
@@ -7538,8 +7600,7 @@ void clif_guild_expulsion(struct map_session_data* sd, const char* name, const c
/// Guild expulsion list (ZC_BAN_LIST).
/// 0163 <packet len>.W { <char name>.24B <account name>.24B <reason>.40B }*
/// 0163 <packet len>.W { <char name>.24B <reason>.40B }* (PACKETVER >= 20100803)
-void clif_guild_expulsionlist(struct map_session_data* sd)
-{
+void clif_guild_expulsionlist(struct map_session_data* sd) {
#if PACKETVER < 20100803
const int offset = NAME_LENGTH*2+40;
#else
@@ -7550,7 +7611,7 @@ void clif_guild_expulsionlist(struct map_session_data* sd)
nullpo_retv(sd);
- if( (g = guild_search(sd->status.guild_id)) == NULL )
+ if( (g = sd->guild) == NULL )
return;
fd = sd->fd;
@@ -7884,12 +7945,9 @@ void clif_disp_message(struct block_list* src, const char* mes, int len, enum se
{
unsigned char buf[256];
- if( len == 0 )
- {
+ if( len == 0 ) {
return;
- }
- else if( len > sizeof(buf)-5 )
- {
+ } else if( len > sizeof(buf)-5 ) {
ShowWarning("clif_disp_message: Truncated message '%s' (len=%d, max=%d, aid=%d).\n", mes, len, sizeof(buf)-5, src->id);
len = sizeof(buf)-5;
}
@@ -7926,12 +7984,12 @@ void clif_GM_kick(struct map_session_data *sd,struct map_session_data *tsd)
int fd = tsd->fd;
if( fd > 0 )
- clif_authfail_fd(fd, 15);
+ clif->authfail_fd(fd, 15);
else
map_quit(tsd);
if( sd )
- clif_GM_kickack(sd,tsd->status.account_id);
+ clif->GM_kickack(sd,tsd->status.account_id);
}
@@ -7986,8 +8044,7 @@ void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd,
/// 0 = success
/// 1 = failure
/// 2 = too many blocks
-void clif_wisexin(struct map_session_data *sd,int type,int flag)
-{
+void clif_wisexin(struct map_session_data *sd,int type,int flag) {
int fd;
nullpo_retv(sd);
@@ -8008,8 +8065,7 @@ void clif_wisexin(struct map_session_data *sd,int type,int flag)
/// result:
/// 0 = success
/// 1 = failure
-void clif_wisall(struct map_session_data *sd,int type,int flag)
-{
+void clif_wisall(struct map_session_data *sd,int type,int flag) {
int fd;
nullpo_retv(sd);
@@ -8151,7 +8207,7 @@ int clif_colormes(struct map_session_data * sd, enum clif_colors color, const ch
WFIFOL(sd->fd,4) = 0;
WFIFOL(sd->fd,8) = color_table[color];
safestrncpy((char*)WFIFOP(sd->fd,12), msg, msg_len);
- clif->send(WFIFOP(sd->fd,0), WFIFOW(sd->fd,2), &sd->bl, SELF);
+ WFIFOSET(sd->fd, msg_len + 12);
return 0;
}
@@ -8165,8 +8221,7 @@ void clif_messagecolor(struct block_list* bl, unsigned long color, const char* m
nullpo_retv(bl);
- if( msg_len > sizeof(buf)-12 )
- {
+ if( msg_len > sizeof(buf)-12 ) {
ShowWarning("clif_messagecolor: Truncating too long message '%s' (len=%u).\n", msg, msg_len);
msg_len = sizeof(buf)-12;
}
@@ -8206,10 +8261,10 @@ void clif_refresh(struct map_session_data *sd)
int i;
nullpo_retv(sd);
- clif_changemap(sd,sd->mapindex,sd->bl.x,sd->bl.y);
- clif_inventorylist(sd);
+ clif->changemap(sd,sd->mapindex,sd->bl.x,sd->bl.y);
+ clif->inventorylist(sd);
if(pc_iscarton(sd)) {
- clif_cartlist(sd);
+ clif->cartlist(sd);
clif->updatestatus(sd,SP_CARTINFO);
}
clif->updatestatus(sd,SP_WEIGHT);
@@ -8221,10 +8276,10 @@ void clif_refresh(struct map_session_data *sd)
clif->updatestatus(sd,SP_DEX);
clif->updatestatus(sd,SP_LUK);
if (sd->spiritball)
- clif_spiritball_single(sd->fd, sd);
+ clif->spiritball_single(sd->fd, sd);
for(i = 1; i < 5; i++){
if( sd->talisman[i] > 0 )
- clif_talisman_single(sd->fd, sd, i);
+ clif->talisman_single(sd->fd, sd, i);
}
if (sd->vd.cloth_color)
clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
@@ -8236,16 +8291,16 @@ void clif_refresh(struct map_session_data *sd)
}
if( sd->ed )
clif->elemental_info(sd);
- map_foreachinrange(clif_getareachar,&sd->bl,AREA_SIZE,BL_ALL,sd);
- clif_weather_check(sd);
+ map_foreachinrange(clif->getareachar,&sd->bl,AREA_SIZE,BL_ALL,sd);
+ clif->weather_check(sd);
if( sd->chatID )
chat_leavechat(sd,0);
if( sd->state.vending )
- clif_openvending(sd, sd->bl.id, sd->vending);
+ clif->openvending(sd, sd->bl.id, sd->vending);
if( pc_issit(sd) )
- clif_sitting(&sd->bl); // FIXME: just send to self, not area
+ clif->sitting(&sd->bl); // FIXME: just send to self, not area
if( pc_isdead(sd) ) // When you refresh, resend the death packet.
- clif_clearunit_single(sd->bl.id,CLR_DEAD,sd->fd);
+ clif->clearunit_single(sd->bl.id,CLR_DEAD,sd->fd);
else
clif->changed_dir(&sd->bl, SELF);
@@ -8269,122 +8324,116 @@ void clif_charnameack (int fd, struct block_list *bl)
WBUFW(buf,0) = cmd;
WBUFL(buf,2) = bl->id;
- switch( bl->type )
- {
- case BL_PC:
- {
- struct map_session_data *ssd = (struct map_session_data *)bl;
- struct party_data *p = NULL;
- struct guild *g = NULL;
-
- //Requesting your own "shadow" name. [Skotlex]
- if (ssd->fd == fd && ssd->disguise)
- WBUFL(buf,2) = -bl->id;
-
- if( ssd->fakename[0] )
- {
- WBUFW(buf, 0) = cmd = 0x195;
- memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH);
- WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0;
- break;
- }
- memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH);
-
- if( ssd->status.party_id )
- {
- p = party_search(ssd->status.party_id);
- }
- if( ssd->status.guild_id )
+ switch( bl->type ) {
+ case BL_PC:
{
- if( ( g = guild_search(ssd->status.guild_id) ) != NULL )
- {
- ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
- if( i < g->max_member ) ps = g->member[i].position;
+ struct map_session_data *ssd = (struct map_session_data *)bl;
+ struct party_data *p = NULL;
+ struct guild *g = NULL;
+
+ //Requesting your own "shadow" name. [Skotlex]
+ if (ssd->fd == fd && ssd->disguise)
+ WBUFL(buf,2) = -bl->id;
+
+ if( ssd->fakename[0] ) {
+ WBUFW(buf, 0) = cmd = 0x195;
+ memcpy(WBUFP(buf,6), ssd->fakename, NAME_LENGTH);
+ WBUFB(buf,30) = WBUFB(buf,54) = WBUFB(buf,78) = 0;
+ break;
}
- }
+ memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH);
- if( !battle_config.display_party_name && g == NULL )
- {// do not display party unless the player is also in a guild
- p = NULL;
- }
-
- if (p == NULL && g == NULL)
- break;
+ if( ssd->status.party_id ) {
+ p = party_search(ssd->status.party_id);
+ }
+ if( ssd->status.guild_id ) {
+ if( ( g = ssd->guild ) != NULL ) {
+ ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
+ if( i < g->max_member ) ps = g->member[i].position;
+ }
+ }
- WBUFW(buf, 0) = cmd = 0x195;
- if (p)
- memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH);
- else
- WBUFB(buf,30) = 0;
+ if( !battle_config.display_party_name && g == NULL ) {// do not display party unless the player is also in a guild
+ p = NULL;
+ }
- if (g && ps >= 0 && ps < MAX_GUILDPOSITION)
- {
- memcpy(WBUFP(buf,54), g->name,NAME_LENGTH);
- memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH);
- } else { //Assume no guild.
- WBUFB(buf,54) = 0;
- WBUFB(buf,78) = 0;
- }
- }
- break;
- //[blackhole89]
- case BL_HOM:
- memcpy(WBUFP(buf,6), ((TBL_HOM*)bl)->homunculus.name, NAME_LENGTH);
- break;
- case BL_MER:
- memcpy(WBUFP(buf,6), ((TBL_MER*)bl)->db->name, NAME_LENGTH);
- break;
- case BL_PET:
- memcpy(WBUFP(buf,6), ((TBL_PET*)bl)->pet.name, NAME_LENGTH);
- break;
- case BL_NPC:
- memcpy(WBUFP(buf,6), ((TBL_NPC*)bl)->name, NAME_LENGTH);
- break;
- case BL_MOB:
- {
- struct mob_data *md = (struct mob_data *)bl;
- nullpo_retv(md);
+ if (p == NULL && g == NULL)
+ break;
- memcpy(WBUFP(buf,6), md->name, NAME_LENGTH);
- if( md->guardian_data && md->guardian_data->guild_id )
- {
- WBUFW(buf, 0) = cmd = 0x195;
- WBUFB(buf,30) = 0;
- memcpy(WBUFP(buf,54), md->guardian_data->guild_name, NAME_LENGTH);
- memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH);
- }
- else if( battle_config.show_mob_info )
- {
- char mobhp[50], *str_p = mobhp;
WBUFW(buf, 0) = cmd = 0x195;
- if( battle_config.show_mob_info&4 )
- str_p += sprintf(str_p, "Lv. %d | ", md->level);
- if( battle_config.show_mob_info&1 )
- str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp);
- if( battle_config.show_mob_info&2 )
- str_p += sprintf(str_p, "HP: %d%% | ", get_percentage(md->status.hp, md->status.max_hp));
- //Even thought mobhp ain't a name, we send it as one so the client
- //can parse it. [Skotlex]
- if( str_p != mobhp )
+ if (p)
+ memcpy(WBUFP(buf,30), p->party.name, NAME_LENGTH);
+ else
+ WBUFB(buf,30) = 0;
+
+ if (g && ps >= 0 && ps < MAX_GUILDPOSITION)
{
- *(str_p-3) = '\0'; //Remove trailing space + pipe.
- memcpy(WBUFP(buf,30), mobhp, NAME_LENGTH);
+ memcpy(WBUFP(buf,54), g->name,NAME_LENGTH);
+ memcpy(WBUFP(buf,78), g->position[ps].name, NAME_LENGTH);
+ } else { //Assume no guild.
WBUFB(buf,54) = 0;
WBUFB(buf,78) = 0;
}
}
- }
- break;
- case BL_CHAT: //FIXME: Clients DO request this... what should be done about it? The chat's title may not fit... [Skotlex]
-// memcpy(WBUFP(buf,6), (struct chat*)->title, NAME_LENGTH);
-// break;
- return;
- case BL_ELEM:
- memcpy(WBUFP(buf,6), ((TBL_ELEM*)bl)->db->name, NAME_LENGTH);
- break;
- default:
- ShowError("clif_charnameack: bad type %d(%d)\n", bl->type, bl->id);
- return;
+ break;
+ //[blackhole89]
+ case BL_HOM:
+ memcpy(WBUFP(buf,6), ((TBL_HOM*)bl)->homunculus.name, NAME_LENGTH);
+ break;
+ case BL_MER:
+ memcpy(WBUFP(buf,6), ((TBL_MER*)bl)->db->name, NAME_LENGTH);
+ break;
+ case BL_PET:
+ memcpy(WBUFP(buf,6), ((TBL_PET*)bl)->pet.name, NAME_LENGTH);
+ break;
+ case BL_NPC:
+ memcpy(WBUFP(buf,6), ((TBL_NPC*)bl)->name, NAME_LENGTH);
+ break;
+ case BL_MOB:
+ {
+ struct mob_data *md = (struct mob_data *)bl;
+ nullpo_retv(md);
+
+ memcpy(WBUFP(buf,6), md->name, NAME_LENGTH);
+ if( md->guardian_data && md->guardian_data->guild_id )
+ {
+ WBUFW(buf, 0) = cmd = 0x195;
+ WBUFB(buf,30) = 0;
+ memcpy(WBUFP(buf,54), md->guardian_data->guild_name, NAME_LENGTH);
+ memcpy(WBUFP(buf,78), md->guardian_data->castle->castle_name, NAME_LENGTH);
+ }
+ else if( battle_config.show_mob_info )
+ {
+ char mobhp[50], *str_p = mobhp;
+ WBUFW(buf, 0) = cmd = 0x195;
+ if( battle_config.show_mob_info&4 )
+ str_p += sprintf(str_p, "Lv. %d | ", md->level);
+ if( battle_config.show_mob_info&1 )
+ str_p += sprintf(str_p, "HP: %u/%u | ", md->status.hp, md->status.max_hp);
+ if( battle_config.show_mob_info&2 )
+ str_p += sprintf(str_p, "HP: %d%% | ", get_percentage(md->status.hp, md->status.max_hp));
+ //Even thought mobhp ain't a name, we send it as one so the client
+ //can parse it. [Skotlex]
+ if( str_p != mobhp )
+ {
+ *(str_p-3) = '\0'; //Remove trailing space + pipe.
+ memcpy(WBUFP(buf,30), mobhp, NAME_LENGTH);
+ WBUFB(buf,54) = 0;
+ WBUFB(buf,78) = 0;
+ }
+ }
+ }
+ break;
+ case BL_CHAT: //FIXME: Clients DO request this... what should be done about it? The chat's title may not fit... [Skotlex]
+ // memcpy(WBUFP(buf,6), (struct chat*)->title, NAME_LENGTH);
+ // break;
+ return;
+ case BL_ELEM:
+ memcpy(WBUFP(buf,6), ((TBL_ELEM*)bl)->db->name, NAME_LENGTH);
+ break;
+ default:
+ ShowError("clif_charnameack: bad type %d(%d)\n", bl->type, bl->id);
+ return;
}
// if no receipient specified just update nearby clients
@@ -8418,14 +8467,14 @@ void clif_charnameupdate (struct map_session_data *ssd)
memcpy(WBUFP(buf,6), ssd->status.name, NAME_LENGTH);
if (!battle_config.display_party_name) {
- if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL)
+ if (ssd->status.party_id > 0 && ssd->status.guild_id > 0 && (g = ssd->guild) != NULL)
p = party_search(ssd->status.party_id);
}else{
if (ssd->status.party_id > 0)
p = party_search(ssd->status.party_id);
}
- if( ssd->status.guild_id > 0 && (g = guild_search(ssd->status.guild_id)) != NULL )
+ if( ssd->status.guild_id > 0 && (g = ssd->guild) != NULL )
{
int i;
ARR_FIND(0, g->max_member, i, g->member[i].account_id == ssd->status.account_id && g->member[i].char_id == ssd->status.char_id);
@@ -8478,10 +8527,9 @@ void clif_slide(struct block_list *bl, int x, int y)
}
-/*------------------------------------------
- * @me command by lordalfa, rewritten implementation by Skotlex
- *------------------------------------------*/
-void clif_disp_overhead(struct map_session_data *sd, const char* mes)
+/// Public chat message (ZC_NOTIFY_CHAT). lordalfa/Skotlex - used by @me as well
+/// 008d <packet len>.W <id>.L <message>.?B
+void clif_disp_overhead(struct block_list *bl, const char* mes)
{
unsigned char buf[256]; //This should be more than sufficient, the theorical max is CHAT_SIZE + 8 (pads and extra inserted crap)
int len_mes = strlen(mes)+1; //Account for \0
@@ -8493,15 +8541,18 @@ void clif_disp_overhead(struct map_session_data *sd, const char* mes)
// send message to others
WBUFW(buf,0) = 0x8d;
WBUFW(buf,2) = len_mes + 8; // len of message + 8 (command+len+id)
- WBUFL(buf,4) = sd->bl.id;
+ WBUFL(buf,4) = bl->id;
safestrncpy((char*)WBUFP(buf,8), mes, len_mes);
- clif->send(buf, WBUFW(buf,2), &sd->bl, AREA_CHAT_WOC);
+ clif->send(buf, WBUFW(buf,2), bl, AREA_CHAT_WOC);
// send back message to the speaker
- WBUFW(buf,0) = 0x8e;
- WBUFW(buf, 2) = len_mes + 4;
- safestrncpy((char*)WBUFP(buf,4), mes, len_mes);
- clif->send(buf, WBUFW(buf,2), &sd->bl, SELF);
+ if( bl->type == BL_PC ) {
+ WBUFW(buf,0) = 0x8e;
+ WBUFW(buf, 2) = len_mes + 4;
+ safestrncpy((char*)WBUFP(buf,4), mes, len_mes);
+ clif->send(buf, WBUFW(buf,2), bl, SELF);
+ }
+
}
/*==========================
@@ -8596,7 +8647,7 @@ void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsig
char mapname[MAP_NAME_LENGTH_EXT];
mapindex_getmapname_ext(mapindex_id2name(sd->feel_map[feel_level].index), mapname);
- clif_starskill(sd, mapname, 0, feel_level, type ? 1 : 0);
+ clif->starskill(sd, mapname, 0, feel_level, type ? 1 : 0);
}
/*==========================================
@@ -8605,16 +8656,11 @@ void clif_feel_info(struct map_session_data* sd, unsigned char feel_level, unsig
*------------------------------------------*/
void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int class_, unsigned char type)
{
- if( pcdb_checkid(class_) )
- {
- clif_starskill(sd, job_name(class_), class_, hate_level, type ? 10 : 11);
- }
- else if( mobdb_checkid(class_) )
- {
- clif_starskill(sd, mob_db(class_)->jname, class_, hate_level, type ? 10 : 11);
- }
- else
- {
+ if( pcdb_checkid(class_) ) {
+ clif->starskill(sd, job_name(class_), class_, hate_level, type ? 10 : 11);
+ } else if( mobdb_checkid(class_) ) {
+ clif->starskill(sd, mob_db(class_)->jname, class_, hate_level, type ? 10 : 11);
+ } else {
ShowWarning("clif_hate_info: Received invalid class %d for this packet (char_id=%d, hate_level=%u, type=%u).\n", class_, sd->status.char_id, (unsigned int)hate_level, (unsigned int)type);
}
}
@@ -8624,7 +8670,7 @@ void clif_hate_info(struct map_session_data *sd, unsigned char hate_level,int cl
*------------------------------------------*/
void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char progress)
{
- clif_starskill(sd, mob_db(mob_id)->jname, mob_id, progress, 20);
+ clif->starskill(sd, mob_db(mob_id)->jname, mob_id, progress, 20);
}
/*==========================================
@@ -8632,7 +8678,7 @@ void clif_mission_info(struct map_session_data *sd, int mob_id, unsigned char pr
*------------------------------------------*/
void clif_feel_hate_reset(struct map_session_data *sd)
{
- clif_starskill(sd, "", 0, 0, 30);
+ clif->starskill(sd, "", 0, 0, 30);
}
@@ -8726,9 +8772,9 @@ void clif_viewequip_ack(struct map_session_data* sd, struct map_session_data* ts
// Inventory position
WBUFW(buf, n*s+43) = i + 2;
// Add refine, identify flag, element, etc.
- clif_item_sub(WBUFP(buf,0), n*s+45, &tsd->status.inventory[i], tsd->inventory_data[i], pc_equippoint(tsd, i));
+ clif->item_sub(WBUFP(buf,0), n*s+45, &tsd->status.inventory[i], tsd->inventory_data[i], pc_equippoint(tsd, i));
// Add cards
- clif_addcards(WBUFP(buf, n*s+55), &tsd->status.inventory[i]);
+ clif->addcards(WBUFP(buf, n*s+55), &tsd->status.inventory[i]);
// Expiration date stuff, if all of those are set to 0 then the client doesn't show anything related (6 bytes)
WBUFL(buf, n*s+63) = tsd->status.inventory[i].expire_time;
WBUFW(buf, n*s+67) = 0;
@@ -8803,8 +8849,7 @@ void clif_viewequip_fail(struct map_session_data* sd)
/// Returns true if the packet was parsed successfully.
/// Formats: 0 - <packet id>.w <packet len>.w (<name> : <message>).?B 00
/// 1 - <packet id>.w <packet len>.w <name>.24B <message>.?B 00
-static bool clif_process_message(struct map_session_data* sd, int format, char** name_, int* namelen_, char** message_, int* messagelen_)
-{
+bool clif_process_message(struct map_session_data* sd, int format, char** name_, int* namelen_, char** message_, int* messagelen_) {
char *text, *name, *message;
unsigned int packetlen, textlen, namelen, messagelen;
int fd = sd->fd;
@@ -8907,8 +8952,7 @@ static bool clif_process_message(struct map_session_data* sd, int format, char**
// 5 - Invalid client_tick (reserved)
// 6 - Invalid sex
// Only the first 'invalid' error that appears is used.
-static int clif_guess_PacketVer(int fd, int get_previous, int *error)
-{
+int clif_guess_PacketVer(int fd, int get_previous, int *error) {
static int err = 1;
static int packet_ver = -1;
int cmd, packet_len, value; //Value is used to temporarily store account/char_id/sex
@@ -8957,8 +9001,7 @@ static int clif_guess_PacketVer(int fd, int get_previous, int *error)
CHECK_PACKET_VER();//Default packet version found.
- for (packet_ver = MAX_PACKET_VER; packet_ver > 0; packet_ver--)
- { //Start guessing the version, giving priority to the newer ones. [Skotlex]
+ for (packet_ver = MAX_PACKET_VER; packet_ver > 0; packet_ver--) { //Start guessing the version, giving priority to the newer ones. [Skotlex]
CHECK_PACKET_VER();
}
if( error )
@@ -8969,6 +9012,31 @@ static int clif_guess_PacketVer(int fd, int get_previous, int *error)
#undef CHECK_PACKET_VER
}
+void clif_hercules_chsys_msg(struct hChSysCh *channel, struct map_session_data *sd, char *msg) {
+ DBIterator *iter = db_iterator(channel->users);
+ struct map_session_data *user;
+ unsigned short msg_len = strlen(msg) + 1;
+
+ WFIFOHEAD(sd->fd,msg_len + 12);
+ WFIFOW(sd->fd,0) = 0x2C1;
+ WFIFOW(sd->fd,2) = msg_len + 12;
+ WFIFOL(sd->fd,4) = 0;
+ WFIFOL(sd->fd,8) = hChSys.colors[channel->color];
+ safestrncpy((char*)WFIFOP(sd->fd,12), msg, msg_len);
+
+ for( user = dbi_first(iter); dbi_exists(iter); user = dbi_next(iter) ) {
+ if( user->fd == sd->fd )
+ continue;
+ WFIFOHEAD(user->fd,msg_len + 12);
+ memcpy(WFIFOP(user->fd,0), WFIFOP(sd->fd,0), msg_len + 12);
+ WFIFOSET(user->fd, msg_len + 12);
+ }
+
+ WFIFOSET(sd->fd, msg_len + 12);
+
+ dbi_destroy(iter);
+}
+
// ------------
// clif_parse_*
// ------------
@@ -8979,7 +9047,7 @@ static int clif_guess_PacketVer(int fd, int get_previous, int *error)
/// 0072 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER)
/// 0436 <account id>.L <char id>.L <auth code>.L <client time>.L <gender>.B (CZ_ENTER2)
/// There are various variants of this packet, some of them have padding between fields.
-void clif_parse_WantToConnection(int fd, TBL_PC* sd)
+void clif_parse_WantToConnection(int fd, struct map_session_data* sd)
{
struct block_list* bl;
struct auth_node* node;
@@ -8993,7 +9061,7 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd)
}
// Only valid packet version get here
- packet_ver = clif_guess_PacketVer(fd, 1, NULL);
+ packet_ver = clif->guess_PacketVer(fd, 1, NULL);
cmd = RFIFOW(fd,0);
account_id = RFIFOL(fd, packet_db[packet_ver][cmd].pos[0]);
@@ -9015,9 +9083,8 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd)
return;
}
- if( runflag != MAPSERVER_ST_RUNNING )
- {// not allowed
- clif_authfail_fd(fd,1);// server closed
+ if( runflag != MAPSERVER_ST_RUNNING ) { // not allowed
+ clif->authfail_fd(fd,1);// server closed
return;
}
@@ -9037,7 +9104,7 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd)
((node=chrif_search(account_id)) && //An already existing node is valid only if it is for this login.
!(node->account_id == account_id && node->char_id == char_id && node->state == ST_LOGIN)))
{
- clif_authfail_fd(fd, 8); //Still recognizes last connection
+ clif->authfail_fd(fd, 8); //Still recognizes last connection
return;
}
@@ -9061,7 +9128,23 @@ void clif_parse_WantToConnection(int fd, TBL_PC* sd)
chrif_authreq(sd);
}
-
+void clif_hercules_chsys_mjoin(struct map_session_data *sd) {
+ if( !map[sd->bl.m].channel ) {
+ CREATE(map[sd->bl.m].channel, struct hChSysCh , 1);
+ safestrncpy(map[sd->bl.m].channel->name, hChSys.local_name, HCHSYS_NAME_LENGTH);
+ map[sd->bl.m].channel->type = hChSys_MAP;
+ map[sd->bl.m].channel->m = sd->bl.m;
+
+ clif->chsys_create(map[sd->bl.m].channel,NULL,NULL,hChSys.local_color);
+ }
+ clif->chsys_join(map[sd->bl.m].channel,sd);
+
+ if( !( map[sd->bl.m].channel->opt & hChSys_OPT_ANNOUNCE_JOIN ) ) {
+ char mout[60];
+ sprintf(mout, msg_txt(1435),hChSys.local_name,map[sd->bl.m].name); // You're now in the '#%s' channel for '%s'
+ clif->message(sd->fd, mout);
+ }
+}
/// Notification from the client, that it has finished map loading and is about to display player's character (CZ_NOTIFY_ACTORINIT).
/// 007d
@@ -9070,17 +9153,15 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if(sd->bl.prev != NULL)
return;
- if (!sd->state.active)
- { //Character loading is not complete yet!
+ if (!sd->state.active) { //Character loading is not complete yet!
//Let pc_reg_received reinvoke this when ready.
sd->state.connect_new = 0;
return;
}
- if (sd->state.rewarp)
- { //Rewarp player.
+ if (sd->state.rewarp) { //Rewarp player.
sd->state.rewarp = 0;
- clif_changemap(sd, sd->mapindex, sd->bl.x, sd->bl.y);
+ clif->changemap(sd, sd->mapindex, sd->bl.x, sd->bl.y);
return;
}
@@ -9088,21 +9169,21 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
// look
#if PACKETVER < 4
- clif_changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
- clif_changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
+ clif->changelook(&sd->bl,LOOK_WEAPON,sd->status.weapon);
+ clif->changelook(&sd->bl,LOOK_SHIELD,sd->status.shield);
#else
- clif_changelook(&sd->bl,LOOK_WEAPON,0);
+ clif->changelook(&sd->bl,LOOK_WEAPON,0);
#endif
if(sd->vd.cloth_color)
clif->refreshlook(&sd->bl,sd->bl.id,LOOK_CLOTHES_COLOR,sd->vd.cloth_color,SELF);
// item
- clif_inventorylist(sd); // inventory list first, otherwise deleted items in pc_checkitem show up as 'unknown item'
+ clif->inventorylist(sd); // inventory list first, otherwise deleted items in pc_checkitem show up as 'unknown item'
pc_checkitem(sd);
// cart
if(pc_iscarton(sd)) {
- clif_cartlist(sd);
+ clif->cartlist(sd);
clif->updatestatus(sd,SP_CARTINFO);
}
@@ -9124,12 +9205,10 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
if( map[sd->bl.m].users++ == 0 && battle_config.dynamic_mobs )
map_spawnmobs(sd->bl.m);
- if( !(sd->sc.option&OPTION_INVISIBLE) )
- {// increment the number of pvp players on the map
+ if( !(sd->sc.option&OPTION_INVISIBLE) ) { // increment the number of pvp players on the map
map[sd->bl.m].users_pvp++;
}
- if( map[sd->bl.m].instance_id )
- {
+ if( map[sd->bl.m].instance_id ) {
instance[map[sd->bl.m].instance_id].users++;
instance_check_idle(map[sd->bl.m].instance_id);
}
@@ -9139,13 +9218,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
sd->state.callshop = 0;
map_addblock(&sd->bl);
- clif_spawn(&sd->bl);
+ clif->spawn(&sd->bl);
// Party
// (needs to go after clif_spawn() to show hp bars correctly)
if(sd->status.party_id) {
party_send_movemap(sd);
- clif_party_hp(sd); // Show hp after displacement [LuzZza]
+ clif->party_hp(sd); // Show hp after displacement [LuzZza]
}
if( sd->bg_id ) clif->bg_hp(sd); // BattleGround System
@@ -9160,34 +9239,30 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
sd->pvp_won = 0;
sd->pvp_lost = 0;
}
- clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
+ clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
} else
// set flag, if it's a duel [LuzZza]
if(sd->duel_group)
- clif_map_property(sd, MAPPROPERTY_FREEPVPZONE);
+ clif->map_property(sd, MAPPROPERTY_FREEPVPZONE);
if (map[sd->bl.m].flag.gvg_dungeon)
- clif_map_property(sd, MAPPROPERTY_FREEPVPZONE); //TODO: Figure out the real packet to send here.
+ clif->map_property(sd, MAPPROPERTY_FREEPVPZONE); //TODO: Figure out the real packet to send here.
if( map_flag_gvg(sd->bl.m) )
- clif_map_property(sd, MAPPROPERTY_AGITZONE);
+ clif->map_property(sd, MAPPROPERTY_AGITZONE);
// info about nearby objects
// must use foreachinarea (CIRCULAR_AREA interferes with foreachinrange)
- map_foreachinarea(clif_getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd);
+ map_foreachinarea(clif->getareachar, sd->bl.m, sd->bl.x-AREA_SIZE, sd->bl.y-AREA_SIZE, sd->bl.x+AREA_SIZE, sd->bl.y+AREA_SIZE, BL_ALL, sd);
// pet
- if( sd->pd )
- {
- if( battle_config.pet_no_gvg && map_flag_gvg(sd->bl.m) )
- { //Return the pet to egg. [Skotlex]
- clif_displaymessage(sd->fd, msg_txt(666));
+ if( sd->pd ) {
+ if( battle_config.pet_no_gvg && map_flag_gvg(sd->bl.m) ) { //Return the pet to egg. [Skotlex]
+ clif->message(sd->fd, msg_txt(666));
pet_menu(sd, 3); //Option 3 is return to egg.
- }
- else
- {
+ } else {
map_addblock(&sd->pd->bl);
- clif_spawn(&sd->pd->bl);
+ clif->spawn(&sd->pd->bl);
clif->send_petdata(sd,sd->pd,0,0);
clif->send_petstatus(sd);
// skill->unit_move(&sd->pd->bl,gettick(),1);
@@ -9195,14 +9270,13 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
}
//homunculus [blackhole89]
- if( merc_is_hom_active(sd->hd) )
- {
+ if( merc_is_hom_active(sd->hd) ) {
map_addblock(&sd->hd->bl);
- clif_spawn(&sd->hd->bl);
+ clif->spawn(&sd->hd->bl);
clif->send_homdata(sd,SP_ACK,0);
- clif_hominfo(sd,sd->hd,1);
- clif_hominfo(sd,sd->hd,0); //for some reason, at least older clients want this sent twice
- clif_homskillinfoblock(sd);
+ clif->hominfo(sd,sd->hd,1);
+ clif->hominfo(sd,sd->hd,0); //for some reason, at least older clients want this sent twice
+ clif->homskillinfoblock(sd);
if( battle_config.hom_setting&0x8 )
status_calc_bl(&sd->hd->bl, SCB_SPEED); //Homunc mimic their master's speed on each map change
if( !(battle_config.hom_setting&0x2) )
@@ -9237,7 +9311,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
clif->updatestatus(sd,SP_JOBEXP);
clif->updatestatus(sd,SP_NEXTJOBEXP);
clif->updatestatus(sd,SP_SKILLPOINT);
- clif_initialstatus(sd);
+ clif->initialstatus(sd);
if (sd->sc.option&OPTION_FALCON)
clif->status_change(&sd->bl, SI_FALCON, 1, 0, 0, 0, 0);
@@ -9259,7 +9333,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
}
if(sd->pd && sd->pd->pet.intimate > 900)
- clif_pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet_hungry_val(sd->pd));
+ clif->pet_emotion(sd->pd,(sd->pd->pet.class_ - 100)*100 + 50 + pet_hungry_val(sd->pd));
if(merc_is_hom_active(sd->hd))
merc_hom_init_timers(sd->hd);
@@ -9292,11 +9366,10 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
npc_event_dequeue(sd);
}
- if( sd->state.changemap )
- {// restore information that gets lost on map-change
+ if( sd->state.changemap ) {// restore information that gets lost on map-change
#if PACKETVER >= 20070918
- clif_partyinvitationstate(sd);
- clif_equipcheckbox(sd);
+ clif->partyinvitationstate(sd);
+ clif->equipcheckbox(sd);
#endif
if( (battle_config.bg_flee_penalty != 100 || battle_config.gvg_flee_penalty != 100) &&
(map_flag_gvg(sd->state.pmap) || map_flag_gvg(sd->bl.m) || map[sd->state.pmap].flag.battleground || map[sd->bl.m].flag.battleground) )
@@ -9313,21 +9386,24 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
}
if( map[sd->bl.m].flag.battleground ) {
- clif_map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode
+ clif->map_type(sd, MAPTYPE_BATTLEFIELD); // Battleground Mode
if( map[sd->bl.m].flag.battleground == 2 )
clif->bg_updatescore_single(sd);
}
- if( map[sd->bl.m].flag.allowks && !map_flag_ks(sd->bl.m) )
- {
+ if( map[sd->bl.m].flag.allowks && !map_flag_ks(sd->bl.m) ) {
char output[128];
sprintf(output, "[ Kill Steal Protection Disable. KS is allowed in this map ]");
- clif_broadcast(&sd->bl, output, strlen(output) + 1, 0x10, SELF);
+ clif->broadcast(&sd->bl, output, strlen(output) + 1, 0x10, SELF);
}
map_iwall_get(sd); // Updates Walls Info on this Map to Client
status_calc_pc(sd, false);/* some conditions are map-dependent so we must recalculate */
sd->state.changemap = false;
+
+ if( hChSys.local && hChSys.local_autojoin && !map[sd->bl.m].flag.chsysnolocalaj ) {
+ clif->chsys_mjoin(sd);
+ }
}
mail_clear(sd);
@@ -9341,8 +9417,8 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
}
if( sd->state.vending ) { /* show we have a vending */
- clif_openvending(sd,sd->bl.id,sd->vending);
- clif_showvendingboard(&sd->bl,sd->message,0);
+ clif->openvending(sd,sd->bl.id,sd->vending);
+ clif->showvendingboard(&sd->bl,sd->message,0);
}
if(map[sd->bl.m].flag.loadevent) // Lance
@@ -9352,9 +9428,9 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
clif->status_change(&sd->bl, SI_DEVIL, 0, 0, 0, 0, 0); //blindness [Komurka]
if (sd->sc.opt2) //Client loses these on warp.
- clif_changeoption(&sd->bl);
+ clif->changeoption(&sd->bl);
- clif_weather_check(sd);
+ clif->weather_check(sd);
// For automatic triggering of NPCs after map loading (so you don't need to walk 1 step first)
if (map_getcell(sd->bl.m,sd->bl.x,sd->bl.y,CELL_CHKNPC))
@@ -9368,7 +9444,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
// If player is dead, and is spawned (such as @refresh) send death packet. [Valaris]
if(pc_isdead(sd))
- clif_clearunit_area(&sd->bl, CLR_DEAD);
+ clif->clearunit_area(&sd->bl, CLR_DEAD);
else {
skill->usave_trigger(sd);
clif->changed_dir(&sd->bl, SELF);
@@ -9382,8 +9458,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
/// Server's tick (ZC_NOTIFY_TIME).
/// 007f <time>.L
-void clif_notify_time(struct map_session_data* sd, unsigned long time)
-{
+void clif_notify_time(struct map_session_data* sd, unsigned long time) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x7f));
@@ -9401,7 +9476,7 @@ void clif_parse_TickSend(int fd, struct map_session_data *sd)
{
sd->client_tick = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
- clif_notify_time(sd, gettick());
+ clif->notify_time(sd, gettick());
}
@@ -9498,14 +9573,14 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd)
short x, y;
if (pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl, CLR_DEAD);
+ clif->clearunit_area(&sd->bl, CLR_DEAD);
return;
}
if (sd->sc.opt1 && ( sd->sc.opt1 == OPT1_STONEWAIT || sd->sc.opt1 == OPT1_BURNING ))
; //You CAN walk on this OPT1 value.
else if( sd->progressbar.npc_id )
- clif_progressbar_abort(sd);
+ clif->progressbar_abort(sd);
else if (pc_cant_act(sd))
return;
@@ -9551,9 +9626,9 @@ void clif_parse_QuitGame(int fd, struct map_session_data *sd)
(!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
{
set_eof(fd);
- clif_disconnect_ack(sd, 0);
+ clif->disconnect_ack(sd, 0);
} else {
- clif_disconnect_ack(sd, 1);
+ clif->disconnect_ack(sd, 1);
}
}
@@ -9594,7 +9669,7 @@ void clif_parse_GetCharNameRequest(int fd, struct map_session_data *sd)
}
*/
- clif_charnameack(fd, bl);
+ clif->charnameack(fd, bl);
}
@@ -9612,7 +9687,7 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd)
bool is_fake;
// validate packet and retrieve name and message
- if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) )
+ if( !clif->process_message(sd, 0, &name, &namelen, &message, &messagelen) )
return;
if( is_atcommand(fd, sd, message, 1) )
@@ -9621,12 +9696,32 @@ void clif_parse_GlobalMessage(int fd, struct map_session_data* sd)
if( sd->sc.data[SC_BERSERK] || sd->sc.data[SC__BLOODYLUST] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCHAT) )
return;
- if( battle_config.min_chat_delay )
- { //[Skotlex]
+ if( battle_config.min_chat_delay ) { //[Skotlex]
if (DIFF_TICK(sd->cantalk_tick, gettick()) > 0)
return;
sd->cantalk_tick = gettick() + battle_config.min_chat_delay;
}
+
+ if( sd->gcbind ) {
+ clif->chsys_send(sd->gcbind,sd,message);
+ return;
+ } else if ( sd->fontcolor && !sd->chatID ) {
+ char mout[200];
+ unsigned char mylen = 1;
+
+ mylen += snprintf(mout, 200, "%s : %s",sd->fakename[0]?sd->fakename:sd->status.name,message);
+
+ WFIFOHEAD(fd,mylen + 12);
+ WFIFOW(fd,0) = 0x2C1;
+ WFIFOW(fd,2) = mylen + 12;
+ WFIFOL(fd,4) = -sd->bl.id;
+ WFIFOL(fd,8) = hChSys.colors[sd->fontcolor - 1];
+ safestrncpy((char*)WFIFOP(fd,12), mout, mylen);
+ clif->send(WFIFOP(fd,0), WFIFOW(fd,2), &sd->bl, AREA_WOS);
+ WFIFOSET(fd, mylen + 12);
+ return;
+ }
+
/**
* Fake Name Design by FatalEror (bug report #9)
**/
@@ -9728,7 +9823,7 @@ void clif_parse_ChangeDir(int fd, struct map_session_data *sd)
dir = RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]);
pc_setdir(sd, dir, headdir);
- clif_changed_dir(&sd->bl, AREA_WOS);
+ clif->changed_dir(&sd->bl, AREA_WOS);
}
@@ -9742,32 +9837,30 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd)
if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) {
if (emoticon == E_MUTE) {// prevent use of the mute emote [Valaris]
- clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
return;
}
// fix flood of emotion icon (ro-proxy): flood only the hacker player
if (sd->emotionlasttime + 1 >= time(NULL)) { // not more than 1 per second
sd->emotionlasttime = time(NULL);
- clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
return;
}
sd->emotionlasttime = time(NULL);
- if(battle_config.client_reshuffle_dice && emoticon>=E_DICE1 && emoticon<=E_DICE6)
- {// re-roll dice
+ if(battle_config.client_reshuffle_dice && emoticon>=E_DICE1 && emoticon<=E_DICE6) {// re-roll dice
emoticon = rnd()%6+E_DICE1;
}
- clif_emotion(&sd->bl, emoticon);
+ clif->emotion(&sd->bl, emoticon);
} else
- clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 1);
}
/// Amount of currently online players, reply to /w /who (ZC_USER_COUNT).
/// 00c2 <count>.L
-void clif_user_count(struct map_session_data* sd, int count)
-{
+void clif_user_count(struct map_session_data* sd, int count) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xc2));
@@ -9782,14 +9875,14 @@ void clif_user_count(struct map_session_data* sd, int count)
/// 00c1
void clif_parse_HowManyConnections(int fd, struct map_session_data *sd)
{
- clif_user_count(sd, map_getusers());
+ clif->user_count(sd, map_getusers());
}
void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type, int target_id, unsigned int tick)
{
if (pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl, CLR_DEAD);
+ clif->clearunit_area(&sd->bl, CLR_DEAD);
return;
}
@@ -9808,69 +9901,107 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
if(target_id<0 && -target_id == sd->bl.id) // for disguises [Valaris]
target_id = sd->bl.id;
- switch(action_type)
- {
- case 0x00: // once attack
- case 0x07: // continuous attack
+ switch(action_type) {
+ case 0x00: // once attack
+ case 0x07: // continuous attack
- if( pc_cant_act(sd) || sd->sc.option&OPTION_HIDE )
- return;
+ if( pc_cant_act(sd) || sd->sc.option&OPTION_HIDE )
+ return;
- if( sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) )
- return;
+ if( sd->sc.option&(OPTION_WEDDING|OPTION_XMAS|OPTION_SUMMER) )
+ return;
- if( sd->sc.data[SC_BASILICA] || sd->sc.data[SC__SHADOWFORM] )
- return;
+ if( sd->sc.data[SC_BASILICA] || sd->sc.data[SC__SHADOWFORM] )
+ return;
+
+ if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) {
+ if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
+ clif->skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0);
+ return;
+ }
+ }
- if (!battle_config.sdelay_attack_enable && pc_checkskill(sd, SA_FREECAST) <= 0) {
- if (DIFF_TICK(tick, sd->ud.canact_tick) < 0) {
- clif_skill_fail(sd, 1, USESKILL_FAIL_SKILLINTERVAL, 0);
+ pc_delinvincibletimer(sd);
+ sd->idletime = last_tick;
+ unit_attack(&sd->bl, target_id, action_type != 0);
+ break;
+ case 0x02: // sitdown
+ if (battle_config.basic_skill_check && pc_checkskill(sd, NV_BASIC) < 3) {
+ clif->skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
+ break;
+ }
+
+ if(pc_issit(sd)) {
+ //Bugged client? Just refresh them.
+ clif->sitting(&sd->bl);
return;
}
- }
- pc_delinvincibletimer(sd);
- sd->idletime = last_tick;
- unit_attack(&sd->bl, target_id, action_type != 0);
- break;
- case 0x02: // sitdown
- if (battle_config.basic_skill_check && pc_checkskill(sd, NV_BASIC) < 3) {
- clif_skill_fail(sd, 1, USESKILL_FAIL_LEVEL, 2);
- break;
- }
+ if (sd->ud.skilltimer != INVALID_TIMER || (sd->sc.opt1 && sd->sc.opt1 != OPT1_BURNING ))
+ break;
- if(pc_issit(sd)) {
- //Bugged client? Just refresh them.
- clif_sitting(&sd->bl);
- return;
- }
+ if (sd->sc.count && (
+ sd->sc.data[SC_DANCING] ||
+ (sd->sc.data[SC_GRAVITATION] && sd->sc.data[SC_GRAVITATION]->val3 == BCT_SELF)
+ )) //No sitting during these states either.
+ break;
- if (sd->ud.skilltimer != INVALID_TIMER || (sd->sc.opt1 && sd->sc.opt1 != OPT1_BURNING ))
- break;
+ pc_setsit(sd);
+ skill->sit(sd,1);
+ clif->sitting(&sd->bl);
+ break;
+ case 0x03: // standup
+ if (!pc_issit(sd)) {
+ //Bugged client? Just refresh them.
+ clif->standing(&sd->bl);
+ return;
+ }
+ pc_setstand(sd);
+ skill->sit(sd,0);
+ clif->standing(&sd->bl);
+ break;
+ }
+}
- if (sd->sc.count && (
- sd->sc.data[SC_DANCING] ||
- (sd->sc.data[SC_GRAVITATION] && sd->sc.data[SC_GRAVITATION]->val3 == BCT_SELF)
- )) //No sitting during these states either.
+void clif_hercules_chsys_left(struct hChSysCh *channel, struct map_session_data *sd) {
+ unsigned char i;
+ idb_remove(channel->users,sd->status.char_id);
+
+ if( channel == sd->gcbind )
+ sd->gcbind = NULL;
+
+ if( !db_size(channel->users) && channel->type == hChSys_PRIVATE ) {
+ clif->chsys_delete(channel);
+ } else if( !hChSys.closing && (channel->opt & hChSys_OPT_ANNOUNCE_JOIN) ) {
+ char message[60];
+ sprintf(message, "#%s '%s' left",channel->name,sd->status.name);
+ clif->chsys_msg(channel,sd,message);
+ }
+
+ for( i = 0; i < sd->channel_count; i++ ) {
+ if( sd->channels[i] == channel ) {
+ sd->channels[i] = NULL;
break;
-
- pc_setsit(sd);
- skill->sit(sd,1);
- clif_sitting(&sd->bl);
- break;
- case 0x03: // standup
- if (!pc_issit(sd)) {
- //Bugged client? Just refresh them.
- clif_standing(&sd->bl);
- return;
}
- pc_setstand(sd);
- skill->sit(sd,0);
- clif_standing(&sd->bl);
- break;
}
-}
+
+ if( i < sd->channel_count ) {
+ unsigned char cursor = 0;
+ for( i = 0; i < sd->channel_count; i++ ) {
+ if( sd->channels[i] == NULL )
+ continue;
+ if( cursor != i ) {
+ sd->channels[cursor] = sd->channels[i];
+ }
+ cursor++;
+ }
+ if ( !(sd->channel_count = cursor) ) {
+ aFree(sd->channels);
+ sd->channels = NULL;
+ }
+ }
+}
/// Request for an action.
/// 0089 <target id>.L <action>.B (CZ_REQUEST_ACT)
@@ -9885,7 +10016,7 @@ void clif_parse_ActionRequest_sub(struct map_session_data *sd, int action_type,
/// There are various variants of this packet, some of them have padding between fields.
void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
{
- clif_parse_ActionRequest_sub(sd,
+ clif->pActionRequest_sub(sd,
RFIFOB(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]),
RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]),
gettick()
@@ -9898,22 +10029,21 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd)
/// type:
/// 0 = restart (respawn)
/// 1 = char-select (disconnect)
-void clif_parse_Restart(int fd, struct map_session_data *sd)
-{
+void clif_parse_Restart(int fd, struct map_session_data *sd) {
switch(RFIFOB(fd,2)) {
- case 0x00:
- pc_respawn(sd,CLR_RESPAWN);
- break;
- case 0x01:
- /* Rovert's Prevent logout option - Fixed [Valaris] */
- if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] &&
- (!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
- { //Send to char-server for character selection.
- chrif_charselectreq(sd, session[fd]->client_addr);
- } else {
- clif_disconnect_ack(sd, 1);
- }
- break;
+ case 0x00:
+ pc_respawn(sd,CLR_RESPAWN);
+ break;
+ case 0x01:
+ /* Rovert's Prevent logout option - Fixed [Valaris] */
+ if( !sd->sc.data[SC_CLOAKING] && !sd->sc.data[SC_HIDING] && !sd->sc.data[SC_CHASEWALK] && !sd->sc.data[SC_CLOAKINGEXCEED] &&
+ (!battle_config.prevent_logout || DIFF_TICK(gettick(), sd->canlog_tick) > battle_config.prevent_logout) )
+ { //Send to char-server for character selection.
+ chrif_charselectreq(sd, session[fd]->client_addr);
+ } else {
+ clif->disconnect_ack(sd, 1);
+ }
+ break;
}
}
@@ -9929,7 +10059,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
int namelen, messagelen;
// validate packet and retrieve name and message
- if( !clif_process_message(sd, 1, &target, &namelen, &message, &messagelen) )
+ if( !clif->process_message(sd, 1, &target, &namelen, &message, &messagelen) )
return;
if ( is_atcommand(fd, sd, message, 1) )
@@ -9951,8 +10081,7 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
//-------------------------------------------------------//
// Lordalfa - Paperboy - To whisper NPC commands //
//-------------------------------------------------------//
- if (target[0] && (strncasecmp(target,"NPC:",4) == 0) && (strlen(target) > 4))
- {
+ if (target[0] && (strncasecmp(target,"NPC:",4) == 0) && (strlen(target) > 4)) {
char* str = target+4; //Skip the NPC: string part.
struct npc_data* npc;
if ((npc = npc_name2id(str))) {
@@ -9987,15 +10116,38 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
return;
}
- } else if(strcmpi(target, main_chat_nick) == 0) { // Main chat [LuzZza]
- if(!sd->state.mainchat)
- clif_displaymessage(fd, msg_txt(388)); // You should enable main chat with "@main on" command.
- else {
- // send the main message using inter-server system
- intif_main_message( sd, message );
+ } else if( target[0] == '#' ) {
+ struct hChSysCh *channel;
+ char* chname = target;
+
+ chname++;
+
+ if( hChSys.local && strcmpi(chname, hChSys.local_name) == 0 ) {
+ if( !map[sd->bl.m].channel ) {
+ clif->chsys_mjoin(sd);
+ }
+ channel = map[sd->bl.m].channel;
+ } else if( hChSys.ally && sd->status.guild_id && strcmpi(chname, hChSys.ally_name) == 0 ) {
+ struct guild *g = sd->guild;
+ if( !g ) return;
+ channel = (struct hChSysCh *)g->channel;
+ }
+ if( channel || (channel = strdb_get(clif->channel_db,chname)) ) {
+ unsigned char k;
+ for( k = 0; k < sd->channel_count; k++ ) {
+ if( sd->channels[k] == channel )
+ break;
+ }
+ if( k < sd->channel_count ) {
+ clif->chsys_send(channel,sd,message);
+ } else if( channel->pass[0] == '\0' ) {
+ clif->chsys_join(channel,sd);
+ clif->chsys_send(channel,sd,message);
+ } else {
+ clif->message(fd, msg_txt(1402));
+ }
+ return;
}
-
- return;
}
// searching destination character
@@ -10014,9 +10166,9 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
// if player ignores everyone
if (dstsd->state.ignoreAll) {
if (dstsd->sc.option & OPTION_INVISIBLE && pc_get_group_level(sd) < pc_get_group_level(dstsd))
- clif_wis_end(fd, 1); // 1: target character is not loged in
+ clif->wis_end(fd, 1); // 1: target character is not loged in
else
- clif_wis_end(fd, 3); // 3: everyone ignored by target
+ clif->wis_end(fd, 3); // 3: everyone ignored by target
return;
}
@@ -10024,22 +10176,22 @@ void clif_parse_WisMessage(int fd, struct map_session_data* sd)
if( dstsd->state.autotrade == 1 ) {
char output[256];
sprintf(output, "%s is in autotrade mode and cannot receive whispered messages.", dstsd->status.name);
- clif_wis_message(fd, wisp_server_name, output, strlen(output) + 1);
+ clif->wis_message(fd, wisp_server_name, output, strlen(output) + 1);
return;
}
// if player ignores the source character
ARR_FIND(0, MAX_IGNORE_LIST, i, dstsd->ignore[i].name[0] == '\0' || strcmp(dstsd->ignore[i].name, sd->status.name) == 0);
if(i < MAX_IGNORE_LIST && dstsd->ignore[i].name[0] != '\0') { // source char present in ignore list
- clif_wis_end(fd, 2); // 2: ignored by target
+ clif->wis_end(fd, 2); // 2: ignored by target
return;
}
// notify sender of success
- clif_wis_end(fd, 0); // 0: success to send wisper
+ clif->wis_end(fd, 0); // 0: success to send wisper
// Normal message
- clif_wis_message(dstsd->fd, sd->status.name, message, messagelen);
+ clif->wis_message(dstsd->fd, sd->status.name, message, messagelen);
}
@@ -10074,7 +10226,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
do {
if (pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl, CLR_DEAD);
+ clif->clearunit_area(&sd->bl, CLR_DEAD);
break;
}
@@ -10100,7 +10252,7 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd)
return;
} while (0);
// Client REQUIRES a fail packet or you can no longer pick items.
- clif_additem(sd,0,0,6);
+ clif->additem(sd,0,0,6);
}
@@ -10134,7 +10286,7 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd)
}
//Because the client does not like being ignored.
- clif_dropitem(sd, item_index,0);
+ clif->dropitem(sd, item_index,0);
}
@@ -10147,7 +10299,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
int n;
if (pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl, CLR_DEAD);
+ clif->clearunit_area(&sd->bl, CLR_DEAD);
return;
}
@@ -10161,7 +10313,7 @@ void clif_parse_UseItem(int fd, struct map_session_data *sd)
if(n <0 || n >= MAX_INVENTORY)
return;
if (!pc_useitem(sd,n))
- clif_useitemack(sd,n,0,false); //Send an empty ack packet or the client gets stuck.
+ clif->useitemack(sd,n,0,false); //Send an empty ack packet or the client gets stuck.
}
@@ -10172,7 +10324,7 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
int index;
if(pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl,CLR_DEAD);
+ clif->clearunit_area(&sd->bl,CLR_DEAD);
return;
}
index = RFIFOW(fd,2)-2;
@@ -10188,7 +10340,7 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
return;
if(!sd->status.inventory[index].identify) {
- clif_equipitemack(sd,index,0,0); // fail
+ clif->equipitemack(sd,index,0,0); // fail
return;
}
@@ -10207,6 +10359,48 @@ void clif_parse_EquipItem(int fd,struct map_session_data *sd)
pc_equipitem(sd,index,RFIFOW(fd,4));
}
+void clif_hercules_chsys_delete(struct hChSysCh *channel) {
+ if( db_size(channel->users) && !hChSys.closing ) {
+ DBIterator *iter;
+ struct map_session_data *sd;
+ char message[60];
+ unsigned char i;
+ sprintf(message, "#%s channel is being shut down",channel->name);
+ clif->chsys_msg(channel,sd,message);
+ iter = db_iterator(channel->users);
+ for( sd = dbi_first(iter); dbi_exists(iter); sd = dbi_next(iter) ) {
+ for( i = 0; i < sd->channel_count; i++ ) {
+ if( sd->channels[i] == channel ) {
+ sd->channels[i] = NULL;
+ break;
+ }
+ }
+ if( i < sd->channel_count ) {
+ unsigned char cursor = 0;
+ for( i = 0; i < sd->channel_count; i++ ) {
+ if( sd->channels[i] == NULL )
+ continue;
+ if( cursor != i ) {
+ sd->channels[cursor] = sd->channels[i];
+ }
+ cursor++;
+ }
+ if ( !(sd->channel_count = cursor) ) {
+ aFree(sd->channels);
+ sd->channels = NULL;
+ }
+ }
+ }
+ }
+ db_destroy(channel->users);
+ if( channel->m ) {
+ map[channel->m].channel = NULL;
+ aFree(channel);
+ } else if ( channel->type == hChSys_ALLY )
+ aFree(channel);
+ else if( !hChSys.closing )
+ strdb_remove(clif->channel_db, channel->name);
+}
/// Request to take off an equip (CZ_REQ_TAKEOFF_EQUIP).
/// 00ab <index>.W
@@ -10215,7 +10409,7 @@ void clif_parse_UnequipItem(int fd,struct map_session_data *sd)
int index;
if(pc_isdead(sd)) {
- clif_clearunit_area(&sd->bl,CLR_DEAD);
+ clif->clearunit_area(&sd->bl,CLR_DEAD);
return;
}
@@ -10254,7 +10448,7 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd)
switch (bl->type) {
case BL_MOB:
case BL_PC:
- clif_parse_ActionRequest_sub(sd, 0x07, bl->id, gettick());
+ clif->pActionRequest_sub(sd, 0x07, bl->id, gettick());
break;
case BL_NPC:
if( bl->m != -1 )// the user can't click floating npcs directly (hack attempt)
@@ -10284,8 +10478,7 @@ void clif_parse_NpcBuySellSelected(int fd,struct map_session_data *sd)
/// 1 = "You do not have enough zeny."
/// 2 = "You are over your Weight Limit."
/// 3 = "Out of the maximum capacity, you have too many items."
-void clif_npc_buy_result(struct map_session_data* sd, unsigned char result)
-{
+void clif_npc_buy_result(struct map_session_data* sd, unsigned char result) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xca));
@@ -10310,7 +10503,7 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
sd->npc_shopid = 0; //Clear shop data.
- clif_npc_buy_result(sd, result);
+ clif->npc_buy_result(sd, result);
}
@@ -10319,8 +10512,7 @@ void clif_parse_NpcBuyListSend(int fd, struct map_session_data* sd)
/// result:
/// 0 = "The deal has successfully completed."
/// 1 = "The deal has failed."
-void clif_npc_sell_result(struct map_session_data* sd, unsigned char result)
-{
+void clif_npc_sell_result(struct map_session_data* sd, unsigned char result) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0xcb));
@@ -10347,7 +10539,7 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd)
sd->npc_shopid = 0; //Clear shop data.
- clif_npc_sell_result(sd, fail);
+ clif->npc_sell_result(sd, fail);
}
@@ -10369,7 +10561,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
if (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOROOM)
return;
if(battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 4) {
- clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
+ clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,3);
return;
}
if( npc_isnear(&sd->bl) ) {
@@ -10377,7 +10569,7 @@ void clif_parse_CreateChatRoom(int fd, struct map_session_data* sd)
//char output[150];
//sprintf(output, msg_txt(662), battle_config.min_npc_vendchat_distance);
//clif_displaymessage(sd->fd, output);
- clif_skill_fail(sd,1,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
+ clif->skill_fail(sd,1,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
return;
}
@@ -10457,16 +10649,15 @@ void clif_parse_ChatLeave(int fd, struct map_session_data* sd)
//Handles notifying asker and rejecter of what has just ocurred.
//Type is used to determine the correct msg_txt to use:
//0:
-static void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type)
-{
+void clif_noask_sub(struct map_session_data *src, struct map_session_data *target, int type) {
const char* msg;
char output[256];
// Your request has been rejected by autoreject option.
msg = msg_txt(392);
- clif_disp_onlyself(src, msg, strlen(msg));
+ clif->disp_onlyself(src, msg, strlen(msg));
//Notice that a request was rejected.
snprintf(output, 256, msg_txt(393+type), src->status.name, 256);
- clif_disp_onlyself(target, output, strlen(output));
+ clif->disp_onlyself(target, output, strlen(output));
}
@@ -10483,13 +10674,12 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd)
// @noask [LuzZza]
if(t_sd && t_sd->state.noask) {
- clif_noask_sub(sd, t_sd, 0);
+ clif->noask_sub(sd, t_sd, 0);
return;
}
- if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 1)
- {
- clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
+ if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 1) {
+ clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,0);
return;
}
@@ -10644,7 +10834,7 @@ void clif_parse_SkillUp(int fd,struct map_session_data *sd)
pc_skillup(sd,RFIFOW(fd,2));
}
-static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id)
+void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id)
{
int lv;
@@ -10666,7 +10856,7 @@ static void clif_parse_UseSkillToId_homun(struct homun_data *hd, struct map_sess
unit_skilluse_id(&hd->bl, target_id, skill_id, skill_lv);
}
-static void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
{
int lv;
if( !hd )
@@ -10687,7 +10877,7 @@ static void clif_parse_UseSkillToPos_homun(struct homun_data *hd, struct map_ses
unit_skilluse_pos(&hd->bl, x, y, skill_id, skill_lv);
}
-static void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id)
+void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id)
{
int lv;
@@ -10709,7 +10899,7 @@ static void clif_parse_UseSkillToId_mercenary(struct mercenary_data *md, struct
unit_skilluse_id(&md->bl, target_id, skill_id, skill_lv);
}
-static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
+void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo)
{
int lv;
if( !md )
@@ -10719,7 +10909,7 @@ static void clif_parse_UseSkillToPos_mercenary(struct mercenary_data *md, struct
if( md->ud.skilltimer != INVALID_TIMER )
return;
if( DIFF_TICK(tick, md->ud.canact_tick) < 0 ) {
- clif_skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(md->master, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
return;
}
@@ -10753,15 +10943,13 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
if (tmp&INF_GROUND_SKILL || !tmp)
return; //Using a ground/passive skill on a target? WRONG.
- if( skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE + MAX_HOMUNSKILL )
- {
- clif_parse_UseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id);
+ if( skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE + MAX_HOMUNSKILL ) {
+ clif->pUseSkillToId_homun(sd->hd, sd, tick, skill_id, skill_lv, target_id);
return;
}
- if( skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL )
- {
- clif_parse_UseSkillToId_mercenary(sd->md, sd, tick, skill_id, skill_lv, target_id);
+ if( skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL ) {
+ clif->pUseSkillToId_mercenary(sd->md, sd, tick, skill_id, skill_lv, target_id);
return;
}
@@ -10770,7 +10958,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
if( sd->npc_id ){
#ifdef RENEWAL
- clif_msg(sd, 0x783); // TODO look for the client date that has this message.
+ clif->msg(sd, 0x783); // TODO look for the client date that has this message.
#endif
return;
}
@@ -10788,16 +10976,12 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
if( target_id < 0 && -target_id == sd->bl.id ) // for disguises [Valaris]
target_id = sd->bl.id;
- if( sd->ud.skilltimer != INVALID_TIMER )
- {
+ if( sd->ud.skilltimer != INVALID_TIMER ) {
if( skill_id != SA_CASTCANCEL && skill_id != SO_SPELLFIST )
return;
- }
- else if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 )
- {
- if( sd->skillitem != skill_id )
- {
- clif_skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ } else if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
+ if( sd->skillitem != skill_id ) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
return;
}
}
@@ -10845,7 +11029,7 @@ void clif_parse_UseSkillToId(int fd, struct map_session_data *sd)
/*==========================================
* Client tells server he'd like to use AoE skill id 'skill_id' of level 'skill_lv' on 'x','y' location
*------------------------------------------*/
-static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
+void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo)
{
unsigned int tick = gettick();
@@ -10853,13 +11037,12 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
return; //Using a target skill on the ground? WRONG.
if( skill_id >= HM_SKILLBASE && skill_id < HM_SKILLBASE + MAX_HOMUNSKILL ) {
- clif_parse_UseSkillToPos_homun(sd->hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
+ clif->pUseSkillToPos_homun(sd->hd, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
return;
}
- if( skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL )
- {
- clif_parse_UseSkillToPos_mercenary(sd->md, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
+ if( skill_id >= MC_SKILLBASE && skill_id < MC_SKILLBASE + MAX_MERCSKILL ) {
+ clif->pUseSkillToPos_mercenary(sd->md, sd, tick, skill_id, skill_lv, x, y, skillmoreinfo);
return;
}
@@ -10868,11 +11051,9 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
if( skill->not_ok(skill_id, sd) )
return;
- if( skillmoreinfo != -1 )
- {
- if( pc_issit(sd) )
- {
- clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
+ if( skillmoreinfo != -1 ) {
+ if( pc_issit(sd) ) {
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0);
return;
}
//You can't use Graffiti/TalkieBox AND have a vending open, so this is safe.
@@ -10884,7 +11065,7 @@ static void clif_parse_UseSkillToPosSub(int fd, struct map_session_data *sd, uin
if( DIFF_TICK(tick, sd->ud.canact_tick) < 0 ) {
if( sd->skillitem != skill_id ) {
- clif_skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
+ clif->skill_fail(sd, skill_id, USESKILL_FAIL_SKILLINTERVAL, 0);
return;
}
}
@@ -10931,7 +11112,7 @@ void clif_parse_UseSkillToPos(int fd, struct map_session_data *sd)
if (pc_issit(sd))
return;
- clif_parse_UseSkillToPosSub(fd, sd,
+ clif->pUseSkillToPosSub(fd, sd,
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), //skill lv
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]), //skill num
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[2]), //pos x
@@ -10952,7 +11133,7 @@ void clif_parse_UseSkillToPosMoreInfo(int fd, struct map_session_data *sd)
if (pc_issit(sd))
return;
- clif_parse_UseSkillToPosSub(fd, sd,
+ clif->pUseSkillToPosSub(fd, sd,
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]), //Skill lv
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[1]), //Skill num
RFIFOW(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[2]), //pos x
@@ -11007,7 +11188,7 @@ void clif_parse_ProduceMix(int fd,struct map_session_data *sd)
}
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
clif_menuskill_clear(sd);
return;
}
@@ -11035,7 +11216,7 @@ void clif_parse_Cooking(int fd,struct map_session_data *sd) {
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
clif_menuskill_clear(sd);
return;
}
@@ -11053,7 +11234,7 @@ void clif_parse_RepairItem(int fd, struct map_session_data *sd)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
clif_menuskill_clear(sd);
return;
}
@@ -11072,7 +11253,7 @@ void clif_parse_WeaponRefine(int fd, struct map_session_data *sd)
return;
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
clif_menuskill_clear(sd);
return;
}
@@ -11100,7 +11281,7 @@ void clif_parse_NpcSelectMenu(int fd,struct map_session_data *sd)
#endif
TBL_NPC* nd = map_id2nd(npc_id);
ShowWarning("Invalid menu selection on npc %d:'%s' - got %d, valid range is [%d..%d] (player AID:%d, CID:%d, name:'%s')!\n", npc_id, (nd)?nd->name:"invalid npc id", select, 1, sd->npc_menu, sd->bl.id, sd->status.char_id, sd->status.name);
- clif_GM_kick(NULL,sd);
+ clif->GM_kick(NULL,sd);
#if SECURE_NPCTIMEOUT
}
#endif
@@ -11183,7 +11364,7 @@ void clif_parse_SelectArrow(int fd,struct map_session_data *sd)
{
if (pc_istrading(sd)) {
//Make it fail to avoid shop exploits where you sell something different than you see.
- clif_skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,sd->ud.skill_id,USESKILL_FAIL_LEVEL,0);
clif_menuskill_clear(sd);
return;
}
@@ -11226,7 +11407,7 @@ void clif_parse_UseCard(int fd,struct map_session_data *sd)
{
if (sd->state.trading != 0)
return;
- clif_use_card(sd,RFIFOW(fd,2)-2);
+ clif->use_card(sd,RFIFOW(fd,2)-2);
}
@@ -11325,8 +11506,7 @@ void clif_parse_MoveFromKafra(int fd,struct map_session_data *sd)
if (sd->state.storage_flag == 1)
storage_storageget(sd, item_index, item_amount);
- else
- if(sd->state.storage_flag == 2)
+ else if(sd->state.storage_flag == 2)
storage_guild_storageget(sd, item_index, item_amount);
}
@@ -11371,8 +11551,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd)
{
if( sd->state.storage_flag == 1 )
storage_storageclose(sd);
- else
- if( sd->state.storage_flag == 2 )
+ else if( sd->state.storage_flag == 2 )
storage_guild_storageclose(sd);
}
@@ -11438,14 +11617,12 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd)
char* name = (char*)RFIFOP(fd,2);
name[NAME_LENGTH-1] = '\0';
- if( map[sd->bl.m].flag.partylock )
- {// Party locked.
- clif_displaymessage(fd, msg_txt(227));
+ if( map[sd->bl.m].flag.partylock ) { // Party locked.
+ clif->message(fd, msg_txt(227));
return;
}
- if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
- {
- clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 ) {
+ clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
return;
}
@@ -11459,14 +11636,12 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd)
int item2 = RFIFOB(fd,27);
name[NAME_LENGTH-1] = '\0';
- if( map[sd->bl.m].flag.partylock )
- {// Party locked.
- clif_displaymessage(fd, msg_txt(227));
+ if( map[sd->bl.m].flag.partylock ) {// Party locked.
+ clif->message(fd, msg_txt(227));
return;
}
- if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 )
- {
- clif_skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
+ if( battle_config.basic_skill_check && pc_checkskill(sd,NV_BASIC) < 7 ) {
+ clif->skill_fail(sd,1,USESKILL_FAIL_LEVEL,4);
return;
}
@@ -11481,17 +11656,15 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd)
{
struct map_session_data *t_sd;
- if(map[sd->bl.m].flag.partylock)
- {// Party locked.
- clif_displaymessage(fd, msg_txt(227));
+ if(map[sd->bl.m].flag.partylock) {// Party locked.
+ clif->message(fd, msg_txt(227));
return;
}
t_sd = map_id2sd(RFIFOL(fd,2));
- if(t_sd && t_sd->state.noask)
- {// @noask [LuzZza]
- clif_noask_sub(sd, t_sd, 1);
+ if(t_sd && t_sd->state.noask) {// @noask [LuzZza]
+ clif->noask_sub(sd, t_sd, 1);
return;
}
@@ -11504,17 +11677,15 @@ void clif_parse_PartyInvite2(int fd, struct map_session_data *sd)
char *name = (char*)RFIFOP(fd,2);
name[NAME_LENGTH-1] = '\0';
- if(map[sd->bl.m].flag.partylock)
- {// Party locked.
- clif_displaymessage(fd, msg_txt(227));
+ if(map[sd->bl.m].flag.partylock) { // Party locked.
+ clif->message(fd, msg_txt(227));
return;
}
t_sd = map_nick2sd(name);
- if(t_sd && t_sd->state.noask)
- {// @noask [LuzZza]
- clif_noask_sub(sd, t_sd, 1);
+ if(t_sd && t_sd->state.noask) { // @noask [LuzZza]
+ clif->noask_sub(sd, t_sd, 1);
return;
}
@@ -11543,9 +11714,8 @@ void clif_parse_ReplyPartyInvite2(int fd,struct map_session_data *sd)
/// 0100
void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
{
- if(map[sd->bl.m].flag.partylock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(227));
+ if(map[sd->bl.m].flag.partylock) { //Guild locked.
+ clif->message(fd, msg_txt(227));
return;
}
party_leave(sd);
@@ -11556,9 +11726,8 @@ void clif_parse_LeaveParty(int fd, struct map_session_data *sd)
/// 0103 <account id>.L <char name>.24B
void clif_parse_RemovePartyMember(int fd, struct map_session_data *sd)
{
- if(map[sd->bl.m].flag.partylock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(227));
+ if(map[sd->bl.m].flag.partylock) { //Guild locked.
+ clif->message(fd, msg_txt(227));
return;
}
party_removemember(sd,RFIFOL(fd,2),(char*)RFIFOP(fd,6));
@@ -11607,7 +11776,7 @@ void clif_parse_PartyMessage(int fd, struct map_session_data* sd)
int namelen, messagelen;
// validate packet and retrieve name and message
- if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) )
+ if( !clif->process_message(sd, 0, &name, &namelen, &message, &messagelen) )
return;
if( is_atcommand(fd, sd, message, 1) )
@@ -11819,8 +11988,7 @@ void clif_parse_CloseVending(int fd, struct map_session_data* sd)
/// 0130 <account id>.L
void clif_parse_VendingListReq(int fd, struct map_session_data* sd)
{
- if( sd->npc_id )
- {// using an NPC
+ if( sd->npc_id ) {// using an NPC
return;
}
vending_vendinglistreq(sd,RFIFOL(fd,2));
@@ -11877,11 +12045,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[sd->bl.m].flag.novending ) {
- clif_displaymessage (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message (sd->fd, msg_txt(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_displaymessage (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
return;
}
@@ -11898,9 +12066,8 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
char* name = (char*)RFIFOP(fd,6);
name[NAME_LENGTH-1] = '\0';
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
@@ -11912,7 +12079,7 @@ void clif_parse_CreateGuild(int fd,struct map_session_data *sd)
/// 014d
void clif_parse_GuildCheckMaster(int fd, struct map_session_data *sd)
{
- clif_guild_masterormember(sd);
+ clif->guild_masterormember(sd);
}
@@ -11931,29 +12098,28 @@ void clif_parse_GuildRequestInfo(int fd, struct map_session_data *sd)
if( !sd->status.guild_id && !sd->bg_id )
return;
- switch( RFIFOL(fd,2) )
- {
- case 0: // Basic Information Guild, hostile alliance information
- clif_guild_basicinfo(sd);
- clif_guild_allianceinfo(sd);
- break;
- case 1: // Members list, list job title
- clif_guild_positionnamelist(sd);
- clif_guild_memberlist(sd);
- break;
- case 2: // List job title, title information list
- clif_guild_positionnamelist(sd);
- clif_guild_positioninfolist(sd);
- break;
- case 3: // Skill list
- clif_guild_skillinfo(sd);
- break;
- case 4: // Expulsion list
- clif_guild_expulsionlist(sd);
- break;
- default:
- ShowError("clif: guild request info: unknown type %d\n", RFIFOL(fd,2));
- break;
+ switch( RFIFOL(fd,2) ) {
+ case 0: // Basic Information Guild, hostile alliance information
+ clif->guild_basicinfo(sd);
+ clif->guild_allianceinfo(sd);
+ break;
+ case 1: // Members list, list job title
+ clif->guild_positionnamelist(sd);
+ clif->guild_memberlist(sd);
+ break;
+ case 2: // List job title, title information list
+ clif->guild_positionnamelist(sd);
+ clif->guild_positioninfolist(sd);
+ break;
+ case 3: // Skill list
+ clif->guild_skillinfo(sd);
+ break;
+ case 4: // Expulsion list
+ clif->guild_expulsionlist(sd);
+ break;
+ default:
+ ShowError("clif: guild request info: unknown type %d\n", RFIFOL(fd,2));
+ break;
}
}
@@ -11997,13 +12163,12 @@ void clif_parse_GuildRequestEmblem(int fd,struct map_session_data *sd)
int guild_id = RFIFOL(fd,2);
if( (g = guild_search(guild_id)) != NULL )
- clif_guild_emblem(sd,g);
+ clif->guild_emblem(sd,g);
}
/// Validates data of a guild emblem (compressed bitmap)
-static bool clif_validate_emblem(const uint8* emblem, unsigned long emblem_len)
-{
+bool clif_validate_emblem(const uint8* emblem, unsigned long emblem_len) {
bool success;
uint8 buf[1800]; // no well-formed emblem bitmap is larger than 1782 (24 bit) / 1654 (8 bit) bytes
unsigned long buf_len = sizeof(buf);
@@ -12028,8 +12193,7 @@ void clif_parse_GuildChangeEmblem(int fd,struct map_session_data *sd)
if( !emblem_len || !sd->state.gmaster_flag )
return;
- if( !clif_validate_emblem(emblem, emblem_len) )
- {
+ if( !clif->validate_emblem(emblem, emblem_len) ) {
ShowWarning("clif_parse_GuildChangeEmblem: Rejected malformed guild emblem (size=%lu, accound_id=%d, char_id=%d, guild_id=%d).\n", emblem_len, sd->status.account_id, sd->status.char_id, sd->status.guild_id);
return;
}
@@ -12064,9 +12228,8 @@ void clif_parse_GuildInvite(int fd,struct map_session_data *sd)
{
struct map_session_data *t_sd;
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
@@ -12074,7 +12237,7 @@ void clif_parse_GuildInvite(int fd,struct map_session_data *sd)
// @noask [LuzZza]
if(t_sd && t_sd->state.noask) {
- clif_noask_sub(sd, t_sd, 2);
+ clif->noask_sub(sd, t_sd, 2);
return;
}
@@ -12097,14 +12260,12 @@ void clif_parse_GuildReplyInvite(int fd,struct map_session_data *sd)
/// 0159 <guild id>.L <account id>.L <char id>.L <reason>.40B
void clif_parse_GuildLeave(int fd,struct map_session_data *sd)
{
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
- if( sd->bg_id )
- {
- clif_displaymessage(fd, msg_txt(670)); //"You can't leave battleground guilds."
+ if( sd->bg_id ) {
+ clif->message(fd, msg_txt(670)); //"You can't leave battleground guilds."
return;
}
@@ -12116,9 +12277,8 @@ void clif_parse_GuildLeave(int fd,struct map_session_data *sd)
/// 015b <guild id>.L <account id>.L <char id>.L <reason>.40B
void clif_parse_GuildExpulsion(int fd,struct map_session_data *sd)
{
- if( map[sd->bl.m].flag.guildlock || sd->bg_id )
- { // Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if( map[sd->bl.m].flag.guildlock || sd->bg_id ) { // Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
guild_expulsion(sd,RFIFOL(fd,2),RFIFOL(fd,6),RFIFOL(fd,10),(char*)RFIFOP(fd,14));
@@ -12136,7 +12296,7 @@ void clif_parse_GuildMessage(int fd, struct map_session_data* sd)
int namelen, messagelen;
// validate packet and retrieve name and message
- if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) )
+ if( !clif->process_message(sd, 0, &name, &namelen, &message, &messagelen) )
return;
if( is_atcommand(fd, sd, message, 1) )
@@ -12168,9 +12328,8 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd)
if(!sd->state.gmaster_flag)
return;
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
@@ -12178,7 +12337,7 @@ void clif_parse_GuildRequestAlliance(int fd, struct map_session_data *sd)
// @noask [LuzZza]
if(t_sd && t_sd->state.noask) {
- clif_noask_sub(sd, t_sd, 3);
+ clif->noask_sub(sd, t_sd, 3);
return;
}
@@ -12207,9 +12366,8 @@ void clif_parse_GuildDelAlliance(int fd, struct map_session_data *sd)
if(!sd->state.gmaster_flag)
return;
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
guild_delalliance(sd,RFIFOL(fd,2),RFIFOL(fd,6));
@@ -12225,9 +12383,8 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd)
if(!sd->state.gmaster_flag)
return;
- if(map[sd->bl.m].flag.guildlock)
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if(map[sd->bl.m].flag.guildlock) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
@@ -12235,7 +12392,7 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd)
// @noask [LuzZza]
if(t_sd && t_sd->state.noask) {
- clif_noask_sub(sd, t_sd, 4);
+ clif->noask_sub(sd, t_sd, 4);
return;
}
@@ -12250,9 +12407,8 @@ void clif_parse_GuildOpposition(int fd, struct map_session_data *sd)
/// field name and size is same as the one in CH_DELETE_CHAR.
void clif_parse_GuildBreak(int fd, struct map_session_data *sd)
{
- if( map[sd->bl.m].flag.guildlock )
- { //Guild locked.
- clif_displaymessage(fd, msg_txt(228));
+ if( map[sd->bl.m].flag.guildlock ) { //Guild locked.
+ clif->message(fd, msg_txt(228));
return;
}
guild_break(sd,(char*)RFIFOP(fd,2));
@@ -12288,10 +12444,9 @@ void clif_parse_CatchPet(int fd, struct map_session_data *sd)
/// 01a7 <index>.W
void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
{
- if (sd->menuskill_id != SA_TAMINGMONSTER || sd->menuskill_val != -1)
- {
+ if (sd->menuskill_id != SA_TAMINGMONSTER || sd->menuskill_val != -1) {
//Forged packet, disconnect them [Kevin]
- clif_authfail_fd(fd, 0);
+ clif->authfail_fd(fd, 0);
return;
}
pet_select_egg(sd,RFIFOW(fd,2)-2);
@@ -12326,7 +12481,7 @@ void clif_parse_SelectEgg(int fd, struct map_session_data *sd)
void clif_parse_SendEmotion(int fd, struct map_session_data *sd)
{
if(sd->pd)
- clif_pet_emotion(sd->pd,RFIFOL(fd,2));
+ clif->pet_emotion(sd->pd,RFIFOL(fd,2));
}
@@ -12350,45 +12505,45 @@ void clif_parse_GMKick(int fd, struct map_session_data *sd)
tid = RFIFOL(fd,2);
target = map_id2bl(tid);
if (!target) {
- clif_GM_kickack(sd, 0);
+ clif->GM_kickack(sd, 0);
return;
}
switch (target->type) {
- case BL_PC:
- {
- char command[NAME_LENGTH+6];
- sprintf(command, "%ckick %s", atcommand_symbol, status_get_name(target));
- is_atcommand(fd, sd, command, 1);
- }
- break;
+ case BL_PC:
+ {
+ char command[NAME_LENGTH+6];
+ sprintf(command, "%ckick %s", atcommand_symbol, status_get_name(target));
+ is_atcommand(fd, sd, command, 1);
+ }
+ break;
- /**
- * This one does not invoke any atcommand, so we need to check for permissions.
- */
- case BL_MOB:
- {
- char command[100];
- if( !pc_can_use_command(sd, "killmonster", COMMAND_ATCOMMAND)) {
- clif_GM_kickack(sd, 0);
- return;
+ /**
+ * This one does not invoke any atcommand, so we need to check for permissions.
+ */
+ case BL_MOB:
+ {
+ char command[100];
+ if( !pc_can_use_command(sd, "killmonster", COMMAND_ATCOMMAND)) {
+ clif->GM_kickack(sd, 0);
+ return;
+ }
+ sprintf(command, "/kick %s (%d)", status_get_name(target), status_get_class(target));
+ log_atcommand(sd, command);
+ status_percent_damage(&sd->bl, target, 100, 0, true); // can invalidate 'target'
}
- sprintf(command, "/kick %s (%d)", status_get_name(target), status_get_class(target));
- log_atcommand(sd, command);
- status_percent_damage(&sd->bl, target, 100, 0, true); // can invalidate 'target'
- }
- break;
+ break;
- case BL_NPC:
- {
- char command[NAME_LENGTH+11];
- sprintf(command, "%cunloadnpc %s", atcommand_symbol, status_get_name(target));
- is_atcommand(fd, sd, command, 1);
- }
- break;
+ case BL_NPC:
+ {
+ char command[NAME_LENGTH+11];
+ sprintf(command, "%cunloadnpc %s", atcommand_symbol, status_get_name(target));
+ is_atcommand(fd, sd, command, 1);
+ }
+ break;
- default:
- clif_GM_kickack(sd, 0);
+ default:
+ clif->GM_kickack(sd, 0);
}
}
@@ -12432,8 +12587,7 @@ void clif_parse_GMRemove2(int fd, struct map_session_data* sd)
struct map_session_data* pl_sd;
account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
- if( (pl_sd = map_id2sd(account_id)) != NULL )
- {
+ if( (pl_sd = map_id2sd(account_id)) != NULL ) {
char command[NAME_LENGTH+8];
sprintf(command, "%cjumpto %s", atcommand_symbol, pl_sd->status.name);
is_atcommand(fd, sd, command, 1);
@@ -12470,8 +12624,7 @@ void clif_parse_GMRecall2(int fd, struct map_session_data* sd)
struct map_session_data* pl_sd;
account_id = RFIFOL(fd,packet_db[sd->packet_ver][RFIFOW(fd,0)].pos[0]);
- if( (pl_sd = map_id2sd(account_id)) != NULL )
- {
+ if( (pl_sd = map_id2sd(account_id)) != NULL ) {
char command[NAME_LENGTH+8];
sprintf(command, "%crecall %s", atcommand_symbol, pl_sd->status.name);
is_atcommand(fd, sd, command, 1);
@@ -12570,8 +12723,7 @@ void clif_parse_GMRc(int fd, struct map_session_data* sd)
/// Result of request to resolve account name (ZC_ACK_ACCOUNTNAME).
/// 01e0 <account id>.L <account name>.24B
-void clif_account_name(struct map_session_data* sd, int account_id, const char* accname)
-{
+void clif_account_name(struct map_session_data* sd, int account_id, const char* accname) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x1e0));
@@ -12589,7 +12741,7 @@ void clif_parse_GMReqAccountName(int fd, struct map_session_data *sd)
int account_id = RFIFOL(fd,2);
//TODO: find out if this works for any player or only for authorized GMs
- clif_account_name(sd, account_id, ""); // insert account name here >_<
+ clif->account_name(sd, account_id, ""); // insert account name here >_<
}
@@ -12611,7 +12763,7 @@ void clif_parse_GMChangeMapType(int fd, struct map_session_data *sd)
type = RFIFOW(fd,6);
map_setgatcell(sd->bl.m,x,y,type);
- clif_changemapcell(0,sd->bl.m,x,y,type,ALL_SAMEMAP);
+ clif->changemapcell(0,sd->bl.m,x,y,type,ALL_SAMEMAP);
//FIXME: once players leave the map, the client 'forgets' this information.
}
@@ -12632,37 +12784,31 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
nick[NAME_LENGTH-1] = '\0'; // to be sure that the player name has at most 23 characters
type = RFIFOB(fd,26);
- if( type == 0 )
- { // Add name to ignore list (block)
+ if( type == 0 ) { // Add name to ignore list (block)
if (strcmp(wisp_server_name, nick) == 0) {
- clif_wisexin(sd, type, 1); // fail
+ clif->wisexin(sd, type, 1); // fail
return;
}
// try to find a free spot, while checking for duplicates at the same time
ARR_FIND( 0, MAX_IGNORE_LIST, i, sd->ignore[i].name[0] == '\0' || strcmp(sd->ignore[i].name, nick) == 0 );
- if( i == MAX_IGNORE_LIST )
- {// no space for new entry
- clif_wisexin(sd, type, 2); // too many blocks
+ if( i == MAX_IGNORE_LIST ) {// no space for new entry
+ clif->wisexin(sd, type, 2); // too many blocks
return;
}
- if( sd->ignore[i].name[0] != '\0' )
- {// name already exists
- clif_wisexin(sd, type, 0); // Aegis reports success.
+ if( sd->ignore[i].name[0] != '\0' ) { // name already exists
+ clif->wisexin(sd, type, 0); // Aegis reports success.
return;
}
//Insert in position i
safestrncpy(sd->ignore[i].name, nick, NAME_LENGTH);
- }
- else
- { // Remove name from ignore list (unblock)
+ } else { // Remove name from ignore list (unblock)
// find entry
ARR_FIND( 0, MAX_IGNORE_LIST, i, sd->ignore[i].name[0] == '\0' || strcmp(sd->ignore[i].name, nick) == 0 );
- if( i == MAX_IGNORE_LIST || sd->ignore[i].name[i] == '\0' )
- { //Not found
- clif_wisexin(sd, type, 1); // fail
+ if( i == MAX_IGNORE_LIST || sd->ignore[i].name[i] == '\0' ) { //Not found
+ clif->wisexin(sd, type, 1); // fail
return;
}
// move everything one place down to overwrite removed entry
@@ -12671,7 +12817,7 @@ void clif_parse_PMIgnore(int fd, struct map_session_data* sd)
memset(sd->ignore[MAX_IGNORE_LIST-1].name, 0, sizeof(sd->ignore[0].name));
}
- clif_wisexin(sd, type, 0); // success
+ clif->wisexin(sd, type, 0); // success
}
@@ -12685,17 +12831,14 @@ void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
{
int type = RFIFOB(fd,2), flag;
- if( type == 0 )
- {// Deny all
+ if( type == 0 ) {// Deny all
if( sd->state.ignoreAll ) {
flag = 1; // fail
} else {
sd->state.ignoreAll = 1;
flag = 0; // success
}
- }
- else
- {//Unblock everyone
+ } else {//Unblock everyone
if( sd->state.ignoreAll ) {
sd->state.ignoreAll = 0;
flag = 0; // success
@@ -12710,21 +12853,19 @@ void clif_parse_PMIgnoreAll(int fd, struct map_session_data *sd)
}
}
- clif_wisall(sd, type, flag);
+ clif->wisall(sd, type, flag);
}
/// Whisper ignore list (ZC_WHISPER_LIST).
/// 00d4 <packet len>.W { <char name>.24B }*
-void clif_PMIgnoreList(struct map_session_data* sd)
-{
+void clif_PMIgnoreList(struct map_session_data* sd) {
int i, fd = sd->fd;
WFIFOHEAD(fd,4+ARRAYLENGTH(sd->ignore)*NAME_LENGTH);
WFIFOW(fd,0) = 0xd4;
- for( i = 0; i < ARRAYLENGTH(sd->ignore) && sd->ignore[i].name[0]; i++ )
- {
+ for( i = 0; i < ARRAYLENGTH(sd->ignore) && sd->ignore[i].name[0]; i++ ) {
memcpy(WFIFOP(fd,4+i*NAME_LENGTH), sd->ignore[i].name, NAME_LENGTH);
}
@@ -12737,7 +12878,7 @@ void clif_PMIgnoreList(struct map_session_data* sd)
/// 00d3
void clif_parse_PMIgnoreList(int fd,struct map_session_data *sd)
{
- clif_PMIgnoreList(sd);
+ clif->PMIgnoreList(sd);
}
@@ -12747,8 +12888,7 @@ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
{
if (sd->state.doridori) return;
- switch (sd->class_&MAPID_UPPERMASK)
- {
+ switch (sd->class_&MAPID_UPPERMASK) {
case MAPID_SOUL_LINKER:
case MAPID_STAR_GLADIATOR:
case MAPID_TAEKWON:
@@ -12771,18 +12911,15 @@ void clif_parse_NoviceDoriDori(int fd, struct map_session_data *sd)
/// "Help me out~ Please~ T_T"
void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
{
- if( ( sd->class_&MAPID_UPPERMASK ) == MAPID_SUPER_NOVICE )
- {
+ if( ( sd->class_&MAPID_UPPERMASK ) == MAPID_SUPER_NOVICE ) {
unsigned int next = pc_nextbaseexp(sd);
if( next == 0 ) next = pc_thisbaseexp(sd);
- if( next )
- {
+ if( next ) {
int percent = (int)( ( (float)sd->status.base_exp/(float)next )*1000. );
- if( percent && ( percent%100 ) == 0 )
- {// 10.0%, 20.0%, ..., 90.0%
+ if( percent && ( percent%100 ) == 0 ) {// 10.0%, 20.0%, ..., 90.0%
sc_start(&sd->bl, status_skill2sc(MO_EXPLOSIONSPIRITS), 100, 17, skill->get_time(MO_EXPLOSIONSPIRITS, 5)); //Lv17-> +50 critical (noted by Poki) [Skotlex]
- clif_skill_nodamage(&sd->bl, &sd->bl, MO_EXPLOSIONSPIRITS, 5, 1); // prayer always shows successful Lv5 cast and disregards noskill restrictions
+ clif->skill_nodamage(&sd->bl, &sd->bl, MO_EXPLOSIONSPIRITS, 5, 1); // prayer always shows successful Lv5 cast and disregards noskill restrictions
}
}
}
@@ -12797,8 +12934,7 @@ void clif_parse_NoviceExplosionSpirits(int fd, struct map_session_data *sd)
/// state:
/// 0 = online
/// 1 = offline
-void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int char_id, int online)
-{
+void clif_friendslist_toggle(struct map_session_data *sd,int account_id, int char_id, int online) {
int i, fd = sd->fd;
//Seek friend.
@@ -12824,7 +12960,7 @@ int clif_friendslist_toggle_sub(struct map_session_data *sd,va_list ap)
account_id = va_arg(ap, int);
char_id = va_arg(ap, int);
online = va_arg(ap, int);
- clif_friendslist_toggle(sd, account_id, char_id, online);
+ clif->friendslist_toggle(sd, account_id, char_id, online);
return 0;
}
@@ -12838,8 +12974,7 @@ void clif_friendslist_send(struct map_session_data *sd)
// Send friends list
WFIFOHEAD(fd, MAX_FRIENDS * 32 + 4);
WFIFOW(fd, 0) = 0x201;
- for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++)
- {
+ for(i = 0; i < MAX_FRIENDS && sd->status.friends[i].char_id; i++) {
WFIFOL(fd, 4 + 32 * i + 0) = sd->status.friends[i].account_id;
WFIFOL(fd, 4 + 32 * i + 4) = sd->status.friends[i].char_id;
memcpy(WFIFOP(fd, 4 + 32 * i + 8), &sd->status.friends[i].name, NAME_LENGTH);
@@ -12850,10 +12985,9 @@ void clif_friendslist_send(struct map_session_data *sd)
WFIFOSET(fd, WFIFOW(fd,2));
}
- for (n = 0; n < i; n++)
- { //Sending the online players
+ for (n = 0; n < i; n++) { //Sending the online players
if (map_charid2sd(sd->status.friends[n].char_id))
- clif_friendslist_toggle(sd, sd->status.friends[n].account_id, sd->status.friends[n].char_id, 1);
+ clif->friendslist_toggle(sd, sd->status.friends[n].account_id, sd->status.friends[n].char_id, 1);
}
}
@@ -12874,8 +13008,7 @@ void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_dat
WFIFOHEAD(fd,packet_len(0x209));
WFIFOW(fd,0) = 0x209;
WFIFOW(fd,2) = type;
- if (f_sd)
- {
+ if (f_sd) {
WFIFOL(fd,4) = f_sd->status.account_id;
WFIFOL(fd,8) = f_sd->status.char_id;
memcpy(WFIFOP(fd, 12), f_sd->status.name,NAME_LENGTH);
@@ -12886,8 +13019,7 @@ void clif_friendslist_reqack(struct map_session_data *sd, struct map_session_dat
/// Asks a player for permission to be added as friend (ZC_REQ_ADD_FRIENDS).
/// 0207 <req account id>.L <req char id>.L <req char name>.24B
-void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_id, const char* name)
-{
+void clif_friendlist_req(struct map_session_data* sd, int account_id, int char_id, const char* name) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x207));
@@ -12912,31 +13044,30 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
ARR_FIND(0, MAX_FRIENDS, i, sd->status.friends[i].char_id == 0);
if( i == MAX_FRIENDS ) {
- clif_friendslist_reqack(sd, f_sd, 2);
+ clif->friendslist_reqack(sd, f_sd, 2);
return;
}
// Friend doesn't exist (no player with this name)
if (f_sd == NULL) {
- clif_displaymessage(fd, msg_txt(3));
+ clif->message(fd, msg_txt(3));
return;
}
- if( sd->bl.id == f_sd->bl.id )
- {// adding oneself as friend
+ if( sd->bl.id == f_sd->bl.id ) { // adding oneself as friend
return;
}
// @noask [LuzZza]
if(f_sd->state.noask) {
- clif_noask_sub(sd, f_sd, 5);
+ clif->noask_sub(sd, f_sd, 5);
return;
}
// 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_displaymessage(fd, msg_txt(671)); //"Friend already exists."
+ clif->message(fd, msg_txt(671)); //"Friend already exists."
return;
}
}
@@ -12944,7 +13075,7 @@ void clif_parse_FriendsListAdd(int fd, struct map_session_data *sd)
f_sd->friend_req = sd->status.char_id;
sd->friend_req = f_sd->status.char_id;
- clif_friendlist_req(f_sd, sd->status.account_id, sd->status.char_id, sd->status.name);
+ clif->friendlist_req(f_sd, sd->status.account_id, sd->status.char_id, sd->status.name);
}
@@ -12968,8 +13099,7 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
reply = RFIFOL(fd,10);
#endif
- if( sd->bl.id == account_id )
- {// adding oneself as friend
+ if( sd->bl.id == account_id ) { // adding oneself as friend
return;
}
@@ -12978,7 +13108,7 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
return;
if (reply == 0 || !( sd->friend_req == f_sd->status.char_id && f_sd->friend_req == sd->status.char_id ) )
- clif_friendslist_reqack(f_sd, sd, 1);
+ clif->friendslist_reqack(f_sd, sd, 1);
else {
int i;
// Find an empty slot
@@ -12986,14 +13116,14 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
if (f_sd->status.friends[i].char_id == 0)
break;
if (i == MAX_FRIENDS) {
- clif_friendslist_reqack(f_sd, sd, 2);
+ clif->friendslist_reqack(f_sd, sd, 2);
return;
}
f_sd->status.friends[i].account_id = sd->status.account_id;
f_sd->status.friends[i].char_id = sd->status.char_id;
memcpy(f_sd->status.friends[i].name, sd->status.name, NAME_LENGTH);
- clif_friendslist_reqack(f_sd, sd, 0);
+ clif->friendslist_reqack(f_sd, sd, 0);
if (battle_config.friend_auto_add) {
// Also add f_sd to sd's friendlist.
@@ -13004,14 +13134,14 @@ void clif_parse_FriendsListReply(int fd, struct map_session_data *sd)
break;
}
if (i == MAX_FRIENDS) {
- clif_friendslist_reqack(sd, f_sd, 2);
+ clif->friendslist_reqack(sd, f_sd, 2);
return;
}
sd->status.friends[i].account_id = f_sd->status.account_id;
sd->status.friends[i].char_id = f_sd->status.char_id;
memcpy(sd->status.friends[i].name, f_sd->status.name, NAME_LENGTH);
- clif_friendslist_reqack(sd, f_sd, 0);
+ clif->friendslist_reqack(sd, f_sd, 0);
}
}
}
@@ -13033,7 +13163,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_displaymessage(fd, msg_txt(672)); //"Name not found in list."
+ clif->message(fd, msg_txt(672)); //"Name not found in list."
return;
}
@@ -13058,7 +13188,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_displaymessage(fd, msg_txt(673)); //"This action can't be performed at the moment. Please try again later."
+ clif->message(fd, msg_txt(673)); //"This action can't be performed at the moment. Please try again later."
return;
}
}
@@ -13071,7 +13201,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_displaymessage(fd, msg_txt(674)); //"Friend removed"
+ clif->message(fd, msg_txt(674)); //"Friend removed"
WFIFOHEAD(fd,packet_len(0x20a));
WFIFOW(fd,0) = 0x20a;
@@ -13083,8 +13213,7 @@ void clif_parse_FriendsListRemove(int fd, struct map_session_data *sd)
/// /pvpinfo list (ZC_ACK_PVPPOINT).
/// 0210 <char id>.L <account id>.L <win point>.L <lose point>.L <point>.L
-void clif_PVPInfo(struct map_session_data* sd)
-{
+void clif_PVPInfo(struct map_session_data* sd) {
int fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x210));
@@ -13103,7 +13232,7 @@ void clif_PVPInfo(struct map_session_data* sd)
void clif_parse_PVPInfo(int fd,struct map_session_data *sd)
{
// TODO: Is there a way to use this on an another player (char/acc id)?
- clif_PVPInfo(sd);
+ clif->PVPInfo(sd);
}
@@ -13142,7 +13271,7 @@ void clif_blacksmith(struct map_session_data* sd)
/// 0217
void clif_parse_Blacksmith(int fd,struct map_session_data *sd)
{
- clif_blacksmith(sd);
+ clif->blacksmith(sd);
}
@@ -13162,8 +13291,7 @@ void clif_fame_blacksmith(struct map_session_data *sd, int points)
/// /alchemist list (ZC_ALCHEMIST_RANK).
/// 021a { <name>.24B }*10 { <point>.L }*10
-void clif_alchemist(struct map_session_data* sd)
-{
+void clif_alchemist(struct map_session_data* sd) {
int i, fd = sd->fd;
const char* name;
@@ -13195,7 +13323,7 @@ void clif_alchemist(struct map_session_data* sd)
/// 0218
void clif_parse_Alchemist(int fd,struct map_session_data *sd)
{
- clif_alchemist(sd);
+ clif->alchemist(sd);
}
@@ -13215,8 +13343,7 @@ void clif_fame_alchemist(struct map_session_data *sd, int points)
/// /taekwon list (ZC_TAEKWON_RANK).
/// 0226 { <name>.24B }*10 { <point>.L }*10
-void clif_taekwon(struct map_session_data* sd)
-{
+void clif_taekwon(struct map_session_data* sd) {
int i, fd = sd->fd;
const char* name;
@@ -13247,7 +13374,7 @@ void clif_taekwon(struct map_session_data* sd)
/// 0225
void clif_parse_Taekwon(int fd,struct map_session_data *sd)
{
- clif_taekwon(sd);
+ clif->taekwon(sd);
}
@@ -13267,8 +13394,7 @@ void clif_fame_taekwon(struct map_session_data *sd, int points)
/// /pk list (ZC_KILLER_RANK).
/// 0238 { <name>.24B }*10 { <point>.L }*10
-void clif_ranking_pk(struct map_session_data* sd)
-{
+void clif_ranking_pk(struct map_session_data* sd) {
int i, fd = sd->fd;
WFIFOHEAD(fd,packet_len(0x238));
@@ -13285,7 +13411,7 @@ void clif_ranking_pk(struct map_session_data* sd)
/// 0237
void clif_parse_RankingPk(int fd,struct map_session_data *sd)
{
- clif_ranking_pk(sd);
+ clif->ranking_pk(sd);
}
@@ -13310,7 +13436,7 @@ void clif_parse_FeelSaveOk(int fd,struct map_session_data *sd)
//Are these really needed? Shouldn't they show up automatically from the feel save packet?
// clif_misceffect2(&sd->bl, 0x1b0);
// clif_misceffect2(&sd->bl, 0x21f);
- clif_feel_info(sd, i, 0);
+ clif->feel_info(sd, i, 0);
clif_menuskill_clear(sd);
}
@@ -13440,7 +13566,7 @@ void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
if (!status_revive(&sd->bl, 100, 100))
return;
- clif_skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
+ clif->skill_nodamage(&sd->bl,&sd->bl,ALL_RESURRECTION,4,1);
pc_delitem(sd, item_position, 1, 0, 1, LOG_TYPE_CONSUME);
}
@@ -13452,8 +13578,7 @@ void clif_parse_AutoRevive(int fd, struct map_session_data *sd)
/// <itemdefPower>.W <plusdefPower>.W <mdefPower>.W <plusmdefPower>.W
/// <hitSuccessValue>.W <avoidSuccessValue>.W <plusAvoidSuccessValue>.W
/// <criticalSuccessValue>.W <ASPD>.W <plusASPD>.W
-void clif_check(int fd, struct map_session_data* pl_sd)
-{
+void clif_check(int fd, struct map_session_data* pl_sd) {
WFIFOHEAD(fd,packet_len(0x214));
WFIFOW(fd, 0) = 0x214;
WFIFOB(fd, 2) = min(pl_sd->status.str, UINT8_MAX);
@@ -13504,7 +13629,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd)
return;
}
- clif_check(fd, pl_sd);
+ clif->check(fd, pl_sd);
}
@@ -13647,11 +13772,10 @@ void clif_Mail_refreshinbox(struct map_session_data *sd)
}
WFIFOSET(fd,len);
- if( md->full )
- {// TODO: is this official?
+ if( md->full ) {// TODO: is this official?
char output[100];
sprintf(output, "Inbox is full (Max %d). Delete some mails.", MAIL_MAX_INBOX);
- clif_disp_onlyself(sd, output, strlen(output));
+ clif->disp_onlyself(sd, output, strlen(output));
}
}
@@ -13665,7 +13789,7 @@ void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd)
if( md->amount < MAIL_MAX_INBOX && (md->full || sd->mail.changed) )
intif_Mail_requestinbox(sd->status.char_id, 1);
else
- clif_Mail_refreshinbox(sd);
+ clif->mail_refreshinbox(sd);
mail_removeitem(sd, 0);
mail_removezeny(sd, 0);
@@ -13681,14 +13805,11 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
int i, fd = sd->fd;
ARR_FIND(0, MAIL_MAX_INBOX, i, sd->mail.inbox.msg[i].id == mail_id);
- if( i == MAIL_MAX_INBOX )
- {
- clif_Mail_return(sd->fd, mail_id, 1); // Mail doesn't exist
+ if( i == MAIL_MAX_INBOX ) {
+ clif->mail_return(sd->fd, mail_id, 1); // Mail doesn't exist
ShowWarning("clif_parse_Mail_read: char '%s' trying to read a message not the inbox.\n", sd->status.name);
return;
- }
- else
- {
+ } else {
struct mail_message *msg = &sd->mail.inbox.msg[i];
struct item *item = &msg->item;
struct item_data *data;
@@ -13710,8 +13831,7 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
WFIFOL(fd,72) = 0;
WFIFOL(fd,76) = msg->zeny;
- if( item->nameid && (data = itemdb_exists(item->nameid)) != NULL )
- {
+ if( item->nameid && (data = itemdb_exists(item->nameid)) != NULL ) {
WFIFOL(fd,80) = item->amount;
WFIFOW(fd,84) = (data->view_id)?data->view_id:item->nameid;
WFIFOW(fd,86) = data->type;
@@ -13722,8 +13842,7 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
WFIFOW(fd,93) = item->card[1];
WFIFOW(fd,95) = item->card[2];
WFIFOW(fd,97) = item->card[3];
- }
- else // no item, set all to zero
+ } else // no item, set all to zero
memset(WFIFOP(fd,80), 0x00, 19);
WFIFOB(fd,99) = (unsigned char)msg_len;
@@ -13733,7 +13852,7 @@ void clif_Mail_read(struct map_session_data *sd, int mail_id)
if (msg->status == MAIL_UNREAD) {
msg->status = MAIL_READ;
intif_Mail_read(mail_id);
- clif_parse_Mail_refreshinbox(fd, sd);
+ clif->pMail_refreshinbox(fd, sd);
}
}
}
@@ -13750,7 +13869,7 @@ void clif_parse_Mail_read(int fd, struct map_session_data *sd)
if( mail_invalid_operation(sd) )
return;
- clif_Mail_read(sd, RFIFOL(fd,2));
+ clif->mail_read(sd, RFIFOL(fd,2));
}
@@ -13776,22 +13895,19 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
if( sd->mail.inbox.msg[i].zeny < 1 && (sd->mail.inbox.msg[i].item.nameid < 1 || sd->mail.inbox.msg[i].item.amount < 1) )
return;
- if( sd->mail.inbox.msg[i].zeny + sd->status.zeny > MAX_ZENY )
- {
- clif_Mail_getattachment(fd, 1);
+ if( sd->mail.inbox.msg[i].zeny + sd->status.zeny > MAX_ZENY ) {
+ clif->mail_getattachment(fd, 1);
return;
}
- if( sd->mail.inbox.msg[i].item.nameid > 0 )
- {
+ if( sd->mail.inbox.msg[i].item.nameid > 0 ) {
struct item_data *data;
unsigned int weight;
if ((data = itemdb_exists(sd->mail.inbox.msg[i].item.nameid)) == NULL)
return;
- switch( pc_checkadditem(sd, data->nameid, sd->mail.inbox.msg[i].item.amount) )
- {
+ switch( pc_checkadditem(sd, data->nameid, sd->mail.inbox.msg[i].item.amount) ) {
case ADDITEM_NEW:
fail = ( pc_inventoryblank(sd) == 0 );
break;
@@ -13799,23 +13915,21 @@ void clif_parse_Mail_getattach(int fd, struct map_session_data *sd)
fail = true;
}
- if( fail )
- {
- clif_Mail_getattachment(fd, 1);
+ if( fail ) {
+ clif->mail_getattachment(fd, 1);
return;
}
weight = data->weight * sd->mail.inbox.msg[i].item.amount;
- if( sd->weight + weight > sd->max_weight )
- {
- clif_Mail_getattachment(fd, 2);
+ if( sd->weight + weight > sd->max_weight ) {
+ clif->mail_getattachment(fd, 2);
return;
}
}
sd->mail.inbox.msg[i].zeny = 0;
memset(&sd->mail.inbox.msg[i].item, 0, sizeof(struct item));
- clif_Mail_read(sd, mail_id);
+ clif->mail_read(sd, mail_id);
intif_Mail_getattach(sd->status.char_id, mail_id);
}
@@ -13836,13 +13950,11 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd)
return;
ARR_FIND(0, MAIL_MAX_INBOX, i, sd->mail.inbox.msg[i].id == mail_id);
- if (i < MAIL_MAX_INBOX)
- {
+ if (i < MAIL_MAX_INBOX) {
struct mail_message *msg = &sd->mail.inbox.msg[i];
- if( (msg->item.nameid > 0 && msg->item.amount > 0) || msg->zeny > 0 )
- {// can't delete mail without removing attachment first
- clif_Mail_delete(sd->fd, mail_id, 1);
+ if( (msg->item.nameid > 0 && msg->item.amount > 0) || msg->zeny > 0 ) {// can't delete mail without removing attachment first
+ clif->mail_delete(sd->fd, mail_id, 1);
return;
}
@@ -13867,7 +13979,7 @@ void clif_parse_Mail_return(int fd, struct map_session_data *sd)
if( i < MAIL_MAX_INBOX && sd->mail.inbox.msg[i].send_id != 0 )
intif_Mail_return(sd->status.char_id, mail_id);
else
- clif_Mail_return(sd->fd, mail_id, 1);
+ clif->mail_return(sd->fd, mail_id, 1);
}
@@ -13885,7 +13997,7 @@ void clif_parse_Mail_setattach(int fd, struct map_session_data *sd)
return;
flag = mail_setitem(sd, idx, amount);
- clif_Mail_setattachment(fd,idx,flag);
+ clif->mail_setattachment(fd,idx,flag);
}
@@ -13923,10 +14035,9 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
return;
}
- if( DIFF_TICK(sd->cansendmail_tick, gettick()) > 0 )
- {
- clif_displaymessage(sd->fd,msg_txt(675)); //"Cannot send mails too fast!!."
- clif_Mail_send(fd, true); // fail
+ if( DIFF_TICK(sd->cansendmail_tick, gettick()) > 0 ) {
+ clif->message(sd->fd,msg_txt(675)); //"Cannot send mails too fast!!."
+ clif->mail_send(fd, true); // fail
return;
}
@@ -13935,9 +14046,8 @@ void clif_parse_Mail_send(int fd, struct map_session_data *sd)
if (body_len > MAIL_BODY_LENGTH)
body_len = MAIL_BODY_LENGTH;
- if( !mail_setattachment(sd, &msg) )
- { // Invalid Append condition
- clif_Mail_send(sd->fd, true); // fail
+ if( !mail_setattachment(sd, &msg) ) { // Invalid Append condition
+ clif->mail_send(sd->fd, true); // fail
mail_removeitem(sd,0);
mail_removezeny(sd,0);
return;
@@ -14005,8 +14115,7 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
WFIFOL(fd,4) = pages;
WFIFOL(fd,8) = count;
- for( i = 0; i < count; i++ )
- {
+ for( i = 0; i < count; i++ ) {
memcpy(&auction, RBUFP(buf,i * len), len);
k = 12 + (i * 83);
@@ -14041,8 +14150,7 @@ void clif_Auction_results(struct map_session_data *sd, short count, short pages,
/// result:
/// 0 = success
/// 1 = failure
-static void clif_Auction_setitem(int fd, int index, bool fail)
-{
+void clif_Auction_setitem(int fd, int index, bool fail) {
WFIFOHEAD(fd,packet_len(0x256));
WFIFOW(fd,0) = 0x256;
WFIFOW(fd,2) = index;
@@ -14060,7 +14168,7 @@ static void clif_Auction_setitem(int fd, int index, bool fail)
void clif_parse_Auction_cancelreg(int fd, struct map_session_data *sd)
{
if( sd->auction.amount > 0 )
- clif_additem(sd, sd->auction.index, sd->auction.amount, 0);
+ clif->additem(sd, sd->auction.index, sd->auction.amount, 0);
sd->auction.amount = 0;
}
@@ -14077,34 +14185,32 @@ void clif_parse_Auction_setitem(int fd, struct map_session_data *sd)
if( sd->auction.amount > 0 )
sd->auction.amount = 0;
- if( idx < 0 || idx >= MAX_INVENTORY )
- {
+ if( idx < 0 || idx >= MAX_INVENTORY ) {
ShowWarning("Character %s trying to set invalid item index in auctions.\n", sd->status.name);
return;
}
- if( amount != 1 || amount > sd->status.inventory[idx].amount )
- { // By client, amount is always set to 1. Maybe this is a future implementation.
+ if( amount != 1 || amount > sd->status.inventory[idx].amount ) { // By client, amount is always set to 1. Maybe this is a future implementation.
ShowWarning("Character %s trying to set invalid amount in auctions.\n", sd->status.name);
return;
}
if( (item = itemdb_exists(sd->status.inventory[idx].nameid)) != NULL && !(item->type == IT_ARMOR || item->type == IT_PETARMOR || item->type == IT_WEAPON || item->type == IT_CARD || item->type == IT_ETC) )
{ // Consumable or pets are not allowed
- clif_Auction_setitem(sd->fd, idx, true);
+ clif->auction_setitem(sd->fd, idx, true);
return;
}
if( !pc_can_give_items(sd) || sd->status.inventory[idx].expire_time ||
!sd->status.inventory[idx].identify ||
!itemdb_canauction(&sd->status.inventory[idx],pc_get_group_level(sd)) ) { // Quest Item or something else
- clif_Auction_setitem(sd->fd, idx, true);
+ clif->auction_setitem(sd->fd, idx, true);
return;
}
sd->auction.index = idx;
sd->auction.amount = amount;
- clif_Auction_setitem(fd, idx + 2, false);
+ clif->auction_setitem(fd, idx + 2, false);
}
/// Result from an auction action (ZC_AUCTION_RESULT).
@@ -14156,28 +14262,24 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
auction.hours = RFIFOW(fd,10);
// Invalid Situations...
- if( sd->auction.amount < 1 )
- {
+ if( sd->auction.amount < 1 ) {
ShowWarning("Character %s trying to register auction without item.\n", sd->status.name);
return;
}
- if( auction.price >= auction.buynow )
- {
+ if( auction.price >= auction.buynow ) {
ShowWarning("Character %s trying to alter auction prices.\n", sd->status.name);
return;
}
- if( auction.hours < 1 || auction.hours > 48 )
- {
+ if( auction.hours < 1 || auction.hours > 48 ) {
ShowWarning("Character %s trying to enter an invalid time for auction.\n", sd->status.name);
return;
}
// Auction checks...
- if( sd->status.zeny < (auction.hours * battle_config.auction_feeperhour) )
- {
- clif_Auction_message(fd, 5); // You do not have enough zeny to pay the Auction Fee.
+ if( sd->status.zeny < (auction.hours * battle_config.auction_feeperhour) ) {
+ clif->auction_message(fd, 5); // You do not have enough zeny to pay the Auction Fee.
return;
}
@@ -14196,13 +14298,13 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
if( sd->status.inventory[sd->auction.index].nameid == 0 || sd->status.inventory[sd->auction.index].amount < sd->auction.amount )
{
- clif_Auction_message(fd, 2); // The auction has been canceled
+ clif->auction_message(fd, 2); // The auction has been canceled
return;
}
if( (item = itemdb_exists(sd->status.inventory[sd->auction.index].nameid)) == NULL )
{ // Just in case
- clif_Auction_message(fd, 2); // The auction has been canceled
+ clif->auction_message(fd, 2); // The auction has been canceled
return;
}
@@ -14213,7 +14315,7 @@ void clif_parse_Auction_register(int fd, struct map_session_data *sd)
auction.timestamp = 0;
if( !intif_Auction_register(&auction) )
- clif_Auction_message(fd, 4); // No Char Server? lets say something to the client
+ clif->auction_message(fd, 4); // No Char Server? lets say something to the client
else
{
int zeny = auction.hours*battle_config.auction_feeperhour;
@@ -14254,16 +14356,16 @@ 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_displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
return;
}
if( bid <= 0 )
- clif_Auction_message(fd, 0); // You have failed to bid into the auction
+ clif->auction_message(fd, 0); // You have failed to bid into the auction
else if( bid > sd->status.zeny )
- clif_Auction_message(fd, 8); // You do not have enough zeny
+ clif->auction_message(fd, 8); // You do not have enough zeny
else if ( CheckForCharServer() ) // char server is down (bugreport:1138)
- clif_Auction_message(fd, 0); // You have failed to bid into the auction
+ clif->auction_message(fd, 0); // You have failed to bid into the auction
else {
pc_payzeny(sd, bid, LOG_TYPE_AUCTION, NULL);
intif_Auction_bid(sd->status.char_id, sd->status.name, auction_id, bid);
@@ -14286,7 +14388,7 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd)
short type = RFIFOW(fd,2), page = RFIFOW(fd,32);
int price = RFIFOL(fd,4); // FIXME: bug #5071
- clif_parse_Auction_cancelreg(fd, sd);
+ clif->pAuction_cancelreg(fd, sd);
safestrncpy(search_text, (char*)RFIFOP(fd,8), sizeof(search_text));
intif_Auction_requestlist(sd->status.char_id, type, price, search_text, page);
@@ -14301,7 +14403,7 @@ void clif_parse_Auction_search(int fd, struct map_session_data* sd)
void clif_parse_Auction_buysell(int fd, struct map_session_data* sd)
{
short type = RFIFOW(fd,2) + 6;
- clif_parse_Auction_cancelreg(fd, sd);
+ clif->pAuction_cancelreg(fd, sd);
intif_Auction_requestlist(sd->status.char_id, type, 0, "", 1);
}
@@ -14335,8 +14437,7 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
WFIFOL(fd,8) = sd->kafraPoints; // Kafra Points
#endif
- for( i = 0; i < nd->u.shop.count; i++ )
- {
+ for( i = 0; i < nd->u.shop.count; i++ ) {
struct item_data* id = itemdb_search(nd->u.shop.shop_item[i].nameid);
WFIFOL(fd,offset+0+i*11) = nd->u.shop.shop_item[i].value;
WFIFOL(fd,offset+4+i*11) = nd->u.shop.shop_item[i].value; // Discount Price
@@ -14360,8 +14461,7 @@ void clif_cashshop_show(struct map_session_data *sd, struct npc_data *nd)
/// 6 = You do not have enough Kafra Credit Points. (ERROR_TYPE_MONEY)
/// 7 = You can purchase up to 10 items.
/// 8 = Some items could not be purchased.
-void clif_cashshop_ack(struct map_session_data* sd, int error)
-{
+void clif_cashshop_ack(struct map_session_data* sd, int error) {
int fd = sd->fd;
WFIFOHEAD(fd, packet_len(0x289));
@@ -14388,8 +14488,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
if( sd->state.trading || !sd->npc_shopid )
fail = 1;
- else
- {
+ else {
#if PACKETVER < 20101116
short nameid = RFIFOW(fd,2);
short amount = RFIFOW(fd,4);
@@ -14411,7 +14510,7 @@ void clif_parse_cashshop_buy(int fd, struct map_session_data *sd)
#endif
}
- clif_cashshop_ack(sd,fail);
+ clif->cashshop_ack(sd,fail);
}
@@ -14437,8 +14536,7 @@ void clif_Adopt_reply(struct map_session_data *sd, int type)
/// Adoption confirmation (ZC_REQ_BABY).
/// 01f6 <account id>.L <char id>.L <name>.B
-void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id)
-{
+void clif_Adopt_request(struct map_session_data *sd, struct map_session_data *src, int p_id) {
int fd = sd->fd;
WFIFOHEAD(fd,34);
@@ -14456,10 +14554,9 @@ void clif_parse_Adopt_request(int fd, struct map_session_data *sd)
{
struct map_session_data *tsd = map_id2sd(RFIFOL(fd,2)), *p_sd = map_charid2sd(sd->status.partner_id);
- if( pc_can_Adopt(sd, p_sd, tsd) )
- {
+ if( pc_can_Adopt(sd, p_sd, tsd) ) {
tsd->adopt_invite = sd->status.account_id;
- clif_Adopt_request(tsd, sd, p_sd->status.account_id);
+ clif->adopt_request(tsd, sd, p_sd->status.account_id);
}
}
@@ -14506,21 +14603,15 @@ void clif_bossmapinfo(int fd, struct mob_data *md, short flag)
memset(WFIFOP(fd,0),0,70);
WFIFOW(fd,0) = 0x293;
- if( md != NULL )
- {
- if( md->bl.prev != NULL )
- { // Boss on This Map
- if( flag )
- {
+ if( md != NULL ) {
+ if( md->bl.prev != NULL ) { // Boss on This Map
+ if( flag ) {
WFIFOB(fd,2) = 1;
WFIFOL(fd,3) = md->bl.x;
WFIFOL(fd,7) = md->bl.y;
- }
- else
+ } else
WFIFOB(fd,2) = 2; // First Time
- }
- else if (md->spawn_timer != INVALID_TIMER)
- { // Boss is Dead
+ } else if (md->spawn_timer != INVALID_TIMER) { // Boss is Dead
const struct TimerData * timer_data = get_timer(md->spawn_timer);
unsigned int seconds;
int hours, minutes;
@@ -14552,9 +14643,9 @@ void clif_parse_ViewPlayerEquip(int fd, struct map_session_data* sd)
return;
if( tsd->status.show_equip || pc_has_permission(sd, PC_PERM_VIEW_EQUIPMENT) )
- clif_viewequip_ack(sd, tsd);
+ clif->viewequip_ack(sd, tsd);
else
- clif_viewequip_fail(sd);
+ clif->viewequip_fail(sd);
}
@@ -14569,7 +14660,7 @@ void clif_parse_EquipTick(int fd, struct map_session_data* sd)
{
bool flag = (bool)RFIFOL(fd,6);
sd->status.show_equip = flag;
- clif_equiptickack(sd, flag);
+ clif->equiptickack(sd, flag);
}
@@ -14589,8 +14680,7 @@ void clif_quest_send_list(struct map_session_data * sd)
WFIFOW(fd, 2) = len;
WFIFOL(fd, 4) = sd->avail_quests;
- for( i = 0; i < sd->avail_quests; i++ )
- {
+ for( i = 0; i < sd->avail_quests; i++ ) {
WFIFOL(fd, i*5+8) = sd->quest_log[i].quest_id;
WFIFOB(fd, i*5+12) = sd->quest_log[i].state;
}
@@ -14613,8 +14703,7 @@ void clif_quest_send_mission(struct map_session_data * sd)
WFIFOW(fd, 2) = len;
WFIFOL(fd, 4) = sd->avail_quests;
- for( i = 0; i < sd->avail_quests; i++ )
- {
+ for( i = 0; i < sd->avail_quests; i++ ) {
WFIFOL(fd, i*104+8) = sd->quest_log[i].quest_id;
WFIFOL(fd, i*104+12) = sd->quest_log[i].time - quest_db[sd->quest_index[i]].time;
WFIFOL(fd, i*104+16) = sd->quest_log[i].time;
@@ -14649,8 +14738,7 @@ void clif_quest_add(struct map_session_data * sd, struct quest * qd, int index)
WFIFOL(fd, 11) = qd->time;
WFIFOW(fd, 15) = quest_db[index].num_objectives;
- for( i = 0; i < quest_db[index].num_objectives; i++ )
- {
+ for( i = 0; i < quest_db[index].num_objectives; i++ ) {
WFIFOL(fd, i*30+17) = quest_db[index].mob[i];
WFIFOW(fd, i*30+21) = qd->count[i];
mob = mob_db(quest_db[index].mob[i]);
@@ -14687,8 +14775,7 @@ void clif_quest_update_objective(struct map_session_data * sd, struct quest * qd
WFIFOW(fd, 2) = len;
WFIFOW(fd, 4) = quest_db[index].num_objectives;
- for( i = 0; i < quest_db[index].num_objectives; i++ )
- {
+ for( i = 0; i < quest_db[index].num_objectives; i++ ) {
WFIFOL(fd, i*12+6) = qd->quest_id;
WFIFOL(fd, i*12+10) = quest_db[index].mob[i];
WFIFOW(fd, i*12+14) = quest_db[index].count[i];
@@ -14767,8 +14854,7 @@ void clif_mercenary_updatestatus(struct map_session_data *sd, int type)
WFIFOHEAD(fd,packet_len(0x2a2));
WFIFOW(fd,0) = 0x2a2;
WFIFOW(fd,2) = type;
- switch( type )
- {
+ switch( type ) {
case SP_ATK1:
{
int atk = rnd()%(status->rhw.atk2 - status->rhw.atk + 1) + status->rhw.atk;
@@ -14920,7 +15006,7 @@ void clif_parse_mercenary_action(int fd, struct map_session_data* sd)
/// 3 = Your mercenary soldier has ran away.
void clif_mercenary_message(struct map_session_data* sd, int message)
{
- clif_msg(sd, 1266 + message);
+ clif->msg(sd, 1266 + message);
}
@@ -15056,7 +15142,7 @@ void clif_parse_BattleChat(int fd, struct map_session_data* sd)
char *name, *message;
int namelen, messagelen;
- if( !clif_process_message(sd, 0, &name, &namelen, &message, &messagelen) )
+ if( !clif->process_message(sd, 0, &name, &namelen, &message, &messagelen) )
return;
if( is_atcommand(fd, sd, message, 1) )
@@ -15065,8 +15151,7 @@ void clif_parse_BattleChat(int fd, struct map_session_data* sd)
if( sd->sc.data[SC_BERSERK] || sd->sc.data[SC__BLOODYLUST] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOCHAT) )
return;
- if( battle_config.min_chat_delay )
- {
+ if( battle_config.min_chat_delay ) {
if( DIFF_TICK(sd->cantalk_tick, gettick()) > 0 )
return;
sd->cantalk_tick = gettick() + battle_config.min_chat_delay;
@@ -15160,79 +15245,73 @@ int clif_instance(int instance_id, int type, int flag)
if( (p = party_search(instance[instance_id].party_id)) == NULL || (sd = party_getavailablesd(p)) == NULL )
return 0;
- switch( type )
- {
- case 1:
- // S 0x2cb <Instance name>.61B <Standby Position>.W
- // Required to start the instancing information window on Client
- // This window re-appear each "refresh" of client automatically until type 4 is send to client.
- WBUFW(buf,0) = 0x02CB;
- memcpy(WBUFP(buf,2),instance[instance_id].name,INSTANCE_NAME_LENGTH);
- WBUFW(buf,63) = flag;
- clif->send(buf,packet_len(0x02CB),&sd->bl,PARTY);
- break;
- case 2:
- // S 0x2cc <Standby Position>.W
- // To announce Instancing queue creation if no maps available
- WBUFW(buf,0) = 0x02CC;
- WBUFW(buf,2) = flag;
- clif->send(buf,packet_len(0x02CC),&sd->bl,PARTY);
- break;
- case 3:
- case 4:
- // S 0x2cd <Instance Name>.61B <Instance Remaining Time>.L <Instance Noplayers close time>.L
- WBUFW(buf,0) = 0x02CD;
- memcpy(WBUFP(buf,2),instance[instance_id].name,61);
- if( type == 3 )
- {
- WBUFL(buf,63) = (uint32)instance[instance_id].progress_timeout;
- WBUFL(buf,67) = 0;
- }
- else
- {
- WBUFL(buf,63) = 0;
- WBUFL(buf,67) = (uint32)instance[instance_id].idle_timeout;
- }
- clif->send(buf,packet_len(0x02CD),&sd->bl,PARTY);
- break;
- case 5:
- // S 0x2ce <Message ID>.L
- // 0 = Notification (EnterLimitDate update?)
- // 1 = The Memorial Dungeon expired; it has been destroyed
- // 2 = The Memorial Dungeon's entry time limit expired; it has been destroyed
- // 3 = The Memorial Dungeon has been removed.
- // 4 = Create failure (removes the instance window)
- WBUFW(buf,0) = 0x02CE;
- WBUFL(buf,2) = flag;
- //WBUFL(buf,6) = EnterLimitDate;
- clif->send(buf,packet_len(0x02CE),&sd->bl,PARTY);
- break;
+ switch( type ) {
+ case 1:
+ // S 0x2cb <Instance name>.61B <Standby Position>.W
+ // Required to start the instancing information window on Client
+ // This window re-appear each "refresh" of client automatically until type 4 is send to client.
+ WBUFW(buf,0) = 0x02CB;
+ memcpy(WBUFP(buf,2),instance[instance_id].name,INSTANCE_NAME_LENGTH);
+ WBUFW(buf,63) = flag;
+ clif->send(buf,packet_len(0x02CB),&sd->bl,PARTY);
+ break;
+ case 2:
+ // S 0x2cc <Standby Position>.W
+ // To announce Instancing queue creation if no maps available
+ WBUFW(buf,0) = 0x02CC;
+ WBUFW(buf,2) = flag;
+ clif->send(buf,packet_len(0x02CC),&sd->bl,PARTY);
+ break;
+ case 3:
+ case 4:
+ // S 0x2cd <Instance Name>.61B <Instance Remaining Time>.L <Instance Noplayers close time>.L
+ WBUFW(buf,0) = 0x02CD;
+ memcpy(WBUFP(buf,2),instance[instance_id].name,61);
+ if( type == 3 )
+ {
+ WBUFL(buf,63) = (uint32)instance[instance_id].progress_timeout;
+ WBUFL(buf,67) = 0;
+ }
+ else
+ {
+ WBUFL(buf,63) = 0;
+ WBUFL(buf,67) = (uint32)instance[instance_id].idle_timeout;
+ }
+ clif->send(buf,packet_len(0x02CD),&sd->bl,PARTY);
+ break;
+ case 5:
+ // S 0x2ce <Message ID>.L
+ // 0 = Notification (EnterLimitDate update?)
+ // 1 = The Memorial Dungeon expired; it has been destroyed
+ // 2 = The Memorial Dungeon's entry time limit expired; it has been destroyed
+ // 3 = The Memorial Dungeon has been removed.
+ // 4 = Create failure (removes the instance window)
+ WBUFW(buf,0) = 0x02CE;
+ WBUFL(buf,2) = flag;
+ //WBUFL(buf,6) = EnterLimitDate;
+ clif->send(buf,packet_len(0x02CE),&sd->bl,PARTY);
+ break;
}
return 0;
}
void clif_instance_join(int fd, int instance_id)
{
- if( instance[instance_id].idle_timer != INVALID_TIMER )
- {
+ if( instance[instance_id].idle_timer != INVALID_TIMER ) {
WFIFOHEAD(fd,packet_len(0x02CD));
WFIFOW(fd,0) = 0x02CD;
memcpy(WFIFOP(fd,2),instance[instance_id].name,61);
WFIFOL(fd,63) = 0;
WFIFOL(fd,67) = (uint32)instance[instance_id].idle_timeout;
WFIFOSET(fd,packet_len(0x02CD));
- }
- else if( instance[instance_id].progress_timer != INVALID_TIMER )
- {
+ } else if( instance[instance_id].progress_timer != INVALID_TIMER ) {
WFIFOHEAD(fd,packet_len(0x02CD));
WFIFOW(fd,0) = 0x02CD;
memcpy(WFIFOP(fd,2),instance[instance_id].name,61);
WFIFOL(fd,63) = (uint32)instance[instance_id].progress_timeout;;
WFIFOL(fd,67) = 0;
WFIFOSET(fd,packet_len(0x02CD));
- }
- else
- {
+ } else {
WFIFOHEAD(fd,packet_len(0x02CB));
WFIFOW(fd,0) = 0x02CB;
memcpy(WFIFOP(fd,2),instance[instance_id].name,61);
@@ -15264,7 +15343,7 @@ void clif_party_show_picker(struct map_session_data * sd, struct item * item_dat
WBUFB(buf,8) = item_data->identify;
WBUFB(buf,9) = item_data->attribute;
WBUFB(buf,10) = item_data->refine;
- clif_addcards(WBUFP(buf,11), item_data);
+ clif->addcards(WBUFP(buf,11), item_data);
WBUFW(buf,19) = id->equip; // equip location
WBUFB(buf,21) = itemtype(id->type); // item type
clif->send(buf, packet_len(0x2b8), &sd->bl, PARTY_SAMEMAP_WOS);
@@ -15444,8 +15523,7 @@ void clif_buyingstore_open(struct map_session_data* sd)
/// result:
/// 0 = cancel
/// 1 = open
-static void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd)
-{
+void clif_parse_ReqOpenBuyingStore(int fd, struct map_session_data* sd) {
const unsigned int blocksize = 8;
uint8* itemlist;
char storename[MESSAGE_SIZE];
@@ -15552,8 +15630,7 @@ void clif_buyingstore_entry_single(struct map_session_data* sd, struct map_sessi
/// Request to close own buying store (CZ_REQ_CLOSE_BUYING_STORE).
/// 0815
-static void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd)
-{
+void clif_parse_ReqCloseBuyingStore(int fd, struct map_session_data* sd) {
buyingstore_close(sd);
}
@@ -15582,7 +15659,7 @@ void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct
/// Request to open someone else's buying store (CZ_REQ_CLICK_TO_BUYING_STORE).
/// 0817 <account id>.L
-static void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
+void clif_parse_ReqClickBuyingStore(int fd, struct map_session_data* sd)
{
int account_id;
@@ -15620,8 +15697,7 @@ void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_d
/// Request to sell items to a buying store (CZ_REQ_TRADE_BUYING_STORE).
/// 0819 <packet len>.W <account id>.L <store id>.L { <index>.W <name id>.W <amount>.W }*
-static void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd)
-{
+void clif_parse_ReqTradeBuyingStore(int fd, struct map_session_data* sd) {
const unsigned int blocksize = 6;
uint8* itemlist;
int account_id;
@@ -15736,8 +15812,7 @@ void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short res
/// NOTE: The client determines the item ids by specifying a name and optionally,
/// amount of card slots. If the client does not know about the item it
/// cannot be searched.
-static void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd)
-{
+void clif_parse_SearchStoreInfo(int fd, struct map_session_data* sd) {
const unsigned int blocksize = 2;
const uint8* itemlist;
const uint8* cardlist;
@@ -15805,8 +15880,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
WFIFOB(fd,5) = searchstore_querynext(sd);
WFIFOB(fd,6) = (unsigned char)min(sd->searchstore.uses, UINT8_MAX);
- for( i = start; i < end; i++ )
- {
+ for( i = start; i < end; i++ ) {
struct s_search_store_info_item* ssitem = &sd->searchstore.items[i];
struct item it;
@@ -15825,7 +15899,7 @@ void clif_search_store_info_ack(struct map_session_data* sd)
it.nameid = ssitem->nameid;
it.amount = ssitem->amount;
- clif_addcards(WFIFOP(fd,i*blocksize+25+MESSAGE_SIZE), &it);
+ clif->addcards(WFIFOP(fd,i*blocksize+25+MESSAGE_SIZE), &it);
}
WFIFOSET(fd,WFIFOW(fd,2));
@@ -15853,7 +15927,7 @@ void clif_search_store_info_failed(struct map_session_data* sd, unsigned char re
/// Request to display next page of results (CZ_SEARCH_STORE_INFO_NEXT_PAGE).
/// 0838
-static void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
+void clif_parse_SearchStoreInfoNextPage(int fd, struct map_session_data* sd)
{
searchstore_next(sd);
}
@@ -15880,7 +15954,7 @@ void clif_open_search_store_info(struct map_session_data* sd)
/// Request to close the store search window (CZ_CLOSE_SEARCH_STORE_INFO).
/// 083b
-static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd)
+void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd)
{
searchstore_close(sd);
}
@@ -15888,7 +15962,7 @@ static void clif_parse_CloseSearchStoreInfo(int fd, struct map_session_data* sd)
/// Request to invoke catalog effect on a store from search results (CZ_SSILIST_ITEM_CLICK).
/// 083c <account id>.L <store id>.L <nameid>.W
-static void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd)
+void clif_parse_SearchStoreInfoListItemClick(int fd, struct map_session_data* sd)
{
unsigned short nameid;
int account_id, store_id;
@@ -15917,15 +15991,13 @@ void clif_search_store_info_click_ack(struct map_session_data* sd, short x, shor
/// Parse function for packet debugging.
-void clif_parse_debug(int fd,struct map_session_data *sd)
-{
+void clif_parse_debug(int fd,struct map_session_data *sd) {
int cmd, packet_len;
// clif_parse ensures, that there is at least 2 bytes of data
cmd = RFIFOW(fd,0);
- if( sd )
- {
+ if( sd ) {
packet_len = packet_db[sd->packet_ver][cmd].len;
if( packet_len == 0 )
@@ -16028,7 +16100,7 @@ int clif_spellbook_list(struct map_session_data *sd)
}
else{
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif_skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0);
+ clif->skill_fail(sd, WL_READING_SB, USESKILL_FAIL_SPELLBOOK, 0);
}
return 1;
@@ -16063,7 +16135,7 @@ int clif_magicdecoy_list(struct map_session_data *sd, uint16 skill_lv, short x,
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif_skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
+ clif->skill_fail(sd,NC_MAGICDECOY,USESKILL_FAIL_LEVEL,0);
return 0;
}
@@ -16097,7 +16169,7 @@ int clif_poison_list(struct map_session_data *sd, uint16 skill_lv) {
WFIFOW(fd,2) = c * 2 + 4;
WFIFOSET(fd, WFIFOW(fd, 2));
} else {
- clif_skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_GUILLONTINE_POISON,0);
+ clif->skill_fail(sd,GC_POISONINGWEAPON,USESKILL_FAIL_GUILLONTINE_POISON,0);
return 0;
}
@@ -16130,7 +16202,7 @@ int clif_autoshadowspell_list(struct map_session_data *sd) {
sd->menuskill_val = c;
} else {
status_change_end(&sd->bl,SC_STOP,INVALID_TIMER);
- clif_skill_fail(sd,SC_AUTOSHADOWSPELL,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
+ clif->skill_fail(sd,SC_AUTOSHADOWSPELL,USESKILL_FAIL_IMITATION_SKILL_NONE,0);
}
return 1;
@@ -16228,7 +16300,7 @@ void clif_parse_SkillSelectMenu(int fd, struct map_session_data *sd) {
return;
if( pc_istrading(sd) ) {
- clif_skill_fail(sd,sd->ud.skill_id,0,0);
+ clif->skill_fail(sd,sd->ud.skill_id,0,0);
clif_menuskill_clear(sd);
return;
}
@@ -16280,7 +16352,7 @@ void clif_parse_MoveItem(int fd, struct map_session_data *sd) {
else
return;/* nothing to do. */
- clif_favorite_item(sd, index);
+ clif->favorite_item(sd, index);
#endif
}
@@ -16324,8 +16396,7 @@ void clif_monster_hp_bar( struct mob_data* md, int fd ) {
/*==========================================
* Main client packet processing function
*------------------------------------------*/
-static int clif_parse(int fd)
-{
+int clif_parse(int fd) {
int cmd, packet_ver, packet_len, err;
TBL_PC* sd;
int pnum;
@@ -16348,7 +16419,7 @@ static int clif_parse(int fd)
if (sd->state.active) {
// Player logout display [Valaris]
ShowInfo("Character '"CL_WHITE"%s"CL_RESET"' logged off.\n", sd->status.name);
- clif_quitsave(fd, sd);
+ clif->quitsave(fd, sd);
} else {
//Unusual logout (during log on/off/map-changer procedure)
ShowInfo("Player AID:%d/CID:%d logged off.\n", sd->status.account_id, sd->status.char_id);
@@ -16371,7 +16442,7 @@ static int clif_parse(int fd)
packet_ver = sd->packet_ver;
} else {
// check authentification packet to know packet version
- packet_ver = clif_guess_PacketVer(fd, 0, &err);
+ packet_ver = clif->guess_PacketVer(fd, 0, &err);
if( err ) {// failed to identify packet version
ShowInfo("clif_parse: Disconnecting session #%d with unknown packet version%s (p:0x%04x,l:%d).\n", fd, (
err == 1 ? "" :
@@ -16427,18 +16498,15 @@ static int clif_parse(int fd)
if ((int)RFIFOREST(fd) < packet_len)
return 0; // not enough data received to form the packet
- if( packet_db[packet_ver][cmd].func == clif_parse_debug )
+ if( packet_db[packet_ver][cmd].func == clif->pDebug )
packet_db[packet_ver][cmd].func(fd, sd);
else if( packet_db[packet_ver][cmd].func != NULL ) {
- if( !sd && packet_db[packet_ver][cmd].func != clif_parse_WantToConnection )
+ if( !sd && packet_db[packet_ver][cmd].func != clif->pWantToConnection )
; //Only valid packet when there is no session
else
- if( sd && sd->bl.prev == NULL && packet_db[packet_ver][cmd].func != clif_parse_LoadEndAck )
+ if( sd && sd->bl.prev == NULL && packet_db[packet_ver][cmd].func != clif->pLoadEndAck )
; //Only valid packet when player is not on a map
else
- if( sd && session[sd->fd]->flag.eof )
- ; //No more packets accepted
- else
packet_db[packet_ver][cmd].func(fd, sd);
}
#ifdef DUMP_UNKNOWN_PACKET
@@ -16727,203 +16795,203 @@ static int packetdb_readdb(void)
void (*func)(int, struct map_session_data *);
char *name;
} clif_parse_func[]={
- {clif_parse_WantToConnection,"wanttoconnection"},
- {clif_parse_LoadEndAck,"loadendack"},
- {clif_parse_TickSend,"ticksend"},
- {clif_parse_WalkToXY,"walktoxy"},
- {clif_parse_QuitGame,"quitgame"},
- {clif_parse_GetCharNameRequest,"getcharnamerequest"},
- {clif_parse_GlobalMessage,"globalmessage"},
- {clif_parse_MapMove,"mapmove"},
- {clif_parse_ChangeDir,"changedir"},
- {clif_parse_Emotion,"emotion"},
- {clif_parse_HowManyConnections,"howmanyconnections"},
- {clif_parse_ActionRequest,"actionrequest"},
- {clif_parse_Restart,"restart"},
- {clif_parse_WisMessage,"wis"},
- {clif_parse_Broadcast,"broadcast"},
- {clif_parse_TakeItem,"takeitem"},
- {clif_parse_DropItem,"dropitem"},
- {clif_parse_UseItem,"useitem"},
- {clif_parse_EquipItem,"equipitem"},
- {clif_parse_UnequipItem,"unequipitem"},
- {clif_parse_NpcClicked,"npcclicked"},
- {clif_parse_NpcBuySellSelected,"npcbuysellselected"},
- {clif_parse_NpcBuyListSend,"npcbuylistsend"},
- {clif_parse_NpcSellListSend,"npcselllistsend"},
- {clif_parse_CreateChatRoom,"createchatroom"},
- {clif_parse_ChatAddMember,"chataddmember"},
- {clif_parse_ChatRoomStatusChange,"chatroomstatuschange"},
- {clif_parse_ChangeChatOwner,"changechatowner"},
- {clif_parse_KickFromChat,"kickfromchat"},
- {clif_parse_ChatLeave,"chatleave"},
- {clif_parse_TradeRequest,"traderequest"},
- {clif_parse_TradeAck,"tradeack"},
- {clif_parse_TradeAddItem,"tradeadditem"},
- {clif_parse_TradeOk,"tradeok"},
- {clif_parse_TradeCancel,"tradecancel"},
- {clif_parse_TradeCommit,"tradecommit"},
- {clif_parse_StopAttack,"stopattack"},
- {clif_parse_PutItemToCart,"putitemtocart"},
- {clif_parse_GetItemFromCart,"getitemfromcart"},
- {clif_parse_RemoveOption,"removeoption"},
- {clif_parse_ChangeCart,"changecart"},
- {clif_parse_StatusUp,"statusup"},
- {clif_parse_SkillUp,"skillup"},
- {clif_parse_UseSkillToId,"useskilltoid"},
- {clif_parse_UseSkillToPos,"useskilltopos"},
- {clif_parse_UseSkillToPosMoreInfo,"useskilltoposinfo"},
- {clif_parse_UseSkillMap,"useskillmap"},
- {clif_parse_RequestMemo,"requestmemo"},
- {clif_parse_ProduceMix,"producemix"},
- {clif_parse_Cooking,"cooking"},
- {clif_parse_NpcSelectMenu,"npcselectmenu"},
- {clif_parse_NpcNextClicked,"npcnextclicked"},
- {clif_parse_NpcAmountInput,"npcamountinput"},
- {clif_parse_NpcStringInput,"npcstringinput"},
- {clif_parse_NpcCloseClicked,"npccloseclicked"},
- {clif_parse_ItemIdentify,"itemidentify"},
- {clif_parse_SelectArrow,"selectarrow"},
- {clif_parse_AutoSpell,"autospell"},
- {clif_parse_UseCard,"usecard"},
- {clif_parse_InsertCard,"insertcard"},
- {clif_parse_RepairItem,"repairitem"},
- {clif_parse_WeaponRefine,"weaponrefine"},
- {clif_parse_SolveCharName,"solvecharname"},
- {clif_parse_ResetChar,"resetchar"},
- {clif_parse_LocalBroadcast,"localbroadcast"},
- {clif_parse_MoveToKafra,"movetokafra"},
- {clif_parse_MoveFromKafra,"movefromkafra"},
- {clif_parse_MoveToKafraFromCart,"movetokafrafromcart"},
- {clif_parse_MoveFromKafraToCart,"movefromkafratocart"},
- {clif_parse_CloseKafra,"closekafra"},
- {clif_parse_CreateParty,"createparty"},
- {clif_parse_CreateParty2,"createparty2"},
- {clif_parse_PartyInvite,"partyinvite"},
- {clif_parse_PartyInvite2,"partyinvite2"},
- {clif_parse_ReplyPartyInvite,"replypartyinvite"},
- {clif_parse_ReplyPartyInvite2,"replypartyinvite2"},
- {clif_parse_LeaveParty,"leaveparty"},
- {clif_parse_RemovePartyMember,"removepartymember"},
- {clif_parse_PartyChangeOption,"partychangeoption"},
- {clif_parse_PartyMessage,"partymessage"},
- {clif_parse_PartyChangeLeader,"partychangeleader"},
- {clif_parse_CloseVending,"closevending"},
- {clif_parse_VendingListReq,"vendinglistreq"},
- {clif_parse_PurchaseReq,"purchasereq"},
- {clif_parse_PurchaseReq2,"purchasereq2"},
- {clif_parse_OpenVending,"openvending"},
- {clif_parse_CreateGuild,"createguild"},
- {clif_parse_GuildCheckMaster,"guildcheckmaster"},
- {clif_parse_GuildRequestInfo,"guildrequestinfo"},
- {clif_parse_GuildChangePositionInfo,"guildchangepositioninfo"},
- {clif_parse_GuildChangeMemberPosition,"guildchangememberposition"},
- {clif_parse_GuildRequestEmblem,"guildrequestemblem"},
- {clif_parse_GuildChangeEmblem,"guildchangeemblem"},
- {clif_parse_GuildChangeNotice,"guildchangenotice"},
- {clif_parse_GuildInvite,"guildinvite"},
- {clif_parse_GuildReplyInvite,"guildreplyinvite"},
- {clif_parse_GuildLeave,"guildleave"},
- {clif_parse_GuildExpulsion,"guildexpulsion"},
- {clif_parse_GuildMessage,"guildmessage"},
- {clif_parse_GuildRequestAlliance,"guildrequestalliance"},
- {clif_parse_GuildReplyAlliance,"guildreplyalliance"},
- {clif_parse_GuildDelAlliance,"guilddelalliance"},
- {clif_parse_GuildOpposition,"guildopposition"},
- {clif_parse_GuildBreak,"guildbreak"},
- {clif_parse_PetMenu,"petmenu"},
- {clif_parse_CatchPet,"catchpet"},
- {clif_parse_SelectEgg,"selectegg"},
- {clif_parse_SendEmotion,"sendemotion"},
- {clif_parse_ChangePetName,"changepetname"},
- {clif_parse_GMKick,"gmkick"},
- {clif_parse_GMHide,"gmhide"},
- {clif_parse_GMReqNoChat,"gmreqnochat"},
- {clif_parse_GMReqAccountName,"gmreqaccname"},
- {clif_parse_GMKickAll,"killall"},
- {clif_parse_GMRecall,"recall"},
- {clif_parse_GMRecall,"summon"},
- {clif_parse_GM_Monster_Item,"itemmonster"},
- {clif_parse_GMShift,"remove"},
- {clif_parse_GMShift,"shift"},
- {clif_parse_GMChangeMapType,"changemaptype"},
- {clif_parse_GMRc,"rc"},
- {clif_parse_GMRecall2,"recall2"},
- {clif_parse_GMRemove2,"remove2"},
-
- {clif_parse_NoviceDoriDori,"sndoridori"},
- {clif_parse_NoviceExplosionSpirits,"snexplosionspirits"},
- {clif_parse_PMIgnore,"wisexin"},
- {clif_parse_PMIgnoreList,"wisexlist"},
- {clif_parse_PMIgnoreAll,"wisall"},
- {clif_parse_FriendsListAdd,"friendslistadd"},
- {clif_parse_FriendsListRemove,"friendslistremove"},
- {clif_parse_FriendsListReply,"friendslistreply"},
- {clif_parse_Blacksmith,"blacksmith"},
- {clif_parse_Alchemist,"alchemist"},
- {clif_parse_Taekwon,"taekwon"},
- {clif_parse_RankingPk,"rankingpk"},
- {clif_parse_FeelSaveOk,"feelsaveok"},
- {clif_parse_debug,"debug"},
- {clif_parse_ChangeHomunculusName,"changehomunculusname"},
- {clif_parse_HomMoveToMaster,"hommovetomaster"},
- {clif_parse_HomMoveTo,"hommoveto"},
- {clif_parse_HomAttack,"homattack"},
- {clif_parse_HomMenu,"hommenu"},
- {clif_parse_StoragePassword,"storagepassword"},
- {clif_parse_Hotkey,"hotkey"},
- {clif_parse_AutoRevive,"autorevive"},
- {clif_parse_Check,"check"},
- {clif_parse_Adopt_request,"adoptrequest"},
- {clif_parse_Adopt_reply,"adoptreply"},
+ {clif->pWantToConnection,"wanttoconnection"},
+ {clif->pLoadEndAck,"loadendack"},
+ {clif->pTickSend,"ticksend"},
+ {clif->pWalkToXY,"walktoxy"},
+ {clif->pQuitGame,"quitgame"},
+ {clif->pGetCharNameRequest,"getcharnamerequest"},
+ {clif->pGlobalMessage,"globalmessage"},
+ {clif->pMapMove,"mapmove"},
+ {clif->pChangeDir,"changedir"},
+ {clif->pEmotion,"emotion"},
+ {clif->pHowManyConnections,"howmanyconnections"},
+ {clif->pActionRequest,"actionrequest"},
+ {clif->pRestart,"restart"},
+ {clif->pWisMessage,"wis"},
+ {clif->pBroadcast,"broadcast"},
+ {clif->pTakeItem,"takeitem"},
+ {clif->pDropItem,"dropitem"},
+ {clif->pUseItem,"useitem"},
+ {clif->pEquipItem,"equipitem"},
+ {clif->pUnequipItem,"unequipitem"},
+ {clif->pNpcClicked,"npcclicked"},
+ {clif->pNpcBuySellSelected,"npcbuysellselected"},
+ {clif->pNpcBuyListSend,"npcbuylistsend"},
+ {clif->pNpcSellListSend,"npcselllistsend"},
+ {clif->pCreateChatRoom,"createchatroom"},
+ {clif->pChatAddMember,"chataddmember"},
+ {clif->pChatRoomStatusChange,"chatroomstatuschange"},
+ {clif->pChangeChatOwner,"changechatowner"},
+ {clif->pKickFromChat,"kickfromchat"},
+ {clif->pChatLeave,"chatleave"},
+ {clif->pTradeRequest,"traderequest"},
+ {clif->pTradeAck,"tradeack"},
+ {clif->pTradeAddItem,"tradeadditem"},
+ {clif->pTradeOk,"tradeok"},
+ {clif->pTradeCancel,"tradecancel"},
+ {clif->pTradeCommit,"tradecommit"},
+ {clif->pStopAttack,"stopattack"},
+ {clif->pPutItemToCart,"putitemtocart"},
+ {clif->pGetItemFromCart,"getitemfromcart"},
+ {clif->pRemoveOption,"removeoption"},
+ {clif->pChangeCart,"changecart"},
+ {clif->pStatusUp,"statusup"},
+ {clif->pSkillUp,"skillup"},
+ {clif->pUseSkillToId,"useskilltoid"},
+ {clif->pUseSkillToPos,"useskilltopos"},
+ {clif->pUseSkillToPosMoreInfo,"useskilltoposinfo"},
+ {clif->pUseSkillMap,"useskillmap"},
+ {clif->pRequestMemo,"requestmemo"},
+ {clif->pProduceMix,"producemix"},
+ {clif->pCooking,"cooking"},
+ {clif->pNpcSelectMenu,"npcselectmenu"},
+ {clif->pNpcNextClicked,"npcnextclicked"},
+ {clif->pNpcAmountInput,"npcamountinput"},
+ {clif->pNpcStringInput,"npcstringinput"},
+ {clif->pNpcCloseClicked,"npccloseclicked"},
+ {clif->pItemIdentify,"itemidentify"},
+ {clif->pSelectArrow,"selectarrow"},
+ {clif->pAutoSpell,"autospell"},
+ {clif->pUseCard,"usecard"},
+ {clif->pInsertCard,"insertcard"},
+ {clif->pRepairItem,"repairitem"},
+ {clif->pWeaponRefine,"weaponrefine"},
+ {clif->pSolveCharName,"solvecharname"},
+ {clif->pResetChar,"resetchar"},
+ {clif->pLocalBroadcast,"localbroadcast"},
+ {clif->pMoveToKafra,"movetokafra"},
+ {clif->pMoveFromKafra,"movefromkafra"},
+ {clif->pMoveToKafraFromCart,"movetokafrafromcart"},
+ {clif->pMoveFromKafraToCart,"movefromkafratocart"},
+ {clif->pCloseKafra,"closekafra"},
+ {clif->pCreateParty,"createparty"},
+ {clif->pCreateParty2,"createparty2"},
+ {clif->pPartyInvite,"partyinvite"},
+ {clif->pPartyInvite2,"partyinvite2"},
+ {clif->pReplyPartyInvite,"replypartyinvite"},
+ {clif->pReplyPartyInvite2,"replypartyinvite2"},
+ {clif->pLeaveParty,"leaveparty"},
+ {clif->pRemovePartyMember,"removepartymember"},
+ {clif->pPartyChangeOption,"partychangeoption"},
+ {clif->pPartyMessage,"partymessage"},
+ {clif->pPartyChangeLeader,"partychangeleader"},
+ {clif->pCloseVending,"closevending"},
+ {clif->pVendingListReq,"vendinglistreq"},
+ {clif->pPurchaseReq,"purchasereq"},
+ {clif->pPurchaseReq2,"purchasereq2"},
+ {clif->pOpenVending,"openvending"},
+ {clif->pCreateGuild,"createguild"},
+ {clif->pGuildCheckMaster,"guildcheckmaster"},
+ {clif->pGuildRequestInfo,"guildrequestinfo"},
+ {clif->pGuildChangePositionInfo,"guildchangepositioninfo"},
+ {clif->pGuildChangeMemberPosition,"guildchangememberposition"},
+ {clif->pGuildRequestEmblem,"guildrequestemblem"},
+ {clif->pGuildChangeEmblem,"guildchangeemblem"},
+ {clif->pGuildChangeNotice,"guildchangenotice"},
+ {clif->pGuildInvite,"guildinvite"},
+ {clif->pGuildReplyInvite,"guildreplyinvite"},
+ {clif->pGuildLeave,"guildleave"},
+ {clif->pGuildExpulsion,"guildexpulsion"},
+ {clif->pGuildMessage,"guildmessage"},
+ {clif->pGuildRequestAlliance,"guildrequestalliance"},
+ {clif->pGuildReplyAlliance,"guildreplyalliance"},
+ {clif->pGuildDelAlliance,"guilddelalliance"},
+ {clif->pGuildOpposition,"guildopposition"},
+ {clif->pGuildBreak,"guildbreak"},
+ {clif->pPetMenu,"petmenu"},
+ {clif->pCatchPet,"catchpet"},
+ {clif->pSelectEgg,"selectegg"},
+ {clif->pSendEmotion,"sendemotion"},
+ {clif->pChangePetName,"changepetname"},
+ {clif->pGMKick,"gmkick"},
+ {clif->pGMHide,"gmhide"},
+ {clif->pGMReqNoChat,"gmreqnochat"},
+ {clif->pGMReqAccountName,"gmreqaccname"},
+ {clif->pGMKickAll,"killall"},
+ {clif->pGMRecall,"recall"},
+ {clif->pGMRecall,"summon"},
+ {clif->pGM_Monster_Item,"itemmonster"},
+ {clif->pGMShift,"remove"},
+ {clif->pGMShift,"shift"},
+ {clif->pGMChangeMapType,"changemaptype"},
+ {clif->pGMRc,"rc"},
+ {clif->pGMRecall2,"recall2"},
+ {clif->pGMRemove2,"remove2"},
+
+ {clif->pNoviceDoriDori,"sndoridori"},
+ {clif->pNoviceExplosionSpirits,"snexplosionspirits"},
+ {clif->pPMIgnore,"wisexin"},
+ {clif->pPMIgnoreList,"wisexlist"},
+ {clif->pPMIgnoreAll,"wisall"},
+ {clif->pFriendsListAdd,"friendslistadd"},
+ {clif->pFriendsListRemove,"friendslistremove"},
+ {clif->pFriendsListReply,"friendslistreply"},
+ {clif->pBlacksmith,"blacksmith"},
+ {clif->pAlchemist,"alchemist"},
+ {clif->pTaekwon,"taekwon"},
+ {clif->pRankingPk,"rankingpk"},
+ {clif->pFeelSaveOk,"feelsaveok"},
+ {clif->pDebug,"debug"},
+ {clif->pChangeHomunculusName,"changehomunculusname"},
+ {clif->pHomMoveToMaster,"hommovetomaster"},
+ {clif->pHomMoveTo,"hommoveto"},
+ {clif->pHomAttack,"homattack"},
+ {clif->pHomMenu,"hommenu"},
+ {clif->pStoragePassword,"storagepassword"},
+ {clif->pHotkey,"hotkey"},
+ {clif->pAutoRevive,"autorevive"},
+ {clif->pCheck,"check"},
+ {clif->pAdopt_request,"adoptrequest"},
+ {clif->pAdopt_reply,"adoptreply"},
// MAIL SYSTEM
- {clif_parse_Mail_refreshinbox,"mailrefresh"},
- {clif_parse_Mail_read,"mailread"},
- {clif_parse_Mail_getattach,"mailgetattach"},
- {clif_parse_Mail_delete,"maildelete"},
- {clif_parse_Mail_return,"mailreturn"},
- {clif_parse_Mail_setattach,"mailsetattach"},
- {clif_parse_Mail_winopen,"mailwinopen"},
- {clif_parse_Mail_send,"mailsend"},
+ {clif->pMail_refreshinbox,"mailrefresh"},
+ {clif->pMail_read,"mailread"},
+ {clif->pMail_getattach,"mailgetattach"},
+ {clif->pMail_delete,"maildelete"},
+ {clif->pMail_return,"mailreturn"},
+ {clif->pMail_setattach,"mailsetattach"},
+ {clif->pMail_winopen,"mailwinopen"},
+ {clif->pMail_send,"mailsend"},
// AUCTION SYSTEM
- {clif_parse_Auction_search,"auctionsearch"},
- {clif_parse_Auction_buysell,"auctionbuysell"},
- {clif_parse_Auction_setitem,"auctionsetitem"},
- {clif_parse_Auction_cancelreg,"auctioncancelreg"},
- {clif_parse_Auction_register,"auctionregister"},
- {clif_parse_Auction_cancel,"auctioncancel"},
- {clif_parse_Auction_close,"auctionclose"},
- {clif_parse_Auction_bid,"auctionbid"},
+ {clif->pAuction_search,"auctionsearch"},
+ {clif->pAuction_buysell,"auctionbuysell"},
+ {clif->pAuction_setitem,"auctionsetitem"},
+ {clif->pAuction_cancelreg,"auctioncancelreg"},
+ {clif->pAuction_register,"auctionregister"},
+ {clif->pAuction_cancel,"auctioncancel"},
+ {clif->pAuction_close,"auctionclose"},
+ {clif->pAuction_bid,"auctionbid"},
// Quest Log System
- {clif_parse_questStateAck,"queststate"},
- {clif_parse_cashshop_buy,"cashshopbuy"},
- {clif_parse_ViewPlayerEquip,"viewplayerequip"},
- {clif_parse_EquipTick,"equiptickbox"},
- {clif_parse_BattleChat,"battlechat"},
- {clif_parse_mercenary_action,"mermenu"},
- {clif_parse_progressbar,"progressbar"},
- {clif_parse_SkillSelectMenu,"skillselectmenu"},
- {clif_parse_ItemListWindowSelected,"itemlistwindowselected"},
+ {clif->pquestStateAck,"queststate"},
+ {clif->pcashshop_buy,"cashshopbuy"},
+ {clif->pViewPlayerEquip,"viewplayerequip"},
+ {clif->pEquipTick,"equiptickbox"},
+ {clif->pBattleChat,"battlechat"},
+ {clif->pmercenary_action,"mermenu"},
+ {clif->pProgressbar,"progressbar"},
+ {clif->pSkillSelectMenu,"skillselectmenu"},
+ {clif->pItemListWindowSelected,"itemlistwindowselected"},
#if PACKETVER >= 20091229
- {clif_parse_PartyBookingRegisterReq,"bookingregreq"},
- {clif_parse_PartyBookingSearchReq,"bookingsearchreq"},
- {clif_parse_PartyBookingUpdateReq,"bookingupdatereq"},
- {clif_parse_PartyBookingDeleteReq,"bookingdelreq"},
+ {clif->pPartyBookingRegisterReq,"bookingregreq"},
+ {clif->pPartyBookingSearchReq,"bookingsearchreq"},
+ {clif->pPartyBookingUpdateReq,"bookingupdatereq"},
+ {clif->pPartyBookingDeleteReq,"bookingdelreq"},
#endif
- {clif_parse_PVPInfo,"pvpinfo"},
- {clif_parse_LessEffect,"lesseffect"},
+ {clif->pPVPInfo,"pvpinfo"},
+ {clif->pLessEffect,"lesseffect"},
// Buying Store
- {clif_parse_ReqOpenBuyingStore,"reqopenbuyingstore"},
- {clif_parse_ReqCloseBuyingStore,"reqclosebuyingstore"},
- {clif_parse_ReqClickBuyingStore,"reqclickbuyingstore"},
- {clif_parse_ReqTradeBuyingStore,"reqtradebuyingstore"},
+ {clif->pReqOpenBuyingStore,"reqopenbuyingstore"},
+ {clif->pReqCloseBuyingStore,"reqclosebuyingstore"},
+ {clif->pReqClickBuyingStore,"reqclickbuyingstore"},
+ {clif->pReqTradeBuyingStore,"reqtradebuyingstore"},
// Store Search
- {clif_parse_SearchStoreInfo,"searchstoreinfo"},
- {clif_parse_SearchStoreInfoNextPage,"searchstoreinfonextpage"},
- {clif_parse_CloseSearchStoreInfo,"closesearchstoreinfo"},
- {clif_parse_SearchStoreInfoListItemClick,"searchstoreinfolistitemclick"},
+ {clif->pSearchStoreInfo,"searchstoreinfo"},
+ {clif->pSearchStoreInfoNextPage,"searchstoreinfonextpage"},
+ {clif->pCloseSearchStoreInfo,"closesearchstoreinfo"},
+ {clif->pSearchStoreInfoListItemClick,"searchstoreinfolistitemclick"},
/* */
- { clif_parse_MoveItem , "moveitem" },
+ { clif->pMoveItem , "moveitem" },
{NULL,NULL}
};
@@ -17082,29 +17150,53 @@ int do_init_clif(void) {
color_table[i] = strtoul(colors[i],NULL,0);
color_table[i] = (color_table[i] & 0x0000FF) << 16 | (color_table[i] & 0x00FF00) | (color_table[i] & 0xFF0000) >> 16;//RGB to BGR
}
-
+
clif_config.packet_db_ver = -1; // the main packet version of the DB
memset(clif_config.connect_cmd, 0, sizeof(clif_config.connect_cmd)); //The default connect command will be determined after reading the packet_db [Skotlex]
-
+
//Using the packet_db file is the only way to set up packets now [Skotlex]
packetdb_readdb();
-
- set_defaultparse(clif_parse);
+
+ set_defaultparse(clif->parse);
if( make_listen_bind(clif->bind_ip,clif->map_port) == -1 ) {
ShowFatalError("Failed to bind to port '"CL_WHITE"%d"CL_RESET"'\n",clif->map_port);
exit(EXIT_FAILURE);
}
- add_timer_func_list(clif_clearunit_delayed_sub, "clif_clearunit_delayed_sub");
- add_timer_func_list(clif_delayquit, "clif_delayquit");
+ add_timer_func_list(clif->clearunit_delayed_sub, "clif_clearunit_delayed_sub");
+ add_timer_func_list(clif->delayquit, "clif_delayquit");
- delay_clearunit_ers = ers_new(sizeof(struct block_list),"clif.c::delay_clearunit_ers",ERS_OPT_CLEAR);
+ clif->delay_clearunit_ers = ers_new(sizeof(struct block_list),"clif.c::delay_clearunit_ers",ERS_OPT_CLEAR);
+ clif->channel_db = stridb_alloc(DB_OPT_DUP_KEY|DB_OPT_RELEASE_DATA, HCHSYS_NAME_LENGTH);
+ hChSys.ally = hChSys.local = hChSys.ally_autojoin = hChSys.local_autojoin = false;
+ clif->chann_config_read();
+
return 0;
}
void do_final_clif(void) {
- ers_destroy(delay_clearunit_ers);
+ DBIterator *iter = db_iterator(clif->channel_db);
+ struct hChSysCh *channel;
+ unsigned char i;
+
+ for( channel = dbi_first(iter); dbi_exists(iter); channel = dbi_next(iter) ) {
+ clif->chsys_delete(channel);
+ }
+
+ dbi_destroy(iter);
+
+ for(i = 0; i < hChSys.colors_count; i++) {
+ aFree(hChSys.colors_name[i]);
+ }
+
+ if( hChSys.colors_count ) {
+ aFree(hChSys.colors_name);
+ aFree(hChSys.colors);
+ }
+
+ db_destroy(clif->channel_db);
+ ers_destroy(clif->delay_clearunit_ers);
}
void clif_defaults(void) {
clif = &clif_s;
@@ -17119,6 +17211,8 @@ void clif_defaults(void) {
clif->setport = clif_setport;
clif->refresh_ip = clif_refresh_ip;
clif->send = clif_send;
+ clif->send_sub = clif_send_sub;
+ clif->parse = clif_parse;
/* auth */
clif->authok = clif_authok;
clif->authrefuse = clif_authrefuse;
@@ -17139,12 +17233,16 @@ void clif_defaults(void) {
clif->equipitemack = clif_equipitemack;
clif->unequipitemack = clif_unequipitemack;
clif->useitemack = clif_useitemack;
+ clif->addcards = clif_addcards;
+ clif->item_sub = clif_item_sub;
+ clif->getareachar_item = clif_getareachar_item;
/* unit-related */
clif->clearunit_single = clif_clearunit_single;
clif->clearunit_area = clif_clearunit_area;
clif->clearunit_delayed = clif_clearunit_delayed;
clif->walkok = clif_walkok;
clif->move = clif_move;
+ clif->move2 = clif_move2;
clif->blown = clif_blown;
clif->slide = clif_slide;
clif->fixpos = clif_fixpos;
@@ -17155,6 +17253,15 @@ void clif_defaults(void) {
clif->skill_setunit = clif_skill_setunit;
clif->skill_delunit = clif_skill_delunit;
clif->skillunit_update = clif_skillunit_update;
+ clif->clearunit_delayed_sub = clif_clearunit_delayed_sub;
+ clif->set_unit_idle = clif_set_unit_idle;
+ clif->setdisguise = clif_setdisguise;
+ clif->set_unit_walking = clif_set_unit_walking;
+ clif->calc_walkdelay = clif_calc_walkdelay;
+ clif->getareachar_skillunit = clif_getareachar_skillunit;
+ clif->getareachar_unit = clif_getareachar_unit;
+ clif->clearchar_skillunit = clif_clearchar_skillunit;
+ clif->getareachar = clif_getareachar;
/* main unit spawn */
clif->spawn = clif_spawn;
/* map-related */
@@ -17164,6 +17271,7 @@ void clif_defaults(void) {
clif->pvpset = clif_pvpset;
clif->map_property_mapall = clif_map_property_mapall;
clif->bossmapinfo = clif_bossmapinfo;
+ clif->map_type = clif_map_type;
/* multi-map-server */
clif->changemapserver = clif_changemapserver;
/* npc-shop-related */
@@ -17171,6 +17279,9 @@ void clif_defaults(void) {
clif->buylist = clif_buylist;
clif->selllist = clif_selllist;
clif->cashshop_show = clif_cashshop_show;
+ clif->npc_buy_result = clif_npc_buy_result;
+ clif->npc_sell_result = clif_npc_sell_result;
+ clif->cashshop_ack = clif_cashshop_ack;
/* npc-script-related */
clif->scriptmes = clif_scriptmes;
clif->scriptnext = clif_scriptnext;
@@ -17207,6 +17318,7 @@ void clif_defaults(void) {
clif->inventorylist = clif_inventorylist;
clif->equiplist = clif_equiplist;
clif->cartlist = clif_cartlist;
+ clif->favorite_item = clif_favorite_item;
clif->clearcart = clif_clearcart;
clif->item_identify_list = clif_item_identify_list;
clif->item_identified = clif_item_identified;
@@ -17221,7 +17333,9 @@ void clif_defaults(void) {
clif->changed_dir = clif_changed_dir;
clif->charnameack = clif_charnameack;
clif->monster_hp_bar = clif_monster_hp_bar;
+ clif->hpmeter = clif_hpmeter;
clif->hpmeter_single = clif_hpmeter_single;
+ clif->hpmeter_sub = clif_hpmeter_sub;
clif->upgrademessage = clif_upgrademessage;
clif->get_weapon_view = clif_get_weapon_view;
clif->gospel_info = clif_gospel_info;
@@ -17248,6 +17362,7 @@ void clif_defaults(void) {
clif->skill_itemlistwindow = clif_skill_itemlistwindow;
clif->sc_notick = clif_status_load_notick;
clif->sc_single = clif_status_load_single;
+ clif->initialstatus = clif_initialstatus;
/* player-unit-specific-related */
clif->updatestatus = clif_updatestatus;
clif->changestatus = clif_changestatus;
@@ -17255,6 +17370,15 @@ void clif_defaults(void) {
clif->movetoattack = clif_movetoattack;
clif->solved_charname = clif_solved_charname;
clif->charnameupdate = clif_charnameupdate;
+ clif->delayquit = clif_delayquit;
+ clif->getareachar_pc = clif_getareachar_pc;
+ clif->disconnect_ack = clif_disconnect_ack;
+ clif->PVPInfo = clif_PVPInfo;
+ clif->blacksmith = clif_blacksmith;
+ clif->alchemist = clif_alchemist;
+ clif->taekwon = clif_taekwon;
+ clif->ranking_pk = clif_ranking_pk;
+ clif->quitsave = clif_quitsave;
/* visual effects client-side */
clif->misceffect = clif_misceffect;
clif->changeoption = clif_changeoption;
@@ -17273,6 +17397,7 @@ void clif_defaults(void) {
clif->produce_effect = clif_produceeffect;
clif->devotion = clif_devotion;
clif->spiritball = clif_spiritball;
+ clif->spiritball_single = clif_spiritball_single;
clif->bladestop = clif_bladestop;
clif->mvp_effect = clif_mvp_effect;
clif->heal = clif_heal;
@@ -17284,7 +17409,9 @@ void clif_defaults(void) {
clif->specialeffect_value = clif_specialeffect_value;
clif->millenniumshield = clif_millenniumshield;
clif->talisman = clif_talisman;
+ clif->talisman_single = clif_talisman_single;
clif->snap = clif_snap;
+ clif->weather_check = clif_weather_check;
/* sound effects client-side */
clif->playBGM = clif_playBGM;
clif->soundeffect = clif_soundeffect;
@@ -17302,21 +17429,23 @@ void clif_defaults(void) {
clif->changechatstatus = clif_changechatstatus;
clif->wis_message = clif_wis_message;
clif->wis_end = clif_wis_end;
- clif->displaymessage = clif_displaymessage;
clif->disp_onlyself = clif_disp_onlyself;
clif->disp_message = clif_disp_message;
clif->broadcast = clif_broadcast;
- clif->MainChatMessage = clif_MainChatMessage;
clif->broadcast2 = clif_broadcast2;
clif->messagecolor = clif_messagecolor;
- clif->message = clif_message;
clif->disp_overhead = clif_disp_overhead;
clif->msg = clif_msg;
clif->msg_value = clif_msg_value;
clif->msg_skill = clif_msg_skill;
clif->msgtable = clif_msgtable;
clif->msgtable_num = clif_msgtable_num;
+ clif->message = clif_displaymessage;
clif->colormes = clif_colormes;
+ clif->process_message = clif_process_message;
+ clif->wisexin = clif_wisexin;
+ clif->wisall = clif_wisall;
+ clif->PMIgnoreList = clif_PMIgnoreList;
/* trade handling */
clif->traderequest = clif_traderequest;
clif->tradestart = clif_tradestart;
@@ -17360,6 +17489,7 @@ void clif_defaults(void) {
clif->party_hp = clif_party_hp;
clif->party_xy_remove = clif_party_xy_remove;
clif->party_show_picker = clif_party_show_picker;
+ clif->partyinvitationstate = clif_partyinvitationstate;
/* guild-specific */
clif->guild_created = clif_guild_created;
clif->guild_belonginfo = clif_guild_belonginfo;
@@ -17389,6 +17519,10 @@ void clif_defaults(void) {
clif->guild_xy = clif_guild_xy;
clif->guild_xy_single = clif_guild_xy_single;
clif->guild_xy_remove = clif_guild_xy_remove;
+ clif->guild_positionnamelist = clif_guild_positionnamelist;
+ clif->guild_positioninfolist = clif_guild_positioninfolist;
+ clif->guild_expulsionlist = clif_guild_expulsionlist;
+ clif->validate_emblem = clif_validate_emblem;
/* battleground-specific */
clif->bg_hp = clif_bg_hp;
clif->bg_xy = clif_bg_xy;
@@ -17414,11 +17548,15 @@ void clif_defaults(void) {
clif->friendslist_toggle_sub = clif_friendslist_toggle_sub;
clif->friendslist_send = clif_friendslist_send;
clif->friendslist_reqack = clif_friendslist_reqack;
+ clif->friendslist_toggle = clif_friendslist_toggle;
+ clif->friendlist_req = clif_friendlist_req;
/* gm-related */
clif->GM_kickack = clif_GM_kickack;
clif->GM_kick = clif_GM_kick;
clif->manner_message = clif_manner_message;
clif->GM_silence = clif_GM_silence;
+ clif->account_name = clif_account_name;
+ clif->check = clif_check;
/* hom-related */
clif->hominfo = clif_hominfo;
clif->homskillinfoblock = clif_homskillinfoblock;
@@ -17442,11 +17580,13 @@ void clif_defaults(void) {
clif->mail_new = clif_Mail_new;
clif->mail_refreshinbox = clif_Mail_refreshinbox;
clif->mail_getattachment = clif_Mail_getattachment;
+ clif->mail_setattachment = clif_Mail_setattachment;
/* auction-related */
clif->auction_openwindow = clif_Auction_openwindow;
clif->auction_results = clif_Auction_results;
clif->auction_message = clif_Auction_message;
clif->auction_close = clif_Auction_close;
+ clif->auction_setitem = clif_Auction_setitem;
/* mercenary-related */
clif->mercenary_info = clif_mercenary_info;
clif->mercenary_skillblock = clif_mercenary_skillblock;
@@ -17480,16 +17620,218 @@ void clif_defaults(void) {
clif->search_store_info_failed = clif_search_store_info_failed;
clif->open_search_store_info = clif_open_search_store_info;
clif->search_store_info_click_ack = clif_search_store_info_click_ack;
- /* elemental-related */
+ /* elemental-related */
clif->elemental_info = clif_elemental_info;
clif->elemental_updatestatus = clif_elemental_updatestatus;
/* misc-handling */
clif->adopt_reply = clif_Adopt_reply;
+ clif->adopt_request = clif_Adopt_request;
clif->readbook = clif_readbook;
- /*------------------------
- *- Parse Incoming Packet
+ clif->guess_PacketVer = clif_guess_PacketVer;
+ clif->notify_time = clif_notify_time;
+ clif->user_count = clif_user_count;
+ clif->noask_sub = clif_noask_sub;
+ clif->chsys_create = clif_hercules_chsys_create;
+ clif->chsys_msg = clif_hercules_chsys_msg;
+ clif->chsys_send = clif_hercules_chsys_send;
+ clif->chsys_join = clif_hercules_chsys_join;
+ clif->chsys_left = clif_hercules_chsys_left;
+ clif->chsys_delete = clif_hercules_chsys_delete;
+ clif->chsys_mjoin = clif_hercules_chsys_mjoin;
+ /*------------------------
+ *- Parse Incoming Packet
*------------------------*/
- clif->ActionRequest_sub = clif_parse_ActionRequest_sub;
- clif->LoadEndAck = clif_parse_LoadEndAck;
- clif->Auction_cancelreg = clif_parse_Auction_cancelreg;
+ clif->pWantToConnection = clif_parse_WantToConnection;
+ clif->pLoadEndAck = clif_parse_LoadEndAck;
+ clif->pTickSend = clif_parse_TickSend;
+ clif->pHotkey = clif_parse_Hotkey;
+ clif->pProgressbar = clif_parse_progressbar;
+ clif->pWalkToXY = clif_parse_WalkToXY;
+ clif->pQuitGame = clif_parse_QuitGame;
+ clif->pGetCharNameRequest = clif_parse_GetCharNameRequest;
+ clif->pGlobalMessage = clif_parse_GlobalMessage;
+ clif->pMapMove = clif_parse_MapMove;
+ clif->pChangeDir = clif_parse_ChangeDir;
+ clif->pEmotion = clif_parse_Emotion;
+ clif->pHowManyConnections = clif_parse_HowManyConnections;
+ clif->pActionRequest = clif_parse_ActionRequest;
+ clif->pActionRequest_sub = clif_parse_ActionRequest_sub;
+ clif->pRestart = clif_parse_Restart;
+ clif->pWisMessage = clif_parse_WisMessage;
+ clif->pBroadcast = clif_parse_Broadcast;
+ clif->pTakeItem = clif_parse_TakeItem;
+ clif->pDropItem = clif_parse_DropItem;
+ clif->pUseItem = clif_parse_UseItem;
+ clif->pEquipItem = clif_parse_EquipItem;
+ clif->pUnequipItem = clif_parse_UnequipItem;
+ clif->pNpcClicked = clif_parse_NpcClicked;
+ clif->pNpcBuySellSelected = clif_parse_NpcBuySellSelected;
+ clif->pNpcBuyListSend = clif_parse_NpcBuyListSend;
+ clif->pNpcSellListSend = clif_parse_NpcSellListSend;
+ clif->pCreateChatRoom = clif_parse_CreateChatRoom;
+ clif->pChatAddMember = clif_parse_ChatAddMember;
+ clif->pChatRoomStatusChange = clif_parse_ChatRoomStatusChange;
+ clif->pChangeChatOwner = clif_parse_ChangeChatOwner;
+ clif->pKickFromChat = clif_parse_KickFromChat;
+ clif->pChatLeave = clif_parse_ChatLeave;
+ clif->pTradeRequest = clif_parse_TradeRequest;
+ clif->pTradeAck = clif_parse_TradeAck;
+ clif->pTradeAddItem = clif_parse_TradeAddItem;
+ clif->pTradeOk = clif_parse_TradeOk;
+ clif->pTradeCancel = clif_parse_TradeCancel;
+ clif->pTradeCommit = clif_parse_TradeCommit;
+ clif->pStopAttack = clif_parse_StopAttack;
+ clif->pPutItemToCart = clif_parse_PutItemToCart;
+ clif->pGetItemFromCart = clif_parse_GetItemFromCart;
+ clif->pRemoveOption = clif_parse_RemoveOption;
+ clif->pChangeCart = clif_parse_ChangeCart;
+ clif->pStatusUp = clif_parse_StatusUp;
+ clif->pSkillUp = clif_parse_SkillUp;
+ clif->pUseSkillToId = clif_parse_UseSkillToId;
+ clif->pUseSkillToId_homun = clif_parse_UseSkillToId_homun;
+ clif->pUseSkillToId_mercenary = clif_parse_UseSkillToId_mercenary;
+ clif->pUseSkillToPos = clif_parse_UseSkillToPos;
+ clif->pUseSkillToPosSub = clif_parse_UseSkillToPosSub;
+ clif->pUseSkillToPos_homun = clif_parse_UseSkillToPos_homun;
+ clif->pUseSkillToPos_mercenary = clif_parse_UseSkillToPos_mercenary;
+ clif->pUseSkillToPosMoreInfo = clif_parse_UseSkillToPosMoreInfo;
+ clif->pUseSkillMap = clif_parse_UseSkillMap;
+ clif->pRequestMemo = clif_parse_RequestMemo;
+ clif->pProduceMix = clif_parse_ProduceMix;
+ clif->pCooking = clif_parse_Cooking;
+ clif->pRepairItem = clif_parse_RepairItem;
+ clif->pWeaponRefine = clif_parse_WeaponRefine;
+ clif->pNpcSelectMenu = clif_parse_NpcSelectMenu;
+ clif->pNpcNextClicked = clif_parse_NpcNextClicked;
+ clif->pNpcAmountInput = clif_parse_NpcAmountInput;
+ clif->pNpcStringInput = clif_parse_NpcStringInput;
+ clif->pNpcCloseClicked = clif_parse_NpcCloseClicked;
+ clif->pItemIdentify = clif_parse_ItemIdentify;
+ clif->pSelectArrow = clif_parse_SelectArrow;
+ clif->pAutoSpell = clif_parse_AutoSpell;
+ clif->pUseCard = clif_parse_UseCard;
+ clif->pInsertCard = clif_parse_InsertCard;
+ clif->pSolveCharName = clif_parse_SolveCharName;
+ clif->pResetChar = clif_parse_ResetChar;
+ clif->pLocalBroadcast = clif_parse_LocalBroadcast;
+ clif->pMoveToKafra = clif_parse_MoveToKafra;
+ clif->pMoveFromKafra = clif_parse_MoveFromKafra;
+ clif->pMoveToKafraFromCart = clif_parse_MoveToKafraFromCart;
+ clif->pMoveFromKafraToCart = clif_parse_MoveFromKafraToCart;
+ clif->pCloseKafra = clif_parse_CloseKafra;
+ clif->pStoragePassword = clif_parse_StoragePassword;
+ clif->pCreateParty = clif_parse_CreateParty;
+ clif->pCreateParty2 = clif_parse_CreateParty2;
+ clif->pPartyInvite = clif_parse_PartyInvite;
+ clif->pPartyInvite2 = clif_parse_PartyInvite2;
+ clif->pReplyPartyInvite = clif_parse_ReplyPartyInvite;
+ clif->pReplyPartyInvite2 = clif_parse_ReplyPartyInvite2;
+ clif->pLeaveParty = clif_parse_LeaveParty;
+ clif->pRemovePartyMember = clif_parse_RemovePartyMember;
+ clif->pPartyChangeOption = clif_parse_PartyChangeOption;
+ clif->chann_config_read = read_channels_config;
+ clif->pPartyMessage = clif_parse_PartyMessage;
+ clif->pPartyChangeLeader = clif_parse_PartyChangeLeader;
+ clif->pPartyBookingRegisterReq = clif_parse_PartyBookingRegisterReq;
+ clif->pPartyBookingSearchReq = clif_parse_PartyBookingSearchReq;
+ clif->pPartyBookingDeleteReq = clif_parse_PartyBookingDeleteReq;
+ clif->pPartyBookingUpdateReq = clif_parse_PartyBookingUpdateReq;
+ clif->pCloseVending = clif_parse_CloseVending;
+ clif->pVendingListReq = clif_parse_VendingListReq;
+ clif->pPurchaseReq = clif_parse_PurchaseReq;
+ clif->pPurchaseReq2 = clif_parse_PurchaseReq2;
+ clif->pOpenVending = clif_parse_OpenVending;
+ clif->pCreateGuild = clif_parse_CreateGuild;
+ clif->pGuildCheckMaster = clif_parse_GuildCheckMaster;
+ clif->pGuildRequestInfo = clif_parse_GuildRequestInfo;
+ clif->pGuildChangePositionInfo = clif_parse_GuildChangePositionInfo;
+ clif->pGuildChangeMemberPosition = clif_parse_GuildChangeMemberPosition;
+ clif->pGuildRequestEmblem = clif_parse_GuildRequestEmblem;
+ clif->pGuildChangeEmblem = clif_parse_GuildChangeEmblem;
+ clif->pGuildChangeNotice = clif_parse_GuildChangeNotice;
+ clif->pGuildInvite = clif_parse_GuildInvite;
+ clif->pGuildReplyInvite = clif_parse_GuildReplyInvite;
+ clif->pGuildLeave = clif_parse_GuildLeave;
+ clif->pGuildExpulsion = clif_parse_GuildExpulsion;
+ clif->pGuildMessage = clif_parse_GuildMessage;
+ clif->pGuildRequestAlliance = clif_parse_GuildRequestAlliance;
+ clif->pGuildReplyAlliance = clif_parse_GuildReplyAlliance;
+ clif->pGuildDelAlliance = clif_parse_GuildDelAlliance;
+ clif->pGuildOpposition = clif_parse_GuildOpposition;
+ clif->pGuildBreak = clif_parse_GuildBreak;
+ clif->pPetMenu = clif_parse_PetMenu;
+ clif->pCatchPet = clif_parse_CatchPet;
+ clif->pSelectEgg = clif_parse_SelectEgg;
+ clif->pSendEmotion = clif_parse_SendEmotion;
+ clif->pChangePetName = clif_parse_ChangePetName;
+ clif->pGMKick = clif_parse_GMKick;
+ clif->pGMKickAll = clif_parse_GMKickAll;
+ clif->pGMShift = clif_parse_GMShift;
+ clif->pGMRemove2 = clif_parse_GMRemove2;
+ clif->pGMRecall = clif_parse_GMRecall;
+ clif->pGMRecall2 = clif_parse_GMRecall2;
+ clif->pGM_Monster_Item = clif_parse_GM_Monster_Item;
+ clif->pGMHide = clif_parse_GMHide;
+ clif->pGMReqNoChat = clif_parse_GMReqNoChat;
+ clif->pGMRc = clif_parse_GMRc;
+ clif->pGMReqAccountName = clif_parse_GMReqAccountName;
+ clif->pGMChangeMapType = clif_parse_GMChangeMapType;
+ clif->pPMIgnore = clif_parse_PMIgnore;
+ clif->pPMIgnoreAll = clif_parse_PMIgnoreAll;
+ clif->pPMIgnoreList = clif_parse_PMIgnoreList;
+ clif->pNoviceDoriDori = clif_parse_NoviceDoriDori;
+ clif->pNoviceExplosionSpirits = clif_parse_NoviceExplosionSpirits;
+ clif->pFriendsListAdd = clif_parse_FriendsListAdd;
+ clif->pFriendsListReply = clif_parse_FriendsListReply;
+ clif->pFriendsListRemove = clif_parse_FriendsListRemove;
+ clif->pPVPInfo = clif_parse_PVPInfo;
+ clif->pBlacksmith = clif_parse_Blacksmith;
+ clif->pAlchemist = clif_parse_Alchemist;
+ clif->pTaekwon = clif_parse_Taekwon;
+ clif->pRankingPk = clif_parse_RankingPk;
+ clif->pFeelSaveOk = clif_parse_FeelSaveOk;
+ clif->pChangeHomunculusName = clif_parse_ChangeHomunculusName;
+ clif->pHomMoveToMaster = clif_parse_HomMoveToMaster;
+ clif->pHomMoveTo = clif_parse_HomMoveTo;
+ clif->pHomAttack = clif_parse_HomAttack;
+ clif->pHomMenu = clif_parse_HomMenu;
+ clif->pAutoRevive = clif_parse_AutoRevive;
+ clif->pCheck = clif_parse_Check;
+ clif->pMail_refreshinbox = clif_parse_Mail_refreshinbox;
+ clif->pMail_read = clif_parse_Mail_read;
+ clif->pMail_getattach = clif_parse_Mail_getattach;
+ clif->pMail_delete = clif_parse_Mail_delete;
+ clif->pMail_return = clif_parse_Mail_return;
+ clif->pMail_setattach = clif_parse_Mail_setattach;
+ clif->pMail_winopen = clif_parse_Mail_winopen;
+ clif->pMail_send = clif_parse_Mail_send;
+ clif->pAuction_cancelreg = clif_parse_Auction_cancelreg;
+ clif->pAuction_setitem = clif_parse_Auction_setitem;
+ clif->pAuction_register = clif_parse_Auction_register;
+ clif->pAuction_cancel = clif_parse_Auction_cancel;
+ clif->pAuction_close = clif_parse_Auction_close;
+ clif->pAuction_bid = clif_parse_Auction_bid;
+ clif->pAuction_search = clif_parse_Auction_search;
+ clif->pAuction_buysell = clif_parse_Auction_buysell;
+ clif->pcashshop_buy = clif_parse_cashshop_buy;
+ clif->pAdopt_request = clif_parse_Adopt_request;
+ clif->pAdopt_reply = clif_parse_Adopt_reply;
+ clif->pViewPlayerEquip = clif_parse_ViewPlayerEquip;
+ clif->pEquipTick = clif_parse_EquipTick;
+ clif->pquestStateAck = clif_parse_questStateAck;
+ clif->pmercenary_action = clif_parse_mercenary_action;
+ clif->pBattleChat = clif_parse_BattleChat;
+ clif->pLessEffect = clif_parse_LessEffect;
+ clif->pItemListWindowSelected = clif_parse_ItemListWindowSelected;
+ clif->pReqOpenBuyingStore = clif_parse_ReqOpenBuyingStore;
+ clif->pReqCloseBuyingStore = clif_parse_ReqCloseBuyingStore;
+ clif->pReqClickBuyingStore = clif_parse_ReqClickBuyingStore;
+ clif->pReqTradeBuyingStore = clif_parse_ReqTradeBuyingStore;
+ clif->pSearchStoreInfo = clif_parse_SearchStoreInfo;
+ clif->pSearchStoreInfoNextPage = clif_parse_SearchStoreInfoNextPage;
+ clif->pCloseSearchStoreInfo = clif_parse_CloseSearchStoreInfo;
+ clif->pSearchStoreInfoListItemClick = clif_parse_SearchStoreInfoListItemClick;
+ clif->pDebug = clif_parse_debug;
+ clif->pSkillSelectMenu = clif_parse_SkillSelectMenu;
+ clif->pMoveItem = clif_parse_MoveItem;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index c93169a77..8989cbd96 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -6,18 +6,21 @@
#define _CLIF_H_
#include "../common/cbasetypes.h"
+#include "../common/db.h"
#include <stdarg.h>
/**
* Declarations
**/
struct item;
+struct item_data;
struct storage_data;
struct guild_storage;
struct block_list;
struct unit_data;
struct map_session_data;
struct homun_data;
+struct mercenary_data;
struct pet_data;
struct mob_data;
struct npc_data;
@@ -31,6 +34,8 @@ struct guild;
struct battleground_data;
struct quest;
struct party_booking_ad_info;
+struct view_data;
+struct eri;
/**
* Defines
@@ -38,6 +43,7 @@ struct party_booking_ad_info;
#define SERVER 0 /* reserved for server use */
#define packet_len(cmd) packet_db[SERVER][cmd].len
#define clif_menuskill_clear(sd) (sd)->menuskill_id = (sd)->menuskill_val = (sd)->menuskill_val2 = 0;
+#define HCHSYS_NAME_LENGTH 20
/**
* Enumerations
@@ -73,8 +79,8 @@ typedef enum send_target {
GUILD_NOBG,
DUEL,
DUEL_WOS,
- CHAT_MAINCHAT, // everyone on main chat
SELF,
+
BG, // BattleGround System
BG_WOS,
BG_SAMEMAP,
@@ -322,6 +328,19 @@ enum clif_colors {
COLOR_MAX
};
+enum hChSysChOpt {
+ hChSys_OPT_BASE = 0,
+ hChSys_OPT_ANNOUNCE_JOIN = 1,
+};
+
+enum hChSysChType {
+ hChSys_PUBLIC = 0,
+ hChSys_PRIVATE = 1,
+ hChSys_MAP = 2,
+ hChSys_ALLY = 3,
+};
+
+
/**
* Structures
**/
@@ -331,10 +350,33 @@ struct s_packet_db {
short pos[MAX_PACKET_POS];
};
+struct {
+ unsigned long *colors;
+ char **colors_name;
+ unsigned char colors_count;
+ bool local, ally;
+ bool local_autojoin, ally_autojoin;
+ char local_name[HCHSYS_NAME_LENGTH], ally_name[HCHSYS_NAME_LENGTH];
+ unsigned char local_color, ally_color;
+ bool closing;
+ bool allow_user_channel_creation;
+} hChSys;
+
+struct hChSysCh {
+ char name[HCHSYS_NAME_LENGTH];
+ char pass[HCHSYS_NAME_LENGTH];
+ unsigned char color;
+ DBMap *users;
+ unsigned int opt;
+ unsigned int owner;
+ enum hChSysChType type;
+ uint16 m;
+};
+
/**
* Vars
**/
-extern struct s_packet_db packet_db[MAX_PACKET_VER+1][MAX_PACKET_DB+1];
+struct s_packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB + 1];
unsigned long color_table[COLOR_MAX];
/**
@@ -347,6 +389,9 @@ struct clif_interface {
uint16 map_port;
char map_ip_str[128];
int map_fd;
+ DBMap* channel_db;
+ /* for clif_clearunit_delayed */
+ struct eri *delay_clearunit_ers;
/* core */
int (*init) (void);
void (*final) (void);
@@ -355,6 +400,8 @@ struct clif_interface {
void (*setport) (uint16 port);
uint32 (*refresh_ip) (void);
int (*send) (const uint8* buf, int len, struct block_list* bl, enum send_target type);
+ int (*send_sub) (struct block_list *bl, va_list ap);
+ int (*parse) (int fd);
/* auth */
void (*authok) (struct map_session_data *sd);
void (*authrefuse) (int fd, uint8 error_code);
@@ -375,12 +422,16 @@ struct clif_interface {
void (*equipitemack) (struct map_session_data *sd,int n,int pos,int ok);
void (*unequipitemack) (struct map_session_data *sd,int n,int pos,int ok);
void (*useitemack) (struct map_session_data *sd,int index,int amount,bool ok);
+ void (*addcards) (unsigned char* buf, struct item* item);
+ void (*item_sub) (unsigned char *buf, int n, struct item *i, struct item_data *id, int equip);
+ void (*getareachar_item) (struct map_session_data* sd,struct flooritem_data* fitem);
/* unit-related */
void (*clearunit_single) (int id, clr_type type, int fd);
void (*clearunit_area) (struct block_list* bl, clr_type type);
void (*clearunit_delayed) (struct block_list* bl, clr_type type, unsigned int tick);
void (*walkok) (struct map_session_data *sd);
void (*move) (struct unit_data *ud);
+ void (*move2) (struct block_list *bl, struct view_data *vd, struct unit_data *ud);
void (*blown) (struct block_list *bl);
void (*slide) (struct block_list *bl, int x, int y);
void (*fixpos) (struct block_list *bl);
@@ -391,6 +442,15 @@ struct clif_interface {
void (*skill_setunit) (struct skill_unit *unit);
void (*skill_delunit) (struct skill_unit *unit);
void (*skillunit_update) (struct block_list* bl);
+ int (*clearunit_delayed_sub) (int tid, unsigned int tick, int id, intptr_t data);
+ int (*set_unit_idle) (struct block_list* bl, unsigned char* buffer, bool spawn);
+ void (*setdisguise) (struct block_list *bl, unsigned char *buf,int len);
+ int (*set_unit_walking) (struct block_list* bl, struct unit_data* ud, unsigned char* buffer);
+ int (*calc_walkdelay) (struct block_list *bl,int delay, int type, int damage, int div_);
+ void (*getareachar_skillunit) (struct map_session_data *sd, struct skill_unit *unit);
+ void (*getareachar_unit) (struct map_session_data* sd,struct block_list *bl);
+ void (*clearchar_skillunit) (struct skill_unit *unit, int fd);
+ int (*getareachar) (struct block_list* bl,va_list ap);
/* main unit spawn */
int (*spawn) (struct block_list *bl);
/* map-related */
@@ -400,6 +460,7 @@ struct clif_interface {
void (*pvpset) (struct map_session_data *sd, int pvprank, int pvpnum,int type);
void (*map_property_mapall) (int map, enum map_property property);
void (*bossmapinfo) (int fd, struct mob_data *md, short flag);
+ void (*map_type) (struct map_session_data* sd, enum map_type type);
/* multi-map-server */
void (*changemapserver) (struct map_session_data* sd, unsigned short map_index, int x, int y, uint32 ip, uint16 port);
/* npc-shop-related */
@@ -407,6 +468,9 @@ struct clif_interface {
void (*buylist) (struct map_session_data *sd, struct npc_data *nd);
void (*selllist) (struct map_session_data *sd);
void (*cashshop_show) (struct map_session_data *sd, struct npc_data *nd);
+ void (*npc_buy_result) (struct map_session_data* sd, unsigned char result);
+ void (*npc_sell_result) (struct map_session_data* sd, unsigned char result);
+ void (*cashshop_ack) (struct map_session_data* sd, int error);
/* npc-script-related */
void (*scriptmes) (struct map_session_data *sd, int npcid, const char *mes);
void (*scriptnext) (struct map_session_data *sd,int npcid);
@@ -443,6 +507,7 @@ struct clif_interface {
void (*inventorylist) (struct map_session_data *sd);
void (*equiplist) (struct map_session_data *sd);
void (*cartlist) (struct map_session_data *sd);
+ void (*favorite_item) (struct map_session_data* sd, unsigned short index);
void (*clearcart) (int fd);
void (*item_identify_list) (struct map_session_data *sd);
void (*item_identified) (struct map_session_data *sd,int idx,int flag);
@@ -457,7 +522,9 @@ struct clif_interface {
void (*changed_dir) (struct block_list *bl, enum send_target target);
void (*charnameack) (int fd, struct block_list *bl);
void (*monster_hp_bar) ( struct mob_data* md, int fd );
+ int (*hpmeter) (struct map_session_data *sd);
void (*hpmeter_single) (int fd, int id, unsigned int hp, unsigned int maxhp);
+ int (*hpmeter_sub) (struct block_list *bl, va_list ap);
void (*upgrademessage) (int fd, int result, int item_id);
void (*get_weapon_view) (struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand);
void (*gospel_info) (struct map_session_data *sd, int type);
@@ -484,6 +551,7 @@ struct clif_interface {
int (*skill_itemlistwindow) ( struct map_session_data *sd, uint16 skill_id, uint16 skill_lv );
int (*sc_notick) (struct block_list *bl,int type,int flag,int val1, int val2, int val3);
int (*sc_single) (int fd, int id,int type,int flag,int val1, int val2, int val3);
+ void (*initialstatus) (struct map_session_data *sd);
/* player-unit-specific-related */
void (*updatestatus) (struct map_session_data *sd,int type);
void (*changestatus) (struct map_session_data* sd,int type,int val);
@@ -491,6 +559,15 @@ struct clif_interface {
void (*movetoattack) (struct map_session_data *sd,struct block_list *bl);
void (*solved_charname) (int fd, int charid, const char* name);
void (*charnameupdate) (struct map_session_data *ssd);
+ int (*delayquit) (int tid, unsigned int tick, int id, intptr_t data);
+ void (*getareachar_pc) (struct map_session_data* sd,struct map_session_data* dstsd);
+ void (*disconnect_ack) (struct map_session_data* sd, short result);
+ void (*PVPInfo) (struct map_session_data* sd);
+ void (*blacksmith) (struct map_session_data* sd);
+ void (*alchemist) (struct map_session_data* sd);
+ void (*taekwon) (struct map_session_data* sd);
+ void (*ranking_pk) (struct map_session_data* sd);
+ void (*quitsave) (int fd,struct map_session_data *sd);
/* visual effects client-side */
void (*misceffect) (struct block_list* bl,int type);
void (*changeoption) (struct block_list* bl);
@@ -509,6 +586,7 @@ struct clif_interface {
void (*produce_effect) (struct map_session_data* sd,int flag,int nameid);
void (*devotion) (struct block_list *src, struct map_session_data *tsd);
void (*spiritball) (struct block_list *bl);
+ void (*spiritball_single) (int fd, struct map_session_data *sd);
void (*bladestop) (struct block_list *src, int dst_id, int active);
void (*mvp_effect) (struct map_session_data *sd);
void (*heal) (int fd,int type,int val);
@@ -520,7 +598,9 @@ struct clif_interface {
void (*specialeffect_value) (struct block_list* bl, int effect_id, int num, send_target target);
void (*millenniumshield) (struct map_session_data *sd, short shields );
void (*talisman) (struct map_session_data *sd, short type);
+ void (*talisman_single) (int fd, struct map_session_data *sd, short type);
void (*snap) ( struct block_list *bl, short x, short y );
+ void (*weather_check) (struct map_session_data *sd);
/* sound effects client-side */
void (*playBGM) (struct map_session_data* sd, const char* name);
void (*soundeffect) (struct map_session_data* sd, struct block_list* bl, const char* name, int type);
@@ -538,21 +618,23 @@ struct clif_interface {
void (*changechatstatus) (struct chat_data* cd);
void (*wis_message) (int fd, const char* nick, const char* mes, int mes_len);
void (*wis_end) (int fd, int flag);
- void (*displaymessage) (const int fd, const char* mes);
void (*disp_onlyself) (struct map_session_data *sd, const char *mes, int len);
void (*disp_message) (struct block_list* src, const char* mes, int len, enum send_target target);
void (*broadcast) (struct block_list* bl, const char* mes, int len, int type, enum send_target target);
- void (*MainChatMessage) (const char* message);
void (*broadcast2) (struct block_list* bl, const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY, enum send_target target);
void (*messagecolor) (struct block_list* bl, unsigned long color, const char* msg);
- void (*message) (struct block_list* bl, const char* msg);
- void (*disp_overhead) (struct map_session_data *sd, const char* mes);
+ void (*disp_overhead) (struct block_list *bl, const char* mes);
void (*msg) (struct map_session_data* sd, unsigned short id);
void (*msg_value) (struct map_session_data* sd, unsigned short id, int value);
void (*msg_skill) (struct map_session_data* sd, uint16 skill_id, int msg_id);
void (*msgtable) (int fd, int line);
void (*msgtable_num) (int fd, int line, int num);
+ void (*message) (const int fd, const char* mes);
int (*colormes) (struct map_session_data * sd, enum clif_colors color, const char* msg);
+ bool (*process_message) (struct map_session_data* sd, int format, char** name_, int* namelen_, char** message_, int* messagelen_);
+ void (*wisexin) (struct map_session_data *sd,int type,int flag);
+ void (*wisall) (struct map_session_data *sd,int type,int flag);
+ void (*PMIgnoreList) (struct map_session_data* sd);
/* trade handling */
void (*traderequest) (struct map_session_data* sd, const char* name);
void (*tradestart) (struct map_session_data* sd, uint8 type);
@@ -596,6 +678,7 @@ struct clif_interface {
void (*party_hp) (struct map_session_data *sd);
void (*party_xy_remove) (struct map_session_data *sd);
void (*party_show_picker) (struct map_session_data * sd, struct item * item_data);
+ void (*partyinvitationstate) (struct map_session_data* sd);
/* guild-specific */
void (*guild_created) (struct map_session_data *sd,int flag);
void (*guild_belonginfo) (struct map_session_data *sd, struct guild *g);
@@ -625,6 +708,10 @@ struct clif_interface {
void (*guild_xy) (struct map_session_data *sd);
void (*guild_xy_single) (int fd, struct map_session_data *sd);
void (*guild_xy_remove) (struct map_session_data *sd);
+ void (*guild_positionnamelist) (struct map_session_data *sd);
+ void (*guild_positioninfolist) (struct map_session_data *sd);
+ void (*guild_expulsionlist) (struct map_session_data* sd);
+ bool (*validate_emblem) (const uint8* emblem, unsigned long emblem_len);
/* battleground-specific */
void (*bg_hp) (struct map_session_data *sd);
void (*bg_xy) (struct map_session_data *sd);
@@ -650,11 +737,15 @@ struct clif_interface {
int (*friendslist_toggle_sub) (struct map_session_data *sd,va_list ap);
void (*friendslist_send) (struct map_session_data *sd);
void (*friendslist_reqack) (struct map_session_data *sd, struct map_session_data *f_sd, int type);
+ void (*friendslist_toggle) (struct map_session_data *sd,int account_id, int char_id, int online);
+ void (*friendlist_req) (struct map_session_data* sd, int account_id, int char_id, const char* name);
/* gm-related */
void (*GM_kickack) (struct map_session_data *sd, int id);
void (*GM_kick) (struct map_session_data *sd,struct map_session_data *tsd);
void (*manner_message) (struct map_session_data* sd, uint32 type);
void (*GM_silence) (struct map_session_data* sd, struct map_session_data* tsd, uint8 type);
+ void (*account_name) (struct map_session_data* sd, int account_id, const char* accname);
+ void (*check) (int fd, struct map_session_data* pl_sd);
/* hom-related */
void (*hominfo) (struct map_session_data *sd, struct homun_data *hd, int flag);
int (*homskillinfoblock) (struct map_session_data *sd);
@@ -678,11 +769,13 @@ struct clif_interface {
void (*mail_new) (int fd, int mail_id, const char *sender, const char *title);
void (*mail_refreshinbox) (struct map_session_data *sd);
void (*mail_getattachment) (int fd, uint8 flag);
+ void (*mail_setattachment) (int fd, int index, uint8 flag);
/* auction-related */
void (*auction_openwindow) (struct map_session_data *sd);
void (*auction_results) (struct map_session_data *sd, short count, short pages, uint8 *buf);
void (*auction_message) (int fd, unsigned char flag);
void (*auction_close) (int fd, unsigned char flag);
+ void (*auction_setitem) (int fd, int index, bool fail);
/* mercenary-related */
void (*mercenary_info) (struct map_session_data *sd);
void (*mercenary_skillblock) (struct map_session_data *sd);
@@ -721,13 +814,215 @@ struct clif_interface {
void (*elemental_updatestatus) (struct map_session_data *sd, int type);
/* misc-handling */
void (*adopt_reply) (struct map_session_data *sd, int type);
+ void (*adopt_request) (struct map_session_data *sd, struct map_session_data *src, int p_id);
void (*readbook) (int fd, int book_id, int page);
+ int (*guess_PacketVer) (int fd, int get_previous, int *error);
+ void (*notify_time) (struct map_session_data* sd, unsigned long time);
+ void (*user_count) (struct map_session_data* sd, int count);
+ void (*noask_sub) (struct map_session_data *src, struct map_session_data *target, int type);
+ void (*chsys_create) (struct hChSysCh *channel, char *name, char *pass, unsigned char color);
+ void (*chsys_msg) (struct hChSysCh *channel, struct map_session_data *sd, char *msg);
+ void (*chsys_send) (struct hChSysCh *channel, struct map_session_data *sd, char *msg);
+ void (*chsys_join) (struct hChSysCh *channel, struct map_session_data *sd);
+ void (*chsys_left) (struct hChSysCh *channel, struct map_session_data *sd);
+ void (*chsys_delete) (struct hChSysCh *channel);
+ void (*chsys_mjoin) (struct map_session_data *sd);
/*------------------------
*- Parse Incoming Packet
*------------------------*/
- void (*ActionRequest_sub) (struct map_session_data *sd, int action_type, int target_id, unsigned int tick);
- void (*LoadEndAck) (int fd,struct map_session_data *sd);
- void (*Auction_cancelreg) (int fd, struct map_session_data *sd);
+ void (*pWantToConnection) (int fd, struct map_session_data *sd);
+ void (*pLoadEndAck) (int fd,struct map_session_data *sd);
+ void (*pTickSend) (int fd, struct map_session_data *sd);
+ void (*pHotkey) (int fd, struct map_session_data *sd);
+ void (*pProgressbar) (int fd, struct map_session_data * sd);
+ void (*pWalkToXY) (int fd, struct map_session_data *sd);
+ void (*pQuitGame) (int fd, struct map_session_data *sd);
+ void (*pGetCharNameRequest) (int fd, struct map_session_data *sd);
+ void (*pGlobalMessage) (int fd, struct map_session_data* sd);
+ void (*pMapMove) (int fd, struct map_session_data *sd);
+ void (*pChangeDir) (int fd, struct map_session_data *sd);
+ void (*pEmotion) (int fd, struct map_session_data *sd);
+ void (*pHowManyConnections) (int fd, struct map_session_data *sd);
+ void (*pActionRequest) (int fd, struct map_session_data *sd);
+ void (*pActionRequest_sub) (struct map_session_data *sd, int action_type, int target_id, unsigned int tick);
+ void (*pRestart) (int fd, struct map_session_data *sd);
+ void (*pWisMessage) (int fd, struct map_session_data* sd);
+ void (*pBroadcast) (int fd, struct map_session_data* sd);
+ void (*pTakeItem) (int fd, struct map_session_data *sd);
+ void (*pDropItem) (int fd, struct map_session_data *sd);
+ void (*pUseItem) (int fd, struct map_session_data *sd);
+ void (*pEquipItem) (int fd,struct map_session_data *sd);
+ void (*pUnequipItem) (int fd,struct map_session_data *sd);
+ void (*pNpcClicked) (int fd,struct map_session_data *sd);
+ void (*pNpcBuySellSelected) (int fd,struct map_session_data *sd);
+ void (*pNpcBuyListSend) (int fd, struct map_session_data* sd);
+ void (*pNpcSellListSend) (int fd,struct map_session_data *sd);
+ void (*pCreateChatRoom) (int fd, struct map_session_data* sd);
+ void (*pChatAddMember) (int fd, struct map_session_data* sd);
+ void (*pChatRoomStatusChange) (int fd, struct map_session_data* sd);
+ void (*pChangeChatOwner) (int fd, struct map_session_data* sd);
+ void (*pKickFromChat) (int fd,struct map_session_data *sd);
+ void (*pChatLeave) (int fd, struct map_session_data* sd);
+ void (*pTradeRequest) (int fd,struct map_session_data *sd);
+ void (*chann_config_read) (void);
+ void (*pTradeAck) (int fd,struct map_session_data *sd);
+ void (*pTradeAddItem) (int fd,struct map_session_data *sd);
+ void (*pTradeOk) (int fd,struct map_session_data *sd);
+ void (*pTradeCancel) (int fd,struct map_session_data *sd);
+ void (*pTradeCommit) (int fd,struct map_session_data *sd);
+ void (*pStopAttack) (int fd,struct map_session_data *sd);
+ void (*pPutItemToCart) (int fd,struct map_session_data *sd);
+ void (*pGetItemFromCart) (int fd,struct map_session_data *sd);
+ void (*pRemoveOption) (int fd,struct map_session_data *sd);
+ void (*pChangeCart) (int fd,struct map_session_data *sd);
+ void (*pStatusUp) (int fd,struct map_session_data *sd);
+ void (*pSkillUp) (int fd,struct map_session_data *sd);
+ void (*pUseSkillToId) (int fd, struct map_session_data *sd);
+ void (*pUseSkillToId_homun) (struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id);
+ void (*pUseSkillToId_mercenary) (struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, int target_id);
+ void (*pUseSkillToPos) (int fd, struct map_session_data *sd);
+ void (*pUseSkillToPosSub) (int fd, struct map_session_data *sd, uint16 skill_lv, uint16 skill_id, short x, short y, int skillmoreinfo);
+ void (*pUseSkillToPos_homun) (struct homun_data *hd, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo);
+ void (*pUseSkillToPos_mercenary) (struct mercenary_data *md, struct map_session_data *sd, unsigned int tick, uint16 skill_id, uint16 skill_lv, short x, short y, int skillmoreinfo);
+ void (*pUseSkillToPosMoreInfo) (int fd, struct map_session_data *sd);
+ void (*pUseSkillMap) (int fd, struct map_session_data* sd);
+ void (*pRequestMemo) (int fd,struct map_session_data *sd);
+ void (*pProduceMix) (int fd,struct map_session_data *sd);
+ void (*pCooking) (int fd,struct map_session_data *sd);
+ void (*pRepairItem) (int fd, struct map_session_data *sd);
+ void (*pWeaponRefine) (int fd, struct map_session_data *sd);
+ void (*pNpcSelectMenu) (int fd,struct map_session_data *sd);
+ void (*pNpcNextClicked) (int fd,struct map_session_data *sd);
+ void (*pNpcAmountInput) (int fd,struct map_session_data *sd);
+ void (*pNpcStringInput) (int fd, struct map_session_data* sd);
+ void (*pNpcCloseClicked) (int fd,struct map_session_data *sd);
+ void (*pItemIdentify) (int fd,struct map_session_data *sd);
+ void (*pSelectArrow) (int fd,struct map_session_data *sd);
+ void (*pAutoSpell) (int fd,struct map_session_data *sd);
+ void (*pUseCard) (int fd,struct map_session_data *sd);
+ void (*pInsertCard) (int fd,struct map_session_data *sd);
+ void (*pSolveCharName) (int fd, struct map_session_data *sd);
+ void (*pResetChar) (int fd, struct map_session_data *sd);
+ void (*pLocalBroadcast) (int fd, struct map_session_data* sd);
+ void (*pMoveToKafra) (int fd, struct map_session_data *sd);
+ void (*pMoveFromKafra) (int fd,struct map_session_data *sd);
+ void (*pMoveToKafraFromCart) (int fd, struct map_session_data *sd);
+ void (*pMoveFromKafraToCart) (int fd, struct map_session_data *sd);
+ void (*pCloseKafra) (int fd, struct map_session_data *sd);
+ void (*pStoragePassword) (int fd, struct map_session_data *sd);
+ void (*pCreateParty) (int fd, struct map_session_data *sd);
+ void (*pCreateParty2) (int fd, struct map_session_data *sd);
+ void (*pPartyInvite) (int fd, struct map_session_data *sd);
+ void (*pPartyInvite2) (int fd, struct map_session_data *sd);
+ void (*pReplyPartyInvite) (int fd,struct map_session_data *sd);
+ void (*pReplyPartyInvite2) (int fd,struct map_session_data *sd);
+ void (*pLeaveParty) (int fd, struct map_session_data *sd);
+ void (*pRemovePartyMember) (int fd, struct map_session_data *sd);
+ void (*pPartyChangeOption) (int fd, struct map_session_data *sd);
+ void (*pPartyMessage) (int fd, struct map_session_data* sd);
+ void (*pPartyChangeLeader) (int fd, struct map_session_data* sd);
+ void (*pPartyBookingRegisterReq) (int fd, struct map_session_data* sd);
+ void (*pPartyBookingSearchReq) (int fd, struct map_session_data* sd);
+ void (*pPartyBookingDeleteReq) (int fd, struct map_session_data* sd);
+ void (*pPartyBookingUpdateReq) (int fd, struct map_session_data* sd);
+ void (*pCloseVending) (int fd, struct map_session_data* sd);
+ void (*pVendingListReq) (int fd, struct map_session_data* sd);
+ void (*pPurchaseReq) (int fd, struct map_session_data* sd);
+ void (*pPurchaseReq2) (int fd, struct map_session_data* sd);
+ void (*pOpenVending) (int fd, struct map_session_data* sd);
+ void (*pCreateGuild) (int fd,struct map_session_data *sd);
+ void (*pGuildCheckMaster) (int fd, struct map_session_data *sd);
+ void (*pGuildRequestInfo) (int fd, struct map_session_data *sd);
+ void (*pGuildChangePositionInfo) (int fd, struct map_session_data *sd);
+ void (*pGuildChangeMemberPosition) (int fd, struct map_session_data *sd);
+ void (*pGuildRequestEmblem) (int fd,struct map_session_data *sd);
+ void (*pGuildChangeEmblem) (int fd,struct map_session_data *sd);
+ void (*pGuildChangeNotice) (int fd, struct map_session_data* sd);
+ void (*pGuildInvite) (int fd,struct map_session_data *sd);
+ void (*pGuildReplyInvite) (int fd,struct map_session_data *sd);
+ void (*pGuildLeave) (int fd,struct map_session_data *sd);
+ void (*pGuildExpulsion) (int fd,struct map_session_data *sd);
+ void (*pGuildMessage) (int fd, struct map_session_data* sd);
+ void (*pGuildRequestAlliance) (int fd, struct map_session_data *sd);
+ void (*pGuildReplyAlliance) (int fd, struct map_session_data *sd);
+ void (*pGuildDelAlliance) (int fd, struct map_session_data *sd);
+ void (*pGuildOpposition) (int fd, struct map_session_data *sd);
+ void (*pGuildBreak) (int fd, struct map_session_data *sd);
+ void (*pPetMenu) (int fd, struct map_session_data *sd);
+ void (*pCatchPet) (int fd, struct map_session_data *sd);
+ void (*pSelectEgg) (int fd, struct map_session_data *sd);
+ void (*pSendEmotion) (int fd, struct map_session_data *sd);
+ void (*pChangePetName) (int fd, struct map_session_data *sd);
+ void (*pGMKick) (int fd, struct map_session_data *sd);
+ void (*pGMKickAll) (int fd, struct map_session_data* sd);
+ void (*pGMShift) (int fd, struct map_session_data *sd);
+ void (*pGMRemove2) (int fd, struct map_session_data* sd);
+ void (*pGMRecall) (int fd, struct map_session_data *sd);
+ void (*pGMRecall2) (int fd, struct map_session_data* sd);
+ void (*pGM_Monster_Item) (int fd, struct map_session_data *sd);
+ void (*pGMHide) (int fd, struct map_session_data *sd);
+ void (*pGMReqNoChat) (int fd,struct map_session_data *sd);
+ void (*pGMRc) (int fd, struct map_session_data* sd);
+ void (*pGMReqAccountName) (int fd, struct map_session_data *sd);
+ void (*pGMChangeMapType) (int fd, struct map_session_data *sd);
+ void (*pPMIgnore) (int fd, struct map_session_data* sd);
+ void (*pPMIgnoreAll) (int fd, struct map_session_data *sd);
+ void (*pPMIgnoreList) (int fd,struct map_session_data *sd);
+ void (*pNoviceDoriDori) (int fd, struct map_session_data *sd);
+ void (*pNoviceExplosionSpirits) (int fd, struct map_session_data *sd);
+ void (*pFriendsListAdd) (int fd, struct map_session_data *sd);
+ void (*pFriendsListReply) (int fd, struct map_session_data *sd);
+ void (*pFriendsListRemove) (int fd, struct map_session_data *sd);
+ void (*pPVPInfo) (int fd,struct map_session_data *sd);
+ void (*pBlacksmith) (int fd,struct map_session_data *sd);
+ void (*pAlchemist) (int fd,struct map_session_data *sd);
+ void (*pTaekwon) (int fd,struct map_session_data *sd);
+ void (*pRankingPk) (int fd,struct map_session_data *sd);
+ void (*pFeelSaveOk) (int fd,struct map_session_data *sd);
+ void (*pChangeHomunculusName) (int fd, struct map_session_data *sd);
+ void (*pHomMoveToMaster) (int fd, struct map_session_data *sd);
+ void (*pHomMoveTo) (int fd, struct map_session_data *sd);
+ void (*pHomAttack) (int fd,struct map_session_data *sd);
+ void (*pHomMenu) (int fd, struct map_session_data *sd);
+ void (*pAutoRevive) (int fd, struct map_session_data *sd);
+ void (*pCheck) (int fd, struct map_session_data *sd);
+ void (*pMail_refreshinbox) (int fd, struct map_session_data *sd);
+ void (*pMail_read) (int fd, struct map_session_data *sd);
+ void (*pMail_getattach) (int fd, struct map_session_data *sd);
+ void (*pMail_delete) (int fd, struct map_session_data *sd);
+ void (*pMail_return) (int fd, struct map_session_data *sd);
+ void (*pMail_setattach) (int fd, struct map_session_data *sd);
+ void (*pMail_winopen) (int fd, struct map_session_data *sd);
+ void (*pMail_send) (int fd, struct map_session_data *sd);
+ void (*pAuction_cancelreg) (int fd, struct map_session_data *sd);
+ void (*pAuction_setitem) (int fd, struct map_session_data *sd);
+ void (*pAuction_register) (int fd, struct map_session_data *sd);
+ void (*pAuction_cancel) (int fd, struct map_session_data *sd);
+ void (*pAuction_close) (int fd, struct map_session_data *sd);
+ void (*pAuction_bid) (int fd, struct map_session_data *sd);
+ void (*pAuction_search) (int fd, struct map_session_data* sd);
+ void (*pAuction_buysell) (int fd, struct map_session_data* sd);
+ void (*pcashshop_buy) (int fd, struct map_session_data *sd);
+ void (*pAdopt_request) (int fd, struct map_session_data *sd);
+ void (*pAdopt_reply) (int fd, struct map_session_data *sd);
+ void (*pViewPlayerEquip) (int fd, struct map_session_data* sd);
+ void (*pEquipTick) (int fd, struct map_session_data* sd);
+ void (*pquestStateAck) (int fd, struct map_session_data * sd);
+ void (*pmercenary_action) (int fd, struct map_session_data* sd);
+ void (*pBattleChat) (int fd, struct map_session_data* sd);
+ void (*pLessEffect) (int fd, struct map_session_data* sd);
+ void (*pItemListWindowSelected) (int fd, struct map_session_data* sd);
+ void (*pReqOpenBuyingStore) (int fd, struct map_session_data* sd);
+ void (*pReqCloseBuyingStore) (int fd, struct map_session_data* sd);
+ void (*pReqClickBuyingStore) (int fd, struct map_session_data* sd);
+ void (*pReqTradeBuyingStore) (int fd, struct map_session_data* sd);
+ void (*pSearchStoreInfo) (int fd, struct map_session_data* sd);
+ void (*pSearchStoreInfoNextPage) (int fd, struct map_session_data* sd);
+ void (*pCloseSearchStoreInfo) (int fd, struct map_session_data* sd);
+ void (*pSearchStoreInfoListItemClick) (int fd, struct map_session_data* sd);
+ void (*pDebug) (int fd,struct map_session_data *sd);
+ void (*pSkillSelectMenu) (int fd, struct map_session_data *sd);
+ void (*pMoveItem) (int fd, struct map_session_data *sd);
} clif_s;
struct clif_interface *clif;
diff --git a/src/map/guild.c b/src/map/guild.c
index fa06f7f4c..ec5b42af2 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -259,7 +259,7 @@ int guild_getposition(struct guild* g, struct map_session_data* sd)
{
int i;
- if( g == NULL && (g=guild_search(sd->status.guild_id)) == NULL )
+ if( g == NULL && (g=sd->guild) == NULL )
return -1;
ARR_FIND( 0, g->max_member, i, g->member[i].account_id == sd->status.account_id && g->member[i].char_id == sd->status.char_id );
@@ -481,8 +481,7 @@ int guild_recv_noinfo(int guild_id)
struct s_mapiterator* iter;
iter = mapit_getallusers();
- for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter) )
- {
+ for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter) ) {
if( sd->status.guild_id == guild_id )
sd->status.guild_id = 0; // erase guild
}
@@ -492,27 +491,58 @@ int guild_recv_noinfo(int guild_id)
}
//Get and display information for all member
-int guild_recv_info(struct guild *sg)
-{
+int guild_recv_info(struct guild *sg) {
struct guild *g,before;
int i,bm,m;
DBData data;
struct map_session_data *sd;
bool guild_new = false;
+ void *aChSysSave = NULL;
nullpo_ret(sg);
- if((g = (struct guild*)idb_get(guild_db,sg->guild_id))==NULL)
- {
+ if((g = (struct guild*)idb_get(guild_db,sg->guild_id))==NULL) {
guild_new = true;
g=(struct guild *)aCalloc(1,sizeof(struct guild));
idb_put(guild_db,sg->guild_id,g);
- before=*sg;
+ if( hChSys.ally ) {
+ struct hChSysCh *channel;
+
+ CREATE(channel, struct hChSysCh , 1);
+ safestrncpy(channel->name, hChSys.ally_name, HCHSYS_NAME_LENGTH);
+ channel->type = hChSys_ALLY;
+
+ clif->chsys_create(channel,NULL,NULL,hChSys.ally_color);
+ if( hChSys.ally_autojoin ) {
+ struct s_mapiterator* iter = mapit_getallusers();
+
+ for( sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); sd = (TBL_PC*)mapit_next(iter) ) {
+ if( sd->status.guild_id ) {
+ if( sd->status.guild_id == sg->guild_id ) {
+ clif->chsys_join(channel,sd);
+ sd->guild = g;
+ continue;
+ }
+
+ for (i = 0; i < MAX_GUILDALLIANCE; i++) {
+ if( sg->alliance[i].guild_id == sd->status.guild_id ) {
+ clif->chsys_join(channel,sd);
+ break;
+ }
+ }
+ }
+ }
+
+ mapit_free(iter);
+ }
+
+ aChSysSave = (void*)channel;
+ }
+ before=*sg;
//Perform the check on the user because the first load
guild_check_member(sg);
- if ((sd = map_nick2sd(sg->master)) != NULL)
- {
+ if ((sd = map_nick2sd(sg->master)) != NULL) {
//If the guild master is online the first time the guild_info is received,
//that means he was the first to join, so apply guild skill blocking here.
if( battle_config.guild_skill_relog_delay )
@@ -523,12 +553,16 @@ int guild_recv_info(struct guild *sg)
clif->charnameupdate(sd); // [LuzZza]
clif->guild_masterormember(sd);
}
- }else
+ } else {
before=*g;
+ if( g->channel )
+ aChSysSave = g->channel;
+ }
memcpy(g,sg,sizeof(struct guild));
-
- if(g->max_member > MAX_GUILD)
- {
+
+ g->channel = aChSysSave;
+
+ if(g->max_member > MAX_GUILD) {
ShowError("guild_recv_info: Received guild with %d members, but MAX_GUILD is only %d. Extra guild-members have been lost!\n", g->max_member, MAX_GUILD);
g->max_member = MAX_GUILD;
}
@@ -570,10 +604,9 @@ int guild_recv_info(struct guild *sg)
}
//Occurrence of an event
- if (guild_infoevent_db->remove(guild_infoevent_db, db_i2key(sg->guild_id), &data))
- {
+ if (guild_infoevent_db->remove(guild_infoevent_db, db_i2key(sg->guild_id), &data)) {
struct eventlist *ev = db_data2ptr(&data), *ev2;
- while(ev){
+ while(ev) {
npc_event_do(ev->name);
ev2=ev->next;
aFree(ev);
@@ -593,7 +626,7 @@ int guild_invite(struct map_session_data *sd, struct map_session_data *tsd) {
nullpo_ret(sd);
- g=guild_search(sd->status.guild_id);
+ g=sd->guild;
if(tsd==NULL || g==NULL)
return 0;
@@ -705,8 +738,7 @@ void guild_member_joined(struct map_session_data *sd)
guild_request_info(sd->status.guild_id);
return;
}
- if (strcmp(sd->status.name,g->master) == 0)
- { // set the Guild Master flag
+ if (strcmp(sd->status.name,g->master) == 0) { // set the Guild Master flag
sd->state.gmaster_flag = g;
// prevent Guild Skills from being used directly after relog
if( battle_config.guild_skill_relog_delay )
@@ -715,8 +747,24 @@ void guild_member_joined(struct map_session_data *sd)
i = guild_getindex(g, sd->status.account_id, sd->status.char_id);
if (i == -1)
sd->status.guild_id = 0;
- else
+ else {
+
g->member[i].sd = sd;
+ sd->guild = g;
+
+ if( hChSys.ally && hChSys.ally_autojoin ) {
+ struct guild* sg = NULL;
+ clif->chsys_join((struct hChSysCh*)g->channel,sd);
+
+ for (i = 0; i < MAX_GUILDALLIANCE; i++) {
+ if( g->alliance[i].guild_id && (sg = guild_search(g->alliance[i].guild_id) ) ) {
+ clif->chsys_join((struct hChSysCh*)sg->channel,sd);
+ break;
+ }
+ }
+ }
+
+ }
}
/*==========================================
@@ -775,7 +823,7 @@ int guild_leave(struct map_session_data* sd, int guild_id, int account_id, int c
nullpo_ret(sd);
- g = guild_search(sd->status.guild_id);
+ g = sd->guild;
if(g==NULL)
return 0;
@@ -800,7 +848,7 @@ int guild_expulsion(struct map_session_data* sd, int guild_id, int account_id, i
nullpo_ret(sd);
- g = guild_search(sd->status.guild_id);
+ g = sd->guild;
if(g==NULL)
return 0;
@@ -859,8 +907,14 @@ int guild_member_withdraw(int guild_id, int account_id, int char_id, int flag, c
if (sd->state.storage_flag == 2) //Close the guild storage.
storage_guild_storageclose(sd);
guild_send_dot_remove(sd);
-
+ if( hChSys.ally ) {
+ for (i = 0; i < sd->channel_count; i++) {
+ if( sd->channels[i] && sd->channels[i]->type == hChSys_ALLY )
+ clif->chsys_left(sd->channels[i],sd);
+ }
+ }
sd->status.guild_id = 0;
+ sd->guild = NULL;
sd->guild_emblem_id = 0;
clif->charnameupdate(sd); //Update display name [Skotlex]
@@ -878,7 +932,7 @@ int guild_send_memberinfoshort(struct map_session_data *sd,int online)
if(sd->status.guild_id <= 0)
return 0;
- if(!(g = guild_search(sd->status.guild_id)))
+ if(!(g = sd->guild))
return 0;
intif_guild_memberinfoshort(g->guild_id,
@@ -1097,7 +1151,7 @@ int guild_change_emblem(struct map_session_data *sd,int len,const char *data)
nullpo_ret(sd);
if (battle_config.require_glory_guild &&
- !((g = guild_search(sd->status.guild_id)) && guild_checkskill(g, GD_GLORYGUILD)>0)) {
+ !((g = sd->guild) && guild_checkskill(g, GD_GLORYGUILD)>0)) {
clif->skill_fail(sd,GD_GLORYGUILD,USESKILL_FAIL_LEVEL,0);
return 0;
}
@@ -1196,7 +1250,7 @@ unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
if (!exp) return 0;
if (sd->status.guild_id == 0 ||
- (g = guild_search(sd->status.guild_id)) == NULL ||
+ (g = sd->guild) == NULL ||
(per = guild_getposition(g,sd)) < 0 ||
(per = g->position[per].exp_mode) < 1)
return 0;
@@ -1226,7 +1280,7 @@ int guild_getexp(struct map_session_data *sd,int exp)
struct guild_expcache *c;
nullpo_ret(sd);
- if (sd->status.guild_id == 0 || guild_search(sd->status.guild_id) == NULL)
+ if (sd->status.guild_id == 0 || sd->guild == NULL)
return 0;
c = db_data2ptr(guild_expcache_db->ensure(guild_expcache_db, db_i2key(sd->status.char_id), create_expcache, sd));
@@ -1249,7 +1303,7 @@ int guild_skillup(TBL_PC* sd, uint16 skill_id)
nullpo_ret(sd);
if( idx < 0 || idx >= MAX_GUILDSKILL || // not a guild skill
- sd->status.guild_id == 0 || (g=guild_search(sd->status.guild_id)) == NULL || // no guild
+ sd->status.guild_id == 0 || (g=sd->guild) == NULL || // no guild
strcmp(sd->status.name, g->master) ) // not the guild master
return 0;
@@ -1370,7 +1424,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
int i;
if(agit_flag || agit2_flag) { // Disable alliance creation during woe [Valaris]
- clif->displaymessage(sd->fd,msg_txt(676)); //"Alliances cannot be made during Guild Wars!"
+ clif->message(sd->fd,msg_txt(676)); //"Alliances cannot be made during Guild Wars!"
return 0;
} // end addition [Valaris]
@@ -1380,8 +1434,8 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
if(tsd==NULL || tsd->status.guild_id<=0)
return 0;
- g[0]=guild_search(sd->status.guild_id);
- g[1]=guild_search(tsd->status.guild_id);
+ g[0]=sd->guild;
+ g[1]=tsd->guild;
if(g[0]==NULL || g[1]==NULL)
return 0;
@@ -1440,8 +1494,8 @@ int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
int i;
struct guild *g, *tg; // Reconfirm the number of alliance
- g=guild_search(sd->status.guild_id);
- tg=guild_search(tsd->status.guild_id);
+ g=sd->guild;
+ tg=tsd->guild;
if(g==NULL || guild_get_alliance_count(g,0) >= battle_config.max_guild_alliance){
clif->guild_allianceack(sd,4);
@@ -1488,7 +1542,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
nullpo_ret(sd);
if(agit_flag || agit2_flag) { // Disable alliance breaking during woe [Valaris]
- clif->displaymessage(sd->fd,msg_txt(677)); //"Alliances cannot be broken during Guild Wars!"
+ clif->message(sd->fd,msg_txt(677)); //"Alliances cannot be broken during Guild Wars!"
return 0;
} // end addition [Valaris]
@@ -1506,7 +1560,7 @@ int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
nullpo_ret(sd);
- g=guild_search(sd->status.guild_id);
+ g=sd->guild;
if(g==NULL || tsd==NULL)
return 0;
@@ -1683,6 +1737,7 @@ int guild_broken(int guild_id,int flag)
if(sd->state.storage_flag == 2)
storage_guild_storage_quit(sd,1);
sd->status.guild_id=0;
+ sd->guild = NULL;
clif->guild_broken(g->member[i].sd,0);
clif->charnameupdate(sd); // [LuzZza]
}
@@ -1691,6 +1746,11 @@ int guild_broken(int guild_id,int flag)
guild_db->foreach(guild_db,guild_broken_sub,guild_id);
castle_db->foreach(castle_db,castle_guild_broken_sub,guild_id);
guild_storage_delete(guild_id);
+ if( hChSys.ally ) {
+ if( g->channel != NULL ) {
+ clif->chsys_delete(( struct hChSysCh * )g->channel);
+ }
+ }
idb_remove(guild_db,guild_id);
return 0;
}
@@ -1743,15 +1803,13 @@ int guild_gm_changed(int guild_id, int account_id, int char_id)
g->member[0].position = 0; //Position 0: guild Master.
strcpy(g->master, g->member[0].name);
- if (g->member[pos].sd && g->member[pos].sd->fd)
- {
- clif->displaymessage(g->member[pos].sd->fd, msg_txt(678)); //"You no longer are the Guild Master."
+ if (g->member[pos].sd && g->member[pos].sd->fd) {
+ clif->message(g->member[pos].sd->fd, msg_txt(678)); //"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->displaymessage(g->member[0].sd->fd, msg_txt(679)); //"You have become the Guild Master!"
+ if (g->member[0].sd && g->member[0].sd->fd) {
+ clif->message(g->member[0].sd->fd, msg_txt(679)); //"You have become the Guild Master!"
g->member[0].sd->state.gmaster_flag = g;
//Block his skills for 5 minutes to prevent abuse.
guild_block_skill(g->member[0].sd, 300000);
@@ -1780,7 +1838,7 @@ int guild_break(struct map_session_data *sd,char *name)
nullpo_ret(sd);
- if( (g=guild_search(sd->status.guild_id))==NULL )
+ if( (g=sd->guild)==NULL )
return 0;
if(strcmp(g->name,name)!=0)
return 0;
@@ -2136,6 +2194,15 @@ void do_init_guild(void) {
}
void do_final_guild(void) {
+ DBIterator *iter = db_iterator(guild_db);
+ struct guild *g;
+
+ for( g = dbi_first(iter); dbi_exists(iter); g = dbi_next(iter) ) {
+ if( g->channel != NULL )
+ clif->chsys_delete((struct hChSysCh *)g->channel);
+ }
+
+ dbi_destroy(iter);
db_destroy(guild_db);
castle_db->destroy(castle_db,guild_castle_db_final);
diff --git a/src/map/homunculus.c b/src/map/homunculus.c
index 9462ab0d2..904b773eb 100644
--- a/src/map/homunculus.c
+++ b/src/map/homunculus.c
@@ -703,7 +703,7 @@ int merc_hom_change_name_ack(struct map_session_data *sd, char* name, int flag)
normalize_name(name," ");//bugreport:3032
if ( !flag || !strlen(name) ) {
- clif->displaymessage(sd->fd, msg_txt(280)); // You cannot use this name
+ clif->message(sd->fd, msg_txt(280)); // You cannot use this name
return 0;
}
safestrncpy(hd->homunculus.name,name,NAME_LENGTH);
diff --git a/src/map/intif.c b/src/map/intif.c
index ba14ad6f3..73b828f00 100644
--- a/src/map/intif.c
+++ b/src/map/intif.c
@@ -170,10 +170,7 @@ int intif_broadcast(const char* mes, int len, int type)
int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY)
{
// Send to the local players
- if (fontColor == 0xFE000000) // This is main chat message [LuzZza]
- clif->MainChatMessage(mes);
- else
- clif->broadcast2(NULL, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, ALL_CLIENT);
+ clif->broadcast2(NULL, mes, len, fontColor, fontType, fontSize, fontAlign, fontY, ALL_CLIENT);
if (CheckForCharServer())
return 0;
@@ -1888,7 +1885,7 @@ static void intif_parse_Auction_close(int fd)
if( result == 0 )
{
// FIXME: Leeching off a parse function
- clif->Auction_cancelreg(fd, sd);
+ clif->pAuction_cancelreg(fd, sd);
intif_Auction_requestlist(sd->status.char_id, 6, 0, "", 1);
}
}
@@ -1926,7 +1923,7 @@ static void intif_parse_Auction_bid(int fd)
pc_getzeny(sd, bid, LOG_TYPE_AUCTION,NULL);
}
if( result == 1 ) { // To update the list, display your buy list
- clif->Auction_cancelreg(fd, sd);
+ clif->pAuction_cancelreg(fd, sd);
intif_Auction_requestlist(sd->status.char_id, 7, 0, "", 1);
}
}
@@ -2145,7 +2142,7 @@ void intif_parse_MessageToFD(int fd) {
if( sd->bl.id == aid ) {
char msg[512];
safestrncpy(msg, (char*)RFIFOP(fd,12), RFIFOW(fd,2) - 12);
- clif->displaymessage(u_fd,msg);
+ clif->message(u_fd,msg);
}
}
@@ -2181,8 +2178,6 @@ int intif_parse(int fd)
case 0x3800:
if (RFIFOL(fd,4) == 0xFF000000) //Normal announce.
clif->broadcast(NULL, (char *) RFIFOP(fd,16), packet_len-16, 0, ALL_CLIENT);
- else if (RFIFOL(fd,4) == 0xFE000000) //Main chat message [LuzZza]
- clif->MainChatMessage((char *)RFIFOP(fd,16));
else //Color announce.
clif->broadcast2(NULL, (char *) RFIFOP(fd,16), packet_len-16, RFIFOL(fd,4), RFIFOW(fd,8), RFIFOW(fd,10), RFIFOW(fd,12), RFIFOW(fd,14), ALL_CLIENT);
break;
diff --git a/src/map/map.c b/src/map/map.c
index 25bc331fa..db933c2dd 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -83,10 +83,6 @@ char log_db_pw[32] = "ragnarok";
char log_db_db[32] = "log";
Sql* logmysql_handle;
-// This param using for sending mainchat
-// messages like whispers to this nick. [LuzZza]
-char main_chat_nick[16] = "Main";
-
char *INTER_CONF_NAME;
char *LOG_CONF_NAME;
char *MAP_CONF_NAME;
@@ -1701,10 +1697,33 @@ int map_quit(struct map_session_data *sd) {
unit_remove_map(&sd->ed->bl,CLR_TELEPORT);
}
+ if( hChSys.ally && sd->status.guild_id ) {
+ struct guild *g = sd->guild, *sg;
+ if( g ) {
+ if( idb_exists(((struct hChSysCh *)g->channel)->users, sd->status.char_id) )
+ clif->chsys_left((struct hChSysCh *)g->channel,sd);
+ for (i = 0; i < MAX_GUILDALLIANCE; i++) {
+ if( g->alliance[i].guild_id && (sg = guild_search(g->alliance[i].guild_id) ) ) {
+ if( idb_exists(((struct hChSysCh *)sg->channel)->users, sd->status.char_id) )
+ clif->chsys_left((struct hChSysCh *)sg->channel,sd);
+ break;
+ }
+ }
+ }
+ }
+
+ if( sd->channel_count ) {
+ for( i = 0; i < sd->channel_count; i++ ) {
+ if( sd->channels[i] != NULL )
+ clif->chsys_left(sd->channels[i],sd);
+ }
+ if( hChSys.closing )
+ aFree(sd->channels);
+ }
+
unit_remove_map_pc(sd,CLR_TELEPORT);
- if( map[sd->bl.m].instance_id )
- { // Avoid map conflicts and warnings on next login
+ if( map[sd->bl.m].instance_id ) { // Avoid map conflicts and warnings on next login
int16 m;
struct point *pt;
if( map[sd->bl.m].save.map )
@@ -2950,7 +2969,8 @@ void do_final_maps(void) {
}
map[i].skill_count = 0;
}
-
+ if( map[i].channel )
+ clif->chsys_delete(map[i].channel);
}
map_zone_db_clear();
@@ -3435,9 +3455,6 @@ int inter_config_read(char *cfgName)
if( sscanf(line,"%[^:]: %[^\r\n]",w1,w2) < 2 )
continue;
- if(strcmpi(w1, "main_chat_nick")==0)
- safestrncpy(main_chat_nick, w2, sizeof(main_chat_nick));
- else
if(strcmpi(w1,"item_db_db")==0)
strcpy(item_db_db,w2);
else
@@ -3924,6 +3941,7 @@ void do_final(void)
struct s_mapiterator* iter;
ShowStatus("Terminating...\n");
+ hChSys.closing = true;
//Ladies and babies first.
iter = mapit_getallusers();
diff --git a/src/map/map.h b/src/map/map.h
index cd5983686..7892cbfdc 100644
--- a/src/map/map.h
+++ b/src/map/map.h
@@ -17,6 +17,7 @@
struct npc_data;
struct item_data;
+struct hChSysCh;
enum E_MAPSERVER_ST {
MAPSERVER_ST_RUNNING = CORE_ST_LAST,
@@ -585,6 +586,7 @@ struct map_data {
unsigned guildlock :1;
unsigned src4instance : 1; // To flag this map when it's used as a src map for instances
unsigned reset :1; // [Daegaladh]
+ unsigned chsysnolocalaj : 1;
} flag;
struct point save;
struct npc_data *npc[MAX_NPC_PER_MAP];
@@ -619,6 +621,9 @@ struct map_data {
/* Hercules nocast db overhaul */
struct map_zone_data *zone;
+
+ /* Hercules Local Chat */
+ struct hChSysCh *channel;
};
/// Stores information about a remote map (for multi-mapserver setups).
@@ -796,8 +801,6 @@ typedef struct elemental_data TBL_ELEM;
( ((bl) == (struct block_list*)NULL || (bl)->type != (type_)) ? (T ## type_ *)NULL : (T ## type_ *)(bl) )
-extern char main_chat_nick[16];
-
#ifdef BETA_THREAD_TEST
extern char default_codepage[32];
diff --git a/src/map/npc.c b/src/map/npc.c
index eab38886c..fe2e769db 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -3461,6 +3461,8 @@ const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, const char
} else if( map[m].zone != zone ) { /* we do not override :P would mess everything */
map_zone_apply(m,zone,w1,start,buffer,filepath);
}
+ } else if ( !strcmpi(w3,"nomapchannelautojoin") ) {
+ map[m].flag.chsysnolocalaj = state;
} else
ShowError("npc_parse_mapflag: unrecognized mapflag '%s' (file '%s', line '%d').\n", w3, filepath, strline(buffer,start-buffer));
diff --git a/src/map/party.c b/src/map/party.c
index baf680df3..f69a843fc 100644
--- a/src/map/party.c
+++ b/src/map/party.c
@@ -345,7 +345,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->displaymessage(sd->fd, msg_txt(282));
+ clif->message(sd->fd, msg_txt(282));
return 0;
}
@@ -359,7 +359,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->displaymessage(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_txt(81)); // "Your GM level doesn't authorize you to preform this action on the specified player."
return 0;
}
@@ -644,13 +644,13 @@ 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->displaymessage(sd->fd, msg_txt(283));
+ clif->message(sd->fd, msg_txt(283));
return false;
}
if( map[sd->bl.m].flag.partylock )
{
- clif->displaymessage(sd->fd, msg_txt(287));
+ clif->message(sd->fd, msg_txt(287));
return false;
}
@@ -663,7 +663,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->displaymessage(sd->fd, msg_txt(282));
+ clif->message(sd->fd, msg_txt(282));
return false;
}
@@ -674,11 +674,11 @@ bool party_changeleader(struct map_session_data *sd, struct map_session_data *ts
//Change leadership.
p->party.member[mi].leader = 0;
if (p->data[mi].sd->fd)
- clif->displaymessage(p->data[mi].sd->fd, msg_txt(284));
+ clif->message(p->data[mi].sd->fd, msg_txt(284));
p->party.member[tmi].leader = 1;
if (p->data[tmi].sd->fd)
- clif->displaymessage(p->data[tmi].sd->fd, msg_txt(285));
+ clif->message(p->data[tmi].sd->fd, msg_txt(285));
//Update info.
intif_party_leaderchange(p->party.party_id,p->party.member[tmi].account_id,p->party.member[tmi].char_id);
diff --git a/src/map/pc.c b/src/map/pc.c
index aac605d45..6fb45bcfe 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -1068,7 +1068,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
sprintf(buf,"SVN Revision: %s", svn);
else
sprintf(buf,"Unknown Version");
- clif->displaymessage(sd->fd, buf);
+ clif->message(sd->fd, buf);
}
// Message of the Day [Valaris]
@@ -1076,7 +1076,7 @@ bool pc_authok(struct map_session_data *sd, int login_id2, time_t expiration_tim
if (battle_config.motd_type)
clif->disp_onlyself(sd,motd_text[i],strlen(motd_text[i]));
else
- clif->displaymessage(sd->fd, motd_text[i]);
+ clif->message(sd->fd, motd_text[i]);
}
// message of the limited time of the account
@@ -1234,10 +1234,9 @@ int pc_reg_received(struct map_session_data *sd)
intif_Mail_requestinbox(sd->status.char_id, 0); // MAIL SYSTEM - Request Mail Inbox
intif_request_questlog(sd);
- if (sd->state.connect_new == 0 && sd->fd)
- { //Character already loaded map! Gotta trigger LoadEndAck manually.
+ if (sd->state.connect_new == 0 && sd->fd) { //Character already loaded map! Gotta trigger LoadEndAck manually.
sd->state.connect_new = 1;
- clif->LoadEndAck(sd->fd, sd);
+ clif->pLoadEndAck(sd->fd, sd);
}
pc_inventory_rentals(sd);
@@ -3974,13 +3973,13 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
if( map[sd->bl.m].flag.nodrop )
{
- clif->displaymessage (sd->fd, msg_txt(271));
+ clif->message (sd->fd, msg_txt(271));
return 0; //Can't drop items in nodrop mapflag maps.
}
if( !pc_candrop(sd,&sd->status.inventory[n]) )
{
- clif->displaymessage (sd->fd, msg_txt(263));
+ clif->message (sd->fd, msg_txt(263));
return 0;
}
@@ -4113,7 +4112,7 @@ int pc_isUseitem(struct map_session_data *sd,int n)
case 14591: // Siege Teleport Scroll
if( sd->duel_group && !battle_config.duel_allow_teleport )
{
- clif->displaymessage(sd->fd, msg_txt(663));
+ clif->message(sd->fd, msg_txt(663));
return 0;
}
if( nameid != 601 && nameid != 12212 && map[sd->bl.m].flag.noreturn )
@@ -4392,7 +4391,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)) )
{ // Check item trade restrictions [Skotlex]
- clif->displaymessage (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_txt(264));
return 1;
}
@@ -4556,7 +4555,7 @@ int pc_show_steal(struct block_list *bl,va_list ap)
sprintf(output,"%s stole an Unknown Item (id: %i).",sd->status.name, itemid);
else
sprintf(output,"%s stole %s.",sd->status.name,item->jname);
- clif->displaymessage( ((struct map_session_data *)bl)->fd, output);
+ clif->message( ((struct map_session_data *)bl)->fd, output);
return 0;
}
@@ -4754,9 +4753,14 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
sd->regen.state.gc = 0;
// make sure vending is allowed here
if (sd->state.vending && map[m].flag.novending) {
- clif->displaymessage (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
+ clif->message (sd->fd, msg_txt(276)); // "You can't open a shop on this map"
vending_closevending(sd);
}
+
+ if( hChSys.local && map[sd->bl.m].channel && idb_exists(map[sd->bl.m].channel->users, sd->status.char_id) ) {
+ clif->chsys_left(map[sd->bl.m].channel,sd);
+ }
+
}
if( m < 0 )
@@ -4800,7 +4804,7 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
}
if (sd->state.vending && map_getcell(m,x,y,CELL_CHKNOVENDING)) {
- clif->displaymessage (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
+ clif->message (sd->fd, msg_txt(204)); // "You can't open a shop on this cell."
vending_closevending(sd);
}
@@ -4938,16 +4942,13 @@ int pc_memo(struct map_session_data* sd, int pos)
int pc_checkskill(struct map_session_data *sd,uint16 skill_id)
{
if(sd == NULL) return 0;
- if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX )
- {
+ if( skill_id >= GD_SKILLBASE && skill_id < GD_MAX ) {
struct guild *g;
- if( sd->status.guild_id>0 && (g=guild_search(sd->status.guild_id))!=NULL)
+ if( sd->status.guild_id>0 && (g=sd->guild)!=NULL)
return guild_checkskill(g,skill_id);
return 0;
- }
- else if(skill_id >= ARRAYLENGTH(sd->status.skill) )
- {
+ } else if(skill_id >= ARRAYLENGTH(sd->status.skill) ) {
ShowError("pc_checkskill: Invalid skill id %d (char_id=%d).\n", skill_id, sd->status.char_id);
return 0;
}
@@ -8555,7 +8556,7 @@ int pc_equipitem(struct map_session_data *sd,int n,int req_pos)
if(pos & EQP_SHOES)
clif->changelook(&sd->bl,LOOK_SHOES,0);
- if( pos&EQP_GARMENT ) {
+ if( pos&EQP_GARMENT && pc_checkequip(sd,EQP_COSTUME_GARMENT) == -1 ) {
sd->status.robe = id ? id->look : 0;
clif->changelook(&sd->bl, LOOK_ROBE, sd->status.robe);
}
diff --git a/src/map/pc.h b/src/map/pc.h
index f7afdd223..af61b97e9 100644
--- a/src/map/pc.h
+++ b/src/map/pc.h
@@ -137,7 +137,6 @@ struct map_session_data {
unsigned int showdelay :1;
unsigned int showexp :1;
unsigned int showzeny :1;
- unsigned int mainchat :1; //[LuzZza]
unsigned int noask :1; // [LuzZza]
unsigned int trading :1; //[Skotlex] is 1 only after a trade has started.
unsigned int deal_locked :2; //1: Clicked on OK. 2: Clicked on TRADE
@@ -386,7 +385,7 @@ struct map_session_data {
bool party_joining; // whether the char is accepting party invitation
int party_invite, party_invite_account; // for handling party invitation (holds party id and account id)
int adopt_invite; // Adoption
-
+ struct guild *guild;/* [Ind/Hercules] speed everything up */
int guild_invite,guild_invite_account;
int guild_emblem_id,guild_alliance,guild_alliance_account;
short guild_x,guild_y; // For guildmate position display. [Skotlex] should be short [zzo]
@@ -496,7 +495,14 @@ struct map_session_data {
int friend_req;
int shadowform_id;
-
+
+ /* [Ind/Hercules] */
+ struct hChSysCh **channels;
+ unsigned char channel_count;
+ struct hChSysCh *gcbind;
+ bool stealth;
+ unsigned char fontcolor; /* debug-only */
+
// temporary debugging of bug #3504
const char* delunit_prevfile;
int delunit_prevline;
diff --git a/src/map/pc_groups.h b/src/map/pc_groups.h
index 65c48935a..dea689ebd 100644
--- a/src/map/pc_groups.h
+++ b/src/map/pc_groups.h
@@ -43,6 +43,7 @@ enum e_pc_permission {
PC_PERM_DISABLE_PVM = 0x040000,
PC_PERM_DISABLE_PVP = 0x080000,
PC_PERM_DISABLE_CMD_DEAD = 0x100000,
+ PC_PERM_HCHSYS_ADMIN = 0x200000,
};
static const struct {
@@ -70,6 +71,7 @@ static const struct {
{ "disable_pvm", PC_PERM_DISABLE_PVM },
{ "disable_pvp", PC_PERM_DISABLE_PVP },
{ "disable_commands_when_dead", PC_PERM_DISABLE_CMD_DEAD },
+ { "hchsys_admin", PC_PERM_HCHSYS_ADMIN },
};
#endif // _PC_GROUPS_H_
diff --git a/src/map/pet.c b/src/map/pet.c
index 3edf3367c..28f841809 100644
--- a/src/map/pet.c
+++ b/src/map/pet.c
@@ -636,7 +636,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->displaymessage(sd->fd, msg_txt(280)); // You cannot use this name for your pet.
+ clif->message(sd->fd, msg_txt(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 a6bbdb0bd..e852a6e1e 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -7262,22 +7262,16 @@ BUILDIN_FUNC(strcharinfo)
script_pushstrcopy(st,sd->status.name);
break;
case 1:
- if( ( p = party_search(sd->status.party_id) ) != NULL )
- {
+ if( ( p = party_search(sd->status.party_id) ) != NULL ) {
script_pushstrcopy(st,p->party.name);
- }
- else
- {
+ } else {
script_pushconststr(st,"");
}
break;
case 2:
- if( ( g = guild_search(sd->status.guild_id) ) != NULL )
- {
+ if( ( g = sd->guild ) != NULL ) {
script_pushstrcopy(st,g->name);
- }
- else
- {
+ } else {
script_pushconststr(st,"");
}
break;
@@ -12683,7 +12677,7 @@ BUILDIN_FUNC(recovery)
status_revive(&sd->bl, 100, 100);
else
status_percent_heal(&sd->bl, 100, 100);
- clif->displaymessage(sd->fd,msg_txt(680));
+ clif->message(sd->fd,msg_txt(680));
}
mapit_free(iter);
return 0;
@@ -12898,7 +12892,7 @@ BUILDIN_FUNC(message)
if((pl_sd=map_nick2sd((char *) player)) == NULL)
return 0;
- clif->displaymessage(pl_sd->fd, msg);
+ clif->message(pl_sd->fd, msg);
return 0;
}
@@ -12919,7 +12913,7 @@ BUILDIN_FUNC(npctalk)
safestrncpy(name, nd->name, sizeof(name));
strtok(name, "#"); // discard extra name identifier if present
safesnprintf(message, sizeof(message), "%s : %s", name, str);
- clif->message(&nd->bl, message);
+ clif->disp_overhead(&nd->bl, message);
}
return 0;
@@ -15346,7 +15340,7 @@ BUILDIN_FUNC(unitattack)
switch( unit_bl->type )
{
case BL_PC:
- clif->ActionRequest_sub(((TBL_PC *)unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, gettick());
+ clif->pActionRequest_sub(((TBL_PC *)unit_bl), actiontype > 0 ? 0x07 : 0x00, target_bl->id, gettick());
script_pushint(st, 1);
return 0;
case BL_MOB:
@@ -15404,9 +15398,9 @@ BUILDIN_FUNC(unittalk)
struct StringBuf sbuf;
StringBuf_Init(&sbuf);
StringBuf_Printf(&sbuf, "%s : %s", status_get_name(bl), message);
- clif->message(bl, StringBuf_Value(&sbuf));
+ clif->disp_overhead(bl, StringBuf_Value(&sbuf));
if( bl->type == BL_PC )
- clif->displaymessage(((TBL_PC*)bl)->fd, StringBuf_Value(&sbuf));
+ clif->message(((TBL_PC*)bl)->fd, StringBuf_Value(&sbuf));
StringBuf_Destroy(&sbuf);
}
diff --git a/src/map/skill.c b/src/map/skill.c
index ea70e2fe2..d6b06256e 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -554,7 +554,7 @@ int skillnotok (uint16 skill_id, struct map_session_data *sd)
// uncomment for more verbose message.
//char output[150];
//sprintf(output, msg_txt(662), battle_config.min_npc_vendchat_distance);
- //clif->displaymessage(sd->fd, output);
+ //clif->message(sd->fd, output);
clif->skill_fail(sd,skill_id,USESKILL_FAIL_THERE_ARE_NPC_AROUND,0);
return 1;
}
@@ -5069,7 +5069,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
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->displaymessage(sd->fd, msg_txt(669));
+ clif->message(sd->fd, msg_txt(669));
}
break;
@@ -5747,7 +5747,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
//NOTE: mobs don't have the sprite animation that is used when performing this skill (will cause glitches)
char temp[70];
snprintf(temp, sizeof(temp), "%s : %s !!",md->name,skill_db[skill_id].desc);
- clif->message(&md->bl,temp);
+ clif->disp_overhead(&md->bl,temp);
}
break;
@@ -5972,7 +5972,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
}
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));
- clif->displaymessage(sd->fd, output); //"Duel: Can't use %s in duel."
+ clif->message(sd->fd, output); //"Duel: Can't use %s in duel."
break;
}
@@ -12426,7 +12426,7 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id
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));
- clif->displaymessage(sd->fd, output); //"Duel: Can't use %s in duel."
+ clif->message(sd->fd, output); //"Duel: Can't use %s in duel."
return 0;
}
break;
diff --git a/src/map/storage.c b/src/map/storage.c
index 53058f9af..f9c343f09 100644
--- a/src/map/storage.c
+++ b/src/map/storage.c
@@ -100,7 +100,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
return 1;
}
@@ -150,7 +150,7 @@ static int storage_additem(struct map_session_data* sd, struct item* item_data,
if( !itemdb_canstore(item_data, pc_get_group_level(sd)) )
{ //Check if item is storable. [Skotlex]
- clif->displaymessage (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_txt(264));
return 1;
}
@@ -395,7 +395,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
return 1;
}
@@ -444,7 +444,7 @@ 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->displaymessage (sd->fd, msg_txt(264));
+ clif->message (sd->fd, msg_txt(264));
return 1;
}
diff --git a/src/map/trade.c b/src/map/trade.c
index a8174be97..0b9609322 100644
--- a/src/map/trade.c
+++ b/src/map/trade.c
@@ -32,7 +32,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
nullpo_retv(sd);
if (map[sd->bl.m].flag.notrade) {
- clif->displaymessage (sd->fd, msg_txt(272));
+ clif->message (sd->fd, msg_txt(272));
return; //Can't trade in notrade mapflag maps.
}
@@ -71,7 +71,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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
clif->tradestart(sd, 2); // GM is not allowed to trade
return;
}
@@ -356,14 +356,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->displaymessage (sd->fd, msg_txt(260));
+ clif->message (sd->fd, msg_txt(260));
clif->tradeitemok(sd, index+2, 1);
return;
}
if( item->expire_time )
{ // Rental System
- clif->displaymessage (sd->fd, msg_txt(260));
+ clif->message (sd->fd, msg_txt(260));
clif->tradeitemok(sd, index+2, 1);
return;
}
diff --git a/src/map/vending.c b/src/map/vending.c
index ea0c5fe2a..1f96672f4 100644
--- a/src/map/vending.c
+++ b/src/map/vending.c
@@ -57,7 +57,7 @@ void vending_vendinglistreq(struct map_session_data* sd, 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->displaymessage(sd->fd, msg_txt(246));
+ clif->message(sd->fd, msg_txt(246));
return;
}
@@ -286,7 +286,7 @@ void vending_openvending(struct map_session_data* sd, const char* message, const
}
if( i != j )
- clif->displaymessage (sd->fd, msg_txt(266)); //"Some of your items cannot be vended and were removed from the shop."
+ clif->message (sd->fd, msg_txt(266)); //"Some of your items cannot be vended and were removed from the shop."
if( i == 0 )
{ // no valid item found