summaryrefslogtreecommitdiff
path: root/src/emap/utils
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-07-04 22:37:51 +0300
committerAndrei Karas <akaras@inbox.ru>2015-07-04 22:37:51 +0300
commit58b8c8d8cb9f78537495f908887fea9d0a451637 (patch)
tree74438cc91f5c5a6a7a953c98aa52106eb88b250f /src/emap/utils
parent857c86d93ebd68e5edbbe14ce26a16a967622822 (diff)
downloadevol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.gz
evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.bz2
evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.tar.xz
evol-hercules-58b8c8d8cb9f78537495f908887fea9d0a451637.zip
Rename login/char/map dirs to elogin/echar/emap for avoid conflicts with hercules.
Diffstat (limited to 'src/emap/utils')
-rw-r--r--src/emap/utils/formatutils.c116
-rw-r--r--src/emap/utils/formatutils.h9
2 files changed, 125 insertions, 0 deletions
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 <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 "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