// 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 #include #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\n", 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; }