Browse Source

Merge branch 'dev' of http://ylsjtt.game7000.com:3000/YLSJ/jzhj2024server into dev

cyzhao 2 tháng trước cách đây
mục cha
commit
1a3af22b1f

+ 81 - 74
Gameserver/App/process/FightPower_Calculate.php

@@ -13,10 +13,9 @@ namespace loyalsoft;
  * 战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数)*(1+装备系数+角色系数)
  */
 class FightPower_Calculate {
-    
 
-    public static function GetFightPower() {       
-        $file = __NAMESPACE__ . '\\'  . 'E_PredicateActionType';       
+    public static function GetFightPower() {
+        $file = __NAMESPACE__ . '\\' . 'E_PredicateActionType';
         $reflectionClass = new \ReflectionClass($file);
         $constants = $reflectionClass->getConstants();
 
@@ -24,24 +23,24 @@ class FightPower_Calculate {
         foreach ($constants as $name => $predicateActionType) {
             $dic->$predicateActionType = 0;
         }
-                      
+
         $CurrentHeroId = ctx()->heros->CurrentHeroId;
         $mo = GameConfig::hero_getItem($CurrentHeroId);
         my_Assert($mo != null, ErrCode::err_const_no);
-        
+
 //【1.当前英雄表里的基础攻击 2.装备品质解锁的攻击力 3.装备里镶嵌的宝石攻击力 4.组成套装的攻击力5.启灵攻击力 6.英雄自带词条】 7.装备等级带来的攻击力/生命
         //英雄带的                       
-        $hero_special_predicate = explode(',', $mo->special_predicate);           
+        $hero_special_predicate = explode(',', $mo->special_predicate);
         foreach ($hero_special_predicate as $hero_predicateId) {
-            self::predicateActionParamVal($hero_predicateId,$dic);        
+            self::predicateActionParamVal($hero_predicateId, $dic);
         }
-        
+
         //装备
         $attck = 0;
         $hp = 0;
         $equipDic = ctx()->store->equipLocation;
-             
-        $suitDic = new \stdClass();              
+
+        $suitDic = new \stdClass();
         $equipParam = 0;
         foreach ($equipDic as $index => $equipUid) {
             //等级
@@ -56,87 +55,92 @@ class FightPower_Calculate {
             $str = explode(';', $ins_Equip->mo()->qual_predicateId);
             foreach ($str as $val) {
                 $str2 = explode(',', $val);
-                if($ins_Equip->qual >= $str2[0]){
-                    self::predicateActionParamVal($str2[1],$dic);                
-                }                          
+                if ($ins_Equip->qual >= $str2[0]) {
+                    self::predicateActionParamVal($str2[1], $dic);
+                }
             }
-            
+
             //套装
             $suitId = $ins_Equip->mo()->suitId;
-            if(StlUtil::dictHasProperty($suitDic, $suitId)){
+            if (StlUtil::dictHasProperty($suitDic, $suitId)) {
                 $suitDic->$suitId += 1;
             } else {
                 $suitDic->$suitId = 1;
             }
-            
+
             //宝石
-            if($ins_Equip->qual >=4 && $ins_Equip->gemSetSlot != null){
+            if ($ins_Equip->qual >= 4 && $ins_Equip->gemSetSlot != null) {
                 foreach ($ins_Equip->gemSetSlot as $index => $gemUid) {
-                    if($gemUid != 0){
+                    if ($gemUid != 0) {
                         $gem_predicateId = ctx()->store->gemStore->$gemUid->predicateId;
-                        self::predicateActionParamVal($gem_predicateId,$dic);                    
+                        self::predicateActionParamVal($gem_predicateId, $dic);
                     }
-                }               
+                }
             }
         }
-        
+
         foreach ($suitDic as $suitId => $num) {
             $suitMo = GameConfig::equip_suit_getItem($suitId);
             my_Assert($suitMo != null, ErrCode::err_const_no);
-            if($num >= $suitMo->num){
-                self::predicateActionParamVal($suitMo->effect,$dic);             
+            if ($num >= $suitMo->num) {
+                self::predicateActionParamVal($suitMo->effect, $dic);
             }
         }
-        
+
         $arr = GameConfig::evolve();
         $evolveMaxId_left = ctx()->gates->evolveMaxId_left;
         $evolveMaxId_right = ctx()->gates->evolveMaxId_right;
         foreach ($arr as $key => $value) {
             isEditor() and $value = new \sm_evolve();
-            if ($key <= $evolveMaxId_left) {             
-                self::predicateActionParamVal($value->predicateId,$dic);
+            if ($key <= $evolveMaxId_left) {
+                self::predicateActionParamVal($value->predicateId, $dic);
                 //continue;             
             }
-            
-            if($value->specificEvolveId >0 && $value->specificEvolveId <= $evolveMaxId_right){
-                self::predicateActionParamVal($value->specificPredicateId,$dic);
+
+            if ($value->specificEvolveId > 0 && $value->specificEvolveId <= $evolveMaxId_right) {
+                self::predicateActionParamVal($value->specificPredicateId, $dic);
                 //continue;
             }
-              
         }
-        
-        //战力 = (基础攻击力 * 攻击力系数 + 基础生命值 * 生命值系数 + (1+暴击率) * (1+暴击伤害) * 攻击力系数 + 肉食恢复加成 * (1+肉食恢复效果)*生命值系数+伤害减免值 * (1+伤害减免效果)* 生命值系数) * (1+装备系数+角色系数)       
+
+        //战力 = (
+        //          基础攻击力 * 攻击力系数 
+        //          + 基础生命值 * 生命值系数
+        //          + (1 + 暴击率) * (1 + 暴击伤害) * 攻击力系数
+        //          + 肉食恢复加成 * (1 + 肉食恢复效果)* 生命值系数
+        //          + 伤害减免值 * (1 + 伤害减免效果)* 生命值系数
+        //         ) * (1 + 装备系数 + 角色系数)
         $attackParas = glc()->fightPower_MulAtk;
         $hpParas = glc()->fightPower_MulHp;
         $fightPower_bitHitParas = GameConfig::glc2()->fightPower_bitHitParas;
-        
+
         $addDamage_ActionKey = E_PredicateActionType::addDamage;
         $dic->$addDamage_ActionKey += $mo->attack;
-        $dic->$addDamage_ActionKey +=$attck;     
-        $base_addDamage = $dic->$addDamage_ActionKey;//基础攻击      
-        
-        
+        $dic->$addDamage_ActionKey += $attck;
+        $base_addDamage = $dic->$addDamage_ActionKey;                           // 基础攻击
+
+
         $addHp_ActionKey = E_PredicateActionType::addHp;
-        $dic->$addHp_ActionKey += $mo->hp; 
-        $dic->$addHp_ActionKey +=$hp; 
-        $base_addHp = $dic->$addHp_ActionKey;//基础生命值
-        
-        
+        $dic->$addHp_ActionKey += $mo->hp;
+        $dic->$addHp_ActionKey += $hp;
+        $base_addHp = $dic->$addHp_ActionKey;                                   // 基础生命值
+
+
         $addBigHitRate_ActionKey = E_PredicateActionType::addBigHitRate;
-        $dic->$addBigHitRate_ActionKey += $mo->bigHit_rate; 
-        $baojilv = $dic->$addBigHitRate_ActionKey;//暴击率
-        
-        $addBigHitVal_ActionKey = E_PredicateActionType::addBigHitVal;                          
+        $dic->$addBigHitRate_ActionKey += $mo->bigHit_rate;
+        $baojilv = $dic->$addBigHitRate_ActionKey;                              // 暴击率
+
+        $addBigHitVal_ActionKey = E_PredicateActionType::addBigHitVal;
         $dic->$addBigHitVal_ActionKey += $mo->bigHit_Val;
-        $baojishanghai = $dic->$addBigHitVal_ActionKey;//暴击伤害
-                                 
-        
+        $baojishanghai = $dic->$addBigHitVal_ActionKey;                         // 暴击伤害
+
+
         $mulDamage_ActionKey = E_PredicateActionType::mulDamage;
-        $mulDamageVal = $dic->$mulDamage_ActionKey;//攻击里加成百分比
-        
+        $mulDamageVal = $dic->$mulDamage_ActionKey;                             // 攻击里加成百分比
+
         $mulHp_ActionKey = E_PredicateActionType::mulHp;
-        $mulHpVal = $dic->$mulHp_ActionKey;//生命额外加成
-                                   
+        $mulHpVal = $dic->$mulHp_ActionKey;                                     // 生命额外加成
+
         $addEatFood_ActionKey = E_PredicateActionType::addEatFood;
         $roushihuifu = $dic->$addEatFood_ActionKey;
         $mulEatFood_ActionKey = E_PredicateActionType::mulEatFood;
@@ -145,18 +149,23 @@ class FightPower_Calculate {
         $shanghaijianmian = $dic->$addDecDamage_ActionKey;
         $mulDecDamage_ActionKey = E_PredicateActionType::mulDecDamage;
         $shanghaijianmian_xiaoguo = $dic->$mulDecDamage_ActionKey;
-        
+
         $mulEquipBasicProps_damage_ActionKey = E_PredicateActionType::mulEquipBasicProps_damage;
         $mulEquipBasicProps_damage_val = $dic->$mulEquipBasicProps_damage_ActionKey;
         $mulEquipBasicProps_hp_ActionKey = E_PredicateActionType::mulEquipBasicProps_hp;
         $mulEquipBasicProps_hp_val = $dic->$mulEquipBasicProps_hp_ActionKey;
 
-        
-        $gongji = round($base_addDamage*(1+$mulDamageVal+$mulEquipBasicProps_damage_val),0);
-        $shengming = round($base_addHp*(1+$mulHpVal+$mulEquipBasicProps_hp_val),0);
-        
-        $fightPower = ($gongji*$attackParas + $shengming*$hpParas + (1+$baojilv)*(1+$baojishanghai)*$attackParas*$fightPower_bitHitParas + $roushihuifu*(1+$roushihuifu_xiaoguo)*$hpParas + $shanghaijianmian*(1+$shanghaijianmian_xiaoguo)* $hpParas)*(1 + $equipParam + $mo->mulFightPower);
-       
+        $gongji = round($base_addDamage * (1 + $mulDamageVal + $mulEquipBasicProps_damage_val), 0);
+        $shengming = round($base_addHp * (1 + $mulHpVal + $mulEquipBasicProps_hp_val), 0);
+
+        $fightPower = (
+                $gongji * $attackParas                                          // 基础攻击力 * 攻击力系数 
+                + $shengming * $hpParas                                         // 基础生命值 * 生命值系数
+                + (1 + $baojilv) * (1 + $baojishanghai) * $attackParas * $fightPower_bitHitParas // (1 + 暴击率) * (1 + 暴击伤害) * 攻击力系数
+                + $roushihuifu * (1 + $roushihuifu_xiaoguo) * $hpParas          // 肉食恢复加成 * (1 + 肉食恢复效果)* 生命值系数
+                + $shanghaijianmian * (1 + $shanghaijianmian_xiaoguo) * $hpParas // 伤害减免值 * (1 + 伤害减免效果)* 生命值系数
+                ) * (1 + $equipParam + $mo->mulFightPower);                     // (1 + 装备系数 + 角色系数)
+        //
 //        var_dump('---base_addDamage攻击-------------------'.$base_addDamage);
 //        var_dump('攻击里加成百分比---------------'.$mulDamageVal);
 //        var_dump('mulEquipBasicProps_damage_val----'.$mulEquipBasicProps_damage_val);                     
@@ -182,15 +191,14 @@ class FightPower_Calculate {
 //        var_dump('shanghaijianmian_xiaoguo_val----'.$mulEquipBasicProps_hp_val);
 //        
 //               
-        return round($fightPower,0);
+        return round($fightPower, 0);
     }
-    
-    
+
     /**
      * 获取词条对应的参数值
      * @param type $predicateId
      */
-    public static function predicateActionParamVal($predicateId,&$dic) {        
+    public static function predicateActionParamVal($predicateId, &$dic) {
         $predicateMo = GameConfig::predicate_getItem($predicateId);
         my_Assert(null != $predicateMo, ErrCode::err_const_no);
         switch ($predicateMo->actionType) {
@@ -198,13 +206,13 @@ class FightPower_Calculate {
                 if ($predicateMo->actionParam1 != null) {
                     $actionKey = E_PredicateActionType::mulEquipBasicProps_damage;
                     $actionVal = $predicateMo->actionParam1;
-                    $dic->$actionKey += $actionVal;                   
+                    $dic->$actionKey += $actionVal;
                 }
 
                 if ($predicateMo->actionParam2 != null) {
                     $actionKey = E_PredicateActionType::mulEquipBasicProps_hp;
                     $actionVal = $predicateMo->actionParam2;
-                    $dic->$actionKey += $actionVal;                 
+                    $dic->$actionKey += $actionVal;
                 }
 
                 break;
@@ -215,17 +223,16 @@ class FightPower_Calculate {
                 $actionVal2 = $predicateMo->actionParam2;
 
                 $dic->$actionKey1 += $actionVal1;
-                $dic->$actionKey2 += $actionVal2;                          
+                $dic->$actionKey2 += $actionVal2;
                 break;
-            default:                             
+            default:
                 $actionKey = $predicateMo->actionType;
-                $actionVal = $predicateMo->actionParam1;                     
-                                              
-                if(StlUtil::dictHasProperty($dic, $actionKey)){
-                    $dic->$actionKey += $actionVal;                  
-                }                                                         
+                $actionVal = $predicateMo->actionParam1;
+
+                if (StlUtil::dictHasProperty($dic, $actionKey)) {
+                    $dic->$actionKey += $actionVal;
+                }
                 break;
         }
     }
-
 }

+ 8 - 8
Gameserver/App/service_call/pay/official/imitate/pay.php

@@ -5,7 +5,7 @@
  *
  */
 require_once __DIR__ . '/../../../../main.php';                                 # 导入游戏库
-require_once __DIR__ . '/../../Mo/payResp.php';                                    # 响应模型
+require_once __DIR__ . '/../../Mo/payResp.php';                                 # 响应模型
 require_once __DIR__ . '/../../Mo/payRequest.php';                              # 通用请求订单结构
 //require_once __DIR__ . '/wx.php';                                               # 导入微信支付lib
 
@@ -31,24 +31,24 @@ if ($resp->err != 0) {
     exit($resp);                                                                # 返回
 }
 if (PLAT != Enum_Plat::Online_dev) {
-    exit(payResp::err(1, "非法平台!"));                                           # 返回
+    exit(payResp::err(1, "非法平台!"));                                         # 返回
 }
 if ($req->InserDataBase()) {                                                    # 订单数据入库
     CLog::pay($tag . ' 创建订单' . $req);
 
-    $ret = array(#                                                        # 返回值
-        'err' => 0, #                                                     # 错误码
-        'platformCode' => 'imitate', #                                         # 平台 wx/zfbs
-        'cpOrderId' => $req->cpOrderId, #                                      # 渠道订单号
+    $ret = array(#                                                              # 返回值
+        'err' => 0, #                                                           # 错误码
+        'platformCode' => 'imitate', #                                          # 平台 wx/zfbs
+        'cpOrderId' => $req->cpOrderId, #                                       # 渠道订单号
         'platformInfo' => 'imitate'                                             # 微信所需参数
     );
-    echo json_encode($ret);                                                   # 返回客户端
+    echo json_encode($ret);                                                     # 返回客户端
     CLog::pay("[$tag.pay]向$tag 后台推送订单成功" . $req);
 
 //    echo Resp::ok($req->retData());                                             # 返回值
 } else {
     CLog::pay($tag . ' 创建订单失败' . $req);
-    echo payResp::err(1, '后台创建订单失败');                                        # 返回值
+    echo payResp::err(1, '后台创建订单失败');                                   # 返回值
 }