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

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

?? enemy.c

?? 石器時代8.0服務端完整源代碼??梢灾苯泳幾g
?? 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| 欧美年轻男男videosbes| 国产日韩成人精品| 国产精品99久久久久久久vr | 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久久亚洲精品一区二区三区| 国产乱码精品一品二品| 最新国产の精品合集bt伙计| 91免费国产视频网站| 欧美激情一二三区| 亚洲码国产岛国毛片在线| 成人黄色一级视频| 夜夜嗨av一区二区三区网页| 欧美色图免费看| 久久国产精品99久久久久久老狼 | 成人av高清在线| 夜夜精品视频一区二区 | 免费欧美在线视频| 日本一区二区高清| 欧美日韩在线免费视频| 久久99久久99| 亚洲男人天堂av网| 久久尤物电影视频在线观看| 93久久精品日日躁夜夜躁欧美| 天天亚洲美女在线视频| 国产香蕉久久精品综合网| 91女人视频在线观看| 免费成人在线视频观看| 亚洲国产精华液网站w | 精品国产凹凸成av人导航| 国产精品一二三四区| 亚洲一区二区视频在线观看| 欧美成人一区二区三区片免费 | 一区二区在线免费观看| 精品久久久影院| 99久久精品免费观看| 麻豆高清免费国产一区| 亚洲精品国久久99热| 精品不卡在线视频| 欧美三级韩国三级日本三斤| 国产精品香蕉一区二区三区| 日韩国产高清在线| 亚洲欧美一区二区三区久本道91| 精品国产乱码久久久久久夜甘婷婷| 日本电影欧美片| 国产成人av电影在线| 免费不卡在线视频| 一区二区三区波多野结衣在线观看 | 亚洲综合一区二区精品导航| 国产偷国产偷精品高清尤物| 51久久夜色精品国产麻豆| 91麻豆产精品久久久久久| 国产久卡久卡久卡久卡视频精品| 亚洲线精品一区二区三区| 一区精品在线播放| 欧美极品少妇xxxxⅹ高跟鞋 | 欧美视频三区在线播放| 99精品国产99久久久久久白柏 | 麻豆传媒一区二区三区| 日日摸夜夜添夜夜添精品视频| 亚洲激情图片小说视频| 国产欧美一区二区三区在线老狼| 日韩一级免费一区| 91麻豆精品国产91久久久久| 欧美偷拍一区二区| 在线精品视频一区二区| 色噜噜狠狠色综合中国| 99久久精品免费看国产免费软件| 成人精品在线视频观看| 丁香六月久久综合狠狠色| 国产高清一区日本| 国产激情视频一区二区三区欧美| 久久99国产精品久久99果冻传媒| 美腿丝袜亚洲综合| 日本不卡1234视频| 麻豆精品一区二区三区| 麻豆精品在线视频| 极品少妇xxxx精品少妇| 国内精品免费在线观看| 国产美女娇喘av呻吟久久| 国产老妇另类xxxxx| 粉嫩av亚洲一区二区图片| 成人性生交大片免费看视频在线 | 欧美激情在线观看视频免费| 国产视频一区二区三区在线观看 | 欧美mv日韩mv国产网站app| 日韩欧美一级二级| 精品99999| 国产午夜亚洲精品午夜鲁丝片| 国产三级久久久| 中文字幕一区二区三区乱码在线| 亚洲欧美偷拍三级| 亚洲国产视频一区| 久久草av在线| 成人高清视频在线| 欧美性xxxxx极品少妇| 欧美日韩免费电影| 精品电影一区二区三区| 中文幕一区二区三区久久蜜桃| 国产精品国产成人国产三级| 一区二区欧美国产| 日本不卡一区二区| 国产黑丝在线一区二区三区| 99精品热视频| 日韩视频123| 一区在线观看视频| 蜜臀精品久久久久久蜜臀 | 欧美日韩情趣电影| 久久综合国产精品| 亚洲精品日韩一| 美国十次综合导航| 91美女在线观看| 欧美r级电影在线观看| 亚洲免费资源在线播放| 美国十次综合导航| 色综合久久99| 久久免费视频色| 亚洲高清视频的网址| 国产河南妇女毛片精品久久久 | 日本一区二区电影| 五月天中文字幕一区二区| 国产成人免费视频网站| 欧美群妇大交群中文字幕| 亚洲国产高清在线| 日本少妇一区二区| 色先锋资源久久综合| 久久久亚洲欧洲日产国码αv| 亚洲一区二区欧美日韩| 国产乱淫av一区二区三区| 欧美日韩一区二区三区视频| 国产日韩欧美a| 久久精品噜噜噜成人88aⅴ| 一本到高清视频免费精品| 2023国产精品视频| 偷窥少妇高潮呻吟av久久免费| 波波电影院一区二区三区| 欧美成人video| 亚洲福中文字幕伊人影院| av在线播放成人| 久久久久久久网| 青青草原综合久久大伊人精品| 在线免费精品视频| 综合中文字幕亚洲| 国产精品综合二区| 欧美电影免费观看完整版| 亚洲国产你懂的| 91网站视频在线观看| 国产午夜精品久久久久久久| 精品亚洲成a人在线观看| 在线成人小视频| 亚洲午夜精品17c| 欧美在线视频不卡| 一区二区三区在线视频播放| www.99精品| 国产精品免费看片| 国产风韵犹存在线视精品| 精品剧情v国产在线观看在线| 日本欧美肥老太交大片| 欧美日韩不卡在线| 亚洲国产精品精华液网站| 欧美在线视频日韩| 亚洲电影你懂得| 欧美精品在线观看一区二区| 香蕉加勒比综合久久| 欧美三级三级三级| 午夜亚洲福利老司机| 欧美伦理视频网站| 日韩精品一二三四| 日韩视频不卡中文| 国产乱码一区二区三区| 国产午夜精品美女毛片视频| 大陆成人av片| 亚洲欧洲精品一区二区精品久久久 | 亚洲视频每日更新| 色又黄又爽网站www久久| 亚洲一二三四区不卡| 欧美日韩精品一区视频| 日本不卡123| 亚洲精品一区二区三区福利| 国产一区二区三区不卡在线观看| 欧美精品一区二区三区久久久| 国产福利一区二区三区视频| 国产欧美精品在线观看| av资源网一区| 亚洲成人免费av| 日韩欧美一级二级| 国产精品原创巨作av| 中文字幕色av一区二区三区| 色美美综合视频| 青草av.久久免费一区| 久久午夜电影网| 91在线国内视频| 水蜜桃久久夜色精品一区的特点| 欧美大片一区二区三区| 成人动漫一区二区三区| 亚洲国产精品精华液网站| 精品国产欧美一区二区| 成人高清在线视频| 婷婷久久综合九色国产成人| 国产色产综合色产在线视频|