summaryrefslogtreecommitdiff
path: root/src/tool/convert.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tool/convert.cpp')
-rw-r--r--src/tool/convert.cpp302
1 files changed, 0 insertions, 302 deletions
diff --git a/src/tool/convert.cpp b/src/tool/convert.cpp
deleted file mode 100644
index e256fc9..0000000
--- a/src/tool/convert.cpp
+++ /dev/null
@@ -1,302 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-#define MAX_INVENTORY 100
-#define MAX_CART 100
-#define MAX_SKILL 350
-#define GLOBAL_REG_NUM 16
-
-struct item
-{
- int id;
- short nameid;
- short amount;
- short equip;
- char identify;
- char refine;
- char attribute;
- short card[4];
-};
-struct point
-{
- char map[16];
- short x, y;
-};
-struct skill
-{
- unsigned short id, lv, flag;
-};
-struct global_reg
-{
- char str[16];
- int value;
-};
-
-struct mmo_charstatus
-{
- int char_id;
- int account_id;
- int base_exp, job_exp, zeny;
-
- short class;
- short status_point, skill_point;
- short hp, max_hp, sp, max_sp;
- short option, karma, manner;
- short hair, hair_color, clothes_color;
- int party_id, guild_id, pet_id;
-
- short weapon, shield;
- short head_top, head_mid, head_bottom;
-
- char name[24];
- unsigned char base_level, job_level;
- unsigned char str, agi, vit, int_, dex, luk, char_num, sex;
-
- struct point last_point, save_point, memo_point[3];
- struct item inventory[MAX_INVENTORY], cart[MAX_CART];
- struct skill skill[MAX_SKILL];
- int global_reg_num;
- struct global_reg global_reg[GLOBAL_REG_NUM];
-};
-
-int mmo_char_tostr (char *str, struct mmo_charstatus *p)
-{
- int i;
- sprintf (str, "%d\t%d,%d\t%s\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" "\t%s,%d,%d\t%s,%d,%d", p->char_id, p->account_id, p->char_num, p->name, //
- p->class, p->base_level, p->job_level, p->base_exp, p->job_exp, p->zeny, p->hp, p->max_hp, p->sp, p->max_sp, p->str, p->agi, p->vit, p->int_, p->dex, p->luk, p->status_point, p->skill_point, p->option, p->karma, p->manner, //
- p->party_id, p->guild_id, p->pet_id, p->hair, p->hair_color, p->clothes_color, p->weapon, p->shield, p->head_top, p->head_mid, p->head_bottom, p->last_point.map, p->last_point.x, p->last_point.y, //
- p->save_point.map, p->save_point.x, p->save_point.y);
- strcat (str, "\t");
- for (i = 0; i < 3; i++)
- if (p->memo_point[i].map[0])
- {
- sprintf (str + strlen (str), "%s,%d,%d", p->memo_point[i].map,
- p->memo_point[i].x, p->memo_point[i].y);
- }
- strcat (str, "\t");
- for (i = 0; i < MAX_INVENTORY; i++)
- if (p->inventory[i].nameid)
- {
- sprintf (str + strlen (str), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ",
- p->inventory[i].id, p->inventory[i].nameid,
- p->inventory[i].amount, p->inventory[i].equip,
- p->inventory[i].identify, p->inventory[i].refine,
- p->inventory[i].attribute, p->inventory[i].card[0],
- p->inventory[i].card[1], p->inventory[i].card[2],
- p->inventory[i].card[3]);
- }
- strcat (str, "\t");
- for (i = 0; i < MAX_CART; i++)
- if (p->cart[i].nameid)
- {
- sprintf (str + strlen (str), "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d ",
- p->cart[i].id, p->cart[i].nameid, p->cart[i].amount,
- p->cart[i].equip, p->cart[i].identify, p->cart[i].refine,
- p->cart[i].attribute, p->cart[i].card[0],
- p->cart[i].card[1], p->cart[i].card[2],
- p->cart[i].card[3]);
- }
- strcat (str, "\t");
- for (i = 0; i < MAX_SKILL; i++)
- if (p->skill[i].id)
- {
- sprintf (str + strlen (str), "%d,%d ", p->skill[i].id,
- p->skill[i].lv);
- }
- strcat (str, "\t");
- for (i = 0; i < p->global_reg_num; i++)
- sprintf (str + strlen (str), "%s,%d ", p->global_reg[i].str,
- p->global_reg[i].value);
- strcat (str, "\t");
- return 0;
-}
-
-int mmo_char_fromstr (char *str, struct mmo_charstatus *p)
-{
- int tmp_int[256];
- int set, next, len, i;
-
- set = sscanf (str, "%d\t%d,%d\t%[^\t]\t%d,%d,%d\t%d,%d,%d\t%d,%d,%d,%d\t%d,%d,%d,%d,%d,%d\t%d,%d" "\t%d,%d,%d\t%d,%d\t%d,%d,%d\t%d,%d,%d,%d,%d" "\t%[^,],%d,%d\t%[^,],%d,%d%n", &tmp_int[0], &tmp_int[1], &tmp_int[2], p->name, //
- &tmp_int[3], &tmp_int[4], &tmp_int[5], &tmp_int[6], &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10], &tmp_int[11], &tmp_int[12], &tmp_int[13], &tmp_int[14], &tmp_int[15], &tmp_int[16], &tmp_int[17], &tmp_int[18], &tmp_int[19], &tmp_int[20], &tmp_int[21], &tmp_int[22], &tmp_int[23], //
- &tmp_int[24], &tmp_int[25], &tmp_int[26], &tmp_int[27], &tmp_int[28], &tmp_int[29], &tmp_int[30], &tmp_int[31], &tmp_int[32], &tmp_int[33], p->last_point.map, &tmp_int[34], &tmp_int[35], //
- p->save_point.map, &tmp_int[36], &tmp_int[37], &next);
- p->char_id = tmp_int[0];
- p->account_id = tmp_int[1];
- p->char_num = tmp_int[2];
- p->class = tmp_int[3];
- p->base_level = tmp_int[4];
- p->job_level = tmp_int[5];
- p->base_exp = tmp_int[6];
- p->job_exp = tmp_int[7];
- p->zeny = tmp_int[8];
- p->hp = tmp_int[9];
- p->max_hp = tmp_int[10];
- p->sp = tmp_int[11];
- p->max_sp = tmp_int[12];
- p->str = tmp_int[13];
- p->agi = tmp_int[14];
- p->vit = tmp_int[15];
- p->int_ = tmp_int[16];
- p->dex = tmp_int[17];
- p->luk = tmp_int[18];
- p->status_point = tmp_int[19];
- p->skill_point = tmp_int[20];
- p->option = tmp_int[21];
- p->karma = tmp_int[22];
- p->manner = tmp_int[23];
- p->party_id = tmp_int[24];
- p->guild_id = tmp_int[25];
- p->pet_id = 0;
- p->hair = tmp_int[26];
- p->hair_color = tmp_int[27];
- p->clothes_color = tmp_int[28];
- p->weapon = tmp_int[29];
- p->shield = tmp_int[30];
- p->head_top = tmp_int[31];
- p->head_mid = tmp_int[32];
- p->head_bottom = tmp_int[33];
- p->last_point.x = tmp_int[34];
- p->last_point.y = tmp_int[35];
- p->save_point.x = tmp_int[36];
- p->save_point.y = tmp_int[37];
- if (set != 41)
- return 0;
- if (str[next] == '\n' || str[next] == '\r')
- return 1; // 新規データ
- next++;
- for (i = 0; str[next] && str[next] != '\t'; i++)
- {
- set =
- sscanf (str + next, "%[^,],%d,%d%n", p->memo_point[i].map,
- &tmp_int[0], &tmp_int[1], &len);
- if (set != 3)
- return 0;
- p->memo_point[i].x = tmp_int[0];
- p->memo_point[i].y = tmp_int[1];
- next += len;
- if (str[next] == ' ')
- next++;
- }
- next++;
- for (i = 0; str[next] && str[next] != '\t'; i++)
- {
- set = sscanf (str + next, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n",
- &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3],
- &tmp_int[4], &tmp_int[5], &tmp_int[6],
- &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10],
- &len);
- if (set != 11)
- return 0;
- p->inventory[i].id = tmp_int[0];
- p->inventory[i].nameid = tmp_int[1];
- p->inventory[i].amount = tmp_int[2];
- p->inventory[i].equip = tmp_int[3];
- p->inventory[i].identify = tmp_int[4];
- p->inventory[i].refine = tmp_int[5];
- p->inventory[i].attribute = tmp_int[6];
- p->inventory[i].card[0] = tmp_int[7];
- p->inventory[i].card[1] = tmp_int[8];
- p->inventory[i].card[2] = tmp_int[9];
- p->inventory[i].card[3] = tmp_int[10];
- next += len;
- if (str[next] == ' ')
- next++;
- }
- next++;
- for (i = 0; str[next] && str[next] != '\t'; i++)
- {
- set = sscanf (str + next, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d%n",
- &tmp_int[0], &tmp_int[1], &tmp_int[2], &tmp_int[3],
- &tmp_int[4], &tmp_int[5], &tmp_int[6],
- &tmp_int[7], &tmp_int[8], &tmp_int[9], &tmp_int[10],
- &len);
- if (set != 11)
- return 0;
- p->cart[i].id = tmp_int[0];
- p->cart[i].nameid = tmp_int[1];
- p->cart[i].amount = tmp_int[2];
- p->cart[i].equip = tmp_int[3];
- p->cart[i].identify = tmp_int[4];
- p->cart[i].refine = tmp_int[5];
- p->cart[i].attribute = tmp_int[6];
- p->cart[i].card[0] = tmp_int[7];
- p->cart[i].card[1] = tmp_int[8];
- p->cart[i].card[2] = tmp_int[9];
- p->cart[i].card[3] = tmp_int[10];
- next += len;
- if (str[next] == ' ')
- next++;
- }
- next++;
- for (i = 0; str[next] && str[next] != '\t'; i++)
- {
- set = sscanf (str + next, "%d,%d%n", &tmp_int[0], &tmp_int[1], &len);
- if (set != 2)
- return 0;
- p->skill[tmp_int[0]].id = tmp_int[0];
- p->skill[tmp_int[0]].lv = tmp_int[1];
- next += len;
- if (str[next] == ' ')
- next++;
- }
- next++;
- for (i = 0;
- str[next] && str[next] != '\t' && str[next] != '\n'
- && str[next] != '\r'; i++)
- { //global_reg実装以前のathena.txt互換のため一応'\n'チェック
- set = sscanf (str + next, "%[^,],%d%n",
- p->global_reg[i].str, &p->global_reg[i].value, &len);
- if (set != 2)
- return 0;
- next += len;
- if (str[next] == ' ')
- next++;
- }
- p->global_reg_num = i;
- return 1;
-}
-
-int mmo_char_convert (char *fname1, char *fname2)
-{
- char line[65536];
- int ret;
- struct mmo_charstatus char_dat;
- FILE *ifp, *ofp;
-
- ifp = fopen_ (fname1, "r");
- ofp = fopen_ (fname2, "w");
- if (ifp == NULL)
- {
- printf ("file not found %s\n", fname1);
- return 0;
- }
- if (ofp == NULL)
- {
- printf ("file open error %s\n", fname2);
- return 0;
- }
- while (fgets (line, 65535, ifp))
- {
- memset (&char_dat, 0, sizeof (struct mmo_charstatus));
- ret = mmo_char_fromstr (line, &char_dat);
- if (ret)
- {
- mmo_char_tostr (line, &char_dat);
- fprintf (ofp, "%s\n", line);
- }
- }
- fcloseall ();
- return 0;
-}
-
-int main (int argc, char *argv[])
-{
- if (argc < 3)
- {
- printf ("Usage: convert <input filename> <output filename>\n");
- exit (0);
- }
- mmo_char_convert (argv[1], argv[2]);
-
- return 0;
-}