summaryrefslogtreecommitdiff
path: root/src/map/clif.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/clif.c')
-rw-r--r--src/map/clif.c376
1 files changed, 0 insertions, 376 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
deleted file mode 100644
index 127cd16..0000000
--- a/src/map/clif.c
+++ /dev/null
@@ -1,376 +0,0 @@
-// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL.
-// Copyright (c) 2014 Evol developers
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "../../../common/HPMi.h"
-#include "../../../common/malloc.h"
-#include "../../../common/mmo.h"
-#include "../../../common/socket.h"
-#include "../../../common/strlib.h"
-#include "../../../common/cbasetypes.h"
-#include "../../../map/mob.h"
-#include "../../../map/npc.h"
-#include "../../../map/pc.h"
-#include "../../../map/quest.h"
-
-#include "map/clif.h"
-#include "map/lang.h"
-#include "map/send.h"
-#include "map/data/mapd.h"
-#include "map/data/session.h"
-#include "map/struct/mapdext.h"
-#include "map/struct/sessionext.h"
-
-void eclif_quest_send_list(TBL_PC *sd)
-{
- if (!sd)
- {
- hookStop();
- return;
- }
-
- int fd = sd->fd;
- int i;
- int info_len = 15;
- int len = sd->avail_quests * info_len + 8;
- WFIFOHEAD(fd,len);
- WFIFOW(fd, 0) = 0x97a;
- WFIFOW(fd, 2) = len;
- WFIFOL(fd, 4) = sd->avail_quests;
-
- for (i = 0; i < sd->avail_quests; i++ )
- {
- struct quest_db *qi = quest->db(sd->quest_log[i].quest_id);
- if (!qi)
- continue;
- WFIFOL(fd, i * info_len + 8) = sd->quest_log[i].quest_id;
- WFIFOB(fd, i * info_len + 12) = sd->quest_log[i].count[0]; // was state
- WFIFOL(fd, i * info_len + 13) = sd->quest_log[i].time - qi->time;
- WFIFOL(fd, i * info_len + 17) = sd->quest_log[i].time;
- WFIFOW(fd, i * info_len + 21) = 0;
- }
-
- WFIFOSET(fd, len);
- hookStop();
-}
-
-void eclif_quest_add(TBL_PC *sd, struct quest *qd)
-{
- if (!sd)
- {
- hookStop();
- return;
- }
- int fd = sd->fd;
- struct quest_db *qi = quest->db(qd->quest_id);
-
- if (!qi)
- {
- hookStop();
- return;
- }
-
- WFIFOHEAD(fd, 107);
- WFIFOW(fd, 0) = 0x2b3;
- WFIFOL(fd, 2) = qd->quest_id;
- WFIFOB(fd, 6) = qd->count[0]; // was state;
- WFIFOB(fd, 7) = qd->time - qi->time;
- WFIFOL(fd, 11) = qd->time;
- WFIFOW(fd, 15) = 0;
- WFIFOSET(fd, 107);
- hookStop();
-}
-
-void eclif_charnameack(int *fdPtr, struct block_list *bl)
-{
- if (!bl)
- {
- hookStop();
- return;
- }
- if (bl->type == BL_NPC)
- {
- int fd = *fdPtr;
- TBL_PC* sd = (TBL_PC*)session[fd]->session_data;
- if (!sd)
- {
- hookStop();
- return;
- }
- const char *tr = lang_pctrans(((TBL_NPC*)bl)->name, sd);
- const int trLen = strlen(tr);
- const int len = 8 + trLen;
- // if no recipient specified just update nearby clients
- if (fd == 0)
- {
- char *buf;
- CREATE(buf, char, len);
- WBUFW(buf, 0) = 0xB01;
- WBUFW(buf, 2) = len;
- WBUFL(buf, 4) = bl->id;
- memcpy(WBUFP(buf, 8), tr, trLen);
- clif->send(buf, len, bl, AREA);
- aFree(buf);
- }
- else
- {
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0xB01;
- WFIFOW(fd, 2) = len;
- WFIFOL(fd, 4) = bl->id;
- memcpy(WFIFOP(fd, 8), tr, trLen);
- WFIFOSET(fd, len);
- }
- hookStop();
- }
- else if (bl->type == BL_MOB)
- {
- struct mob_data *md = (struct mob_data *)bl;
- if (!md)
- {
- hookStop();
- return;
- }
- if (md->guardian_data && md->guardian_data->g)
- return; // allow default code to work
- int fd = *fdPtr;
- TBL_PC* sd = (TBL_PC*)session[fd]->session_data;
- if (!sd)
- {
- hookStop();
- return;
- }
-
- char tmpBuf[25];
- char *ptr = tmpBuf;
- int f;
- memcpy(tmpBuf, md->name, 24);
- tmpBuf[24] = 0;
- for (f = 23; f > 1; f --)
- {
- if (tmpBuf[f] == ' ')
- tmpBuf[f] = 0;
- else
- break;
- }
- for (f = 0; f < 24; f ++)
- {
- if (*ptr == ' ')
- ptr ++;
- else
- break;
- }
- const char *tr = lang_pctrans(ptr, sd);
- const int trLen = strlen(tr);
- const int len = 8 + trLen;
-
- // if no recipient specified just update nearby clients
- if (fd == 0)
- {
- char *buf;
- CREATE(buf, char, len);
- WBUFW(buf, 0) = 0xB01;
- WBUFW(buf, 2) = len;
- WBUFL(buf, 4) = bl->id;
- memcpy(WBUFP(buf, 8), tr, trLen);
- clif->send(buf, len, bl, AREA);
- aFree(buf);
- }
- else
- {
- WFIFOHEAD(fd, len);
- WFIFOW(fd, 0) = 0xB01;
- WFIFOW(fd, 2) = len;
- WFIFOL(fd, 4) = bl->id;
- memcpy(WFIFOP(fd, 8), tr, trLen);
- WFIFOSET(fd, len);
- }
- hookStop();
- }
-}
-
-#define equipPos(index, field) \
- equip = sd->equip_index[index]; \
- if (equip >= 0) \
- { \
- item = sd->inventory_data[equip]; \
- if (item && item->look) \
- send_changelook(fd, id, field, item->look); \
- }
-
-static void eclif_send_additional_slots(TBL_PC* sd, TBL_PC* sd2)
-{
- if (!sd || !sd2)
- return;
-
- const int id = sd->bl.id;
- const int fd = sd2->fd;
-
- struct item_data *item;
- short equip;
- struct MapdExt *data = mapd_get(sd->bl.m);
- if (!data || data->invisible)
- return;
-
- equipPos(EQI_HEAD_LOW, LOOK_HEAD_BOTTOM);
- equipPos(EQI_HEAD_TOP, LOOK_HEAD_TOP);
- equipPos(EQI_HEAD_MID, LOOK_HEAD_MID);
- equipPos(EQI_GARMENT, LOOK_ROBE);
- equipPos(EQI_SHOES, LOOK_SHOES);
- equipPos(EQI_COSTUME_TOP, 13);
- equipPos(EQI_COSTUME_MID, 14);
- equipPos(EQI_COSTUME_LOW, 15);
- equipPos(EQI_COSTUME_GARMENT, 16);
- equipPos(EQI_ARMOR, 17);
- //skipping SHADOW slots
-}
-
-void eclif_getareachar_unit_post(TBL_PC* sd, struct block_list *bl)
-{
- if (!bl)
- return;
- if (bl->type == BL_PC)
- {
- eclif_send_additional_slots(sd, (TBL_PC *)bl);
- eclif_send_additional_slots((TBL_PC *)bl, sd);
- }
-}
-
-void eclif_authok_post(TBL_PC *sd)
-{
- if (!sd)
- return;
-
- eclif_send_additional_slots(sd, sd);
- send_pc_info(&sd->bl, &sd->bl, SELF);
- struct MapdExt *data = mapd_get(sd->bl.m);
- int mask = data ? data->mask : 1;
- send_mapmask(sd->fd, mask);
-}
-
-void eclif_changemap_post(TBL_PC *sd, short *m,
- int *x __attribute__ ((unused)), int *y __attribute__ ((unused)))
-{
- if (!sd)
- return;
- struct MapdExt *data = mapd_get(*m);
- int mask = data ? data->mask : 1;
- send_mapmask(sd->fd, mask);
-}
-
-void eclif_handle_invisible_map(struct block_list *bl, enum send_target target __attribute__ ((unused)))
-{
- if (!bl || bl->type != BL_PC)
- return;
- struct MapdExt *data = mapd_get(bl->m);
- if (data && data->invisible)
- hookStop();
-}
-
-void eclif_sendlook(struct block_list *bl,
- int *id __attribute__ ((unused)),
- int *type __attribute__ ((unused)),
- int *val __attribute__ ((unused)),
- int *val2 __attribute__ ((unused)),
- enum send_target *target)
-{
- if (*target == SELF)
- return;
- eclif_handle_invisible_map(bl, *target);
-}
-
-bool eclif_send(const void* buf __attribute__ ((unused)),
- int *len __attribute__ ((unused)),
- struct block_list* bl,
- enum send_target *type)
-{
- if (*type == SELF)
- return true;
- eclif_handle_invisible_map(bl, *type);
- return true;
-}
-
-void eclif_set_unit_idle(struct block_list* bl, TBL_PC *tsd, enum send_target *target)
-{
- if (tsd && bl && bl->id == tsd->bl.id && *target == SELF)
- return;
-
- eclif_handle_invisible_map(bl, *target);
-}
-
-int eclif_send_actual(int *fd, void *buf, int *len)
-{
- if (*len >= 2)
- {
- const int packet = RBUFW (buf, 0);
- if (packet >= 0xb02 && packet <= 0xb10)
- {
- struct SessionExt *data = session_get(*fd);
- if (!data)
- return 0;
- if (data->clientVersion < 3)
- { // not sending new packets to old clients
-// ShowWarning("skip packet %d\n", packet);
- hookStop();
- return 0;
- }
- }
- if (packet >= 0xb03 && packet <= 0xb0a)
- {
- struct SessionExt *data = session_get(*fd);
- if (!data)
- return 0;
- if (data->clientVersion < 4)
- { // not sending new packets to old clients
-// ShowWarning("skip packet %d\n", packet);
- hookStop();
- return 0;
- }
- }
- if (packet == 0xb0b)
- {
- struct SessionExt *data = session_get(*fd);
- if (!data)
- return 0;
- if (data->clientVersion < 5)
- { // not sending new packets to old clients
-// ShowWarning("skip packet %d\n", packet);
- hookStop();
- return 0;
- }
- }
- }
- return 0;
-}
-
-void eclif_set_unit_idle_post(struct block_list* bl, TBL_PC *tsd,
- enum send_target *target)
-{
- if (!bl || !tsd)
- return;
-
- if (bl->type == BL_MOB)
- send_mob_info(bl, &tsd->bl, *target);
- else if (bl->type == BL_PC)
- send_pc_info(bl, &tsd->bl, *target);
- else if (bl->type == BL_NPC)
- send_npc_info(bl, &tsd->bl, *target);
-}
-
-void eclif_set_unit_walking(struct block_list* bl, TBL_PC *tsd,
- struct unit_data* ud, enum send_target *target)
-{
- TBL_PC *sd = BL_CAST(BL_PC, ud->bl);
- if (!sd || !pc_isinvisible(sd))
- send_advmoving(ud, tsd ? &tsd->bl : bl, *target);
-}
-
-void eclif_move(struct unit_data *ud)
-{
- TBL_PC *sd = BL_CAST(BL_PC, ud->bl);
- if (!sd || !pc_isinvisible(sd))
- send_advmoving(ud, ud->bl, AREA_WOS);
-}