Exemple #1
0
BOOL NPC_NPCEnemy_BattleIn(  int meindex, int charaindex)
{
	int		gym;
	int		ret;
	char	buf[256];
	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];

	memset( argstr, 0, sizeof( argstr));
	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));
	gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym");

	if( gym > 0 ){
		ret = BATTLE_CreateVsEnemy( charaindex, 2, meindex);
	}else{
		ret = BATTLE_CreateVsEnemy( charaindex, 1, meindex);
	}
	if( ret == 0 ) {
		BattleArray[CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX)].WinFunc	= NPC_NPCEnemy_Dying;
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "startmsg", buf, sizeof( buf))	!= NULL ){
			CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW );
		}
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf))!= NULL ){
			if( atoi( buf) == 0 ) {
				NPC_NPCEnemy_StealItem( argstr, meindex, charaindex);
			}
		}
	}
	return ( ret == 0 ) ?TRUE:FALSE ;
}
Exemple #2
0
/*********************************
* âÙÓåÖÊ  
*********************************/
BOOL NPC_PetShopInit( int meindex )
{

	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buf[256];
	double rate;
	int intrate;
//	int cost;
	int tmp;

	/*--ÕýÄÌÃóɬÀÃ--*/
   	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPESTONESHOP );


	if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL){
		print("GetArgStrErr");
		return FALSE;
	}

	/*--ÒÁ¡õÐþë炙§±å·¤Ê¢½ñÁù»¯ÔÆÈÊ*/
	if( NPC_Util_GetStrFromStrWithDelim( npcarg, "nomal_rate", buf, sizeof( buf)) != NULL){
		rate = atof( buf);		
		intrate = ( int)( rate *1000);		
   		CHAR_setWorkInt( meindex , CHAR_WORK_NOMALRATE ,intrate );
	}else{
		CHAR_setWorkInt( meindex , CHAR_WORK_NOMALRATE ,1000 );
	}

		
	/*--µ©Ê¸ÆËÅÒ»ïÒÁ¡õÐþÊÖ·¤Ê¢½ñÁù»¯ÔÆÈÊ--*/
	if(NPC_Util_GetStrFromStrWithDelim( npcarg, "special_rate", buf, sizeof( buf))
	!=NULL)
	{
		rate = atof( buf);		
		intrate = ( int)( rate *1000);		
   		CHAR_setWorkInt( meindex , CHAR_WORK_SPECIALRATE ,intrate );
	}else{
		CHAR_setWorkInt( meindex , CHAR_WORK_SPECIALRATE ,1200 );
	}
	
	//   Øê  Ä¾àÅ·¤Ê¢
	//cost = NPC_Util_GetNumFromStrWithDelim( npcarg, "pool_cost");
	//if( cost == -1 ) cost = NPC_PETSHOP_POOLCOST_DEFAULT;
	//CHAR_setWorkInt( meindex, CHAR_WORK_POOLCOST, cost);
	
	
	//   Øê  Ä¾»¥Çë  Ô¾®Éýµ¤¾®Ã«·¤Ê¢
	tmp = NPC_Util_GetNumFromStrWithDelim( npcarg, "pool_flg");
	if( tmp != 1 ) tmp = 0;
	CHAR_setWorkInt( meindex, CHAR_WORK_POOLFLG, tmp);
    
    return TRUE;

}
BOOL NPC_PoolItemShopInit( int meindex)
{
	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];
	int cost;
	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));
	cost = NPC_Util_GetNumFromStrWithDelim( argstr, "cost");
	if( cost == -1 ) cost = NPC_POOLITEMSHOP_DEFAULT_COST;
	CHAR_setWorkInt( meindex, NPC_WORK_COST, cost);

	return TRUE;
}
Exemple #4
0
/**************************************
 * 豢嗯毛民尼永弁允月
 * -1 蟯   0動曉」    〕井勾  邰Stone
 **************************************/
static int NPC_AirCheckStone( int meindex, int charaindex, char *argstr)
{
	int		gold;
	
	/* 卅仃木壬中仃卅中婁醒及民尼永弁 */
	gold = NPC_Util_GetNumFromStrWithDelim( argstr, "needstone");
	if( gold == -1 ) {
		return 0;
	}
	if( CHAR_getInt( charaindex, CHAR_GOLD) >= gold ) return gold;
	
	return -1;
}
Exemple #5
0
/**************************************
 * »ØÄꤵ¤ì¤¿¥ì¥Ù¥ë°Ê¾å¤«¥Á¥§¥Ã¥¯¤¹¤ë
 **************************************/
static BOOL NPC_BusCheckLevel( int meindex, int charaindex, char *argstr)
{
	int		level;
	
	/* ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤°ú¿ô¤Î¥Á¥§¥Ã¥¯ */
	level = NPC_Util_GetNumFromStrWithDelim( argstr, "needlevel");
	if( level == -1 ) {
		return TRUE;
	}
	if( CHAR_getInt( charaindex, CHAR_LV) >= level ) return TRUE;
	
	return FALSE;
}
Exemple #6
0
/**************************************
 * ¸æ¶â¤ò¥Á¥§¥Ã¥¯¤¹¤ë
 * -1 ÂÌ   0°Ê¾å¡v    ¡f¤«¤Ä  Í×Stone
 **************************************/
static int NPC_BusCheckStone( int meindex, int charaindex, char *argstr)
{
	int		gold;
	
	/* ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤°ú¿ô¤Î¥Á¥§¥Ã¥¯ */
	gold = NPC_Util_GetNumFromStrWithDelim( argstr, "needstone");
	if( gold == -1 ) {
		return 0;
	}
	if( CHAR_getInt( charaindex, CHAR_GOLD) >= gold ) return gold;
	
	return -1;
}
Exemple #7
0
static BOOL NPC_AirCheckMaxLevel( int meindex, int charaindex, char *argstr)
{
	int		level;
	
	/* 卅仃木壬中仃卅中婁醒及民尼永弁 */
	level = NPC_Util_GetNumFromStrWithDelim( argstr, "maxlevel");
	if( level == -1 ) {
		return TRUE;
	}
	if( CHAR_getInt( charaindex, CHAR_LV) < level ) return TRUE;
	
	return FALSE;
}
Exemple #8
0
/**************************************
 * ���������������
 * -1 ��   0������    �ݾ���  ۢStone
 **************************************/
static int NPC_BusCheckStone( int meindex, int charaindex, char *argstr)
{
	int		gold;
	
	/* ئ��ľ������ئ��¦�Ѽ��������� */
	gold = NPC_Util_GetNumFromStrWithDelim( argstr, "needstone");
	if( gold == -1 ) {
		return 0;
	}
	if( CHAR_getInt( charaindex, CHAR_GOLD) >= gold ) return gold;
	
	return -1;
}
Exemple #9
0
/**************************************
 * ϶�ý�ľ����ì�ﶯ����������������
 **************************************/
static BOOL NPC_BusCheckLevel( int meindex, int charaindex, char *argstr)
{
	int		level;
	
	/* ئ��ľ������ئ��¦�Ѽ��������� */
	level = NPC_Util_GetNumFromStrWithDelim( argstr, "needlevel");
	if( level == -1 ) {
		return TRUE;
	}
	if( CHAR_getInt( charaindex, CHAR_LV) >= level ) return TRUE;
	
	return FALSE;
}
Exemple #10
0
/*********************************
* 賡渝質  
*********************************/
BOOL NPC_SysinfoInit( int meindex )
{
	int tmp;
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
    char	buff[128];

    argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1));

	CHAR_setWorkInt( meindex, CHAR_WORK_MODE, 0);

	/* 由旦伐□玉本永玄 */
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "passwd", buff, sizeof( buff))
		== NULL)
	{
		strcpy( buff, NPC_SYSINFO_PASSWD_DEFAULT);
	}
	CHAR_setWorkChar( meindex, CHAR_WORKCHAR_PASSWD, buff);


	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "time");
	if( tmp == -1 ) tmp = NPC_SYSINFO_TIMELIMIT_DEFAULT;
	CHAR_setWorkInt( meindex, CHAR_WORK_TIMELIMIT, tmp);

    /* 丟永本□斥及縉潸   */
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "msg_col");
	if( tmp < CHAR_COLORRED || tmp > CHAR_COLORWHITE )
		tmp = CHAR_COLORYELLOW;
	CHAR_setWorkInt( meindex, CHAR_WORK_MSGCOLOR, tmp);

	CHAR_setWorkInt( meindex, CHAR_WORK_PLAYER, -1);
	CHAR_setWorkInt( meindex, CHAR_WORK_SHUTDOWNTIME, 0);
	CHAR_setWorkInt( meindex, CHAR_WORK_SHUTDOWNDSPTIME, 0);
    CHAR_setInt( meindex, CHAR_WHICHTYPE, CHAR_TYPEOTHERNPC);
	CHAR_setFlg( meindex, CHAR_ISATTACKED, 0);

	return TRUE;
}
Exemple #11
0
/*********************************
* ������  
*********************************/
BOOL NPC_ActionInit( int meindex )
{
	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	int		tmp;
	
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "msgcol");
	if( tmp == -1 ) tmp = NPC_ACTION_MSGCOLOR_DEFAULT;
	CHAR_setWorkInt( meindex, CHAR_WORK_MSGCOLOR, tmp);
    
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEACTION );
	
	
    return TRUE;
}
Exemple #12
0
/*********************************
* 賡渝質  
*********************************/
BOOL NPC_ActionInit( int meindex )
{
	char	*argstr;
	int		tmp;
	//argstr = NPC_Util_GetArgStr( meindex, pu_npcarg, sizeof( pu_npcarg));
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "msgcol");
	if( tmp == -1 ) tmp = NPC_ACTION_MSGCOLOR_DEFAULT;
	CHAR_setWorkInt( meindex, CHAR_WORK_MSGCOLOR, tmp);
    
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEACTION );
	
	
    return TRUE;
}
BOOL NPC_PetRacePetInit( int meindex )
{
	char argstr[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buf[256];
	int showstopx, showstopy;
	int routenum = 0, i = 0;
	
	NPC_Util_GetArgStr(meindex, argstr, sizeof(argstr));
	for (i = 1; i <= routenum; i++)
	{
		char routetostring[64];
		snprintf(routetostring, sizeof(routetostring), "routeto");
		if (NPC_Util_GetStrFromStrWithDelim(argstr, routetostring, buf, sizeof(buf)) == NULL)
		{
			print("Init_npcracepet: Didn't set route\n");
			return FALSE;
		}
	}
	showstopx = NPC_Util_GetNumFromStrWithDelim(argstr, "showstopx");
	showstopy = NPC_Util_GetNumFromStrWithDelim(argstr, "showstopy");
	if (showstopx < 0 || showstopx > 100 || showstopy < 0 || showstopy > 100)
		return FALSE;
	CHAR_setInt(meindex, CHAR_WHICHTYPE, CHAR_PETRACEPET);
	CHAR_setWorkInt(meindex, NPC_WORK_STATE, NPC_State_Wait);
	CHAR_setWorkInt(meindex, NPC_WORK_ROUTEPOINT, 2);
	CHAR_setWorkInt(meindex, NPC_WORK_WAITFLAG, 1);
	CHAR_setWorkInt(meindex, NPC_WORK_FLOOR, CHAR_getInt(meindex, CHAR_FLOOR));
	CHAR_setWorkInt(meindex, NPC_WORK_X, CHAR_getInt(meindex, CHAR_X));
	CHAR_setWorkInt(meindex, NPC_WORK_Y, CHAR_getInt(meindex, CHAR_Y));
	CHAR_setWorkInt(meindex, NPC_WORK_DIR, CHAR_getInt(meindex, CHAR_DIR));
	CHAR_setWorkInt(meindex, NPC_WORK_STOPX, showstopx);
	CHAR_setWorkInt(meindex, NPC_WORK_STOPY, showstopy);
	CHAR_setInt(meindex, CHAR_LOOPINTERVAL, PETRACEPET_WAIT_LOOPTIME);
	NPC_PetRacePetSetPoint(meindex, argstr);

	return	TRUE;
}
/*********************************
* ½é´ü½èÍý
*********************************/
BOOL NPC_FMPKManInit( int meindex )
{

	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buf[1024];
	char buff2[256];
	int fl, x, y, meid;

	if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL){
		print("FMPKMan:GetArgStrErr");
		return FALSE;
	}

	/*--¥ï¡¼¥×¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ë¤«----*/
	/*--¥ï¡¼¥×¤¬ÀßÄꤵ¤ì¤Æ¤Ê¤±¤ì¤ÐNPC¤òºî¤é¤Ê¤¤¤³¤È¤Ë¤¹¤ë--*/
	if(NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf))==NULL){
	        print("FMPKMan Err is %s",npcarg);
		print("FMPKMan Err");
		return FALSE;
	}

	/*--¥ï¡¼¥×¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ¤â¥ï¡¼¥×À褬¤Ê¤±¤ì¤Ð¤â¤Á¤í¤óNPC¤òºî¤é¤Ê¤¤--*/
	getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2));
	fl=atoi(buff2);
	getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2));
	x=atoi(buff2);
	getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2));
	y=atoi(buff2);

	if( MAP_IsValidCoordinate( fl,x,y )== FALSE ){
		print( "FMWarp NPC:Invalid warpman ERR" );
		return FALSE;
	}
	
	meid = NPC_Util_GetNumFromStrWithDelim(npcarg, "ID");
	if ((meid < 0) || (meid >= MAX_SCHEDULEMAN))
	{
		print("FMPKMAN NPC: Init error Invalid ID:%d", meid);
		return	FALSE;
	}
	CHAR_setWorkInt(meindex, NPC_WORK_ID, meid);

	/*--¥¿¥¤¥×ÀßÄê--*/
   	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWARPMAN );

    return TRUE;

}
Exemple #15
0
/*********************************
* ������
*********************************/
BOOL NPC_FMPKManInit( int meindex )
{

    char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
    char buf[1024];
    char buff2[256];
    int fl, x, y, meid;

    if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL) {
        print("FMPKMan:GetArgStrErr");
        return FALSE;
    }

    /*--������ɬ�ý�ľ�����¾�----*/
    /*--������ɬ�ý�ľ��ئ��ľ��NPCë����ئ�г��������--*/
    if(NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf))==NULL) {
        print("FMPKMan Err is %s",npcarg);
        print("FMPKMan Err");
        return FALSE;
    }

    /*--������ɬ�ý�ľ���л��ַ������ƻ�ئ��ľ������Ƿ��NPCë����ئ��--*/
    getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2));
    fl=atoi(buff2);
    getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2));
    x=atoi(buff2);
    getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2));
    y=atoi(buff2);

    if( MAP_IsValidCoordinate( fl,x,y )== FALSE ) {
        print( "FMWarp NPC:Invalid warpman ERR" );
        return FALSE;
    }

    meid = NPC_Util_GetNumFromStrWithDelim(npcarg, "ID");
    if ((meid < 0) || (meid >= MAX_SCHEDULEMAN))
    {
        print("FMPKMAN NPC: Init error Invalid ID:%d", meid);
        return	FALSE;
    }
    CHAR_setWorkInt(meindex, NPC_WORK_ID, meid);

    /*--������ɬ��--*/
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWARPMAN );

    return TRUE;

}
Exemple #16
0
/*********************************
* âÙÓåÖÊ  
*********************************/
BOOL NPC_FMPKManInit( int meindex )
{

	char npcarg[NPC_UTIL_GETARGSTR_BUFSIZE];
	char buf[1024];
	char buff2[256];
	int fl, x, y, meid;

	if( NPC_Util_GetArgStr( meindex, npcarg, sizeof( npcarg)) == NULL){
		print("FMPKMan:GetArgStrErr");
		return FALSE;
	}

	/*--·¥¡õÃó»¥É¬Àýñľ»¯ÖÐÔ¾®----*/
	/*--·¥¡õÃó»¥É¬Àýñľ»¯Ø¦ØêľÈÉNPCë×ÛÈÕئÖгðÎç±åÔÊÔÂ--*/
	if(NPC_Util_GetStrFromStrWithDelim( npcarg, "WARP", buf, sizeof( buf))==NULL){
	        print("FMPKMan Err is %s",npcarg);
		print("FMPKMan Err");
		return FALSE;
	}

	/*--·¥¡õÃó»¥É¬Àýñľ»¯Öл¯ÊÖ·¥¡õÃóÛÆ»¥Ø¦ØêľÈÉÊÖÇÐÇ·ÊÏNPCë×ÛÈÕئÖÐ--*/
	getStringFromIndexWithDelim(buf,",",1,buff2,sizeof(buff2));
	fl=atoi(buff2);
	getStringFromIndexWithDelim(buf,",",2,buff2,sizeof(buff2));
	x=atoi(buff2);
	getStringFromIndexWithDelim(buf,",",3,buff2,sizeof(buff2));
	y=atoi(buff2);

	if( MAP_IsValidCoordinate( fl,x,y )== FALSE ){
		print( "FMWarp NPC:Invalid warpman ERR" );
		return FALSE;
	}
	
	meid = NPC_Util_GetNumFromStrWithDelim(npcarg, "ID");
	if ((meid < 0) || (meid >= MAX_SCHEDULEMAN))
	{
		print("FMPKMAN NPC: Init error Invalid ID:%d", meid);
		return	FALSE;
	}
	CHAR_setWorkInt(meindex, NPC_WORK_ID, meid);

	/*--ÕýÄÌÃóɬÀÃ--*/
   	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEWARPMAN );

    return TRUE;

}
Exemple #17
0
BOOL NPC_NPCEnemy_BattleIn(  int meindex, int charaindex)
{
	int		gym;
	int		ret;
	char	buf[256];
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;

	//memset( argstr, 0, sizeof( argstr));
	argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1));
	gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym");

#ifdef _EMENY_CHANCEMAN
	{
		int masterindex=-1;
		masterindex = NPC_EmenyChanceCheck( meindex, charaindex, argstr);
		if( CHAR_CHECKINDEX( masterindex)){
			charaindex = masterindex;
		}else	{
			return TRUE;
		}
	}
#endif
	if( gym > 0 ){
		ret = BATTLE_CreateVsEnemy( charaindex, 2, meindex);
	}else{
		ret = BATTLE_CreateVsEnemy( charaindex, 1, meindex);
	}
	if( ret == 0 ) {
		BattleArray[CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEINDEX)].WinFunc	= NPC_NPCEnemy_Dying;
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "startmsg", buf, sizeof( buf))	!= NULL ){
			CHAR_talkToCliAndParty( charaindex, meindex ,buf , CHAR_COLORYELLOW );
		}
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf))!= NULL ){
			if( atoi( buf) == 0 ) {
				NPC_NPCEnemy_StealItem( argstr, meindex, charaindex);
			}
		}
	}
	return ( ret == 0 ) ?TRUE:FALSE ;
}
Exemple #18
0
/*********************************
* ½é´ü½è  
*********************************/
BOOL NPC_BusInit( int meindex )
{
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
	int i;
	char	buf[256];
	int	routenum;
	int	waittime;
	int seflg;
	
	argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1));

	/* ¤Ê¤±¤ì¤Ð¤¤¤±¤Ê¤¤°ú¿ô¤Î¥Á¥§¥Ã¥¯ */
	routenum = NPC_Util_GetNumFromStrWithDelim( argstr, "routenum");//¦æ¾p¸ô½u¼Æ¶q

	if( routenum == -1 ) {
		print( "npcbus:nothing routenum \n");
		return FALSE;
	}
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEMAX, routenum);
	
	for( i = 1; i <= routenum; i ++ ) {
		char routetostring[64];
		snprintf( routetostring, sizeof( routetostring), "routeto%d", i);
		if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf))
			== NULL ) 
		{
			print( "npcbus:nothing route to \n");
			return FALSE;
		}

	}
	waittime = NPC_Util_GetNumFromStrWithDelim( argstr, "waittime");

	if( waittime == -1 ) waittime = NPC_BUS_WAITTIME_DEFAULT;
	CHAR_setWorkInt( meindex, NPC_WORK_WAITTIME, waittime);

	seflg = NPC_Util_GetNumFromStrWithDelim( argstr, "seflg");

	if( seflg == -1 ) seflg = TRUE;
	CHAR_setWorkInt( meindex, NPC_WORK_SEFLG, seflg);
    
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEBUS );
	
	CHAR_setWorkInt( meindex, NPC_WORK_MODE, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, 2);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, 0);
			
	CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 
						NPC_BUS_WAITINGMODE_WAITTIME);
    
    /* ¸½ºß¤Î»þ´Ö¤ò¥»¥Ã¥È */
    CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);

    for( i = 0; i < CHAR_PARTYMAX; i ++) {
    	CHAR_setWorkInt( meindex, CHAR_WORKPARTYINDEX1 + i, -1);
    }
	
	/* ¥ë¡¼¥È·èÄꤹ¤ë */
{
	int rev;
	int r = CHAR_getWorkInt( meindex, NPC_WORK_ROUTEMAX);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, RAND( 1, r));
	//print( "route:%d\n",CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));

	/*   ¤í¥¹¥¿¡¼¥È */
	rev = NPC_Util_GetNumFromStrWithDelim( argstr, "reverse");

	if( rev == 1 ) {
		int num = NPC_BusGetRoutePointNum( meindex, argstr);

		if( num <= 0 ) {
			print( "npcbus:Very strange¡I\n");
			return FALSE;
		}
		CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, num-1);
		CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 1);
	}
	/* ¥ë¡¼¥È¤ò¥»¥Ã¥È¤¹¤ë */
	NPC_BusSetPoint( meindex, argstr);
	/* ¹Ô¤­Àè¤ò  ¼¨¤¹¤ë */
	NPC_BusSetDestPoint( meindex, argstr);
}

    return TRUE;
}
Exemple #19
0
/*********************************
* 賡渝質  
*********************************/
BOOL NPC_AirInit( int meindex )
{
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
	int	i;
	char	buf[256],buf1[256];
	int	routenum;
	int	waittime;
	int	seflg;
	int	onewayflg;
	
	argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1));
	
	/* 卅仃木壬中仃卅中婁醒及民尼永弁 */
	routenum = NPC_Util_GetNumFromStrWithDelim( argstr, "routenum");
	if( routenum == -1 ) {
		print( "npcair:nothing routenum \n");
		return FALSE;
	}
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEMAX, routenum);
	
	for( i = 1; i <= routenum; i ++ ) {
		char routetostring[64];
		snprintf( routetostring, sizeof( routetostring), "routeto%d", i);
		if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf))
			== NULL ) 
		{
			print( "npcair:nothing route to \n");
			return FALSE;
		}
	}
	//ANDY_ADD	NPC_WORK_RUNWAVE
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "WAVE",buf1, sizeof(buf1)) == NULL )	{
		CHAR_setWorkInt( meindex, NPC_WORK_RUNWAVE, 77);
	}else	{
		CHAR_setWorkInt( meindex, NPC_WORK_RUNWAVE, atoi( buf1) );
	}

	waittime = NPC_Util_GetNumFromStrWithDelim( argstr, "waittime");
	if( waittime == -1 ) waittime = NPC_AIR_WAITTIME_DEFAULT;
	CHAR_setWorkInt( meindex, NPC_WORK_WAITTIME, waittime);

	seflg = NPC_Util_GetNumFromStrWithDelim( argstr, "seflg");
	if( seflg == -1 ) seflg = TRUE;
	CHAR_setWorkInt( meindex, NPC_WORK_SEFLG, seflg);
	
	onewayflg = NPC_Util_GetNumFromStrWithDelim( argstr, "oneway");
	if( onewayflg == -1 ) onewayflg = FALSE;	// default
	CHAR_setWorkInt( meindex, NPC_WORK_ONEWAYFLG, onewayflg);
	
	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEBUS );
	
	CHAR_setWorkInt( meindex, NPC_WORK_MODE, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, 2);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, 0);
			
	CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 
		NPC_AIR_WAITINGMODE_WAITTIME);
    
    /* 蜇箕及凜棉毛本永玄 */
    CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);

    for( i = 0; i < CHAR_PARTYMAX; i ++) {
    	CHAR_setWorkInt( meindex, CHAR_WORKPARTYINDEX1 + i, -1);
    }
	
	/* 伙□玄瑁爛允月 */
{
	int rev;
	int r = CHAR_getWorkInt( meindex, NPC_WORK_ROUTEMAX);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, RAND( 1, r));
	//print( "route:%d\n",CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));

	/*   欠旦正□玄 */
	rev = NPC_Util_GetNumFromStrWithDelim( argstr, "reverse");
	if( rev == 1 ) {
		int num = NPC_AirGetRoutePointNum( meindex, argstr);
		if( num <= 0 ) {
			print( "npcairplane:Very strange!\n");
			return FALSE;
		}
		CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, num-1);
		CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 1);
	}
	/* 伙□玄毛本永玄允月 */
	NPC_AirSetPoint( meindex, argstr);
	/* 墊五燮毛  憎允月 */
	NPC_AirSetDestPoint( meindex, argstr);
}

    return TRUE;
}
Exemple #20
0
BOOL NPC_NPCEnemyInit( int meindex )
{
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
	char	buf[64];
	int		tmp, gym;


	if((argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1))) == NULL )	{
		print("Can't GetArgStr !!");
		return FALSE;
	}
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "sktype", buf, sizeof( buf)) != NULL ){
		CHAR_setWorkInt( meindex, CHAR_WORK_BATTLETYPE, atoi( buf));
	}else{
		CHAR_setWorkInt( meindex, CHAR_WORK_BATTLETYPE, 0);
	}

	if( NPC_Util_GetStrFromStrWithDelim( argstr, "enemyno", buf, sizeof( buf)) == NULL ){
		char filename[256];
		NPC_Util_CheckAssignArgFile( meindex, filename);
		print( "NPCEnemy: nothing parameter [enemyno]:\n%s\n", filename);
		return FALSE;
	}else {
		int		i;
		for( i = 0; i < NPC_ENEMY_ENEMYNUMBER; i ++ ) {
			int		curEnemy;
			char	data[128];
			int		ret;
			ret = getStringFromIndexWithDelim( buf,",", i + 1, data, sizeof(data));
			if( ret == FALSE)
				break;
			curEnemy = ENEMY_getEnemyArrayFromId( atoi( data));
			if( !ENEMY_CHECKINDEX( curEnemy) ) {
				char filename[256];
				NPC_Util_CheckAssignArgFile( meindex, filename);
				print( "NPCEnemy: invalid param [enemyno:%d data:%s curEnemy:%d]\nfile:%s\n",i+1, data, curEnemy, filename );
				return FALSE;
			}
		}
	}
	
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf)) != NULL ) {
		if( NPC_Util_GetStrFromStrWithDelim( argstr, "item", buf, sizeof( buf)) == NULL ) {
			print( "NPCEnemy:有指定steal而沒有指定item,很奇怪\n");
			return FALSE;
		}
	}

	gym = NPC_Util_GetNumFromStrWithDelim( argstr, "gym");

	if( gym > 0 ){
		CHAR_setInt( meindex, CHAR_BASEBASEIMAGENUMBER,
			gymbody[RAND( 0, arraysizeof( gymbody ) - 1)] );
		CHAR_setInt( meindex, CHAR_BASEIMAGENUMBER,
			CHAR_getInt( meindex, CHAR_BASEBASEIMAGENUMBER ) );
		CHAR_setInt( meindex, CHAR_LV, gym );
	}
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "dieact");
	if( tmp != 1 ) 
		tmp = 0;
	CHAR_setWorkInt( meindex, CHAR_WORK_DIEACT, tmp);
	if( strstr( argstr, "NEWNPCENEMY") != 0 )	{
		CHAR_setWorkInt( meindex, CHAR_WORK_WARP_FLOOR, 0 );
		CHAR_setWorkInt( meindex, CHAR_WORK_WARP_Y, 0 );
		CHAR_setWorkInt( meindex, CHAR_WORK_WARP_X, 0 );
	}else	{
		if( CHAR_getWorkInt( meindex, CHAR_WORK_DIEACT) == 1 ) {
			char buff1[256];
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "warpfl", buff1, sizeof( buff1) ) == NULL) {
				print( "NPCENEMY: nothing warp_floor %s\n", buff1);
				return FALSE;
			}
			tmp = atoi( buff1);
			CHAR_setWorkInt( meindex, CHAR_WORK_WARP_FLOOR, tmp);
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "warpx", buff1, sizeof( buff1) ) == NULL) {
				print( "NPCENEMY: nothing warp_x\n");
				return FALSE;
			}
			tmp = atoi( buff1);
			CHAR_setWorkInt( meindex, CHAR_WORK_WARP_X, tmp);
			if( NPC_Util_GetStrFromStrWithDelim( argstr, "warpy", buff1, sizeof( buff1) ) == NULL) {
				print( "NPCENEMY: nothing warp_y\n");
				return FALSE;
			}
			tmp = atoi( buff1);
			CHAR_setWorkInt( meindex, CHAR_WORK_WARP_Y, tmp);
			if( MAP_IsValidCoordinate( CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),
								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),
								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y) ) == FALSE ){
				char filename[256];
				NPC_Util_CheckAssignArgFile( meindex, filename);
				print( "NPCENEMY: %s: .\n %s.\nInvalid fl=%d,x=%d,y=%d\n", filename, argstr,
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y) );
				return FALSE;
			}
		}
	}
	//andy_end
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "entype");
	if( tmp != 1 && tmp != 2)
		tmp = 0;
	CHAR_setWorkInt( meindex, CHAR_WORK_ENCOUNTTYPE, tmp);

	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "onebattle");
	if( tmp != 1 )
		tmp = 0;
	CHAR_setWorkInt( meindex, CHAR_WORK_ONEBATTLE, tmp);

	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "time");
	if( tmp == -1 )
		tmp = NPC_ENEMY_REVIVALTIMA_DEFAULT;
	CHAR_setWorkInt( meindex, CHAR_WORK_REVIVALTIME, tmp);

	CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPENPCENEMY );
	CHAR_setWorkInt( meindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_ENEMY);
	CHAR_setWorkInt( meindex, CHAR_WORK_BASEIMGBAK,
						CHAR_getInt( meindex, CHAR_BASEIMAGENUMBER));
	return TRUE;
}
Exemple #21
0
int NPC_NPCEnemy_Dying( int battleindex, int meindex )
{
	char	argstr1[NPC_UTIL_GETARGSTR_BUFSIZE];
	char *argstr;
	char	buf[64];
	int	i,toindex=-1;
	int tmp=-1;

	if( !CHAR_CHECKINDEX( meindex)) {
		return FALSE;
	}
	argstr = NPC_Util_GetArgStr( meindex, argstr1, sizeof( argstr1));

#ifdef _NEW_WARPMAN
	if( strstr( argstr, "NEWNPCENEMY") )    {
	}else	{
#endif
	/* 蠅    及陲太 */
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "endmsg", buf, sizeof( buf)) != NULL ) {
		for( i = 0; i < 5; i ++ ) {
			/* 爵  卞輔笛仄化中月蟈夠卞丟永本□斥 */
			int toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex;
			if( CHAR_CHECKINDEX( toindex) )	{
				CHAR_talkToCli( toindex, meindex ,buf , CHAR_COLORYELLOW );
			}
		}

	}
#ifdef _NEW_WARPMAN
	}
#endif
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "steal", buf, sizeof( buf)) != NULL ) {
		print("\n steal TRUE !!");
		if( atoi( buf) == 1 ) {
			int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex;
			NPC_NPCEnemy_StealItem( argstr, meindex, charaindex);
		}
		
	}
#ifdef _ALLDOMAN // (不可開) Syu ADD 排行榜NPC
	if( NPC_Util_GetStrFromStrWithDelim( argstr, "herobattlefield", buf, sizeof( buf)) != NULL ) {
			int charaindex = BattleArray[battleindex].Side[0].Entry[0].charaindex;
			CHAR_setWorkInt ( charaindex , CHAR_WORKHEROFLOOR , atoi ( buf ) ) ;
			// Syu ADD 
			if ( atoi ( buf ) > CHAR_getInt ( charaindex , CHAR_HEROFLOOR ) )
				CHAR_setInt ( charaindex , CHAR_HEROFLOOR , atoi( buf ) ) ; 
	}

#endif
	tmp = NPC_Util_GetNumFromStrWithDelim( argstr, "dieact");
	if( tmp != 1 ) 
		tmp = 0;
	CHAR_setWorkInt( meindex, CHAR_WORK_DIEACT, tmp);
	if( CHAR_getWorkInt( meindex, CHAR_WORK_DIEACT) == 0 ) {
	    Char 	*ch;
		CHAR_setInt( meindex, CHAR_BASEIMAGENUMBER, 0);
		print("bbi---->bi10");
		CHAR_sendCToArroundCharacter( CHAR_getWorkInt( meindex, CHAR_WORKOBJINDEX));

		CHAR_setWorkInt( meindex, CHAR_WORKEVENTTYPE, CHAR_EVENT_ALTERRATIVE);
		MAP_sendAroundMapdata( CHAR_getInt( meindex, CHAR_FLOOR),
								CHAR_getInt( meindex, CHAR_X),
								CHAR_getInt( meindex, CHAR_Y));
	    ch  = CHAR_getCharPointer( meindex);
	    if( ch != NULL ) {
			strcpysafe( ch->charfunctable[CHAR_LOOPFUNC].string,
						sizeof( ch->charfunctable[CHAR_LOOPFUNC]),
						"NPCEnemyLoop");
			CHAR_constructFunctable( meindex);
			CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 5000);
			CHAR_setWorkInt( meindex, CHAR_WORK_DIETIME, NowTime.tv_sec);
		}else {
			print( "NPCENEMY:err\n");
		}
	}else {
		for( i = 0; i < 5; i ++ ) {
			toindex = BattleArray[battleindex].Side[0].Entry[i].charaindex;
			if( CHAR_CHECKINDEX( toindex) ) {
#ifdef _NEW_WARPMAN
				if( strstr( argstr, "NEWNPCENEMY") )    {
					BOOL Party=TRUE;
					if( NPC_NPCEnemy_CheckFree( meindex, toindex , &Party) == FALSE )       {
						continue;
					}
					if( Party == TRUE )	{
					}else	{
						if( CHAR_getWorkInt( toindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_LEADER )	{
							if( NPC_WarpAllMsg( meindex, toindex ) == TRUE )	{
								return TRUE;
							}
						}
						continue;
					}
				}
				CHAR_DischargeParty( toindex, 0); // 拆隊
				CHAR_warpToSpecificPoint( toindex,
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),
					CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y)
					);

#else
				CHAR_warpToSpecificPoint( toindex,
								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_FLOOR),
								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_X),
								CHAR_getWorkInt( meindex, CHAR_WORK_WARP_Y)
								);
#endif
#ifdef _NPC_REPLACEMENT
				Check_EnemyWarpMe( meindex, argstr);
#endif
			}
		}
	}
	return TRUE;
}
Exemple #22
0
/*********************************
* ������  
*********************************/
BOOL NPC_BusInit( int meindex )
{
	char	argstr[NPC_UTIL_GETARGSTR_BUFSIZE - 1024 * 20];
	int i;
	char	buf[256];
	int	routenum;
	int	waittime;
	int seflg;
	
	NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr));

	/* ئ��ľ������ئ��¦�Ѽ��������� */
	routenum = NPC_Util_GetNumFromStrWithDelim( argstr, "routenum");//��ʻ·������

	if( routenum == -1 ) {
		print( "npcbus:nothing routenum \n");
		return FALSE;
	}
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEMAX, routenum);
	
	for( i = 1; i <= routenum; i ++ ) {
		char routetostring[64];
		snprintf( routetostring, sizeof( routetostring), "routeto%d", i);
		if( NPC_Util_GetStrFromStrWithDelim( argstr, routetostring,buf, sizeof(buf))
			== NULL ) 
		{
			print( "npcbus:nothing route to \n");
			return FALSE;
		}

	}
	waittime = NPC_Util_GetNumFromStrWithDelim( argstr, "waittime");

	if( waittime == -1 ) waittime = NPC_BUS_WAITTIME_DEFAULT;
	CHAR_setWorkInt( meindex, NPC_WORK_WAITTIME, waittime);

	seflg = NPC_Util_GetNumFromStrWithDelim( argstr, "seflg");

	if( seflg == -1 ) seflg = TRUE;
	CHAR_setWorkInt( meindex, NPC_WORK_SEFLG, seflg);
    
    CHAR_setInt( meindex , CHAR_WHICHTYPE , CHAR_TYPEBUS );
	
	CHAR_setWorkInt( meindex, NPC_WORK_MODE, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, 2);
	CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 0);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, 0);
			
	CHAR_setInt( meindex, CHAR_LOOPINTERVAL, 
						NPC_BUS_WAITINGMODE_WAITTIME);
    
    /* �ػ�������ë������ */
    CHAR_setWorkInt( meindex, NPC_WORK_CURRENTTIME, NowTime.tv_sec);

    for( i = 0; i < CHAR_PARTYMAX; i ++) {
    	CHAR_setWorkInt( meindex, CHAR_WORKPARTYINDEX1 + i, -1);
    }
	
	/* ������������ */
{
	int rev;
	int r = CHAR_getWorkInt( meindex, NPC_WORK_ROUTEMAX);
	CHAR_setWorkInt( meindex, NPC_WORK_CURRENTROUTE, RAND( 1, r));
	//print( "route:%d\n",CHAR_getWorkInt( meindex, NPC_WORK_CURRENTROUTE));

	/*   Ƿ�������� */
	rev = NPC_Util_GetNumFromStrWithDelim( argstr, "reverse");

	if( rev == 1 ) {
		int num = NPC_BusGetRoutePointNum( meindex, argstr);

		if( num <= 0 ) {
			print( "npcbus:����֣�\n");
			return FALSE;
		}
		CHAR_setWorkInt( meindex, NPC_WORK_ROUTEPOINT, num-1);
		CHAR_setWorkInt( meindex, NPC_WORK_ROUNDTRIP, 1);
	}
	/* �������������� */
	NPC_BusSetPoint( meindex, argstr);
	/* ������ë  ������ */
	NPC_BusSetDestPoint( meindex, argstr);
}

    return TRUE;
}