From 288490094a7fe9167747dc78d416940759a31197 Mon Sep 17 00:00:00 2001 From: FlavioJS Date: Tue, 5 Dec 2006 13:23:07 +0000 Subject: - Massive EOL normalization & 'svn:eol-style native' flag setting for all txt/conf/h/c files. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@9410 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/tool/adduser.c | 200 +++++++++--------- src/tool/convert.c | 598 ++++++++++++++++++++++++++--------------------------- 2 files changed, 399 insertions(+), 399 deletions(-) (limited to 'src/tool') diff --git a/src/tool/adduser.c b/src/tool/adduser.c index 800154997..b8f5d4718 100644 --- a/src/tool/adduser.c +++ b/src/tool/adduser.c @@ -1,100 +1,100 @@ -// (c) eAthena Dev Team - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -/* - This program adds an user to account.txt - Don't usr it When login-sever is working. -*/ - -#include -#include -#include - -char *account_txt = "../save/account.txt"; - -//----------------------------------------------------- -// Function to suppress control characters in a string. -//----------------------------------------------------- -int remove_control_chars(unsigned char *str) { - int i; - int change = 0; - - for(i = 0; str[i]; i++) { - if (str[i] < 32) { - str[i] = '_'; - change = 1; - } - } - - return change; -} - -int main(int argc, char *argv[]) { - - char username[24]; - char password[24]; - char sex[2]; - - int next_id, id; - char line[1024]; - FILE *FPaccin,*FPaccout; - - // Check to see if account.txt exists. - printf("Checking if '%s' file exists...\n", account_txt); - FPaccin = fopen(account_txt, "r"); - if (FPaccin == NULL) { - printf("'%s' file not found!\n", account_txt); - printf("Run the setup wizard please.\n"); - exit(0); - } - - next_id = 2000000; - while(fgets(line, sizeof(line)-1, FPaccin)) { - if (line[0] == '/' && line[1] == '/') { continue; } - if (sscanf(line, "%d\t%%newid%%\n", &id) == 1) { - if (next_id < id) { - next_id = id; - } - } else { - sscanf(line,"%i%[^ ]", &id); - if (next_id <= id) { - next_id = id +1; - } - } - } - close(FPaccin); - printf("File exists.\n"); - - printf("Don't create an account if the login-server is online!!!\n"); - printf("If the login-server is online, press ctrl+C now to stop this software.\n"); - printf("\n"); - - strcpy(username, ""); - while (strlen(username) < 4 || strlen(username) > 23) { - printf("Enter an username (4-23 characters): "); - scanf("%s", &username); - username[23] = 0; - remove_control_chars(username); - } - - strcpy(password, ""); - while (strlen(password) < 4 || strlen(password) > 23) { - printf("Enter a password (4-23 characters): "); - scanf("%s", &password); - password[23] = 0; - remove_control_chars(password); - } - - strcpy(sex, ""); - while (strcmp(sex, "F") != 0 && strcmp(sex, "M") != 0) { - printf("Enter a gender (M for male, F for female): "); - scanf("%s", &sex); - } - - FPaccout = fopen(account_txt, "r+"); - fseek(FPaccout, 0, SEEK_END); - fprintf(FPaccout, "%i %s %s - %s -\r\n", next_id, username, password, sex); - close(FPaccout); - - printf("Account added.\n"); -} +// (c) eAthena Dev Team - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +/* + This program adds an user to account.txt + Don't usr it When login-sever is working. +*/ + +#include +#include +#include + +char *account_txt = "../save/account.txt"; + +//----------------------------------------------------- +// Function to suppress control characters in a string. +//----------------------------------------------------- +int remove_control_chars(unsigned char *str) { + int i; + int change = 0; + + for(i = 0; str[i]; i++) { + if (str[i] < 32) { + str[i] = '_'; + change = 1; + } + } + + return change; +} + +int main(int argc, char *argv[]) { + + char username[24]; + char password[24]; + char sex[2]; + + int next_id, id; + char line[1024]; + FILE *FPaccin,*FPaccout; + + // Check to see if account.txt exists. + printf("Checking if '%s' file exists...\n", account_txt); + FPaccin = fopen(account_txt, "r"); + if (FPaccin == NULL) { + printf("'%s' file not found!\n", account_txt); + printf("Run the setup wizard please.\n"); + exit(0); + } + + next_id = 2000000; + while(fgets(line, sizeof(line)-1, FPaccin)) { + if (line[0] == '/' && line[1] == '/') { continue; } + if (sscanf(line, "%d\t%%newid%%\n", &id) == 1) { + if (next_id < id) { + next_id = id; + } + } else { + sscanf(line,"%i%[^ ]", &id); + if (next_id <= id) { + next_id = id +1; + } + } + } + close(FPaccin); + printf("File exists.\n"); + + printf("Don't create an account if the login-server is online!!!\n"); + printf("If the login-server is online, press ctrl+C now to stop this software.\n"); + printf("\n"); + + strcpy(username, ""); + while (strlen(username) < 4 || strlen(username) > 23) { + printf("Enter an username (4-23 characters): "); + scanf("%s", &username); + username[23] = 0; + remove_control_chars(username); + } + + strcpy(password, ""); + while (strlen(password) < 4 || strlen(password) > 23) { + printf("Enter a password (4-23 characters): "); + scanf("%s", &password); + password[23] = 0; + remove_control_chars(password); + } + + strcpy(sex, ""); + while (strcmp(sex, "F") != 0 && strcmp(sex, "M") != 0) { + printf("Enter a gender (M for male, F for female): "); + scanf("%s", &sex); + } + + FPaccout = fopen(account_txt, "r+"); + fseek(FPaccout, 0, SEEK_END); + fprintf(FPaccout, "%i %s %s - %s -\r\n", next_id, username, password, sex); + close(FPaccout); + + printf("Account added.\n"); +} diff --git a/src/tool/convert.c b/src/tool/convert.c index 2e81bfedd..a71c8c4a6 100644 --- a/src/tool/convert.c +++ b/src/tool/convert.c @@ -1,299 +1,299 @@ -// (c) eAthena Dev Team - Licensed under GNU GPL -// For more information, see LICENCE in the main folder - -#include -#include - -#define RETCODE "\r\n" - -#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;iinventory[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;icart[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;iskill[i].id){ - sprintf(str+strlen(str),"%d,%d ",p->skill[i].id,p->skill[i].lv); - } - strcat(str,"\t"); - for(i=0;iglobal_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" RETCODE,line); - } - } - fcloseall(); - return 0; -} - -int main(int argc,char *argv[]) -{ - if(argc < 3) { - printf("Usage: convert \n"); - exit(0); - } - mmo_char_convert(argv[1],argv[2]); - - return 0; -} +// (c) eAthena Dev Team - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#include +#include + +#define RETCODE "\r\n" + +#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;iinventory[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;icart[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;iskill[i].id){ + sprintf(str+strlen(str),"%d,%d ",p->skill[i].id,p->skill[i].lv); + } + strcat(str,"\t"); + for(i=0;iglobal_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" RETCODE,line); + } + } + fcloseall(); + return 0; +} + +int main(int argc,char *argv[]) +{ + if(argc < 3) { + printf("Usage: convert \n"); + exit(0); + } + mmo_char_convert(argv[1],argv[2]); + + return 0; +} -- cgit v1.2.3-70-g09d2