summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-10-15 14:22:23 -0600
committerJared Adams <jaxad0127@gmail.com>2009-10-15 14:22:23 -0600
commit06d0d5e83c628c0117cbd057fde6ae8bcba13e12 (patch)
treeb419df9837c4a47bcb56335596f41fed96be18fa
parentd6dbf554bd866124b7c676187c351c3f67fd3906 (diff)
downloadtmwa-06d0d5e83c628c0117cbd057fde6ae8bcba13e12.tar.gz
tmwa-06d0d5e83c628c0117cbd057fde6ae8bcba13e12.tar.bz2
tmwa-06d0d5e83c628c0117cbd057fde6ae8bcba13e12.tar.xz
tmwa-06d0d5e83c628c0117cbd057fde6ae8bcba13e12.zip
Add a tool for changing skills
-rw-r--r--src/tool/skillfrob.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/tool/skillfrob.c b/src/tool/skillfrob.c
new file mode 100644
index 0000000..3d6132c
--- /dev/null
+++ b/src/tool/skillfrob.c
@@ -0,0 +1,79 @@
+// Compile with
+// gcc -m32 -Wall -Wno-pointer-sign -fno-strict-aliasing -I src/char -I src/common src/tool/skillfrob.c -o skillfrob src/common/timer.o src/common/malloc.o src/common/socket.o src/common/lock.o src/common/db.o src/char/int_storage.o src/char/inter.o src/char/int_party.o src/char/int_guild.o
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "../common/mmo.h"
+#include "../char/char.c"
+
+unsigned char skills[MAX_SKILL];
+
+void transform_char(struct mmo_charstatus *p)
+{
+ int i;
+
+ for (i = 0; i < MAX_SKILL; i++)
+ {
+ if (skills[(*p).skill[i].id])
+ {
+ (*p).skill[i].lv = 0;
+ (*p).skill[i].flags = 0;
+ }
+ }
+}
+
+int mmo_char_convert()
+{
+ char line[965536];
+ int ret;
+ struct mmo_charstatus char_dat;
+ FILE *ifp,*ofp;
+
+ ifp=stdin;
+ ofp=stdout;
+ while(fgets(line,65535,ifp)){
+ memset(&char_dat,0,sizeof(struct mmo_charstatus));
+ ret=mmo_char_fromstr(line,&char_dat);
+ if(ret){
+ transform_char(&char_dat);
+ mmo_char_tostr(line,&char_dat);
+ fprintf(ofp,"%s" RETCODE,line);
+ }
+ }
+ fcloseall();
+ return 0;
+}
+
+int init(int count, char **translates)
+{
+ int i, skill;
+
+ memset(skills, 0, sizeof(skills));
+
+ for (i = 0; i < count; i++) {
+ skill = atoi(translates[i]);
+ if (skill > 0)
+ {
+ skills[skill] = 1;
+ }
+ }
+
+ return 0;
+}
+
+int main(int argc,char *argv[])
+{
+ if(argc < 2) {
+ printf("Usage: %s skillid1 skillid2 ...\n", argv[0]);
+ exit(0);
+ }
+ if (init(argc - 1, argv + 1))
+ return 1;
+
+ mmo_char_convert();
+
+ return 0;
+}
+
+/* satisfy linker */
+void set_termfunc(void (*termfunc)(void)) {};