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

📄 char_base.c.bak

📁 石器时代8.0服务端完整源代码。可以直接编译
💻 BAK
📖 第 1 页 / 共 5 页
字号:
                  "%s=%s" CHAR_DELIMITER,                  CHAR_setchardata[i],                  makeEscapeString( one->string[i].string, escapebuffer,                                    sizeof( escapebuffer) ));        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i = 0 ; i < arraysizeof( one->flg ) ; i ++ ){        char    linedata[128];        snprintf( linedata , sizeof(linedata),                  FLGRESERVESTRING "%d=%d" CHAR_DELIMITER,                  i, one->flg[i]);        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i = 0 ; i < CHAR_SKILLMAXHAVE ; i ++ ){        char    linedata[128];        char    *skillstring=NULL;        if( one->haveSkill[i].use == TRUE)            skillstring = SKILL_makeStringFromSkillData(                &one->haveSkill[i].skill );        if( skillstring == NULL ) continue;        snprintf( linedata , sizeof( linedata ),                  SKILLRESERVESTRING "%d=%s" CHAR_DELIMITER,                  i,skillstring );        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i = 0 ; i < CHAR_MAXITEMHAVE ; i ++ ){        char    linedata[2048];        char    *itemstring=NULL;        if( one->indexOfExistItems[i] != -1 )            itemstring = ITEM_makeStringFromItemIndex(                							one->indexOfExistItems[i], 0);        if( itemstring == NULL )continue;        snprintf( linedata , sizeof( linedata ),                  ITEMRESERVESTRING "%d=%s" CHAR_DELIMITER,                  i, itemstring);        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i = 0 ; i < CHAR_MAXPOOLITEMHAVE ; i ++ ){        char    linedata[2048];        char    *itemstring=NULL;        if( one->indexOfExistPoolItems[i] != -1 )            itemstring = ITEM_makeStringFromItemIndex(                							one->indexOfExistPoolItems[i], 0);        if( itemstring == NULL )continue;        snprintf( linedata , sizeof( linedata ),                  POOLITEMRESERVESTRING "%d=%s" CHAR_DELIMITER,                  i, itemstring);        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i = 0 ; i < CHAR_TITLEMAXHAVE ; i ++ ){        char    linedata[128];		if( one->indexOfHaveTitle[i]< 0 || one->indexOfHaveTitle[i] >= CHAR_TITLEMAXHAVE ) {			continue;		}        snprintf( linedata , sizeof( linedata ),                  TITLERESERVESTRING "%d=%d" CHAR_DELIMITER,                  i, one->indexOfHaveTitle[i] );        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( i=0 ; i < ADDRESSBOOK_MAX ; i++ ){        char    linedata[512];		char	*p;		p = ADDRESSBOOK_makeAddressbookString(&one->addressBook[i]);		if( strlen( p) == 0 ) {			continue;		}        snprintf( linedata ,sizeof(linedata),                  ADDRESSBOOKRESERVESTRING "%d=%s" CHAR_DELIMITER,                  i,p            );        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;    	}    }    for( petnum = 0; petnum < CHAR_MAXPETHAVE; petnum ++ ) {		int	petindex;		char	linedata[4096*2];		char	*petstring;		petindex = one->unionTable.indexOfPet[petnum];	    if( !CHAR_CHECKINDEX(petindex))continue;		petstring = CHAR_makePetStringFromPetIndex( petindex);		if( petstring == NULL ) continue;        snprintf( linedata , sizeof(linedata),                  PETSERVERSTRING "%d=%s" CHAR_DELIMITER,petnum,petstring );        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;		}	}    for( petnum = 0; petnum < CHAR_MAXPOOLPETHAVE; petnum ++ ) {		int	petindex;		char	linedata[4096*2];		char	*petstring;		petindex = one->indexOfPoolPet[petnum];	    if( !CHAR_CHECKINDEX(petindex))continue;		petstring = CHAR_makePetStringFromPetIndex( petindex);		if( petstring == NULL ) continue;		//andy_log        if( strstr( petstring, "name:") == NULL ||			strstr( petstring, "ownt:") == NULL ) {			LodBadPetString( "petstring", "poolpet string buffer err:", petnum);			fprint( "ANDY err poolpet string buffer err:\n%s\n", petstring);        	goto RETURN;		}        snprintf( linedata , sizeof(linedata),                  POOLPETSERVERSTRING "%d=%s" CHAR_DELIMITER,petnum,petstring );        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength,                    linedata );        strlength += strlen( linedata );        if( strlength > sizeof( CHAR_dataString ) ) {			fprint( "err chardata buffer over\n");        	goto RETURN;		}	}#ifdef _CHAR_FIXDATADEF	{		char linedata[1024];		memset( linedata, 0, sizeof(linedata));        snprintf( linedata , sizeof(linedata),                  DATAENDCHECKPOINT "=%d" CHAR_DELIMITER, (int)time(NULL)/1000);        strcpysafe( &CHAR_dataString[strlength],                    sizeof( CHAR_dataString ) - strlength, linedata );		if( strlength > sizeof( CHAR_dataString ) ) {			LodBadPetString( "DATAENDCHECKPOINT", "err chardata buffer over", -1);			fprint( "err chardata buffer over:DATAENDCHECKPOINT !\n");        	goto MAKESTRINGERR;		}	}#endifRETURN:	if( strstr( CHAR_dataString, DATAENDCHECKPOINT) == NULL ){		LodBadPetString( CHAR_dataString, "err mk dataString no end", -1);	}    return CHAR_dataString;MAKESTRINGERR:	return NULL;}char* CHAR_makeStringFromCharIndex( int index ){    if( 0 <= index && index <= CHAR_charanum        /*    index OK*/        && CHAR_chara[index].use == TRUE )        /* OK */;    else        return NULL;    return CHAR_makeStringFromCharData(&CHAR_chara[index]);}BOOL CHAR_makeCharFromStringToArg( char* data, Char* one){    int i;    int readindex=1, rightData=0;    if( data[0] == '\0' )        return FALSE;DebugPoint=51;    {    		char name[4096];		char *sp = strstr( data, "name=");		char *sp2 = strstr( data, "ownt=");		if( sp && sp2 ){			snprintf( name, sp2-sp-5, "%s", sp+5 );					print("\n开始登陆人物名称:%s ", name );		}else			print("\n开始登陆人物名称错误! ");					if( data[strlen(data)-2] != '\n' ){			print("\n 登陆错误!:%s ",data+strlen(data)-20 );		}				if( strlen(name) > 16 ){			print("人物名称过长!! 人物名称:%s 长度:%d ", name ,strlen(name) );		}    }    memset( one , 0 , sizeof( Char ));DebugPoint=52;    CHAR_getDefaultChar(one, 0);    // Robin 0726 default RidePet    one->data[CHAR_RIDEPET] = -1;	strcpysafe( one->string[CHAR_FMNAME].string,		sizeof( one->string[CHAR_FMNAME].string), "\0" );	one->data[CHAR_FMINDEX] = -1;#ifdef _PETSKILL_BECOMEPIG    one->data[CHAR_BECOMEPIG] = -1;	one->data[CHAR_BECOMEPIG_BBI] = 100250;#endifDebugPoint=53;    while( 1 ){        BOOL    ret;        char    linebuf[4096];        char firstToken[256];        char secondToken[4096];		memset( linebuf, 0, sizeof( linebuf));		memset( firstToken, 0, sizeof( firstToken));		memset( secondToken, 0, sizeof( secondToken));DebugPoint=54;        ret = getStringFromIndexWithDelim( data ,CHAR_DELIMITER,                                           readindex,                                           linebuf,  sizeof( linebuf ) );DebugPoint=55;        if( ret == FALSE )break;        if( linebuf[0] == '#'   ||            linebuf[0] == '\n'  ||            linebuf[0] == '\0' ){                       readindex ++;            continue;        }DebugPoint=56;        ret = getStringFromIndexWithDelim( linebuf , "=" ,  1 ,                                           firstToken ,                                           sizeof(firstToken) );        if( ret == FALSE )  return FALSE;DebugPoint=57;        strcpysafe( secondToken , sizeof( secondToken ),                    linebuf + strlen(firstToken) + strlen("=") );DebugPoint=58;	    for( i = 0 ; i < CHAR_DATAINTNUM ; i ++ ){            if( strcmp(firstToken ,CHAR_setintdata[i] ) == 0 ){                one->data[i] = atoi( secondToken );                goto NEXT;            }        }DebugPoint=59;        for( i = 0 ; i < CHAR_DATACHARNUM ; i ++ ){            if( strcmp( firstToken ,CHAR_setchardata[i] ) == 0 ){                strcpysafe( one->string[i].string,                            sizeof(one->string[i].string),                            makeStringFromEscaped(secondToken) );				if( strlen( one->string[i].string ) > 128 ){                	print(" CHARDATA_to_long!!:%s:%d ", one->string[i].string, strlen( one->string[i].string ) );                	one->string[i].string[0]=0;                }                goto NEXT;            }        }DebugPoint=60;        if( strncmp( firstToken , FLGRESERVESTRING,                     strlen( FLGRESERVESTRING ) ) == 0 ){            int     flgindex;            flgindex = atoi( firstToken+strlen(FLGRESERVESTRING) );            if( flgindex < 0 || arraysizeof( one->flg ) <=  flgindex )                ;            else                one->flg[flgindex] = atoi( secondToken );            goto NEXT;        }DebugPoint=61;        if( strncmp( firstToken , ITEMRESERVESTRING,                     strlen( ITEMRESERVESTRING ) ) == 0 ){            int itemindex;            if( strcmp( secondToken, NULLITEM) == 0 )                goto NEXT;             itemindex = atoi( firstToken+strlen(ITEMRESERVESTRING) );            if( itemindex < 0 || CHAR_MAXITEMHAVE <=  itemindex                ||  one->indexOfExistItems[itemindex] != -1 ){                 ;            }else{                ITEM_Item   itmone;                BOOL ret;                ret = ITEM_makeExistItemsFromStringToArg( secondToken, &itmone, 0);                if( ret == TRUE ){                    int existitemindex;                    existitemindex = ITEM_initExistItemsOne( &itmone );                    one->indexOfExistItems[itemindex] = existitemindex;                }            }            goto NEXT;        }DebugPoint=62;        if( strncmp( firstToken , POOLITEMRESERVESTRING,                     strlen( POOLITEMRESERVESTRING ) ) == 0 ){            int itemindex;            if( strcmp( secondToken, NULLITEM) == 0 )                goto NEXT;            itemindex = atoi( firstToken+strlen(POOLITEMRESERVESTRING) );            if( itemindex < 0 || CHAR_MAXPOOLITEMHAVE <=  itemindex                ||  one->indexOfExistPoolItems[itemindex] != -1 ){                ;            }else{                ITEM_Item   itmone;                BOOL ret;                ret = ITEM_makeExistItemsFromStringToArg( secondToken , &itmone, 0 );                if( ret == TRUE ){                    int existitemindex;                    existitemindex = ITEM_initExistItemsOne( &itmone );                    one->indexOfExistPoolItems[itemindex] = existitemindex;                }            }            goto NEXT;        }DebugPoint=63;        if( strncmp( firstToken , SKILLRESERVESTRING,                     strlen( SKILLRESERVESTRING ) ) == 0 ){            int skillindex;            if( strcmp( secondToken, NULLSKILL) == 0 )                goto NEXT;            skillindex =atoi( firstToken+strlen(SKILLRESERVESTRING) );            if( skillindex < 0 || CHAR_SKILLMAXHAVE <=  skillindex                ||  one->haveSkill[skillindex].use == TRUE ){            }else{                BOOL    ret;                Skill   skillone;                ret=SKILL_makeSkillFromStringToArg(secondToken,&skillone);                if( ret == TRUE ){                    memcpy( &one->haveSkill[skillindex].skill , &skillone,                            sizeof( Skill ));                    one->haveSkill[skillindex].use = TRUE;                }            }            goto NEXT;        }DebugPoint=64;        if( strncmp( firstToken , TITLERESERVESTRING,                     strlen( TITLERESERVESTRING ) ) == 0 ){			int titlenumber=atoi(firstToken+strlen(TITLERESERVESTRING));            if( titlenumber < 0 || CHAR_TITLEMAXHAVE <= titlenumber ){            }else{                int titleindex = atoi( secondToken );                if( TITLE_getTitleIndex( titleindex) != -1)                    one->indexOfHaveTitle[titlenumber] = titleindex;            }            goto NEXT;        }DebugPoint=65;        if( strncmp( firstToken , ADDRESSBOOKRESERVESTRING,                     strlen( ADDRESSBOOKRESERVESTRING ) ) == 0 ){            int addressnumber = atoi( firstToken                                      +strlen(ADDRESSBOOKRESERVESTRING));            if( addressnumber < 0 || ADDRESSBOOK_MAX <= addressnumber ){            }else{                ADDRESSBOOK_makeAddressbookEntry( secondToken,                                                  &one                                                  ->addressBook[                                                      addressnumber]);            }            goto NEXT;        }DebugPoint=66;        if( strncmp( firstToken , PETSERVERSTRING,                     strlen( PETSERVERSTRING ) ) == 0 ){			Char	ch;			int		ret;			int	petnumber = atoi( firstToken+strlen(PETSERVERSTRING));			if( !CHAR_CHECKPETINDEX( petnumber)) goto NEXT;			ret = CHAR_makePetFromStringToArg(secondToken,&ch, petnumber);			if( ret == TRUE ){		        int petindex = PET_initCharOneArray( &ch );		        if( petindex < 0 ){		        	pri

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -