⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 acfamily.c

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 C
📖 第 1 页 / 共 5 页
字号:
   	   	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 + -