📄 acfamily.c
字号:
fmmaxnum = i; } fmindexmaxnum = fmmaxnum; fmnownum = fmnum;} closedir(d); #ifdef _PERSONAL_FAME // Arminius: 家族个人声望 // 计算家族总合声望 = 家族综合声望 + 家族个人声望 { int i,j; for (i = 0; i < MAX_FAMILY; i++) { family[i].fmpopular=family[i].fmadv+family[i].fmfeed +family[i].fmsynthesize+family[i].fmdealfood +family[i].fmpk; family[i].fmtotalfame=family[i].fmpopular; for (j = 0; j < MAX_MEMBERNUM; j++) { if ((family[i].fmmemberindex[j].charflag!=FMMEMBER_NONE) && (family[i].fmmemberindex[j].charflag!=FMMEMBER_APPLY) ) family[i].fmtotalfame += family[i].fmmemberindex[j].popular; } } }#endif sortFamily(); // Arminius: sort it#ifdef _DEATH_FAMILY_STRUCT // WON ADD 家族战存放胜负资料 read_fm_pk_score();#endif return 0;}// 将家族资料写入档案int writeFamily(char *dir){ int i = 0, j = 0, k = 0; FILE *fp; char filename[256]; for (i = 0; i < MAX_FAMILY; i++) { if (db_familyupdate[i] == 0) continue; sprintf(filename, "%s/Family.%d", dir, i); fp = fopen(filename, "w"); if (fp == NULL) continue; if ((family[i].fmindex != -1) && (strcmp(family[i].fmname, "") != 0)) { fprintf(fp, "fmindex=%d|fmname=%s|fmleadername=%s|fmleaderid=%s|" "fmleadergrano=%d|petname=%s|petattr=%s|fmnum=%d|fmjoinnum=%d|" "fmacceptflag=%d|fmsetupflag=%d|fmrule=%s|fmsprite=%d|" "fmpointindex=%d|fmpopular=%d|fmgold=%d|fmmemberindexmaxnum=%d|" "apply_time=%d|setup_time=%d|predel_time=%d|memonowwritenum=%d|" "memonum=%d|fmadv=%d|fmfeed=%d|fmsynthesize=%d|fmdealfood=%d|fmpk=%d"#ifdef _NEW_MANOR_LAW "|fmmomentum=%d"#endif ,family[i].fmindex, family[i].fmname, family[i].fmleadername, family[i].fmleaderid, family[i].fmleadergrano, family[i].petname, family[i].petattr, family[i].fmnum, family[i].fmjoinnum, family[i].fmacceptflag, family[i].fmsetupflag, family[i].fmrule, family[i].fmsprite, family[i].fmpointindex, family[i].fmpopular, family[i].fmgold, family[i].fmmemberindexmaxnum, family[i].apply_time, family[i].setup_time, family[i].predel_time, family[i].memonowwritenum, family[i].memonum, family[i].fmadv, family[i].fmfeed, family[i].fmsynthesize, family[i].fmdealfood, family[i].fmpk#ifdef _NEW_MANOR_LAW ,family[i].fmmomentum#endif ); for (j = 0; j < family[i].memonum; j++) fprintf(fp, "|%s%d=%s", FMMEMOLIST, j, family[i].memolist[j]); for (k = 0; k < family[i].fmmemberindexmaxnum; k++) { if ((strcmp(family[i].fmmemberindex[k].charname, "") != 0) && (strcmp(family[i].fmmemberindex[k].charid, "") != 0) && (family[i].fmmemberindex[k].charflag != FMMEMBER_NONE)) {#ifdef _FMVER21 #ifndef _NEW_MANOR_LAW fprintf(fp, "|%s%d=charname=%s charid=%s charlv=%d charflag=%d onlineflag=%d predeltime=%d popular=%d eventflag=%d", #else fprintf(fp, "|%s%d=charname=%s charid=%s charlv=%d charflag=%d onlineflag=%d predeltime=%d popular=%d eventflag=%d momentum=%d", #endif#else fprintf(fp, "|%s%d=charname=%s charid=%s charlv=%d charflag=%d onlineflag=%d predeltime=%d popular=%d",#endif FMMEMBERINDEX, k, family[i].fmmemberindex[k].charname, family[i].fmmemberindex[k].charid, family[i].fmmemberindex[k].charlv, family[i].fmmemberindex[k].charflag, family[i].fmmemberindex[k].onlineflag, family[i].fmmemberindex[k].predeltime, family[i].fmmemberindex[k].popular#ifdef _FMVER21 ,family[i].fmmemberindex[k].eventflag#endif#ifdef _NEW_MANOR_LAW ,family[i].fmmemberindex[k].momentum#endif ); } } // for fprintf(fp, "\n"); } // if fclose(fp); db_familyupdate[i] = 0; } return 0;}// 从档案读取家族庄园(启动时读取)int readFMPoint(char *dir){ char dirname[256]; DIR *d; struct dirent *de; int i = 0; { char tmp[256]; snprintf(tmp, sizeof(tmp), "%s", dir); if (mkdir(tmp, 0755) == 0) log("create %s\n", tmp); } snprintf(dirname, sizeof(dirname), "%s", dir); d = opendir(dirname); if (d == NULL) { log("无法打开文件 %s\n", dirname); return -1; } while(1) { de = readdir(d); if(de == NULL) break; if (de -> d_name[0] != '.') { char filename[256]; FILE *fp; struct stat s; snprintf(filename, sizeof(filename), "%s/%s", dirname, de -> d_name); if (stat(filename, &s) < 0){ continue; } if (!(s.st_mode & S_IFREG)) { log("%s is not a regular file\n", filename); continue; } fp = fopen(filename, "r"); if (fp == NULL) { log("无法打开文件 %s %s\n", filename, strerror(errno)); continue; } while(1) { char line[1024]; char data[1024]; if (fgets(line, sizeof(line), fp) == NULL) break; chop(line); easyGetTokenFromBuf(line, '|', 1, data, sizeof(data)); fmpoint[i].fl = atoi(data); easyGetTokenFromBuf(line, '|', 2, data, sizeof(data)); fmpoint[i].x = atoi(data); easyGetTokenFromBuf(line, '|', 3, data, sizeof(data)); fmpoint[i].y = atoi(data); easyGetTokenFromBuf(line, '|', 4, data, sizeof(data)); fmpoint[i].fmfl = atoi(data); easyGetTokenFromBuf(line, '|', 5, data, sizeof(data)); fmpoint[i].village = atoi(data); easyGetTokenFromBuf(line, '|', 6, data, sizeof(data)); fmpoint[i].hadfmindex = atoi(data); easyGetTokenFromBuf(line, '|', 7, data, sizeof(data)); strcpy(fmpoint[i].hadfmname, data); easyGetTokenFromBuf(line, '|', 8, data, sizeof(data)); fmpoint[i].hadfmpopular = atoi(data); i++; } fclose(fp); } } closedir(d); return 0;}// 将家族庄园写入档案int writeFMPoint(char *dir){ int i = 0; FILE *fp; char filename[256]; sprintf(filename, "%s/db_fmpoint", dir); if (db_fmpointupdate == 0) { log("db_fmpoint 无更新资料写入文件.\n"); return 0; } fp = fopen(filename, "w"); if (fp == NULL) { log("无法打开文件: %s %s\n", filename, strerror(errno)); return -1; } for(i = 0; i < MAX_FMPOINT; i++) {#ifdef _ADD_FAMILY_TAX // WON ADD 增加庄园税收#else fprintf(fp, "%d|%d|%d|%d|%d|%d|%s|%d\n", fmpoint[i].fl, fmpoint[i].x, fmpoint[i].y, fmpoint[i].fmfl, fmpoint[i].village, fmpoint[i].hadfmindex, fmpoint[i].hadfmname, fmpoint[i].hadfmpopular);#endif } // for fclose(fp); db_fmpointupdate = 0; return 0;}// 从档案中读取家族之间留言资料(启动时读取)int readFMSMemo(char *dir){ char dirname[256]; DIR *d; struct dirent *de; int i = 0; { char tmp[256]; snprintf(tmp, sizeof(tmp), "%s", dir); if (mkdir(tmp, 0755) == 0) log("create %s\n", tmp); } snprintf(dirname, sizeof(dirname), "%s", dir); d = opendir(dirname); if (d == NULL) { log("无法打开文件 %s\n", dirname); return -1; } while(1) { de = readdir(d); if(de == NULL) break; if (de -> d_name[0] != '.') { char filename[256]; FILE *fp; struct stat s; snprintf(filename, sizeof(filename), "%s/%s", dirname, de -> d_name); if (stat(filename, &s) < 0){ continue; } if (!(s.st_mode & S_IFREG)) { log("%s 不是正常文件\n", filename); continue; } fp = fopen(filename, "r"); if (fp == NULL) { log("无法打开文件 %s %s\n", filename, strerror(errno)); continue; } { char line[15000]; char data[15000]; if (fgets(line, sizeof(line), fp) == NULL) break; chop(line); easyGetTokenFromBuf(line, '|', 1, data, sizeof(data)); fmsmemo.num = atoi(data); easyGetTokenFromBuf(line, '|', 2, data, sizeof(data)); fmsmemo.fmsnowwritenum = atoi(data); for (i = 0; i < fmsmemo.num; i++){ easyGetTokenFromBuf(line, '|', 3 + i, data, sizeof(data)); strcpy(fmsmemo.memodata[i], data); } } fclose(fp); } } closedir(d); return 0;}// 将家族之间留言资料写入档案int writeFMSMemo(char *dir){ int i = 0; FILE *fp; char filename[256]; sprintf(filename, "%s/db_fmsmemo", dir); if (db_fmsmemoupdate == 0) { log("db_fmsmemo 无更新资料写入文件.\n"); return 0; } fp = fopen(filename, "w"); if (fp == NULL) { log("无法打开文件: %s %s\n", filename, strerror(errno)); return -1; } fprintf(fp, "%d|%d", fmsmemo.num, fmsmemo.fmsnowwritenum); for(i = 0; i < fmsmemo.num; i++) { fprintf(fp, "|%s", fmsmemo.memodata[i]); log("%s\n", fmsmemo.memodata[i]); } // for fprintf(fp, "\n"); fclose(fp); db_fmsmemoupdate = 0; return 0;}// 取得未使用的 indexint getblankindex(){ int i = 0; for(i = 0; i < MAX_FAMILY; i++) if (((family[i].fmindex <= 0) || (family[i].fmindex > MAX_FAMILY)) && (strcmp(family[i].fmname, "") == 0)) return i; return -1;}// 取得未使用的 fmindexint getblankfmindex(){ int i = 0, j = 0; for (i = 1; i <= MAX_FAMILY; i++) { int useflag = 0; for (j = 0; j < MAX_FAMILY; j++) { if (family[j].fmindex == i) { useflag = 1; continue; } } if (useflag == 0) return i; } return -1;}// 从 fmindex, fmname 取得 indexint getindex(int fmindex, char *fmname){ int i = 0; for (i = 0; i <= fmindexmaxnum; i++) { if ((family[i].fmindex == fmindex) && (strcmp(family[i].fmname, fmname) == 0)) return i; } return -1;}// 删除庄园的家族 fmindexint delfmpointindex(int fmindex){ int i; for (i = 0; i < MAX_FMPOINT; i++) { if (fmpoint[i].hadfmindex == fmindex) { fmpoint[i].hadfmindex = -1; strcpy(fmpoint[i].hadfmname, "-1"); fmpoint[i].hadfmpopular = -1; db_fmpointupdate = 1; return 0; } } return -1;}// 检查 index 是否已使用int CheckFMUse(int index){ if ((index >= MAX_FAMILY) || (index < 0)) return -1; if ((family[index].fmindex < 0) || (strcmp(family[index].fmname, "") == 0)) return 0; else return 1;}// 检查 index fmindex, fmname资料是否正确int CheckFM(int *index, char *fmname, int fmindex){ if (*index == -1){ *index = getindex(fmindex, fmname); } if ((*index > MAX_FAMILY) || (*index < 0)){ log ("CheckFM_2 *index: big small? %d\n", *index); return -1; }else { if ((family[*index].fmindex != fmindex)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -