gwang 4 лет назад
Родитель
Сommit
54c56db4b2

+ 23 - 18
Gameserver/Amfphp/base/CmdCode.php

@@ -270,7 +270,7 @@ class CmdCode {
      */
      */
     const cmd_Task_getActiveReward = 6204;
     const cmd_Task_getActiveReward = 6204;
     // <editor-fold defaultstate="collapsed" desc="任务卡相关通讯">
     // <editor-fold defaultstate="collapsed" desc="任务卡相关通讯">
-    // 
+    //
 
 
     /**
     /**
      * 任务卡 - 剧情触发任务结束
      * 任务卡 - 剧情触发任务结束
@@ -320,10 +320,10 @@ class CmdCode {
      */
      */
     const cmd_taskCard_StepActionDone = 6218;
     const cmd_taskCard_StepActionDone = 6218;
 
 
-    // 
+    //
 // </editor-fold>
 // </editor-fold>
 // <editor-fold defaultstate="collapsed" desc="任务卡商城">
 // <editor-fold defaultstate="collapsed" desc="任务卡商城">
-// 
+//
 
 
     /**
     /**
      * 任务卡商城 - 开启商店
      * 任务卡商城 - 开启商店
@@ -339,7 +339,7 @@ class CmdCode {
      * 任务卡商城 - 手动刷新
      * 任务卡商城 - 手动刷新
      */
      */
     const cmd_taskcard_shop_refresh = 6233;
     const cmd_taskcard_shop_refresh = 6233;
-// 
+//
 // </editor-fold>
 // </editor-fold>
     // </editor-fold>
     // </editor-fold>
     //
     //
@@ -362,7 +362,7 @@ class CmdCode {
     const cmd_hero_unequip = 6303;
     const cmd_hero_unequip = 6303;
 
 
     /**
     /**
-     * 英雄 - 升阶 :: 消耗碎片 
+     * 英雄 - 升阶 :: 消耗碎片
      */
      */
     const cmd_hero_stageup = 6304;
     const cmd_hero_stageup = 6304;
 
 
@@ -587,7 +587,7 @@ class CmdCode {
      * 武器升级
      * 武器升级
      */
      */
     const cmd_store__weapon_upgrade = 6421;
     const cmd_store__weapon_upgrade = 6421;
-    
+
     /**
     /**
      * 武器突破
      * 武器突破
      */
      */
@@ -692,13 +692,13 @@ class CmdCode {
     const active_GetShenmiaoData = 6518;
     const active_GetShenmiaoData = 6518;
 
 
     /**
     /**
-     * 
+     *
      */
      */
     const active_BuyShenmiaoDrawTicket = 6519;
     const active_BuyShenmiaoDrawTicket = 6519;
     // </editor-fold>
     // </editor-fold>
     //
     //
     // <editor-fold defaultstate="collapsed" desc="排行榜操作码 - 66xx">
     // <editor-fold defaultstate="collapsed" desc="排行榜操作码 - 66xx">
-    // 
+    //
 
 
     /**
     /**
      * 排行榜 - 战斗力榜
      * 排行榜 - 战斗力榜
@@ -740,7 +740,7 @@ class CmdCode {
      */
      */
     const rank_passgate_breachLog = 6608;
     const rank_passgate_breachLog = 6608;
 
 
-    // 
+    //
     // </editor-fold>
     // </editor-fold>
     //
     //
     // <editor-fold defaultstate="collapsed" desc="邮件操作码 - 67xx开始(ope)">
     // <editor-fold defaultstate="collapsed" desc="邮件操作码 - 67xx开始(ope)">
@@ -780,7 +780,7 @@ class CmdCode {
      */
      */
     const cmd_mail_sendTestItems = 6707;
     const cmd_mail_sendTestItems = 6707;
 //    const
 //    const
-// </editor-fold>    
+// </editor-fold>
     //
     //
     // <editor-fold defaultstate="collapsed" desc="战斗操作码 - 68xx">
     // <editor-fold defaultstate="collapsed" desc="战斗操作码 - 68xx">
 
 
@@ -860,7 +860,7 @@ class CmdCode {
 
 
 //
 //
 // </editor-fold>
 // </editor-fold>
-// 
+//
 // <editor-fold defaultstate="collapsed" desc="   竞技商店  682x   ">
 // <editor-fold defaultstate="collapsed" desc="   竞技商店  682x   ">
 
 
     /**
     /**
@@ -906,9 +906,9 @@ class CmdCode {
      * 世界boss - 查询boss输出伤害列表
      * 世界boss - 查询boss输出伤害列表
      */
      */
     const fight_worldBoss_refresh_bossSkill = 6835;
     const fight_worldBoss_refresh_bossSkill = 6835;
-// 
+//
 // // </editor-fold>
 // // </editor-fold>
-// 
+//
 // <editor-fold defaultstate="collapsed" desc="无尽塔">
 // <editor-fold defaultstate="collapsed" desc="无尽塔">
 
 
     /**
     /**
@@ -920,6 +920,11 @@ class CmdCode {
      * 无尽塔 - 前进
      * 无尽塔 - 前进
      */
      */
     const fight_endlessTower_Up = 6842;
     const fight_endlessTower_Up = 6842;
+
+    /**
+     * 无尽塔 - 领取成就奖励
+     */
+    const fight_endlessTower_drawreward = 6843;
 // </editor-fold>
 // </editor-fold>
 //
 //
 // </editor-fold>
 // </editor-fold>
@@ -1107,9 +1112,9 @@ class CmdCode {
     const cmd_guild_fight = 7030;
     const cmd_guild_fight = 7030;
     //    const
     //    const
 // </editor-fold>
 // </editor-fold>
-// 
+//
     // <editor-fold defaultstate="collapsed" desc="商城 - 71xx ">
     // <editor-fold defaultstate="collapsed" desc="商城 - 71xx ">
-// 
+//
 
 
     /**
     /**
      * 限购礼包主界面
      * 限购礼包主界面
@@ -1130,9 +1135,9 @@ class CmdCode {
      * 购买月卡
      * 购买月卡
      */
      */
     const shop_monthlyVIP_Buy = 7104;
     const shop_monthlyVIP_Buy = 7104;
-// 
+//
 // </editor-fold>
 // </editor-fold>
-// 
+//
     // <editor-fold defaultstate="collapsed" desc="事件操作码 - 72xx">
     // <editor-fold defaultstate="collapsed" desc="事件操作码 - 72xx">
 
 
     /**
     /**
@@ -1171,7 +1176,7 @@ class CmdCode {
     static function L() {
     static function L() {
         $class = new \ReflectionClass(__CLASS__);                               # 建立这个类的反射对象
         $class = new \ReflectionClass(__CLASS__);                               # 建立这个类的反射对象
         $properties = $class->getProperties(\ReflectionProperty::IS_STATIC);    # 拉取所有静态属性
         $properties = $class->getProperties(\ReflectionProperty::IS_STATIC);    # 拉取所有静态属性
-        $fileName = __DIR__ . "/" . str_replace('\\', '.', __CLASS__) . ".txt"; # 输出文件名 
+        $fileName = __DIR__ . "/" . str_replace('\\', '.', __CLASS__) . ".txt"; # 输出文件名
         $fd = fopen($fileName, "w");
         $fd = fopen($fileName, "w");
         if (false === $fd) {                                                    # 打开文件失败
         if (false === $fd) {                                                    # 打开文件失败
             throw new \Exception("打开$fileName 失败");
             throw new \Exception("打开$fileName 失败");

+ 10 - 5
Gameserver/Amfphp/model/User/Info_PrivateState.php

@@ -7,7 +7,7 @@ namespace loyalsoft;
  * 私有状态标志字
  * 私有状态标志字
  */
  */
 class Info_PrivateState extends Object_ext {
 class Info_PrivateState extends Object_ext {
-// ------------字段声明------------- 
+// ------------字段声明-------------
 
 
     /**
     /**
      * @var int 武器/言灵的uid,递增
      * @var int 武器/言灵的uid,递增
@@ -75,13 +75,13 @@ class Info_PrivateState extends Object_ext {
 
 
     /**
     /**
      * 排行榜, 战力突破奖领取记录
      * 排行榜, 战力突破奖领取记录
-     * @var array 
+     * @var array
      */
      */
     public $RankFpowerRewardRec = array();
     public $RankFpowerRewardRec = array();
 
 
     /**
     /**
      * 排行榜, 通关记录突破奖励领取记录
      * 排行榜, 通关记录突破奖励领取记录
-     * @var type 
+     * @var type
      */
      */
     public $RankPassGateRewardRec = array();
     public $RankPassGateRewardRec = array();
 
 
@@ -113,13 +113,18 @@ class Info_PrivateState extends Object_ext {
      */
      */
     public $endlessTower = 1;
     public $endlessTower = 1;
 
 
+    /**
+     * @var int 无尽塔的特殊奖励领取记录, 只增不减
+     */
+    public $endlessTower_rewarded = 0;
+
 // <editor-fold defaultstate="collapsed" desc="    初始化    ">
 // <editor-fold defaultstate="collapsed" desc="    初始化    ">
 
 
     /**
     /**
-     * 玩家注册时初始化, 用于给各个字段赋默认初始值 
+     * 玩家注册时初始化, 用于给各个字段赋默认初始值
      */
      */
     public function initialize() {
     public function initialize() {
-        $this->maxItemNum = GameConfig::primordial_data()->User_Private_MaxItem_num; # Ps.默认100; 
+        $this->maxItemNum = GameConfig::primordial_data()->User_Private_MaxItem_num; # Ps.默认100;
         $this->TiliTime = now();
         $this->TiliTime = now();
     }
     }
 
 

+ 45 - 5
Gameserver/Amfphp/process/FightProc.php

@@ -29,7 +29,7 @@ class FightProc {
             case CmdCode::cmd_fight_GetArenasActiveReward:                      # 6806 领取章节星级奖励
             case CmdCode::cmd_fight_GetArenasActiveReward:                      # 6806 领取章节星级奖励
                 return SweepGatesProc::DrawChapterStarsReward();
                 return SweepGatesProc::DrawChapterStarsReward();
 
 
-            // <editor-fold defaultstate="collapsed" desc="    玩家挑战    "> 
+            // <editor-fold defaultstate="collapsed" desc="    玩家挑战    ">
             case CmdCode::cmd_fight_GetChallengeAdversaryInfo:                  # 6803 获取挑战对手的信息
             case CmdCode::cmd_fight_GetChallengeAdversaryInfo:                  # 6803 获取挑战对手的信息
                 return PVPProc::GetChallengeAdversaryInfo();
                 return PVPProc::GetChallengeAdversaryInfo();
             case CmdCode::cmd_fight_LogChallengeResult:                         # 6804 记录挑战结果
             case CmdCode::cmd_fight_LogChallengeResult:                         # 6804 记录挑战结果
@@ -70,12 +70,16 @@ class FightProc {
                 return self::EndlessTower_Get();
                 return self::EndlessTower_Get();
             case CmdCode::fight_endlessTower_Up:                                # 6842 无尽塔升级
             case CmdCode::fight_endlessTower_Up:                                # 6842 无尽塔升级
                 return self::EndlessTower_Up();
                 return self::EndlessTower_Up();
-
+            case CmdCode::fight_endlessTower_drawreward:                        # 6843 无尽塔,领取特殊奖励
+                return null;
             default:
             default:
                 return Resp::err(ErrCode::cmd_err);
                 return Resp::err(ErrCode::cmd_err);
         }
         }
     }
     }
 
 
+//
+// <editor-fold defaultstate="collapsed" desc="  世界boss  ">
+
     /**
     /**
      * [6834] 查询世界boss伤害输出榜
      * [6834] 查询世界boss伤害输出榜
      */
      */
@@ -87,6 +91,10 @@ class FightProc {
         return Resp::ok(array('rank' => $rank));
         return Resp::ok(array('rank' => $rank));
     }
     }
 
 
+// </editor-fold>
+//
+// <editor-fold defaultstate="collapsed" desc=" 无尽塔 ">
+
     /**
     /**
      * [6841] 查询无尽塔的进度
      * [6841] 查询无尽塔的进度
      */
      */
@@ -100,16 +108,48 @@ class FightProc {
     static function EndlessTower_Up() {
     static function EndlessTower_Up() {
         list( $index) = req()->paras;
         list( $index) = req()->paras;
         my_Assert($index == ctx()->privateData()->endlessTower, ErrCode::Fight_endlessTower_index);
         my_Assert($index == ctx()->privateData()->endlessTower, ErrCode::Fight_endlessTower_index);
-        ctx()->privateData()->endlessTower++;
+        ctx()->privateData()->endlessTower++;                                   # 指向下一关
+        // 发放奖励
+        $mo = GameConfig::endless_tower_getItem($index);                        # 取配置信息
+        my_Assert(isset($mo), ErrCode::err_const_no);                           # 防御
+        $rsArr = str_replace(',', ';', $mo->rewardList);                        # 修复下奖励格式, ,=>;
+        $rewardStr = str_replace('_', ',', $rsArr);                             # _ => ,
+        $err = StoreProc::AddMultiItemInStore($rewardStr);                      # 发放奖励
+        my_Assert(ErrCode::ok == $err, $err);                                   # 防御代码
+        UserProc::updateUserInfo();                                             # 更新
+        return Resp::ok(array('index' => ctx()->privateData()->endlessTower,
+                    'baseInfo' => ctx()->base(),
+                    'store' => ctx()->store()
+        ));
+    }
+
+    static function EndlessTower_Drawreward() {
+        list($index) = req()->paras;
+        my_Assert($index % 5 == 0, ErrCode::paras_err);                         # 领取指定关卡的特殊奖励(逢5/0才有)
+        my_Assert(ctx()->privateData()->endlessTower >= $index, "请先完成挑战再来领奖!"); # 防御未通关直接领奖(刷接口)
+        my_Assert($index > ctx()->privateData()->endlessTower_rewarded, "已经领取!"); # 防御已经领取
+        $mo = GameConfig::endless_tower_getItem($index);
+        my_Assert(isset($mo), ErrCode::err_const_no);
+        $rs = str_replace(',', ';', $mo->rewardOne);                            # 奖励串格式修复,
+        $rewardStr = str_replace('_', ',', $rs);
+        $err = StoreProc::AddMultiItemInStore($rewardStr);                      # 发放奖励
+        my_Assert(ErrCode::ok == $err, $err);                                   # 防御
+        ctx()->privateData()->endlessTower_rewarded = $index;                   # 更新记录
         UserProc::updateUserInfo();
         UserProc::updateUserInfo();
-        return Resp::ok(array('index' => ctx()->privateData()->endlessTower));
+        return Resp::ok(array(#                                                 # 返回
+                    'baseInfo' => ctx()->base(),
+                    'store' => ctx()->store()
+        ));
     }
     }
 
 
+// </editor-fold>
+//
+
     /**
     /**
      * 清理每日字段
      * 清理每日字段
      */
      */
     static function ClearByDay() {
     static function ClearByDay() {
-        SweepGatesProc::ClearGateTimes();                                        # 清理每个难度副本的每日战斗次数 
+        SweepGatesProc::ClearGateTimes();                                        # 清理每个难度副本的每日战斗次数
         $pvp = new Info_UserPVP(req()->userInfo->game->pvp);
         $pvp = new Info_UserPVP(req()->userInfo->game->pvp);
         $pvp->refreshDailyData();
         $pvp->refreshDailyData();
         $pvp->sendRewardEmail(req()->zoneid, req()->uid, PVPProc::GetCurSeasonID());
         $pvp->sendRewardEmail(req()->zoneid, req()->uid, PVPProc::GetCurSeasonID());

+ 10 - 5
Gameserver/Amfphp/test.php

@@ -9,8 +9,13 @@ echoLine("phpver: " . PHP_VERSION . PHP_EOL);
 //
 //
 //set_time_limit(15);                                                           # 设置执行超时时间
 //set_time_limit(15);                                                           # 设置执行超时时间
 //
 //
-// 
-var_dump(TimeUtil::Hour());
-
-var_dump(date('YmdH'));
-
+//
+//var_dump(TimeUtil::Hour());
+//
+//var_dump(date('YmdH'));
+$index = 2;
+$mo = GameConfig::endless_tower_getItem($index);                        # 取配置信息
+my_Assert(isset($mo), ErrCode::err_const_no);                           # 防御
+$rsArr = str_replace(',', ';', $mo->rewardList);                                    # 拆解
+$rsArr = str_replace('_', ',', $rsArr);
+var_dump($rsArr);