?? battle_command.c
字號:
} if( CHAR_getWorkInt( charaindex, CHAR_WORKOBLIVION ) > 0 ){ flg |= BC_FLG_OBLIVION; // 遺忘 } if( CHAR_getWorkInt( charaindex, CHAR_WORKICEARROW ) > 0 ){ flg |= BC_FLG_ICEARROW; // 冰箭 } if( CHAR_getWorkInt( charaindex, CHAR_WORKBLOODWORMS ) > 0 ){ flg |= BC_FLG_BLOODWORMS; // 嗜血蠱 } if( CHAR_getWorkInt( charaindex, CHAR_WORKSIGN ) > 0 ){ flg |= BC_FLG_SIGN; // 一針見血 } if( CHAR_getWorkInt( charaindex, CHAR_WORKINSTIGATE ) > 0 ){ flg |= BC_FLG_CARY; // 挑撥 } if( CHAR_getWorkInt( charaindex, CHAR_WORK_F_ENCLOSE ) > 0 ){ flg |= BC_FLG_F_ENCLOSE; // 火附體 } if( CHAR_getWorkInt( charaindex, CHAR_WORK_I_ENCLOSE ) > 0 ){ flg |= BC_FLG_I_ENCLOSE; // 冰附體 } if( CHAR_getWorkInt( charaindex, CHAR_WORK_T_ENCLOSE ) > 0 ){ flg |= BC_FLG_T_ENCLOSE; // 雷附體 }#endif#ifdef _PROFESSION_ADDSKILL if( CHAR_getWorkInt( charaindex, CHAR_WORKANNEX ) > 0 ){ flg |= BC_FLG_T_ENCLOSE; // 附身術 } if( CHAR_getWorkInt( charaindex, CHAR_WORKWATER ) > 0 ){ flg |= BC_FLG_WATER; // 水附體 } if( CHAR_getWorkInt( charaindex, CHAR_WORKFEAR ) > 0 ){ flg |= BC_FLG_FEAR; // 恐懼 }#endif#ifdef _PETSKILL_LER if(CHAR_getWorkInt(charaindex,CHAR_WORK_RELIFE) > 0){ flg |= BC_FLG_CHANGE; // 雷爾變身 CHAR_setWorkInt(charaindex,CHAR_WORK_RELIFE,0); }#endif makeEscapeString( CHAR_getUseName( charaindex ), szEscapeName, sizeof( szEscapeName ) ); makeEscapeString( BATTLE_CharTitle( charaindex ), szEscapeTitle, sizeof( szEscapeTitle ) ); // Robin 0728 ride Pet petindex = BATTLE_getRidePet( charaindex ); if( petindex != -1 ){ rideflg = 1; makeEscapeString( CHAR_getUseName( petindex ), szEscapePetName, sizeof( szEscapePetName ) ); petlevel = CHAR_getInt( petindex, CHAR_LV); pethp = CHAR_getInt( petindex, CHAR_HP); petmaxhp = CHAR_getWorkInt( petindex, CHAR_WORKMAXHP); }else { if( CHAR_getWorkInt( charaindex, CHAR_WORKPETFALL ) == 1 ){ rideflg = -1;#ifdef _PETSKILL_BECOMEFOX // 若中了媚惑術而落馬時將訊息傳給 Client if( CHAR_getWorkInt( charaindex, CHAR_WORKFOXROUND ) != -1 ) rideflg = -2; //client用來判斷顯示落馬的文字 (對應的client變數為p_party[ BattleMyNo ]->onRide)#endif#ifdef _PETSKILL_BECOMEPIG // 若中了烏力化而落馬時將訊息傳給 Client if( CHAR_getInt( charaindex, CHAR_BECOMEPIG) > 120 )//變成烏力了 rideflg = -3; //client用來判斷顯示落馬的文字 (對應的client變數為p_party[ BattleMyNo ]->onRide)#endif CHAR_setWorkInt( charaindex, CHAR_WORKPETFALL, 0 ); } else rideflg = 0; szEscapePetName[0] = 0; petlevel = 0; pethp = 0; petmaxhp = 0; } sprintf( szBuffer, "%X|%s|%s|%X|%X|%X|%X|%X|%X|%s|%X|%X|%X|", pEntry[i].bid, szEscapeName, szEscapeTitle, CHAR_getInt( charaindex, CHAR_BASEIMAGENUMBER ), CHAR_getInt( charaindex, CHAR_LV ), max( CHAR_getInt( charaindex, CHAR_HP ),0), CHAR_getWorkInt( charaindex, CHAR_WORKMAXHP ), flg, rideflg, szEscapePetName, petlevel, pethp, petmaxhp ); STRCPY_TAIL( pszTop, pszLast, szBuffer ); if( pszTop >= pszLast )return FALSE;// 譯尹兇日撩 } } return TRUE;}void BATTLE_BpSendToWatch( BATTLE *pBattle, // 棋爵田玄伙正旦弁及禾奶件正 char *pszBcString // BC 儂 ){ char szBp[256]; int flg = 0, i, charaindex;// for( ; pBattle ; pBattle = pBattle->pNext ){ if( pBattle == NULL )return; // 仇及失玉伊旦互懇仄中井民尼永弁 if( BATTLE_CHECKADDRESS( pBattle ) == FALSE ){ fprint( "err:觀戰battle address錯誤(%p)\n", pBattle ); return; } // 蟈夠卞霜耨 for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){ charaindex = pBattle->Side[0].Entry[i].charaindex; if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue; if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER ) continue; if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ) == BATTLE_CHARMODE_WATCHINIT){ flg |= BP_FLG_JOIN; // 蕙筋輔笛 } flg |= BP_FLG_PLAYER_MENU_OFF; // 皿伊奶乩□丟瓦亙□請今卅中 // 皿伊奶乩□ 寞霜月 sprintf( szBp, "BP|%X|%X|%X", 20, flg, 0 ); BATTLE_CommandSend( charaindex, szBp ); // 蟈夠隋騷樹 霜月 BATTLE_CommandSend( charaindex, pszBcString ); } // 戊穴件玉謹切尺 pBattle->mode = BATTLE_MODE_WATCHPRE;// }}void BATTLE_CharSendAll( int battleindex ){ int i, j, charaindex, flg, pet, At_SoubiIndex, pindex; char szBp[256]; BATTLE *pBattle; BATTLE_MakeCharaString( battleindex, szAllBattleString, sizeof(szAllBattleString) ); for( j = 0; j < 2; j ++ ){ for( i = 0; i < BATTLE_ENTRY_MAX; i ++ ){ charaindex = BattleArray[battleindex].Side[j].Entry[i].charaindex; if( CHAR_CHECKINDEX( charaindex ) == FALSE )continue; if( CHAR_getInt( charaindex, CHAR_WHICHTYPE ) != CHAR_TYPEPLAYER )continue; flg = 0; if( BattleArray[battleindex].Side[j].flg & BSIDE_FLG_SURPRISE ){ flg |= BP_FLG_ENEMY_SURPRISAL; }else if( BattleArray[battleindex].Side[1-j].flg & BSIDE_FLG_SURPRISE ){ flg |= BP_FLG_PLAYER_SURPRISAL; } if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEMODE ) == BATTLE_CHARMODE_RESCUE){ flg |= BP_FLG_JOIN; // 輔爵 } At_SoubiIndex = CHAR_getItemIndex( charaindex, CHAR_ARM ); if( ITEM_CHECKINDEX( At_SoubiIndex ) == FALSE ){ }else{ if( ITEM_getInt( At_SoubiIndex, ITEM_TYPE ) == ITEM_BOOMERANG ){ flg |= BP_FLG_BOOMERANG; } } pet = CHAR_getInt( charaindex, CHAR_DEFAULTPET ); if( pet >= 0 ){ snprintf( szBp, sizeof( szBp ), "K%d", pet ); CHAR_sendStatusString( charaindex, szBp ); pindex = CHAR_getCharPet( charaindex, pet );#ifdef _PETSKILL_DAMAGETOHP {/* 讓開,讓開~~~~~~~ ΘΘ ⊙ ⊙ 我來給你送月餅了*/ char msg[32]={0}; //print("\n寵物id:%d",CHAR_getInt( pindex, CHAR_PETID)); //print("\n寵物名:%s",CHAR_getChar( pindex, CHAR_NAME)); //if( CHAR_getInt( pindex, CHAR_PETID) == 777 ){//寵物ID 水雙頭狼 // || CHAR_getInt( pindex, CHAR_PETID) == 146 ) //火雙頭狼 // && CHAR_getInt( pindex, CHAR_HP) ){ sprintf( msg, "o%d", pet ); CHAR_sendStatusString( charaindex, msg ); //} } #endif#ifdef _PETSKILL_BECOMEFOX // 限制中了媚惑術的寵物的技能 //if( CHAR_getInt( pindex, CHAR_BASEIMAGENUMBER) == 101749 ){ if( CHAR_getWorkInt( pindex, CHAR_WORKFOXROUND ) != -1 ){ //若是變成小狐貍 char msg[32]={0}; sprintf( msg, "a%d", pet ); CHAR_sendStatusString( charaindex, msg ); }#endif if( CHAR_CHECKINDEX( pindex ) == TRUE ){ if( BATTLE_IsCharge( pindex ) == TRUE){ flg |= BP_FLG_PET_MENU_OFF; } if( BATTLE_CanMoveCheck( pindex ) == FALSE ){ flg |= BP_FLG_PET_MENU_OFF; } if( CHAR_getFlg( pindex, CHAR_ISDIE ) == TRUE ){ flg |= BP_FLG_PET_MENU_OFF; } } }else{ flg |= BP_FLG_PET_MENU_OFF; } if( BATTLE_CanMoveCheck( charaindex ) == FALSE || CHAR_getFlg( charaindex, CHAR_ISDIE ) == TRUE ){ flg |= BP_FLG_PLAYER_MENU_OFF; } if( BattleArray[battleindex].Side[j].flg & BSIDE_FLG_SURPRISE ){ flg |= BP_FLG_PLAYER_MENU_OFF; flg |= BP_FLG_PET_MENU_OFF; } sprintf( szBp, "BP|%X|%X|%X", i + SIDE_OFFSET * j, flg, CHAR_getInt( charaindex, CHAR_MP ) ); BATTLE_CommandSend( charaindex, szBp ); BATTLE_CommandSend( charaindex, szAllBattleString ); } } pBattle = BattleArray[battleindex].pNext; for( ; pBattle ; pBattle = pBattle->pNext ){ // 仇及失玉伊旦互懇仄中井民尼永弁 if( BATTLE_CHECKADDRESS( pBattle ) == FALSE ){ fprint( "err:觀戰battle address錯誤(%p)\n", pBattle ); break; } BATTLE_BpSendToWatch( pBattle, szAllBattleString ); }}void BattleEncountOut( int charaindex){ if( CHAR_CHECKINDEX( charaindex ) == FALSE )return; CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEINDEX, -1 ); CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEMODE, BATTLE_MODE_NONE ); CHAR_sendCToArroundCharacter( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX ) ); CHAR_sendArroundCharaData( charaindex ); if( CHAR_getWorkInt( charaindex, CHAR_WORKBATTLEWATCH ) == 0 ){ CHAR_sendBattleEffect( charaindex, OFF); }else{ CHAR_sendBattleWatch( CHAR_getWorkInt( charaindex, CHAR_WORKOBJINDEX ), OFF); CHAR_setWorkInt( charaindex, CHAR_WORKBATTLEWATCH, 0 ); } if( CHAR_getWorkInt( charaindex, CHAR_WORKPARTYMODE ) == CHAR_PARTY_CLIENT ){ int pmode/*, battleindex*/; int pindex = CHAR_getWorkInt( charaindex, CHAR_WORKPARTYINDEX1 ); pmode = CHAR_getWorkInt( pindex, CHAR_WORKBATTLEMODE ); if( pmode > 0 && pmode != BATTLE_CHARMODE_FINAL ){ BATTLE_RescueParentTry( charaindex, pindex ); print( "較慢參加戰斗(%s)\n", CHAR_getUseName( charaindex ) ); } }}//**************************************************//// 犯白巧伙玄及戊穴件玉毛 木月矢永玄迕//BOOL BATTLE_PetDefaultCommand( int petindex )////**************************************************{ if( CHAR_CHECKINDEX( petindex ) == FALSE )return FALSE; // 鍬澎及隙爛 CHAR_setWorkInt( petindex, CHAR_WORKBATTLECOM2, -1 ); // 騷橘 猾及隙爛 CHAR_setWorkInt( petindex, CHAR_WORKBATTLECOM1, BATTLE_COM_ATTACK ); // 戊穴件玉OK及隙爛 CHAR_setWorkInt( petindex, CHAR_WORKBATTLEMODE, BATTLE_CHARMODE_C_OK ); return TRUE;}#if 0{ int Sign, Damage, i; Sign = (LifeUp >= 0)?(1):(0); Damage = ABS( LifeUp ); for( i = 0; i < ; i ++ ){ // (蕙滇)仇仇匹戊穴件玉毛中木月 snprintf( szCommand, sizeof(szCommand), "BD|r%X|0|%X|d%X|", ToList[i], Sign, Damage ); BATTLESTR_ADD( szCommand );}#endif// Robin fix 檢查石化昏睡不可戰斗int checkErrorStatus( int charaindex){ //if( BATTLE_CanMoveCheck( charaindex) == FALSE) { if( CHAR_getWorkInt( charaindex, CHAR_WORKPARALYSIS ) > 0 // 麻痹 || CHAR_getWorkInt( charaindex, CHAR_WORKSTONE ) > 0 // 石化 || CHAR_getWorkInt( charaindex, CHAR_WORKSLEEP ) > 0 // 睡眠 //|| CHAR_getWorkInt( charaindex, CHAR_WORKBARRIER ) > 0 // 魔障 || CHAR_getWorkInt( charaindex, CHAR_WORKDIZZY ) > 0 // 暈眩 || CHAR_getWorkInt( charaindex, CHAR_WORKDRAGNET ) > 0 // 天羅地網 //|| CHAR_getWorkInt( charaindex, CHAR_WORK_T_ENCLOSE ) > 0 // 雷附體#ifdef _PROFESSION_ADDSKILL// || CHAR_getWorkInt( charaindex, CHAR_DOOMTIME ) > 0 //世界末日集氣#endif ) { char cdkey[128]; if( CHAR_getInt( charaindex, CHAR_WHICHTYPE) == CHAR_TYPEPLAYER) strcpy( cdkey, CHAR_getChar( charaindex, CHAR_CDKEY)); else strcpy( cdkey, CHAR_getChar( charaindex, CHAR_OWNERCDKEY) ); print("\n 改封包!不可戰斗的狀態!!:%s ", cdkey ); return 1; } return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -