summaryrefslogtreecommitdiff
path: root/src/map/utils/formatutils.c
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-11-20 21:47:38 +0300
committerAndrei Karas <akaras@inbox.ru>2014-11-20 21:47:38 +0300
commitbf79b543550529585ffb162799663fd3d7adc95b (patch)
tree4af19013f3f777a12541d3567838c9699f1c983a /src/map/utils/formatutils.c
parent72dbae9ff75d62d5c6406169515b8054e1d84362 (diff)
downloadevol-hercules-bf79b543550529585ffb162799663fd3d7adc95b.tar.gz
evol-hercules-bf79b543550529585ffb162799663fd3d7adc95b.tar.bz2
evol-hercules-bf79b543550529585ffb162799663fd3d7adc95b.tar.xz
evol-hercules-bf79b543550529585ffb162799663fd3d7adc95b.zip
Use format script function in 'l' script function.
Diffstat (limited to 'src/map/utils/formatutils.c')
-rw-r--r--src/map/utils/formatutils.c105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/map/utils/formatutils.c b/src/map/utils/formatutils.c
new file mode 100644
index 0000000..741b2a9
--- /dev/null
+++ b/src/map/utils/formatutils.c
@@ -0,0 +1,105 @@
+// 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 "map/utils/formatutils.h"
+#include "map/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));
+ 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");
+ strcpy(line, lang_pctrans(buf, sd));
+ aFree (buf);
+ }
+ else
+ {
+ strcpy(line, lang_pctrans(script_getstr(st, 2), sd));
+ }
+ }
+ else
+ {
+ strcpy(line, script_getstr(st, 2));
+ }
+
+ char *ptr = line;
+ int idx = 3;
+ int sz = strlen(line);
+ while (script_hasdata(st, idx))
+ {
+ char *tmp = strstr(ptr, "@@");
+ if (!tmp)
+ break;
+ 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;
+}