#define _FAMILY_C_
#include "version.h"
#include "main.h"
#include "acfamily.h"
#include "util.h"
#include "saacproto_serv.h"
#include <malloc.h>
#include <stdio.h>
#include <time.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
// 家族 Int 資料
static char* FAMILY_INTDATA[familymaxint] =
{
"fmindex",
"fmleadergrano",
"fmnum",
"fmjoinnum",
"fmacceptflag",
"fmsetupflag",
"fmsprite",
"fmpointindex",
"fmpopular",
"fmgold",
"fmmemberindexmaxnum",
"apply_time",
"setup_time",
"predel_time",
"memonowwritenum",
"memonum",
"fmadv",
"fmfeed",
"fmsynthesize",
"fmdealfood",
"fmpk",
};
// 家族 char 資料
static char* FAMILY_CHARDATA[familymaxchar] =
{
"fmname",
"fmleadername",
"fmleaderid",
"petname",
"petattr",
"fmrule",
};
// 家族成員 int 資料
static char* MEMBER_INTDATA[memberdatamaxint] =
{
"charlv",
"charflag",
"onlineflag",
"charfdid",
"predeltime",
"popular",
#ifdef _FMVER21
"eventflag",
#endif
};
// 家族成員 char 資料
static char* MEMBER_CHARDATA[memberdatamaxchar] =
{
"charname",
"charid",
};
// 成員種類 char 資料
static char* MEMBERKIND_INTDATA[FMMEMBER_KINDNUM] =
{
"無",
"一般成員",
"申請中",
"族長",
"長老",
};
// 家族之間留言板
struct FMSMEMO
{
int num; // 留言數量
int fmsnowwritenum; // 目前留言位置
char memodata[FMSMEMONUM][FAMILY_MEMOLEN]; // 留言內容
};
// 莊園
struct FMPOINT
{
int fl; // 莊園進入圖層
int x; // 莊園進入X座標
int y; // 莊園進入Y座標
int fmfl; // 莊園族長圖層
int village; // 莊園鄰近之村莊
int hadfmindex; // 佔領莊園之家族 index
char hadfmname[CHARNAME_MAX]; // 佔領莊園之家族 name
int hadfmpopular; // 佔領莊園之家族綜合聲望值
};
// 家族成員資料
typedef struct
{
char charname[CHARNAME_MAX]; // 成員名字
char charid[USERID_MAX]; // 成員帳號
int charlv; // 成員等級
int charflag; /*
FMMEMBER_NONE 清空資料
FMMEMBER_MEMBER 家族成員
FMMEMBER_APPLY 申請中
FMMEMBER_LEADER 族長
FMMEMBER_ELDER 長老
*/
int onlineflag; // 0:offline; gmsv socketfd
int charfdid; // 成員在 gmsv 的 fd
int predeltime; // 預計刪除成員時間
int popular; // 成員的聲望
#ifdef _FMVER21
int eventflag; // 是否擁有族長資格
#endif
} MEMBERDATA;
struct FAMILY
{
int fmindex; // 家族 index
char fmname[CHARNAME_MAX]; // 家族名稱
char fmleadername[CHARNAME_MAX]; // 族長名稱
char fmleaderid[USERID_MAX]; // 族長帳號
int fmleadergrano; // 族長照片
char petname[CHARNAME_MAX]; // 守護獸名稱
char petattr[256]; // 守護獸資料
int fmnum; // 家族人數,包含申請退出、加入人數
int fmjoinnum; // 真正加入家族人數
int fmacceptflag; // 是否接收成員 0:不接受 1:接受
int fmsetupflag; // 0:尚未成立 1:已成立
char fmrule[256]; // 家族主旨
int fmsprite; // 0:光明精靈 1:黑暗精靈
int fmpointindex; // 家族據點 index
int fmpopular; // 家族綜合聲望
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
int fmtotalfame; // 家族綜合 + 家族個人聲望總合
#endif
int fmgold; // 家族基金
int fmmemberindexmaxnum; // 家族目前最大人數
int apply_time; // 家族申請時間
int setup_time; // 家族成立時間
int predel_time; // 預計刪除家族時間
int memonowwritenum; // 目前留言位置
int memonum; // 留言數量
int fmadv; // 冒險任務聲望
int fmfeed; // 飼育聲望
int fmsynthesize; // 合成加工聲望
int fmdealfood; // 料理聲望
int fmpk; // PK聲望
char memolist[FAMILY_MEMONUM][FAMILY_MEMOLEN]; // 留言內容
MEMBERDATA fmmemberindex[MAX_MEMBERNUM]; // 成員資料
};
int db_familyupdate[MAX_FAMILY];
int db_fmpointupdate = 0;
int db_fmsmemoupdate = 0;
int fmnownum = 0;
int fmindexmaxnum = 0;
extern gmsv gs[MAXCONNECTION];
struct FAMILY family[MAX_FAMILY];
int fmpopularindex[MAX_FAMILY]; // Arminius: sort family
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
int fmtotalfameindex[MAX_FAMILY];
#endif
int fmadvindex[MAX_FAMILY];
int fmfeedindex[MAX_FAMILY];
int fmsynthesizeindex[MAX_FAMILY];
int fmdealfoodindex[MAX_FAMILY];
int fmpkindex[MAX_FAMILY];
struct FMPOINT fmpoint[MAX_FMPOINT];
struct FMSMEMO fmsmemo;
// Arminius: sort family & output the sorted list
// Make a sorted index (fmindex) for the family data (family)
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
int fmtotalfamecompar(const void *indexa, const void *indexb);
#endif
int fmpopularcompar(const void *indexa, const void *indexb);
int fmadvcompar(const void *indexa, const void *indexb);
int fmfeedcompar(const void *indexa, const void *indexb);
int fmsynthesizecompar(const void *indexa, const void *indexb);
int fmdealfoodcompar(const void *indexa, const void *indexb);
int fmpkcompar(const void *indexa, const void *indexb);
int CheckFM(int *index, char *fmname, int fmindex);
int CheckFMUse(int index);
void setFamilyFileDataToArg(int index, char *data);
void setMemberFileDataToArg(int index, int memberindex, char *databuf);
// sortFamily: call this after family loaded
void sortFamily(void)
{
int i;
for(i = 0; i < MAX_FAMILY; i++)
{
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
fmtotalfameindex[i] = i;
#endif
fmpopularindex[i] = i;
fmadvindex[i] = i;
fmfeedindex[i] = i;
fmsynthesizeindex[i] = i;
fmdealfoodindex[i] = i;
fmpkindex[i] = i;
}
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
qsort(fmtotalfameindex, MAX_FAMILY, sizeof(int), &fmtotalfamecompar);
#endif
qsort(fmpopularindex, MAX_FAMILY, sizeof(int), &fmpopularcompar);
qsort(fmadvindex, MAX_FAMILY, sizeof(int), &fmadvcompar);
qsort(fmfeedindex, MAX_FAMILY, sizeof(int), &fmfeedcompar);
qsort(fmsynthesizeindex, MAX_FAMILY, sizeof(int), &fmsynthesizecompar);
qsort(fmdealfoodindex, MAX_FAMILY, sizeof(int), &fmdealfoodcompar);
qsort(fmpkindex, MAX_FAMILY, sizeof(int), &fmpkcompar);
}
#ifdef _PERSONAL_FAME // Arminius: 家族個人聲望
int fmtotalfamecompar(const void *indexa, const void *indexb)
{
int famea,fameb;
if ( CheckFMUse(* (int*) indexa)==0 ) return 1; // empty record
if ( CheckFMUse(* (int*) indexb)==0 ) return -1;
famea = family[ * (int*) indexa ].fmtotalfame;
fameb = family[ * (int*) indexb ].fmtotalfame;
return (famea>fameb)? -1 : 1;
}
#endif
int fmpopularcompar(const void *indexa, const void *indexb)
{
int fmpopulara,fmpopularb;
if ( CheckFMUse(* (int*) indexa)==0 ) return 1; // empty record
if ( CheckFMUse(* (int*) indexb)==0 ) return -1;
fmpopulara = family[ * (int*) indexa ].fmpopular;
fmpopularb = family[ * (int*) indexb ].fmpopular;
return (fmpopulara>fmpopularb)? -1 : 1;
}
int fmadvcompar(const void *indexa, const void *indexb)
{
int fmadva,fmadvb;
if ( CheckFMUse(* (int*) indexa)==0 ) return 1; // empty record
if ( CheckFMUse(* (int*) indexb)==0 ) return -1;
fmadva = family[ * (int*) indexa ].fmadv;
fmadvb = family[ * (int*) indexb ].fmadv;
return (fmadva>fmadvb)? -1 : 1;
}
int fmfeedcompar(const void *indexa, const void *indexb)
{
int fmfeeda,fmfeedb;
if ( CheckFMUse(* (int*) indexa)==0 ) return 1; // empty record
if ( CheckFMUse(* (int*) indexb)==0 ) return -1;
fmfeeda = family[ * (int*) indexa ].fmfeed;
fmfeedb = family[ * (int*) indexb ].fmfeed;
return (fmfeeda>fmfeedb)? -1 : 1;
}
int fmsynthesizecompar(const void *indexa, const void *indexb)
{
int fmsynthesizea,fmsynthesizeb;
if ( CheckFMUse(* (int*) indexa)==0 ) return 1; // empty record
if ( CheckFMUse(* (int*) indexb)==0 ) return -1;
fmsynth
没有合适的资源?快使用搜索试试~ 我知道了~
3D角色扮演网游《风火之旅服务端》完整C++源码
共4320个文件
obj:1206个
h:912个
cpp:625个
3星 · 超过75%的资源 需积分: 40 70 下载量 4 浏览量
2017-11-29
14:55:33
上传
评论 1
收藏 100.94MB RAR 举报
温馨提示
风火之旅服务端完整源码,这个是真正的风火之旅服务端源码,并非QQ西游,编译的时候把那些乱七八糟的备注给改掉就可以了,能整理出来相当不容易了,不喜勿下,解压后600MB左右,c++开发。 曾经比较火的一款3D角色扮演类网络游戏。游戏背景定位在中国古代与幻想题材的双主轴上,特色的祭炼系统是该游戏的一大亮点。
资源推荐
资源详情
资源评论
收起资源包目录
3D角色扮演网游《风火之旅服务端》完整C++源码 (4320个子文件)
wgs.1 25KB
wgs.1 25KB
9400.log.1000800000 48B
newest.h.1128 3KB
config.aaa 1KB
GNUmakefile.ACE 8KB
acwk 61KB
Makefile.am 30KB
Makefile.am 3KB
Makefile.am 2KB
Makefile.am 1KB
Makefile.am 946B
Makefile.am 906B
Makefile.am 779B
Makefile.am 746B
Makefile.am 744B
Makefile.am 665B
Makefile.am 636B
Makefile.am 591B
Makefile.am 584B
Makefile.am 583B
Makefile.am 573B
Makefile.am 546B
Makefile.am 430B
Makefile.am 423B
Makefile.am 419B
Monitor.aps 62KB
QuestViewer.aps 58KB
lingo_script_gen.aps 43KB
T.APS 35KB
test.aps 6KB
ace.aps 1KB
Global.asax 77B
Global.asax 77B
WebForm1.aspx 112B
WebForm1.aspx 112B
states.csv.bak 36KB
SurvivalGameFuncs.lua.bak 8KB
LeiTai.lua.bak 3KB
SurvivalGame.lua.bak 3KB
TeamArena.lua.bak 3KB
PlayerQueue.lua.bak 2KB
arena.lua.bak 2KB
newest.h.bak 1KB
buy.xml.bak 113B
sell.xml.bak 111B
buy_sb.xml.bak 101B
sell_sb.xml.bak 99B
DummyWS.bat 73B
WorldGW.bat 72B
InstGW.bat 70B
LogServer.bat 32B
LogProxy.bat 31B
CopySV.bat 0B
ace_message_table.bin 29B
ACE.bor 165KB
RMCast.bor 12KB
netsvcs.bor 3KB
TMCast.bor 3KB
Netsvcs_Dump_Restore_Lib.bor 1KB
Netsvsc_Client_Test_Lib.bor 1KB
Netsvcs_Dump_Restore.bor 1KB
Netsvcs_Client_Test.bor 1KB
indirect_logging.bor 832B
direct_logging.bor 826B
Netsvcs_server.bor 813B
acfamily.c 113KB
saacproto_serv.c 86KB
cs.c 54KB
cs.c 52KB
cs.c 51KB
main.c 46KB
cs1.c 46KB
cs1.c 46KB
saacproto_util.c 43KB
db.c 42KB
recv.c 35KB
lparser.c 35KB
descrypt.c 31KB
descrypt.c 31KB
descrypt.c 31KB
char.c 30KB
lvm.c 24KB
mail.c 21KB
lstrlib.c 20KB
ltests.c 20KB
lapi.c 19KB
liolib.c 18KB
lbaselib.c 17KB
lcode.c 17KB
lauxlib.c 15KB
wk.c 15KB
ldebug.c 14KB
ltable.c 14KB
ldo.c 13KB
lgc.c 13KB
rsa.c 11KB
rsa.c 11KB
rsa.c 11KB
util.c 11KB
共 4320 条
- 1
- 2
- 3
- 4
- 5
- 6
- 44
资源评论
- qq_249294312018-02-03垃圾链接全部都是失效的
- keenflyfox2018-05-17下载成功,代码完整,已经运行。
niehanmin
- 粉丝: 751
- 资源: 629
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- NetOps-py通过sftp替换网络设备启动文件
- STM32单片机FPGA毕设电路原理论文报告任务驱动教学法在单片机课程教学中的应用
- STM32单片机FPGA毕设电路原理论文报告任务驱动法在单片机教学中的应用
- STM32单片机FPGA毕设电路原理论文报告人造金刚石压机智能化压力测控系统设计
- 以某列为依据匹配多项(Excel版)
- STM32单片机FPGA毕设电路原理论文报告人体短臂离心机实验台的显示控制系统
- STM32单片机FPGA毕设电路原理论文报告人工气候室监控系统的环境控制器研究
- STM32单片机FPGA毕设电路原理论文报告染整自动线张力控制系统的设计
- 数据挖掘与机器学习-实验
- 基于Linux系统Nginx的动态网站的LNMP环境源码包
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功