Board logo

標題: [疑問] 國戰問題 [打印本頁]

作者: sandhinfk    時間: 2010-7-17 00:00     標題: 國戰問題

我剛打用50點軍力去打a3e.....結果唔夠軍力......
但系統沒有出現軍力不足的warning之類...........
而且戰爭還可以繼續.......
還可以打要塞........
但現軍力會變做負數.....一路會負落去
一入戰鬥畫面就會出現"出錯: BTL-2-WTRes-04, 請通知 GM!"

請問這發生了什麼事?
作者: 風之翎    時間: 2010-7-17 06:21

BTL-2-WTRes-04
這是錯誤位置代碼,
我會跟進一下的了,
多謝回報 ^^
作者: dgiti5597    時間: 2010-7-17 14:47

提示: 作者被禁止或刪除 內容自動屏蔽
作者: 風之翎    時間: 2011-8-2 18:11

>>原意是攻方沒有軍力 戰爭就會完結?
>>比要塞擊落扣幾多軍力是如何計算呢?

這個似乎是...
當其中一方戰勝了發生的...

攻擊後某方軍力已到達零或以下,
但玩家所攻擊的時候卻不附合以下條件的組合:

A.
- 玩家組織已對某領地發動攻擊 (即是國戰, 入侵的攻擊)
- 被攻擊人物的組織, 那一刻仍擁有該領地
- 被攻擊人物, 在交戰的領地

B.
- 玩家組織的某領地發動攻擊 (即是防守戰)
- 被攻擊人物的組織, 那一刻仍對某領地發動攻擊
- 被攻擊人物, 在交戰的領地

C.
- 守方領地已沒有軍力 (少於或等於0)

D.
- 攻方組織軍力少於或等於0

A 和 B 條件必定會符合其中一個, 否則不會進入國戰的判定...
C 和 D 同時也達不到的話, 也不會有問題 (國戰未完)
只要達到 A + C 或 B + D 這兩個條件,
就不會出現那個錯誤訊息,,,

問題似乎在於 A + B 或 B + C ...
簡單點說,
就是因一些奇怪原因,
系統判定玩家己沒軍力, 而又未判定哪個組織戰勝的同時, 攻擊「敵人」...

大概會發生在雙方也沒有戰力的時候, (例如互相扣到沒有)
攻擊方發動攻擊, 攻擊守方領地組織成員/要塞...

這種「打和」的情況吧...
只要守方成員攻擊攻方就可以解決... (判定為守方勝利)
作者: 風之翎    時間: 2011-8-2 18:13

一個簡單的修正...
大概是在 battle-2.php
Line 777 - 792:
複製內容到剪貼板
代碼:
                                if(!$Tickets['victory']){
                                        if($Tickets['Op'] <= 0)     $War_Victory_Flag = 'Pl';
                                        elseif($Tickets['Pl'] <= 0) $War_Victory_Flag = 'Op';
                                        if($War_Victory_Flag){
                                                $winner_org = $War_Victory_Flag.'_Org';
                                                if($isEnemyFlag == 2 && $War_Victory_Flag == 'Pl'){
                                                        $sql = ("UPDATE `".$GLOBALS['DBPrefix']."phpeb_user_war` SET `victory` = 1 WHERE `war_id` = ".$W_ID[1]." LIMIT 1 ;");
                                                        $sql_k = ("DELETE FROM `".$GLOBALS['DBPrefix']."phpeb_user_war` WHERE `war_id` != ".$W_ID[1]." AND `mission` = '".$Tickets['mission']."';");
                                                }elseif($isEnemyFlag == 3 && $War_Victory_Flag == 'Op'){
                                                        $sql = ("DELETE FROM `".$GLOBALS['DBPrefix']."phpeb_user_war` WHERE `war_id` = ".$W_ID[1]." LIMIT 1 ;");
                                                }else        {echo "<hr>出錯: BTL-2-WTRes-04, 請通知 GM!";exit;}
                                                $Result_Tag .= "<br><font color=".${$winner_org}['color'].">".${$winner_org}['name']."</font> 勝出這場戰爭!!";
                                                $HistoryWrite = "<font color=".${$winner_org}['color'].">".${$winner_org}['name']."</font> 勝出了戰爭!!";
                                                WriteHistory($HistoryWrite);
                                        }
                                }
取代為:
複製內容到剪貼板
代碼:
                                if(!$Tickets['victory']){
                                        if($Tickets['Op'] <= 0 || $Tickets['Pl'] <= 0){
                                                $winner_org = '';
                                                if($isEnemyFlag == 2 && $Tickets['Op'] <= 0){
                                                        $War_Victory_Flag = 'Pl';
                                                        $winner_org = 'Pl_Org';
                                                        $sql = ("UPDATE `".$GLOBALS['DBPrefix']."phpeb_user_war` SET `victory` = 1 WHERE `war_id` = ".$W_ID[1]." LIMIT 1 ;");
                                                        $sql_k = ("DELETE FROM `".$GLOBALS['DBPrefix']."phpeb_user_war` WHERE `war_id` != ".$W_ID[1]." AND `mission` = '".$Tickets['mission']."';");
                                                }elseif($isEnemyFlag == 3 && $Tickets['Pl'] <= 0){
                                                        $War_Victory_Flag = 'Op';
                                                        $winner_org = 'Op_Org';
                                                        $sql = ("DELETE FROM `".$GLOBALS['DBPrefix']."phpeb_user_war` WHERE `war_id` = ".$W_ID[1]." LIMIT 1 ;");
                                                }else        {echo "<hr>出錯: BTL-2-WTRes-04, 請通知 GM!";exit;}
                                                $Result_Tag .= "<br><font color=".${$winner_org}['color'].">".${$winner_org}['name']."</font> 勝出這場戰爭!!";
                                                $HistoryWrite = "<font color=".${$winner_org}['color'].">".${$winner_org}['name']."</font> 勝出了戰爭!!";
                                                WriteHistory($HistoryWrite);
                                        }
                                }
這樣就排除了雙方軍力是零的問題...




歡迎光臨 v2Alliance Community | php-eb 官方討論區 (http://forum.v2alliance.net/) Powered by Discuz! 6.1.0F