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; }
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); }
/*------------------------------------------------------------------------ * * 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 ); }
/*------------------------------------------------------------------------ * 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 ); }
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; }