亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? enemy.c

?? 最新主流石器時代源代碼,包含諸多目前流行功能代碼.
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* 襯澀爛楮   */
#include "version.h"
#include <stdio.h>
#include <string.h>
#include "common.h"
#include "util.h"
#include "buf.h"
#include "char_base.h"
#include "char.h"
#include "configfile.h"
#include "encount.h"
#include "enemy.h"
#include "pet.h"
#include "enemyexptbl.h"
#include "petmail.h"
#include "battle.h"
#include "pet_skillinfo.h"
#include "anim_tbl.h"
#include "log.h"

#ifdef _ADD_ENCOUNT           // WON ADD 增加敵遭遇觸發修件
#include "encount.h"
#include "npcutil.h"
#endif

#define		ENEMY_INDEXTABLEMAXSIZE		16
static ENEMY_EnemyTable *ENEMY_enemy;
static int              ENEMY_enemynum;

static ENEMYTEMP_Table *ENEMYTEMP_enemy;
static int              ENEMYTEMP_enemynum;

static GROUP_Table 		*GROUP_group;
static int              GROUP_groupnum;

int                     ENEMY_indextable[ENEMY_INDEXTABLEMAXSIZE];

#ifdef _ENEMY_FALLGROUND
extern	tagRidePetTable ridePetTable[296];
#endif

INLINE BOOL ENEMY_CHECKINDEX( int index)
{
    if( index < 0 || index >= ENEMY_enemynum) return FALSE;
    return TRUE;
}

static INLINE BOOL ENEMY_CHECKINTDATAINDEX( int index)
{
    if( index< 0 || index >= ENEMY_DATAINTNUM) return FALSE;
    return TRUE;
}

static INLINE BOOL ENEMY_CHECKCHARDATAINDEX( int index)
{
    if( index< 0 || index >= ENEMY_DATACHARNUM) return FALSE;
    return TRUE;
}

INLINE int ENEMY_getInt( int index, ENEMY_DATAINT element)
{
    return ENEMY_enemy[index].intdata[element];
}

INLINE int *ENEMY_getIntdata( int index)
{
	return ENEMY_enemy[index].intdata;
}

INLINE int ENEMY_setInt( int index, ENEMY_DATAINT element, int data)
{
    int buf;
    buf = ENEMY_enemy[index].intdata[element];
    ENEMY_enemy[index].intdata[element] = data;
    return buf;
}

INLINE char *ENEMY_getChar( int index, ENEMY_DATACHAR element)
{
    if(!ENEMY_CHECKINDEX(index))return NULL;
    if(!ENEMY_CHECKCHARDATAINDEX(element))return NULL;

    return ENEMY_enemy[index].chardata[element].string;
}

INLINE BOOL ENEMY_setChar( int index ,ENEMY_DATACHAR element, char* new )
{
    if(!ENEMY_CHECKINDEX(index))return FALSE;
    if(!ENEMY_CHECKCHARDATAINDEX(element))return FALSE;
    strcpysafe( ENEMY_enemy[index].chardata[element].string,
                sizeof(ENEMY_enemy[index].chardata[element].string),
                new );
    return TRUE;
}

int ENEMY_getEnemyNum( void)
{
    return ENEMY_enemynum;
}

INLINE BOOL ENEMYTEMP_CHECKINDEX( int index)
{
    if( index < 0 || index >= ENEMYTEMP_enemynum) return FALSE;
    return TRUE;
}

static INLINE BOOL ENEMYTEMP_CHECKINTDATAINDEX( int index)
{
    if( index< 0 || index >= E_T_DATAINTNUM) return FALSE;
    return TRUE;
}

static INLINE BOOL ENEMYTEMP_CHECKCHARDATAINDEX( int index)
{
    if( index< 0 || index >= E_T_DATACHARNUM) return FALSE;
    return TRUE;
}

INLINE int ENEMYTEMP_getInt( int index, ENEMYTEMP_DATAINT element)
{
    return ENEMYTEMP_enemy[index].intdata[element];
}

INLINE int ENEMYTEMP_setInt( int index, ENEMYTEMP_DATAINT element, int data)
{
    int buf;
    buf = ENEMYTEMP_enemy[index].intdata[element];
    ENEMYTEMP_enemy[index].intdata[element] = data;
    return buf;
}

INLINE char *ENEMYTEMP_getChar( int index, ENEMYTEMP_DATACHAR element)
{
    if(!ENEMYTEMP_CHECKINDEX(index))return NULL;
    if(!ENEMYTEMP_CHECKCHARDATAINDEX(element))return NULL;

    return ENEMYTEMP_enemy[index].chardata[element].string;
}

INLINE BOOL ENEMYTEMP_setChar( int index ,ENEMYTEMP_DATACHAR element, char* new )
{
    if(!ENEMYTEMP_CHECKINDEX(index))return FALSE;
    if(!ENEMYTEMP_CHECKCHARDATAINDEX(element))return FALSE;
    strcpysafe( ENEMYTEMP_enemy[index].chardata[element].string,
                sizeof(ENEMYTEMP_enemy[index].chardata[element].string),
                new );
    return TRUE;
}

int ENEMYTEMP_getEnemyNum( void)
{
    return ENEMYTEMP_enemynum;
}

INLINE BOOL GROUP_CHECKINDEX( int index)
{
    if( index < 0 || index >= GROUP_groupnum) return FALSE;
    return TRUE;
}

static INLINE BOOL GROUP_CHECKINTDATAINDEX( int index)
{
    if( index< 0 || index >= GROUP_DATAINTNUM) return FALSE;
    return TRUE;
}

static INLINE BOOL GROUP_CHECKCHARDATAINDEX( int index)
{
    if( index< 0 || index >= GROUP_DATACHARNUM) return FALSE;
    return TRUE;
}

INLINE int GROUP_getInt( int index, GROUP_DATAINT element)
{
    return GROUP_group[index].intdata[element];
}

INLINE int GROUP_setInt( int index, GROUP_DATAINT element, int data)
{
    int buf;
    buf = GROUP_group[index].intdata[element];
    GROUP_group[index].intdata[element] = data;
    return buf;
}

INLINE char *GROUP_getChar( int index, GROUP_DATACHAR element)
{
    if(!GROUP_CHECKINDEX(index))return NULL;
    if(!GROUP_CHECKCHARDATAINDEX(element))return NULL;

    return GROUP_group[index].chardata[element].string;
}

INLINE BOOL GROUP_setChar( int index ,GROUP_DATACHAR element, char* new )
{
    if(!GROUP_CHECKINDEX(index))return FALSE;
    if(!GROUP_CHECKCHARDATAINDEX(element))return FALSE;
    strcpysafe( GROUP_group[index].chardata[element].string,
                sizeof(GROUP_group[index].chardata[element].string),
                new );
    return TRUE;
}

int GROUP_getEnemyNum( void)
{
    return GROUP_groupnum;
}

BOOL ENEMYTEMP_initEnemy( char* filename )
{
    FILE*   f;
    char    line[256];
    int     linenum=0;
    int     enemytemp_readlen=0;
	int		i,j;

#ifdef _ENEMYTEMP_OPTIMUM
	int		max_enemytempid =0;
	char	token[256];
#endif
    f = fopen(filename,"r");
    if( f == NULL ){
        print( "文件打開失敗\n");
        return FALSE;
    }

    ENEMYTEMP_enemynum=0;

    /*  引內  躲卅墊互窒墊丐月井升丹井譬屯月    */
    while( fgets( line, sizeof( line ), f ) ){
        linenum ++;
        if( line[0] == '#' )continue;        /* comment */
        if( line[0] == '\n' )continue;       /* none    */
        chomp( line );

#ifdef _ENEMYTEMP_OPTIMUM // Robin 取出最大ENEMYTEMP ID
		if( getStringFromIndexWithDelim( line, ",", E_T_DATACHARNUM+E_T_TEMPNO+1,
				token, sizeof(token)) == FALSE )
			continue;
		max_enemytempid = max( atoi( token), max_enemytempid);
#endif

        ENEMYTEMP_enemynum++;
    }

    if( fseek( f, 0, SEEK_SET ) == -1 ){
        fprint( "Seek Error\n" );
        fclose(f);
        return FALSE;
    }

#ifdef _ENEMYTEMP_OPTIMUM
	print("\n 有效EBT:%d 最大EBT:%d \n", ENEMYTEMP_enemynum, max_enemytempid);
	ENEMYTEMP_enemynum = max_enemytempid +1;
#endif

    ENEMYTEMP_enemy = allocateMemory( sizeof(struct tagENEMYTEMP_Table)
                                   * ENEMYTEMP_enemynum );
    if( ENEMYTEMP_enemy == NULL ){
        fprint( "無法分配內存 %d\n" ,
                sizeof(struct tagENEMYTEMP_Table)*ENEMYTEMP_enemynum);
        fclose( f );
        return FALSE;
    }

	/* 賡渝祭 */
    for( i = 0; i < ENEMYTEMP_enemynum; i ++ ) {
    	for( j = 0; j < E_T_DATAINTNUM; j ++ ) {
    		ENEMYTEMP_setInt( i,j,-1);
    	}
    }
    linenum = 0;
    while( fgets( line, sizeof( line ), f ) ){
        linenum ++;
        if( line[0] == '#' )continue;        /* comment */
        if( line[0] == '\n' )continue;       /* none    */
        chomp( line );
        replaceString( line, '\t' , ' ' );
{
        char    buf[256];
        for( i = 0; i < strlen( line); i ++) {
            if( line[i] != ' ' ) {
                break;
            }
            strcpy( buf, &line[i]);
        }
        if( i != 0 ) {
            strcpy( line, buf);
        }
}
{
        char    token[256];
        int     ret;

#ifdef _ENEMYTEMP_OPTIMUM
		if( getStringFromIndexWithDelim( line, ",", E_T_DATACHARNUM+E_T_TEMPNO+1,
				token, sizeof(token)) == FALSE )
			continue;
		enemytemp_readlen = atoi(token);
#endif

#if 0
        ret = getStringFromIndexWithDelim( line,",",1,token,
                                           sizeof(token));
        if( ret==FALSE ){
            fprint("文件語法錯誤:%s 第%行\n",filename,linenum);
            continue;
        }
        ENEMYTEMP_setChar( enemytemp_readlen, E_T_NAME, token);
#endif
		for( i = 0; i < E_T_DATACHARNUM; i ++ ) {
	        ret = getStringFromIndexWithDelim( line,",",i+1,token,
	                                           sizeof(token));
	        if( ret==FALSE ){
	            fprint("文件語法錯誤:%s 第%d行\n",filename,linenum);
	            continue;
	        }
	        ENEMYTEMP_setChar( enemytemp_readlen, E_T_NAME + i, token);

		}
#define	ENEMYTEMP_STARTINTNUM		(E_T_DATACHARNUM+1)
        for( i = ENEMYTEMP_STARTINTNUM; i < E_T_DATAINTNUM+ENEMYTEMP_STARTINTNUM; i ++ ) {
            ret = getStringFromIndexWithDelim( line,",",i,token,
                                               sizeof(token));
            if( ret==FALSE ){
                fprint("文件語法錯誤:%s 第%d行\n",filename,linenum);
                break;
            }
            if( strlen( token) != 0 ) {
	            ENEMYTEMP_setInt( enemytemp_readlen, i - ENEMYTEMP_STARTINTNUM, atoi( token));
			}
        }
        if( i < E_T_DATAINTNUM+ENEMYTEMP_STARTINTNUM ) continue;


        enemytemp_readlen ++;
}
    }
    fclose(f);

    ENEMYTEMP_enemynum = enemytemp_readlen;

    print( "有效寵物基本狀態數是 %d...", ENEMYTEMP_enemynum );

#if 0

    for( i=0; i <ENEMYTEMP_enemynum ; i++ ){
        for( j = 0; j < E_T_DATACHARNUM; j ++ ) {
	        print( "%s ", ENEMYTEMP_getChar( i, j));
        }
        for( j = 0; j < E_T_DATAINTNUM; j ++ ) {
            print( "%d ", ENEMYTEMP_getInt( i, j));
        }
        print( "\n");
    }
#endif
    return TRUE;
}

BOOL ENEMYTEMP_reinitEnemy( void )
{
	freeMemory( ENEMYTEMP_enemy);
	return( ENEMYTEMP_initEnemy( getEnemyBasefile()));
}

int ENEMYTEMP_getEnemyTempArray( int enemyindex)
{
	if( !ENEMY_CHECKINDEX( enemyindex)) return -1;
	return ENEMY_enemy[enemyindex].enemytemparray;
}

int ENEMYTEMP_getEnemyTempArrayFromTempNo( int EnemyTempNo)
{
#ifdef _ENEMYTEMP_OPTIMUM
	if( EnemyTempNo >= 0 && EnemyTempNo < ENEMYTEMP_enemynum )
		return	EnemyTempNo;
#else
	int		i;
	for( i = 0; i < ENEMYTEMP_enemynum; i ++ ) {
		if( ENEMYTEMP_getInt( i, E_T_TEMPNO) == EnemyTempNo) {
			return i;
		}
	}
#endif
	return -1;
}

int ENEMYTEMP_getEnemyTempArrayFromInitnum( int EnemyTempNo)
{
	int		i;
	for( i = 0; i < ENEMYTEMP_enemynum; i ++ ) {
		if( ENEMYTEMP_getInt( i, E_T_INITNUM) == EnemyTempNo) {
			return i;
		}
	}
	return -1;
}

BOOL ENEMY_initEnemy( char* filename )
{
    FILE*   f;
    char    line[256];
    int     linenum=0;
    int     enemy_readlen=0;
	int		i,j;
#ifdef _ENEMY_OPTIMUM
	int		max_enemyid =0;
	char	token[256];
#endif

    f = fopen(filename,"r");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品蜜臀av| 亚洲柠檬福利资源导航| 九九国产精品视频| 欧美精品丝袜久久久中文字幕| 有码一区二区三区| 欧美午夜精品久久久久久超碰| 亚洲自拍偷拍网站| 欧美三级日韩三级国产三级| 亚洲国产日韩a在线播放| 欧美图区在线视频| 亚洲成人av电影在线| 欧美色综合网站| 亚洲va在线va天堂| 欧美一区永久视频免费观看| 免费人成在线不卡| 欧美α欧美αv大片| 国产揄拍国内精品对白| 国产欧美精品一区二区色综合| 成人丝袜18视频在线观看| 国产精品乱码一区二区三区软件| a4yy欧美一区二区三区| 中文字幕一区二区三区四区| 一本久久精品一区二区| 亚洲成人激情自拍| 欧美一区二区免费视频| 美女看a上一区| 国产喂奶挤奶一区二区三区| 99久久99久久精品免费看蜜桃| 亚洲丝袜美腿综合| 欧美日韩在线播放一区| 毛片av一区二区三区| 久久精品欧美一区二区三区不卡 | 99久久久国产精品| ●精品国产综合乱码久久久久 | 91偷拍与自偷拍精品| 一区二区三区中文字幕电影| 欧美男女性生活在线直播观看| 日本成人在线网站| 久久精品一二三| 成人av电影免费在线播放| 亚洲精品欧美二区三区中文字幕| 欧美猛男男办公室激情| 成人精品视频网站| 国产高清无密码一区二区三区| 精品国产精品一区二区夜夜嗨| 国产精品一区二区黑丝| 国产欧美日韩综合精品一区二区 | 亚洲女同一区二区| 欧美久久久影院| 激情综合色播激情啊| 国产精品久久国产精麻豆99网站| 日本道精品一区二区三区| 奇米777欧美一区二区| 国产清纯白嫩初高生在线观看91| 91啪亚洲精品| 蜜臀久久99精品久久久画质超高清| 久久免费国产精品| 在线视频亚洲一区| 久久精品理论片| 18欧美亚洲精品| 日韩丝袜情趣美女图片| 成人精品小蝌蚪| 午夜久久久久久久久久一区二区| 久久综合九色综合欧美98| 99riav一区二区三区| 蜜臀av一区二区在线观看| 中文字幕在线不卡视频| 日韩色视频在线观看| 91日韩在线专区| 捆绑调教美女网站视频一区| 国产精品福利av| 日韩欧美一区二区免费| av色综合久久天堂av综合| 天天色图综合网| 国产精品二三区| 日韩一区二区麻豆国产| 91丨porny丨蝌蚪视频| 日韩精品一区二区三区在线播放 | 国产三级一区二区| 欧美久久一二三四区| 成人午夜电影网站| 老色鬼精品视频在线观看播放| 亚洲精品免费在线观看| 国产色91在线| 日韩免费成人网| 国产精品丝袜一区| 色综合天天综合网天天狠天天 | 亚洲高清久久久| 中文字幕av一区 二区| 欧美一区二区大片| 色88888久久久久久影院按摩| 国产伦精一区二区三区| 日精品一区二区三区| 亚洲精品免费在线观看| 欧美激情一二三区| 欧美一卡二卡三卡| 欧美日韩一区 二区 三区 久久精品| 成人性视频免费网站| 久久成人免费网站| 亚洲成人福利片| 亚洲激情av在线| 国产精品成人在线观看| 国产日韩一级二级三级| 日韩免费电影一区| 5858s免费视频成人| 欧美性欧美巨大黑白大战| 91香蕉视频在线| 成人动漫一区二区三区| 国产成人在线影院| 日本不卡在线视频| 欧美久久久久中文字幕| 亚洲女爱视频在线| 欧美日本乱大交xxxxx| 91亚洲午夜精品久久久久久| 国产成人激情av| 国产一区二区免费视频| 久久精品72免费观看| 视频一区二区国产| 日日夜夜一区二区| 三级欧美韩日大片在线看| 午夜欧美在线一二页| 亚洲国产成人av网| 夜夜揉揉日日人人青青一国产精品| 亚洲同性同志一二三专区| 亚洲天堂久久久久久久| 日韩一区日韩二区| 亚洲精品国产无天堂网2021| 中文字幕亚洲一区二区av在线| 综合网在线视频| 亚洲欧美经典视频| 夜夜嗨av一区二区三区网页| 亚洲愉拍自拍另类高清精品| 亚洲午夜国产一区99re久久| 一区二区三区**美女毛片| 亚洲影院在线观看| 亚洲aaa精品| 日本va欧美va欧美va精品| 美女mm1313爽爽久久久蜜臀| 久久国产福利国产秒拍| 国产精品影视网| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美三区免费完整视频在线观看| 欧美日韩在线综合| 日韩免费观看高清完整版| 91精品国产福利在线观看| 日韩三级精品电影久久久 | 99精品视频在线播放观看| 不卡在线观看av| 在线看国产一区| 欧美精品自拍偷拍| 日韩精品一区二区三区蜜臀 | 国产裸体歌舞团一区二区| 国产专区综合网| 成人动漫一区二区在线| 色国产综合视频| 欧美日韩高清影院| 精品国偷自产国产一区| 国产日产精品1区| 亚洲欧美韩国综合色| 偷拍日韩校园综合在线| 黄色成人免费在线| 成人午夜电影小说| 在线亚洲高清视频| 日韩午夜在线观看视频| 国产无人区一区二区三区| 亚洲同性gay激情无套| 五月激情综合婷婷| 经典一区二区三区| 99久久久精品免费观看国产蜜| 在线观看日韩毛片| 日韩欧美亚洲另类制服综合在线| 久久麻豆一区二区| 亚洲精品视频自拍| 日本亚洲免费观看| 成人一区二区三区| 欧美日韩在线免费视频| 精品免费国产二区三区| 欧美电影免费观看高清完整版在| 日韩一区二区三| 欧美日免费三级在线| 成人国产在线观看| 欧美性受极品xxxx喷水| 日韩女优av电影| 亚洲视频在线一区二区| 视频一区在线播放| 不卡av在线免费观看| 欧美日韩精品一区视频| 国产日韩精品一区二区三区在线| 亚洲一区二区三区视频在线播放 | 亚洲美女免费视频| 蜜臀久久99精品久久久久宅男 | eeuss鲁片一区二区三区在线看| 欧美日韩一区二区在线观看| 国产三级欧美三级日产三级99| 亚洲一线二线三线久久久| 国产盗摄精品一区二区三区在线| 欧美日韩精品一区视频| 亚洲欧美影音先锋| 黑人精品欧美一区二区蜜桃| 欧美视频在线一区二区三区|