📄 configfile.c
字号:
{ "WATCHFLOOR1" ,NULL,0,(void*)&config.watchfloor[1], INT},
{ "WATCHFLOOR2" ,NULL,0,(void*)&config.watchfloor[2], INT},
{ "WATCHFLOOR3" ,NULL,0,(void*)&config.watchfloor[3], INT},
{ "WATCHFLOOR4" ,NULL,0,(void*)&config.watchfloor[4], INT},
{ "WATCHFLOOR5" ,NULL,0,(void*)&config.watchfloor[5], INT},
#endif
#ifdef _BATTLE_FLOOR
{ "BATTLEFLOOR" ,NULL,0,(void*)&config.battlefloor[0], INT},
{ "BATTLEFLOOR1" ,NULL,0,(void*)&config.battlefloor[1], INT},
{ "BATTLEFLOOR2" ,NULL,0,(void*)&config.battlefloor[2], INT},
{ "BATTLEFLOOR3" ,NULL,0,(void*)&config.battlefloor[3], INT},
{ "BATTLEFLOOR4" ,NULL,0,(void*)&config.battlefloor[4], INT},
{ "BATTLEFLOOR5" ,NULL,0,(void*)&config.battlefloor[5], INT},
#endif
#ifdef _UNREG_NEMA
{ "NAME1" ,config.unregname[0], sizeof( config.unregname[0]),NULL,0},
{ "NAME2" ,config.unregname[1], sizeof( config.unregname[1]),NULL,0},
{ "NAME3" ,config.unregname[2], sizeof( config.unregname[2]),NULL,0},
{ "NAME4" ,config.unregname[3], sizeof( config.unregname[3]),NULL,0},
{ "NAME5" ,config.unregname[4], sizeof( config.unregname[4]),NULL,0},
#endif
#ifdef _TRANS_LEVEL_CF
{ "CHARTRANS" ,NULL,0,(void*)&config.chartrans, INT},
{ "PETTRANS" ,NULL,0,(void*)&config.pettrans, INT},
{ "LEVEL" ,NULL,0,(void*)&config.yblevel, INT},
{ "MAXLEVEL" ,NULL,0,(void*)&config.maxlevel, INT},
#endif
#ifdef _POINT
{ "POINT" ,NULL,0,(void*)&config.point, INT},
{ "TRANS0" ,NULL,0,(void*)&config.transpoint[0], INT},
{ "TRANS1" ,NULL,0,(void*)&config.transpoint[1], INT},
{ "TRANS2" ,NULL,0,(void*)&config.transpoint[2], INT},
{ "TRANS3" ,NULL,0,(void*)&config.transpoint[3], INT},
{ "TRANS4" ,NULL,0,(void*)&config.transpoint[4], INT},
{ "TRANS5" ,NULL,0,(void*)&config.transpoint[5], INT},
{ "TRANS6" ,NULL,0,(void*)&config.transpoint[6], INT},
{ "TRANS7" ,NULL,0,(void*)&config.transpoint[7], INT},
#endif
#ifdef _PET_UP
{ "PETUP" ,NULL,0,(void*)&config.petup, INT},
#endif
#ifdef _LOOP_ANNOUNCE
{ "ANNOUNCEPATH" ,config.loopannouncepath, sizeof( config.loopannouncepath),NULL,0},
{ "ANNOUNCETIME" ,NULL,0,(void*)&config.loopannouncetime, INT},
#endif
#ifdef _SKILLUPPOINT_CF
{ "SKILLUPPOINT" ,NULL,0,(void*)&config.skup, INT},
#endif
#ifdef _RIDELEVEL
{ "RIDELEVEL" ,NULL,0,(void*)&config.ridelevel, INT},
#endif
#ifdef _REVLEVEL
{ "REVLEVEL" ,NULL,0,(void*)&config.revlevel, INT},
#endif
#ifdef _NEW_PLAYER_RIDE
{ "NPRIDE" ,NULL,0,(void*)&config.npride, INT},
#endif
#ifdef _FIX_CHARLOOPS
{ "CHARLOOPS" ,NULL,0,(void*)&config.charloops, INT},
#endif
#ifdef _PLAYER_ANNOUNCE
{ "PANNOUNCE" ,NULL,0,(void*)&config.pannounce, INT},
#endif
#ifdef _PLAYER_MOVE
{ "PMOVE" ,NULL,0,(void*)&config.pmove, INT},
#endif
{ "recvbuffer" ,NULL,0,(void*)&config.recvbuffer, INT},
{ "sendbuffer" ,NULL,0,(void*)&config.sendbuffer, INT},
{ "recvlowatbuffer" ,NULL,0,(void*)&config.recvlowatbuffer, INT},
{ "runlevel" ,NULL,0,(void*)&config.runlevel, INT},
#ifdef _SHOW_VIP_CF
{ "SHOWVIP" ,NULL,0,(void*)&config.showvip, INT},
#endif
#ifdef _PLAYER_NUM
{ "PLAYERNUM" ,NULL,0,(void*)&config.playernum, INT},
#endif
#ifdef _BATTLE_GOLD
{ "BATTLEGOLD" ,NULL,0,(void*)&config.battlegold, INT},
#endif
#ifdef _ANGEL_TIME
{ "ANGELPLAYERTIME" ,NULL,0,(void*)&config.angelplayertime, INT},
{ "ANGELPLAYERMUN" ,NULL,0,(void*)&config.angelplayermun, INT},
#endif
#ifdef _RIDEMODE_20
{ "RIDEMODE" ,NULL,0,(void*)&config.ridemode, INT},
#endif
#ifdef _FM_POINT_PK
{ "FMPOINTPK" ,NULL,0,(void*)&config.fmpointpk, INT},
#endif
#ifdef _ENEMY_ACTION
{ "ENEMYACTION" ,NULL,0,(void*)&config.enemyact, INT},
#endif
#ifdef _CHECK_PEPEAT
{ "CHECKPEPEAT" ,NULL,0,(void*)&config.CheckRepeat, INT},
#endif
{ "CPUUSE" ,NULL,0,(void*)&config.cpuuse, INT},
#ifdef _VIP_ALL
{ "QQ" ,NULL,0,(void*)&config.checkvip, INT},
#endif
#ifdef _FM_JOINLIMIT
{ "JOINFAMILYTIME" ,NULL,0,(void*)&config.joinfamilytime, INT},
#endif
};
// Arminius 7.12 login announce
char announcetext[8192];
void AnnounceToPlayer(int charaindex)
{
char *ptr,*qtr;
ptr=announcetext;
while ((qtr=strstr(ptr,"\n"))!=NULL) {
qtr[0]='\0';
// printf("ptr=%s\n",ptr);
CHAR_talkToCli(charaindex, -1, ptr, CHAR_COLORYELLOW);
qtr[0]='\n';
ptr=qtr+1;
}
CHAR_talkToCli(charaindex, -1, ptr, CHAR_COLORYELLOW);
}
// Robin 0720
void AnnounceToPlayerWN(int fd)
{
char buf[8192];
lssproto_WN_send( fd , WINDOW_MESSAGETYPE_LOGINMESSAGE,
WINDOW_BUTTONTYPE_OK,
-1, -1,
makeEscapeString( announcetext, buf, sizeof(buf))
);
}
void LoadAnnounce(void)
{
FILE *f;
memset(announcetext, 0, sizeof(announcetext));
if ((f=fopen("./announce.txt","r"))!=NULL) {
fread(announcetext, sizeof(announcetext), 1, f);
announcetext[sizeof(announcetext)-1]='\0';
fclose(f);
}
}
#ifdef _PET_TALKPRO
PTALK pettalktext[PETTALK_MAXID];
void LoadPetTalk(void)
{
FILE *fp;
char fn[256];
char line[ 4096];
char talkmem[4096];
int maxid=0;
char buf1[256], buf2[256], buf3[256];
int talkNO=-1, mark=-1, i;
int len = sizeof( talkmem);
memset(talkmem, 0, sizeof(talkmem));
sprintf(fn, "%s/pettalk/pettalk.menu", getNpcdir());
for( i=0;i<PETTALK_MAXID;i++) {
pettalktext[i].ID = -1;
strcpy( pettalktext[i].DATA, "\0");
}
print("\n装载宠物对话文件:%s...", fn);
fp = fopen( fn, "r");
if( fp != NULL ) {
while( fgets( line, sizeof( line), fp)) {
if( strlen( talkmem) != 0 ) {
if( talkmem[strlen( talkmem) -1] != '|' ) {
strcatsafe( talkmem, len, "|");
}
}
chompex( line);
strcatsafe( talkmem,len, line);
}
fclose( fp);
}else {
print("错误:找不到文件!");
}
talkNO=1;
while( getStringFromIndexWithDelim( talkmem,"END",talkNO, buf1, sizeof( buf1)) != FALSE ){
talkNO++;
if( NPC_Util_GetStrFromStrWithDelim( buf1, "PETTEMPNO", buf2, sizeof( buf2)) == NULL )
continue;
mark=1;
strcpy( fn,"\0");
if( getStringFromIndexWithDelim( buf2,",", mark+1,buf3,sizeof( buf3)) != FALSE ) {
pettalktext[maxid].ID = atoi( buf3);
if( getStringFromIndexWithDelim( buf2,",", mark,buf3,sizeof( buf3)) != FALSE ) {
sprintf(fn, "%s/pettalk/%s", getNpcdir(), buf3);
//print("\n ...file:%s", fn);
fp = fopen( fn, "r");
if( fp != NULL ) {
char line[4096];
while( fgets( line, sizeof( line), fp ) ) {
if( strlen( pettalktext[maxid].DATA) != 0 ) {
if( pettalktext[maxid].DATA[strlen( pettalktext[maxid].DATA) -1] != '|' ) {
strcatsafe( pettalktext[maxid].DATA, sizeof( pettalktext[maxid].DATA), "|");
}
}
chompex( line);
strcatsafe( pettalktext[maxid].DATA, sizeof( pettalktext[maxid].DATA), line);
}
maxid++;
fclose( fp);
}else {
print("错误:[%s] 找不到!", fn);
pettalktext[maxid].ID=-1;
}
}else {
pettalktext[maxid].ID=-1;
}
}
print(".");
if( maxid >= PETTALK_MAXID )
break;
}
print("最大ID=%d...", maxid);
{
int haveid=0;
for( i=0;i<PETTALK_MAXID;i++) {
if( pettalktext[i].ID >= 0 ) {
haveid++;
}
}
print("载入总数=%d", haveid);
}
}
#else
char pettalktext[4096];
void LoadPetTalk(void)
{
FILE *fp;
char fn[256];
char line[ 4096];
int len = sizeof( pettalktext);
memset(pettalktext, 0, sizeof(pettalktext));
sprintf(fn, "%s/pettalk/pettalk.mem", getNpcdir());
fp = fopen( fn, "r");
if( fp != NULL ) {
print("\n\n 读取 pettalk.mem");
while( fgets( line, sizeof( line), fp)) {
if( strlen( pettalktext) != 0 ) {
if( pettalktext[strlen( pettalktext) -1] != '|' ) {
strcatsafe( pettalktext, len, "|");
}
}
chompex( line);
strcatsafe( pettalktext,len, line);
}
fclose( fp);
print("\n %s", pettalktext);
}else {
print("\n 不能找到 pettalk.mem");
}
}
#endif
#ifdef _GAMBLE_BANK
GAMBLEBANK_ITEMS GB_ITEMS[GAMBLEBANK_ITEMSMAX];
void Load_GambleBankItems( void)
{
FILE *fp;
char filename[256];
char buf1[256];
char name[128];
int num,ID,type;
int i=0;
sprintf(filename, "./data/gambleitems.txt" );
print("\n加载赌博物品文件 %s ...", filename);
fp = fopen( filename, "r");
if( fp != NULL ) {
while( fgets( buf1, sizeof( buf1), fp) != NULL ) {
if( strstr( buf1, "#") != 0 ) continue;
sscanf( buf1,"%s %d %d %d", name, &ID, &num , &type);
strcpy( GB_ITEMS[i].name, name);
GB_ITEMS[i].Gnum = num;
GB_ITEMS[i].ItemId = ID;
GB_ITEMS[i].type = type;
i++;
}
print("最大ID: %d ", i);
fclose( fp);
}else {
print("错误 找不到文件 %s", filename);
}
}
#endif
#ifdef _CFREE_petskill
PETSKILL_CODES Code_skill[PETSKILL_CODE];
void Load_PetSkillCodes( void)
{
FILE *fp;
char filename[256];
char buf1[256];
char name[128];
char type[256];
int num,ID;
int i=0;
sprintf(filename, "./data/skillcode.txt" );
print("\n加载宠物技能编码文件:%s...", filename);
fp = fopen( filename, "r");
if( fp != NULL ) {
while( fgets( buf1, sizeof( buf1), fp) != NULL ) {
sscanf( buf1,"%s %d %d %s", name, &num, &ID, type);
strcpy( Code_skill[i].name, name);
Code_skill[i].TempNo = num;
Code_skill[i].PetId = ID;
strcpy( Code_skill[i].Code, type);
//print("\n %s|%d|%d|%s|", Code_skill[i].name, Code_skill[i].TempNo,
// Code_skill[i].PetId, Code_skill[i].Code);
i++;
if( i >= PETSKILL_CODE ) break;
}
fclose( fp);
}else {
print("打不到文件 %s", filename);
}
print("完成\n");
}
#endif
#ifdef _GMRELOAD
BOOL LoadGMSet( char* filename )
{
FILE* fp;
int i = 0, gm_num = 0;
fp = fopen(filename, "r");
if (fp == NULL)
{
print("无法打开文件\n");
return FALSE;
}
for (i = 0; i < GMMAXNUM; i++)
{
strcpy(gminfo[i].cdkey, "");
gminfo[i].level = 0;
}
while(1){
char line[64], cdkey[64], level[64];
if (fgets(line, sizeof(line), fp) == NULL) break;
chop(line);
//change 使gmset.txt可以增加注解*******
if( line[0] == '#' )
continue;
for( i=0; i<strlen(line); i++ ){
if( line[i] == '#' ){
line[i] = '\0';
break;
}
}
//*************************************
gm_num = gm_num + 1;
if (gm_num > GMMAXNUM) break;
easyGetTokenFromString(line, 1, cdkey, sizeof(cdkey));
if (strcmp(cdkey, "") == 0) break;
strncpy(gminfo[gm_num].cdkey, cdkey, sizeof(gminfo[gm_num].cdkey));
easyGetTokenFromString(line, 2, level, sizeof(level));
if (strcmp(level, "") == 0) break;
gminfo[gm_num].level = atoi(level);
// print("\ncdkey:%s, level:%d", gminfo[gm_num].cdkey, gminfo[gm_num].level);
}
fclose(fp);
return TRUE;
}
#endif
/*------------------------------------------------------------
* 皿夫弘仿丞 毛 月
* 娄醒
* 卅仄
* 忒曰袄
* cahr*
------------------------------------------------------------*/
char* getProgname( void )
{
return config.progname;
}
/*------------------------------------------------------------
* configfilename 毛 月[
* 娄醒
* 卅仄
* 忒曰袄
* char*
------------------------------------------------------------*/
char* getConfigfilename( void )
{
return config.configfilename;
}
/*------------------------------------------------------------
* configfilename 毛涩烂允月[
* 娄醒
* newv char* 蕙仄中袄
* 忒曰袄
* 卅仄
------------------------------------------------------------*/
void setConfigfilename( char* newv )
{
strcpysafe( config.configfilename, sizeof( config.configfilename ),
newv );
}
/*------------------------------------------------------------
* 犯田永弘伊矛伙毛 月
* 娄醒
* 卅仄
* 忒曰袄
* unsigned int
------------------------------------------------------------*/
unsigned int getDebuglevel( void )
{
return config.debuglevel;
}
/*------------------------------------------------------------
* 犯田永弘伊矛伙毛涩烂允月
* 娄醒
* newv int 蕙仄中袄
* 忒曰袄
* unsigned int 樯及袄
------------------------------------------------------------*/
unsigned int setDebuglevel( unsigned int newv )
{
int old;
old = config.debuglevel;
config.debuglevel = newv;
return old;
}
/*------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -