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

📄 npccreate.c

📁 石器时代2.0完整版源代码.已经加入新功能. 在REDHAT9下GCC3.4编译成功.
💻 C
📖 第 1 页 / 共 2 页
字号:
            char    secondToken[256];            int     ret;            ret = getStringFromIndexWithDelim( line, "=",  1, firstToken,                                               sizeof( firstToken ) );            if( ret == FALSE ){                print( "Find error at %s in line %d. Ignore\n",                       filename , linenum);                break;            }            ret = getStringFromIndexWithDelim( line, "=", 2, secondToken,                                               sizeof( secondToken ) );            if( ret == FALSE ){                print( "Find error at %s in line %d. Ignore\n",                       filename , linenum);                break;            }            if( strcasecmp("floorid",firstToken) == 0 ){                cr.intdata[NPC_CREATEFLOORID] = atoi(secondToken);            }else if( strcasecmp("borncenter", firstToken) == 0 ){                getFourIntsFromString(secondToken,&center[0].x,                            &center[0].y,&wh[0].w,&wh[0].h );                defborn = TRUE;            }else if( strcasecmp("borncorner", firstToken) == 0 ){                getFourIntsFromString(secondToken,&lu[0].x,&lu[0].y,                            &rd[0].x,&rd[0].y );                defborn = TRUE;                deflurd[0]=TRUE;            }else if( strcasecmp("movecenter", firstToken) == 0 ){                getFourIntsFromString(secondToken,&center[1].x,                            &center[1].y,&wh[1].w,&wh[1].h );                defmove = TRUE;            }else if( strcasecmp("movecorner", firstToken) == 0 ){                getFourIntsFromString(secondToken,&lu[1].x,&lu[1].y,                            &rd[1].x,&rd[1].y );                defmove = TRUE;                deflurd[1]=TRUE;            }else if( strcasecmp("dir",firstToken) == 0 ){                cr.intdata[NPC_CREATEDIR] = atoi( secondToken );            }else if( strcasecmp("graphicname",firstToken) == 0 ){                cr.intdata[NPC_CREATEBASEIMAGENUMBER]                    = CHAR_seekGraphicNumberFromString(secondToken);            }else if( strcasecmp("name",firstToken) == 0 ){                strcpysafe( cr.chardata[NPC_CREATENAME].string,                            sizeof(cr.chardata[NPC_CREATENAME].string),                            secondToken );            }else if( strcasecmp("time",firstToken) == 0 ){                cr.intdata[NPC_CREATETIME] = atoi( secondToken );            }else if( strcasecmp("date",firstToken) == 0 ){                cr.intdata[NPC_CREATEDATE] = atoi( secondToken );            }else if( strcasecmp("createnum",firstToken) == 0 ){                cr.intdata[NPC_CREATEBORNNUM] = atoi( secondToken );            }else if( strcasecmp( "boundary", firstToken) == 0 ){                cr.intdata[NPC_CREATEBOUNDARY] = atoi( secondToken );            }else if( strcasecmp( "ignoreinvincible", firstToken) == 0 ){                cr.intdata[NPC_CREATEIGNOREINVINCIBLE] = atoi( secondToken );		//jeffrey 1231#ifdef _ADD_ACTION			}else if( strcasecmp( "action", firstToken) == 0 ){				cr.intdata[NPC_CREATEACTION] = atoi( secondToken );#endif			    // Robin 0731            }else if( strcasecmp( "family", firstToken) == 0 ){                cr.intdata[NPC_CREATEFAMILY] = atoi( secondToken );            }else if( strcasecmp("enemy", firstToken) == 0 ){                int     templateindex;                char    enemyname[64];                /*  雁钗瞬民尼永弁  */                if( enemyreadindex <= arraysizeof(cr.templateindex) )                    /* OK */                    ;                else                    break;                getStringFromIndexWithDelim(secondToken,"|",1,enemyname,                                            sizeof(enemyname) );                templateindex= NPC_templateGetTemplateIndex(enemyname);                if( templateindex != -1 ){                    cr.templateindex[enemyreadindex] = templateindex;                    {                        char    tmp[2];                        int     ret;                        ret = getStringFromIndexWithDelim( secondToken,                                                           "|",2,tmp,                                                           sizeof(tmp) );                        if( ret == FALSE )                            cr.arg[enemyreadindex].string[0] = '\0';                        else                            strcpysafe( cr.arg[enemyreadindex].string,                                        sizeof( cr.arg[enemyreadindex].                                                string ),                                        secondToken+strlen(enemyname)+1 );                    }                    enemyreadindex++;                }else                    fprint( "没有这种模块:\n[%s(%d)%s] enemy:%s\n",                            filename ,linenum,secondToken, enemyname);            }else{                fprint( "没有这种登陆 %s %s:%d\n",firstToken,filename,                        linenum );            }        }        }    }    fclose(f);    return TRUE;FCLOSERETURNFALSE:    fclose(f);    return FALSE;}BOOL NPC_readNPCCreateFiles( char* topdirectory ,int createsize){    STRING64    *filenames;    int         filenum;    int         i;    filenames = (STRING64 *)allocateMemory( sizeof( STRING64 ) *                                              (int)getFilesearchnum( ) );	if( filenames == NULL ){	    print( "读取NPC创建文件... 内存错误\n" );		return FALSE;	}    filenum = rgetFileName( topdirectory ,filenames ,getFilesearchnum( ) );    if( filenum == -1 ){	    freeMemory( filenames );    	return FALSE;    }	if( filenum >= getFilesearchnum( ) ){		print( "文件搜索数目失败 %d\n", getFilesearchnum( ) );		while( 1 );	}    if( !NPC_initCreateArray( createsize ) ){        fprint( "开启创建数组错误\n" );	    freeMemory( filenames );        return FALSE;    }    print( "读取NPC创建文件..." );    for( i = 0 ; i < filenum ; i ++ )        if( NPC_IsNPCCreateFile( filenames[i].string ))            if( NPC_readCreateFile( filenames[i].string ) == -1 )                break;    print( "正确创建NPC %d ..." , NPC_create_readindex );     NPC_createnum=NPC_create_readindex;#ifdef DEBUG	/* 99/4/8 By Kawata csv溥挚卞仄化支月 */	print( "Npc_Create's\n");    for( i = 0 ; i < NPC_createnum ; i ++ ){        int     j;        /*print( "NPC_create[%d]:\n", i);*/        print( "%d,", i);        for( j = 0 ; j < NPC_CREATECHARNUM ; j ++ )            print("%s," , NPC_create[i].chardata[j].string );        /*print( "\tIntdata\t" );*/        for( j = 0 ; j < NPC_CREATEINTNUM ; j ++ )            print("%d," , NPC_create[i].intdata[j] );        /***print("\n" );        print( "\tChardata\t" );***/        for( j = 0 ; j < NPC_create[i].intdata[NPC_CREATEENEMYNUM]; j ++ )            print("%d" , NPC_create[i].templateindex[j] );        /*print("\n" );*/        print("\n" );    }#endif /*DEBUG*/    freeMemory( filenames );    return TRUE;}/*------------------------------------------------------------ * createindex 井日 boundary 互涩烂今木化中月井升丹井毛苇月 * 娄醒 *  createindex         int         create及奶件犯永弁旦 * 忒曰袄 *  涩烂今木化中月          TRUE(1) *  涩烂今木化中卅中        FALSE(0) ------------------------------------------------------------*/BOOL NPC_isBoundarySet( int createindex ){    if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE;    return NPC_create[createindex].intdata[NPC_CREATEBOUNDARY];}/*------------------------------------------------------------ * 娄醒 *  r                   RECT*       袄毛熬仃午月RECT 及禾奶件正 * 忒曰袄 ------------------------------------------------------------*/BOOL NPC_createGetRECT( int createindex,RECT*   r ){    if( NPC_CHECKCREATEINDEX(createindex) == FALSE )return FALSE;    r->x = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX];    r->y = NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY];    r->width        = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNX]        - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPX];    r->height        = NPC_create[createindex].intdata[NPC_CREATEMOVERIGHTDOWNY]        - NPC_create[createindex].intdata[NPC_CREATEMOVELEFTUPY];    return TRUE;}/*------------------------------------------------------------ * 娄醒 *  cindex      int     奶件犯永弁旦 * 忒曰袄 *  BOOL    综匀化中中桦宁  TRUE(1) *  BOOL    综匀化中仃卅中桦宁  FALSE(0) ------------------------------------------------------------*/BOOL NPC_createCheckGenerateFromTime( int cindex ){    struct timeval  old;    if( !NPC_CHECKCREATEINDEX(cindex) )        return FALSE;    if( NPC_create[cindex].workdata[NPC_CREATEWORKNEVERMAKE] )        return FALSE;    if( NPC_create[cindex].intdata[NPC_CREATEBORNNUM]        <=  NPC_create[cindex].workdata[NPC_CREATEWORKENEMYNUM] )        return FALSE;    if( NPC_create[cindex].intdata[NPC_CREATETIME] < 0 )return FALSE;    old.tv_sec = NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTSEC];    old.tv_usec= NPC_create[cindex].workdata[NPC_CREATEWORKMAKESTARTUSEC];    if( time_diff_us( NowTime , old ) <=        NPC_create[cindex].intdata[NPC_CREATETIME]*1000 )        return FALSE;    return TRUE;}/*------------------------------------------------------------ * 娄醒 *  tindex      int     奶件犯永弁旦 * 忒曰袄 *  卅仄 ------------------------------------------------------------*/void NPC_createInitTime( int index ){    /*  综月仪卞卅匀凶井日袄毛涩烂  */    NPC_create[index].workdata[NPC_CREATEWORKMAKESTARTSEC] =        NowTime.tv_sec;    NPC_create[index].workdata[NPC_CREATEWORKMAKESTARTUSEC] =        NowTime.tv_usec;}/*------------------------------------------------------------ * 娄醒 *  index       int         奶件犯永弁旦 * 忒曰袄 *  卅仄 ------------------------------------------------------------*/void NPC_createIncreaseEnemynum( int index ){    if( !NPC_CHECKCREATEINDEX(index) )return;    NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] ++;}/*------------------------------------------------------------ * 衬互韶氏匹市它件玄醒毛蛹日允楮醒 * 娄醒 *  index       int         奶件犯永弁旦 * 忒曰袄 *  卅仄 ------------------------------------------------------------*/void NPC_createDecreaseEnemynum( int index ){    if( !NPC_CHECKCREATEINDEX(index) )return;    NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] --;}/*------------------------------------------------------------ * 娄醒 *  index       int         奶件犯永弁旦 * 忒曰袄 *  TRUE:MAX  FALSE:啜丹 ------------------------------------------------------------*/BOOL NPC_createCheckMaxEnemynum( int index ){    if( NPC_create[index].intdata[NPC_CREATEBORNNUM]        <=  NPC_create[index].workdata[NPC_CREATEWORKENEMYNUM] )        return TRUE;	else		return FALSE;}

⌨️ 快捷键说明

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