Esempio n. 1
0
int PET_CleanPetdeletetime( int objmeindex)
{
	int		pindex;

	if( OBJECT_getType(objmeindex) != OBJTYPE_CHARA ) return 0;
	pindex = OBJECT_getIndex( objmeindex);
	if( CHAR_getInt( pindex, CHAR_WHICHTYPE) != CHAR_TYPEPET) return 0;
	if( CHAR_getInt( pindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) {
	}else if( CHAR_getWorkInt( pindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){
	}else {
#ifdef _PET_LOSTPET
//		CHAR_CharSaveLostPet( pindex, 0);
#endif
		LogPet(
			"系统",
			"Watchfunc",
			CHAR_getChar( pindex, CHAR_NAME),
			CHAR_getInt( pindex, CHAR_LV),
			"timeout_lost(系统清除-地上自由宠)",
			CHAR_getInt( pindex, CHAR_FLOOR),
			CHAR_getInt( pindex,CHAR_X ),
			CHAR_getInt( pindex,CHAR_Y ),
			CHAR_getChar( pindex, CHAR_UNIQUECODE)   // shan 2001/12/14
		);
		CHAR_CharaDelete(pindex);
		return 1;
	}
	return 0;
}
Esempio n. 2
0
void PET_CHECKFreePetIsIt( int petindex)
{
	int petputtime, defmaxtime;
	defmaxtime = getPetdeletetime();
	petputtime = CHAR_getInt( petindex, CHAR_PUTPETTIME);

	if( NowTime.tv_sec < ( petputtime + getPetdeletetime() ) ) return;

#ifdef _PET_LOSTPET
//	CHAR_CharSaveLostPet( petindex, 0);
#endif

	LogPet(
			"系统",
			"Watchfunc",
			CHAR_getChar( petindex, CHAR_NAME),
			CHAR_getInt( petindex, CHAR_LV),
			"timeout_lost(系统清除-地上自由宠)",
			CHAR_getInt( petindex, CHAR_FLOOR),
			CHAR_getInt( petindex,CHAR_X ),
			CHAR_getInt( petindex,CHAR_Y ),
			CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14
		);

	CHAR_CharaDelete(petindex);
}
Esempio n. 3
0
/*------------------------------------------------------------------------
*
* void NPC_Util_NPCDelete( int srcindex)
*
* int	srcindex 	����index
*
------------------------------------------------------------------------*/
void NPC_Util_NPCDelete( int srcindex)
{
    //int objindex;
    //objindex = CHAR_getWorkInt(srcindex,CHAR_WORKOBJINDEX);

	if( CHAR_getInt( srcindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) return;
	if( NPC_createCheckMaxEnemynum( CHAR_getInt(srcindex,CHAR_NPCCREATEINDEX )))
		NPC_createInitTime( CHAR_getInt(srcindex,CHAR_NPCCREATEINDEX ));
    NPC_createDecreaseEnemynum( CHAR_getInt(srcindex,
                                            CHAR_NPCCREATEINDEX ) );

	CHAR_CharaDelete( srcindex );

}
Esempio n. 4
0
/*------------------------------------------------------------------------
* NPC毛壅  今六月〔
*
* void NPC_Util_NPCDelete( int srcindex)
*
* int	srcindex 	壅允index
*
------------------------------------------------------------------------*/
void NPC_Util_NPCDelete( int srcindex)
{
    //int objindex;
    //objindex = CHAR_getWorkInt(srcindex,CHAR_WORKOBJINDEX);

	/* createnum 互    及凜〕戲引木凶凜棉毛本永玄允月
	 * 卅兮仇仇匹仇氏卅儀毛仄化中月井午中丹午
	 * create白央奶伙及time襖互戲引木化井日公木分仃坌煩勻化中月午〕
	 * 濮覆卞允什卞戲引木化仁月午中丹酷  毛卅氏午井仄方丹午允月啃
	 */
	if( CHAR_getInt( srcindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER ) return;
	if( NPC_createCheckMaxEnemynum( CHAR_getInt(srcindex,CHAR_NPCCREATEINDEX )))
		NPC_createInitTime( CHAR_getInt(srcindex,CHAR_NPCCREATEINDEX ));
    NPC_createDecreaseEnemynum( CHAR_getInt(srcindex,
                                            CHAR_NPCCREATEINDEX ) );

	CHAR_CharaDelete( srcindex );

}
Esempio n. 5
0
void PET_Watchfunc( int objmeindex, int objmoveindex, CHAR_ACTION act, int x, int y, int dir,
                           int* opt, int optlen )
{
	int		pindex;
	int		petindex;
	int		petputtime;
	
	if( OBJECT_getType(objmoveindex) != OBJTYPE_CHARA ) return;
	pindex = OBJECT_getIndex( objmoveindex);
	if( CHAR_getInt( pindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) return;
	petindex = OBJECT_getIndex( objmeindex);
	petputtime = CHAR_getInt( petindex, CHAR_PUTPETTIME);

		if( CHAR_getInt( petindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) {
			//宠邮不处理
		}else if( CHAR_getWorkInt( petindex, CHAR_WORKPETFOLLOWMODE) == CHAR_PETFOLLOW_NOW ){
			if( NowTime.tv_sec >= (petputtime + 60*60) ) {
				int	ownerindex = CHAR_getWorkInt( petindex, CHAR_WORKPLAYERINDEX);
				if( CHAR_CHECKINDEX( ownerindex) ){
					if( CHAR_pickupFollowPet( ownerindex, petindex ) )	{
						return;
					}
					CHAR_talkToCli( ownerindex, -1, "溜宠太久,宠物走失了!!", CHAR_COLORYELLOW );
				}
#ifdef _PET_LOSTPET
				CHAR_CharSaveLostPet( petindex, 1);
				LogPet(
					"系统",
					"Watchfunc",
					CHAR_getChar( petindex, CHAR_NAME),
					CHAR_getInt( petindex, CHAR_LV),
					"timeout_lost(系统扣留-溜宠自由宠)",
					CHAR_getInt( petindex, CHAR_FLOOR),
					CHAR_getInt( petindex,CHAR_X ),
					CHAR_getInt( petindex,CHAR_Y ),
					CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14
				);
				print("系统扣留-溜宠自由宠:%s\n", CHAR_getUseName( petindex));
				CHAR_CharaDelete( petindex);
#else
				CHAR_setInt( petindex, CHAR_PUTPETTIME, NowTime.tv_sec);
				CHAR_setWorkInt( petindex, CHAR_WORKPETFOLLOWMODE, CHAR_PETFOLLOW_NONE);
				LogPet(
					CHAR_getChar( pindex, CHAR_NAME ),
					CHAR_getChar( pindex, CHAR_CDKEY ),
					CHAR_getChar( petindex, CHAR_NAME),
					CHAR_getInt( petindex, CHAR_LV),
					"timeout_lost(溜宠太久,宠物走失))",
					CHAR_getInt( pindex,CHAR_FLOOR),
					CHAR_getInt( pindex,CHAR_X ),
	 				CHAR_getInt( pindex,CHAR_Y ),
					CHAR_getChar( petindex, CHAR_UNIQUECODE)   // shan 2001/12/14

				);
#endif
				return;
			}

		}else{
			PET_CHECKFreePetIsIt( petindex);
		}
	if( CHAR_getInt( petindex, CHAR_MAILMODE) == CHAR_PETMAIL_IDLE3 ||
		CHAR_getInt( petindex, CHAR_MAILMODE) == CHAR_PETMAIL_IDLE2){
		if( act == CHAR_ACTATTACK) {
			if( NPC_Util_isFaceToChara( pindex,petindex,1 ) == TRUE ) {
				int action[2] = { CHAR_ACTDAMAGE, CHAR_ACTGUARD};
				CHAR_sendWatchEvent( objmeindex, action[RAND(0,1)], NULL,0,FALSE);
				CHAR_setWorkInt( petindex, CHAR_WORKACTION, act);
			}
		}
	}else if( CHAR_getInt( petindex, CHAR_MAILMODE) != CHAR_PETMAIL_NONE) {
		;
	}else if( CHAR_getWorkInt( petindex, CHAR_WORKFIXAI) >= 100 ) {
		int	workpindex = CHAR_getWorkInt( petindex, CHAR_WORKPLAYERINDEX);
		if( act == CHAR_ACTWALK && CHAR_CHECKINDEX( workpindex) && workpindex == pindex ){
			dir = NPC_Util_GetDirCharToChar( petindex, pindex, 0);
			if( dir != -1 ) {
				if( CHAR_getInt( petindex, CHAR_DIR) != dir ) {
					CHAR_setInt( petindex, CHAR_DIR, dir);
					CHAR_sendWatchEvent( CHAR_getWorkInt( petindex, CHAR_WORKOBJINDEX),
											CHAR_ACTTURN,NULL,0,TRUE);
				}
			}
		}else if( NPC_Util_isFaceToFace( petindex, pindex, 2 ) == TRUE ) {
			switch( act) {
			  case CHAR_ACTATTACK:
			  case CHAR_ACTDAMAGE:
			  case CHAR_ACTDOWN:
			  case CHAR_ACTSTAND:
			  case CHAR_ACTACTIONWALK:
			  case CHAR_ACTGUARD:
              case CHAR_ACTACTIONSTAND:
				CHAR_sendWatchEvent( objmeindex, act, NULL,0,FALSE);
				CHAR_setWorkInt( petindex, CHAR_WORKACTION, act);
				break;
			  default:
			  	break;
			}
		}
	}else {

	}
	return;
}