BOOL CHECK_PETBBI( int toindex) { int i, petindex, PetID; BOOL Finds = FALSE; char token[256]; for( i=0; i < CHAR_MAXPETHAVE; i++) { int parry, array, PetBBI; petindex = CHAR_getCharPet( toindex, i); if( !CHAR_CHECKINDEX( petindex) ) continue; PetID = CHAR_getInt( petindex, CHAR_PETID); array = ENEMY_getEnemyArrayFromTempNo( PetID); if( !ENEMY_CHECKINDEX( array)) continue; parry = ENEMYTEMP_getEnemyTempArray( array); PetBBI = ENEMYTEMP_getInt( parry, E_T_IMGNUMBER); if( CHAR_getInt( petindex, CHAR_BASEBASEIMAGENUMBER) != PetBBI || CHAR_getInt( petindex, CHAR_BASEIMAGENUMBER) != PetBBI ){ CHAR_setInt( petindex, CHAR_BASEBASEIMAGENUMBER, PetBBI); CHAR_setInt( petindex, CHAR_BASEIMAGENUMBER, PetBBI); sprintf( token, "ÐÞÕý%sͼºÅ", CHAR_getUseName( petindex)); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); Finds = TRUE; } CHAR_setInt( petindex, CHAR_EARTHAT, ENEMYTEMP_getInt( parry, E_T_EARTHAT) ); CHAR_setInt( petindex, CHAR_WATERAT, ENEMYTEMP_getInt( parry, E_T_WATERAT) ); CHAR_setInt( petindex, CHAR_FIREAT, ENEMYTEMP_getInt( parry, E_T_FIREAT) ); CHAR_setInt( petindex, CHAR_WINDAT, ENEMYTEMP_getInt( parry, E_T_WINDAT) ); char tempname[128]; if(strstr(CHAR_getChar(petindex,CHAR_NAME),"*")!=NULL) sprintf(tempname,"*%s",ENEMYTEMP_getChar( parry, E_T_NAME)); else sprintf(tempname,"%s",ENEMYTEMP_getChar( parry, E_T_NAME)); CHAR_setChar( petindex, CHAR_NAME, tempname); CHAR_setChar( petindex, CHAR_USERPETNAME , ""); } for( i=0; i<CHAR_MAXPETHAVE; i++){ char szPet[128]; petindex = CHAR_getCharPet(toindex, i); if( !CHAR_CHECKINDEX( petindex) )continue; CHAR_complianceParameter( petindex ); snprintf( szPet, sizeof( szPet ), "K%d", i); CHAR_sendStatusString( toindex, szPet ); snprintf( szPet, sizeof( szPet ), "W%d", i); CHAR_sendStatusString( toindex, szPet ); } if( Finds == FALSE ){ sprintf( token, "ûÓдíÎóͼºÅµÄ³èÎï"); CHAR_talkToCli( toindex, -1, token, CHAR_COLORYELLOW); } return Finds; }
int *NPC_Util_getEnemy( int meindex, int charaindex) { int i; char argstr[NPC_UTIL_GETARGSTR_BUFSIZE]; char buf[64]; int ret; int bigcnt; int insert; NPC_Util_GetArgStr( meindex, argstr, sizeof( argstr)); for( i = 0; i < NPC_ENEMY_ENEMYNUMBER+1; i ++ ) { NPCUtil_enemytbl[i] = -1; } if( NPC_Util_GetStrFromStrWithDelim( argstr, "enemyno", buf, sizeof( buf)) == NULL ) { return NULL; } bigcnt = 0; insert = 0; for( i = 0; i < NPC_ENEMY_ENEMYNUMBER; i ++ ) { int curEnemy; int et_array; char data[128]; ret = getStringFromIndexWithDelim( buf,",", i + 1,data, sizeof(data)); if( ret == FALSE) { break; } curEnemy = ENEMY_getEnemyArrayFromId( atoi( data)); if( !ENEMY_CHECKINDEX( curEnemy) ) continue; et_array = ENEMYTEMP_getEnemyTempArray( curEnemy ); if( ENEMYTEMP_getInt( et_array, E_T_SIZE ) == E_T_SIZE_BIG) { if( bigcnt >= 5 ) { continue; } if( insert > 4 ) { int target_et_array; int flg = FALSE; int j; for( j = 0; j < 5; j ++ ) { /* ���л��¼����ƾ����� */ if( !ENEMY_CHECKINDEX( NPCUtil_enemytbl[j])) break; target_et_array = ENEMYTEMP_getEnemyTempArray( NPCUtil_enemytbl[j]); /* �ƾ����� */ if( !ENEMYTEMP_CHECKINDEX( target_et_array)) break; if( ENEMYTEMP_getInt( target_et_array, E_T_SIZE) == E_T_SIZE_NORMAL ) { flg = TRUE; break; } } if( !flg) continue; NPCUtil_enemytbl[insert] = NPCUtil_enemytbl[j]; NPCUtil_enemytbl[j] = curEnemy; } else { NPCUtil_enemytbl[insert] = curEnemy; } bigcnt ++; } else { NPCUtil_enemytbl[insert] = curEnemy; } insert ++; } return NPCUtil_enemytbl; }
void NPC_DepotPet_Add( int meindex, int talker, int select, char *token) { int petindex; int selectpet; int emptyindex; char szPet[128]; int fd = getfdFromCharaIndex( talker ); if( fd == -1 ) { fprint( "err\n"); return; } // ʸÓÀÐþ·¸¡õÕý µÊ£ÛʸÓÀÐþ Øê ľ selectpet = CHAR_getWorkInt( talker, CHAR_WORKSHOPRELEVANT) -1; //print("\n selectpet:%d ", selectpet); petindex = CHAR_getCharPet( talker, selectpet); if( !CHAR_CHECKINDEX( petindex) ) return; // Robin 0725 if (CHAR_getInt( talker, CHAR_RIDEPET ) == selectpet ) { sprintf(token,"\n\nÆï³ËÖеijèÎïÎÞ·¨´æÈë²Ö¿âร¡"); return; } if( CHAR_getInt( petindex, CHAR_PETFAMILY) == 1 ) { sprintf(token,"\n\n¼Ò×åÊØ»¤ÊÞÎÞ·¨´æÈë²Ö¿âร¡"); return; } #ifdef _CHECK_ENEMY_PET { int j; for( j=0;j<ENEMYTEMP_getEnemyNum();j++ ) {//ENEMY_getEnemyNum() if( CHAR_getInt( petindex, CHAR_PETID) == ENEMYTEMP_getInt( j, E_T_TEMPNO ) ) {//ENEMY_getInt( j, ENEMY_TEMPNO) if( ENEMYTEMP_getInt( j, E_T_PETFLG ) == 0 ){//ENEMY_getInt( j, ENEMY_PETFLG) sprintf(token,"\n\nÕâÊDz»ÄܳÖÓеijèÎïร¡"); return; } } } } #endif // ÎëÎåë¼ëÔÊ£Ûó¡±å¼ëØÆ»¯ÃñÄáÓÀÛÍØÆ»¯ÖÐÔ¼°Æ¥£Ý³ð³ðÆ¥ÎëÖл¯ÖÐئÖм°·´Ôƾ®ØÆÖÐ emptyindex = CHAR_getCharDepotPetElement( talker); if( emptyindex == -1 ) { fprint( "err\n"); return; } // ¾ô ÉÍ åÃʸÓÀÐþئÈգݹ«Ä¾¼°è¶ ëÛÕÔÊ£Û if( CHAR_getInt( talker, CHAR_DEFAULTPET) == selectpet) { CHAR_setInt( talker, CHAR_DEFAULTPET, -1); lssproto_KS_send( fd, -1, TRUE); } // Øê ľ ±å£ÝʸÓÀÐþ¼°Ä̼þ·¸ÓÀÛ͵©Ã«Îìñâ¡õ CHAR_setDepotPetIndex( talker, emptyindex, petindex); // ʸÓÀÐþ ¾®ÈÕÛÕÔÊ CHAR_setCharPet( talker, selectpet, -1); // ¶ªÓÀ±¾¡õ³âäú NPC_MaxGoldOver( meindex, talker, NPC_PETSHOP_MSG_POOLTHANKS, token); // ÔÆàÅÓ¼ÈÕÔÊ CHAR_DelGold( talker, NPC_GETPOOLCOST( talker) ); // ÔÆàÅ·¸¡õÕý˪Ô CHAR_send_P_StatusString(talker,CHAR_P_STRING_GOLD); snprintf( szPet, sizeof( szPet ), "K%d", selectpet); // Þ¥ØÆÖÐʸÓÀÐþµ© ¡õÕýµ©ËªÔ»¹´ØêÔ CHAR_sendStatusString( talker, szPet ); // ʸÓÀÐþë ØêÐ×·òºë if( NPC_DepotPet_CheckRepeat( talker) == 0) // ¼ì²é±àÂëÖظ´³è { LogPet( CHAR_getChar( talker, CHAR_NAME ), /* ƽÅÒ·Â */ CHAR_getChar( talker, CHAR_CDKEY ), CHAR_getChar( petindex, CHAR_NAME), CHAR_getInt( petindex, CHAR_LV), "pool(´æÈë³èÎï²Ö¿â)", CHAR_getInt( talker,CHAR_FLOOR), CHAR_getInt( talker,CHAR_X ), CHAR_getInt( talker,CHAR_Y ), CHAR_getChar( petindex, CHAR_UNIQUECODE) // shan 2001/12/14 ); } else { CHAR_talkToCli( talker, -1, "ÕâÊÇ·Ç·¨µÄ³èÎïà¸!!", CHAR_COLORYELLOW); } }