From 58b8c8d8cb9f78537495f908887fea9d0a451637 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 4 Jul 2015 22:37:51 +0300 Subject: Rename login/char/map dirs to elogin/echar/emap for avoid conflicts with hercules. --- src/emap/utils/formatutils.c | 116 +++++++++++++++++++++++++++++++++++++++++++ src/emap/utils/formatutils.h | 9 ++++ 2 files changed, 125 insertions(+) create mode 100644 src/emap/utils/formatutils.c create mode 100644 src/emap/utils/formatutils.h (limited to 'src/emap/utils') diff --git a/src/emap/utils/formatutils.c b/src/emap/utils/formatutils.c new file mode 100644 index 0000000..70a7541 --- /dev/null +++ b/src/emap/utils/formatutils.c @@ -0,0 +1,116 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 Evol developers + +#include +#include +#include + +#include "common/HPMi.h" +#include "common/malloc.h" +#include "common/mmo.h" +#include "common/socket.h" +#include "common/strlib.h" +#include "map/script.h" + +#include "map/chrif.h" +#include "map/clif.h" +#include "map/npc.h" +#include "map/pc.h" +#include "map/script.h" +#include "map/quest.h" + +#include "emap/utils/formatutils.h" +#include "emap/lang.h" + +int format_sub(struct script_state* st, int translate) +{ + TBL_PC *sd = NULL; + if (translate) + sd = script->rid2sd(st); + + if (!script_hasdata(st, 3)) + { + if (sd) + { + if (translate == 2) + { + char *buf = aCalloc (strlen(script_getstr(st, 2)) + 3, sizeof(char)); + strcpy (buf, script_getstr(st, 2)); + if (sd->status.sex) + strcat (buf, "#1"); + else + strcat (buf, "#0"); + script_pushstr(st, aStrdup(lang_pctrans(buf, sd))); + aFree (buf); + } + else + { + script_pushstr(st, aStrdup(lang_pctrans(script_getstr(st, 2), sd))); + } + } + else + { + script_pushstr(st, aStrdup(script_getstr(st, 2))); + } + return 1; + } + + char *line = (char *) aCalloc (550, sizeof (char)); + int idx = 3; + if (sd) + { + if (translate == 2) + { + const char *str = NULL; + char *buf = NULL; + if (sd->status.sex) + { + str = script_getstr(st, 3); + buf = aCalloc (strlen(str) + 3, sizeof(char)); + strcpy (buf, str); + strcat (buf, "#1"); + } + else + { + str = script_getstr(st, 2); + buf = aCalloc (strlen(str) + 3, sizeof(char)); + strcpy (buf, str); + strcat (buf, "#0"); + } + strcpy(line, lang_pctrans(buf, sd)); + aFree (buf); + idx = 4; + } + else + { + strcpy(line, lang_pctrans(script_getstr(st, 2), sd)); + } + } + else + { + strcpy(line, script_getstr(st, 2)); + } + + char *ptr = line; + int sz = strlen(line); + while (script_hasdata(st, idx)) + { + char *tmp = strstr(ptr, "@@"); + if (!tmp) + break; + const char *item = script_getstr(st, idx); + int len = strlen(item); + if (len > 50) + break; + sz += len - 2; + if (sz > 490) + break; + memmove(tmp + len, tmp + 2, strlen(tmp + 2)); + memcpy(tmp, item, len); + ptr = tmp + len; + idx ++; + } + + script_pushstr(st, line); + return 0; +} diff --git a/src/emap/utils/formatutils.h b/src/emap/utils/formatutils.h new file mode 100644 index 0000000..361ad84 --- /dev/null +++ b/src/emap/utils/formatutils.h @@ -0,0 +1,9 @@ +// Copyright (c) Copyright (c) Hercules Dev Team, licensed under GNU GPL. +// Copyright (c) 2014 Evol developers + +#ifndef EVOL_MAP_UTILS_FORMATUTILS +#define EVOL_MAP_UTILS_FORMATUTILS + +int format_sub(struct script_state* st, int translate); + +#endif // EVOL_MAP_UTILS_FORMATUTILS -- cgit v1.2.3-70-g09d2