FightProc.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <?php
  2. //
  3. //namespace loyalsoft;
  4. //
  5. //
  6. //
  7. ///**
  8. // * 战斗业务逻辑分发
  9. // * @author gwang
  10. // */
  11. //class FightProc {
  12. //
  13. // /**
  14. // * 战斗逻辑分发
  15. // * 所有的Proc中必须有这样一个方法
  16. // */
  17. // static function procMain() {
  18. // switch (req()->cmd) {
  19. // # 关卡-征战
  20. // case CmdCode::cmd_fight_arenas_preFight: # 6800 关卡挑战 - 预先计算掉落
  21. // return SweepGatesProc::Arenas_preFight();
  22. // case CmdCode::cmd_fight_arenasfight: # 6801 挑战关卡
  23. // return SweepGatesProc::Arenas_Fight();
  24. // case CmdCode::cmd_fight_arenassweep: # [6802] 扫荡
  25. // Err(ErrCode::function_notopen_msg); # 暂未开放扫荡功能. -gwang 2020.4.20
  26. // return SweepGatesProc::Arenas_NewSweepFight();
  27. //
  28. // case CmdCode::cmd_fight_GetArenasActiveReward: # 6806 领取章节星级奖励
  29. // return SweepGatesProc::DrawChapterStarsReward();
  30. //
  31. // // <editor-fold defaultstate="collapsed" desc=" 玩家挑战 ">
  32. // case CmdCode::cmd_fight_GetChallengeAdversaryInfo: # 6803 获取挑战对手的信息
  33. // return PVPProc::GetChallengeAdversaryInfo();
  34. // case CmdCode::cmd_fight_LogChallengeResult: # 6804 记录挑战结果
  35. // return PVPProc::LogChallengeInfo();
  36. // case CmdCode::cmd_fight_GetChallengeLog: # 6805 拉取挑战记录
  37. // return PVPProc::GetChagllengeLog();
  38. //
  39. //// </editor-fold>
  40. // // <editor-fold defaultstate="collapsed" desc=" PVP 模块 681x ">
  41. // case CmdCode::cmd_fight_pvp_maininfo: # [6810] 竞技场 主界面拉取信息
  42. // return PVPProc::pvpMainInfo();
  43. // case CmdCode::cmd_fight_pvp_refresh: # [6811] 竞技场 刷新对手列表
  44. // return PVPProc::pvp_Refresh();
  45. // case CmdCode::cmd_fight_pvp_pk: # [6812] 竞技场 挑战对手
  46. // return PVPProc::pvp_PK();
  47. // case CmdCode::cmd_fight_pvp_setTeam: # [6813] 竞技场 设定防守队伍
  48. // return PVPProc::pvp_setTeam();
  49. // case CmdCode::cmd_fight_pvp_buyTicket: # [6814] 竞技场 购买挑战票
  50. // return PVPProc::pvp_buyticket();
  51. // case CmdCode::cmd_fight_pvp_getrank: # [6815] 竞技场 查看排行榜
  52. // return PVPProc::pvp_getRank();
  53. // case CmdCode::cmd_fight_pvp_getLog: # [6816] 竞技场 查看挑战记录
  54. // return PVPProc::pvp_getFightLogs();
  55. //// </editor-fold>
  56. // // <editor-fold defaultstate="collapsed" desc=" 竞技商店 682x ">
  57. // case CmdCode::cmd_fight_pvpShop_getMainInfo: # [6820] 竞技场 竞技商店主界面
  58. // return PVPProc::pvpShopMain();
  59. // case CmdCode::cmd_fight_pvpShop_buy: # [6821] 竞技场 竞技商店购买道具
  60. // return PVPProc::pvpShopBuy();
  61. // case CmdCode::cmd_fight_pvpShop_refresh: # [6822] 竞技场 竞技商店刷新道具(扣钻)
  62. // return PVPProc::pvpShopRefresh();
  63. // // </editor-fold>
  64. //
  65. // case CmdCode::fight_worldBoss_enter: # 6831 世界BOSS战 - 进入
  66. // return self::WorldBossEnter();
  67. // case CmdCode::fight_worldBoss_refresh_rank : # 6834 查询世界boss伤害输出榜
  68. // return self::GetWorldBossRank();
  69. //// ---------- 无尽塔相关 -------------------------
  70. // case CmdCode::fight_endlessTower_Get: # 6841 查询无尽塔的进度
  71. // return self::EndlessTower_Get();
  72. // case CmdCode::fight_endlessTower_Up: # 6842 无尽塔升级
  73. // return self::EndlessTower_Up();
  74. // case CmdCode::fight_endlessTower_drawreward: # 6843 无尽塔,领取特殊奖励
  75. // return self::EndlessTower_Drawreward();
  76. // case CmdCode::fight_fullBlood: # 6844 满血复活
  77. // return self::fullBlood();
  78. // default:
  79. // return Resp::err(ErrCode::cmd_err);
  80. // }
  81. // }
  82. //
  83. // /**
  84. // *
  85. // * @return type
  86. // */
  87. // static function fullBlood() {
  88. // if(ctx()->privateState->battleReviveNum < glc()->battleReviveNum){//免费复活次数
  89. // ctx()->privateState->battleReviveNum += 1;
  90. // } else {//消耗钻石复活
  91. // my_Assert(ctx()->baseInfo->cash >= glc()->backFullBloodCost, ErrCode::notenough_cash_msg);
  92. // ctx()->base(true)->Consume_Cash(glc()->backFullBloodCost);
  93. // }
  94. // ctx()->privateData(true)->bornPlace = 0;
  95. //
  96. // UserProc::updateUserInfo();
  97. //
  98. // return Resp::ok(array(
  99. // 'cash' => ctx()->baseInfo->cash,
  100. // 'battleReviveNum' => ctx()->privateState->battleReviveNum,
  101. // 'ret'=>'true',
  102. // ));
  103. // }
  104. //
  105. ////
  106. //// <editor-fold defaultstate="collapsed" desc=" 世界boss ">
  107. //
  108. // static function WorldBossEnter() {
  109. // list($bossid) = req()->paras;
  110. // $gateId = 506000 + $bossid;
  111. // TaskProc::OnPassWorldBoss($gateId);
  112. // return Resp::ok();
  113. // }
  114. //
  115. // /**
  116. // * [6834] 查询世界boss伤害输出榜
  117. // */
  118. // static function GetWorldBossRank() {
  119. // $zoneid = req()->zoneid;
  120. // list($bossId) = req()->paras; # 提取参数bossid.
  121. // $key = MemKey_GameRun::Game_WorldBoss_X_Rank($zoneid, $bossId);
  122. // var_dump($key);
  123. // var_dump($bossId);
  124. // var_dump(req()->paras);
  125. // $rank = gMem()->zrange($key, 0, 50, true);
  126. // return Resp::ok(array('rank' => $rank));
  127. // }
  128. //
  129. // static function SettleWorldBoss($zoneId, $bossid) {
  130. // $key = MemKey_GameRun::Game_WorldBoss_X_Rank($zoneId, $bossid);
  131. // $range = gMem()->zrange($key, 0, -1); # 全部取出(暂时这么写吧)
  132. // $i = 1;
  133. // foreach ($range as $uid_name) {
  134. // $rwd = $bossid == 2 ? self::getWorldbossRankReward2($i) : self::getWorldbossRankReward($i);
  135. // $uid = substr($uid_name, 0, strpos($uid_name, "__"));
  136. // EmailProc::SendWorldBossReward($zoneId, $uid, $i++, $rwd->rankName, $rwd->reward);
  137. // }
  138. //
  139. // CLog::info("世界Boss($bossid)已结算,未更新结算标记(防止重复发放).");
  140. // }
  141. //
  142. // /**
  143. // * 按排名查询上榜奖励配置对象
  144. // * @param type $index
  145. // * @return \sm_worldboss_rankreward
  146. // */
  147. // static function getWorldbossRankReward($index) {
  148. // $arr = (array) GameConfig::worldboss_rankreward();
  149. // foreach ($arr as $i => $v) {
  150. // isEditor() and $v = new \sm_worldboss_rankreward();
  151. // if ($index >= $v->minRank && $index <= $v->maxRank) {
  152. // return $v;
  153. // }
  154. // }
  155. // return $arr[max(array_keys($arr))];
  156. // }
  157. //
  158. // /**
  159. // * 按排名查询上榜奖励配置对象
  160. // * @param type $index
  161. // * @return \sm_worldboss_rankreward2
  162. // */
  163. // static function getWorldbossRankReward2($index) {
  164. // $arr = (array) GameConfig::worldboss_rankreward2();
  165. // foreach ($arr as $i => $v) {
  166. // isEditor() and $v = new \sm_worldboss_rankreward2();
  167. // if ($index >= $v->minRank && $index <= $v->maxRank) {
  168. // return $v;
  169. // }
  170. // }
  171. // return $arr[max(array_keys($arr))];
  172. // }
  173. //
  174. //// </editor-fold>
  175. ////
  176. //// <editor-fold defaultstate="collapsed" desc=" 无尽塔 ">
  177. //
  178. // /**
  179. // * [6841] 查询无尽塔的进度
  180. // */
  181. // static function EndlessTower_Get() {
  182. // return Resp::ok(array('index' => ctx()->privateData()->endlessTower));
  183. // }
  184. //
  185. // /**
  186. // * [6842] 无尽塔升级
  187. // */
  188. // static function EndlessTower_Up() {
  189. // $gateId = 600001;
  190. // list($index) = req()->paras;
  191. // my_Assert($index == ctx()->privateData()->endlessTower, ErrCode::Fight_endlessTower_index);
  192. // ctx()->privateData()->endlessTower++; # 指向下一关
  193. // // 发放奖励
  194. // $mo = GameConfig::endless_tower_getItem($index); # 取配置信息
  195. // my_Assert(isset($mo), ErrCode::err_const_no); # 防御
  196. // $rsArr = str_replace(',', ';', $mo->rewardList); # 修复下奖励格式, ,=>;
  197. // $rewardStr = str_replace('_', ',', $rsArr); # _ => ,
  198. // $err = StoreProc::AddMultiItemInStore($rewardStr); # 发放奖励
  199. // my_Assert(ErrCode::ok == $err, $err); # 防御代码
  200. //
  201. // SystemProc::PassEndlessTower(req()->zoneid, ctx()->baseInfo->name, $index);
  202. // UserProc::updateUserInfo(); # 更新
  203. // TaskProc::OnPassEndlessCarboN($gateId, $index);
  204. // //var_dump("无尽塔");
  205. // return Resp::ok(array('index' => ctx()->privateData()->endlessTower,
  206. // 'baseInfo' => ctx()->base(),
  207. // 'store' => ctx()->store()
  208. // ));
  209. // }
  210. //
  211. // static function EndlessTower_Drawreward() {
  212. // list($index) = req()->paras;
  213. //// my_Assert($index % 5 == 0, ErrCode::paras_err); # 领取指定关卡的特殊奖励(逢5/0才有)
  214. // my_Assert(ctx()->privateData()->endlessTower >= $index, "请先完成挑战再来领奖!"); # 防御未通关直接领奖(刷接口)
  215. // my_Assert(!in_array($index, ctx()->privateData()->endlessTower_rewarded), "已经领取!"); # 防御已经领取
  216. // $mo = GameConfig::endless_tower_getItem($index);
  217. // my_Assert(isset($mo), ErrCode::err_const_no);
  218. // my_Assert(strlen($mo->rewardOne) > 0, "该关卡无特殊奖励!");
  219. // $rs = str_replace(',', ';', $mo->rewardOne); # 奖励串格式修复,
  220. // $rewardStr = str_replace('_', ',', $rs);
  221. // $err = StoreProc::AddMultiItemInStore($rewardStr); # 发放奖励
  222. // my_Assert(ErrCode::ok == $err, $err); # 防御
  223. // ctx()->privateData()->endlessTower_rewarded[] = $index; # 更新记录
  224. // UserProc::updateUserInfo();
  225. // return Resp::ok(array(# # 返回
  226. // 'baseInfo' => ctx()->base(),
  227. // 'store' => ctx()->store()
  228. // ));
  229. // }
  230. //
  231. //// </editor-fold>
  232. ////
  233. //
  234. // /**
  235. // * 清理每日字段
  236. // */
  237. // static function ClearByDay() {
  238. // SweepGatesProc::ClearGateTimes(); # 清理每个难度副本的每日战斗次数
  239. // $pvp = new Info_UserPVP(ctx()->pvp);
  240. // $pvp->refreshDailyData();
  241. // $pvp->sendRewardEmail(req()->zoneid, req()->uid, PVPProc::GetCurSeasonID());
  242. // ctx()->pvp = $pvp;
  243. // ctx()->privateState->materialDailyChallengeRecord = new \stdClass(); # 充值材料副本挑战记录
  244. // }
  245. //
  246. //}