📄 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 + -