|
@@ -69,11 +69,13 @@ class FightProc {
|
|
|
case CmdCode::fight_WorldBoss_rankInfo: # 6826 世界boss的排名信息
|
|
|
return self::GetWorldBoss_RankInfo();
|
|
|
case CmdCode::fight_WorldBoss_getRankDamageVal: # 6827 当前轮次下 自己的最高伤害值
|
|
|
- return self::GetWorldBoss_RankDamageVal();
|
|
|
+ return self::GetWorldBoss_RankDamageVal();
|
|
|
case CmdCode::fight_WorldBoss_getSelfRank: # 6827 获取自己的排名信息
|
|
|
return self::GetWorldBoss_GetSelfRank();
|
|
|
- case CmdCode::fight_WorldBoss_ClaimRewards: # 6829 领取奖励
|
|
|
- return self::GetWorldBoss_ClaimRewards();
|
|
|
+ case CmdCode::fight_WorldBoss_claimRewards: # 6829 领取奖励
|
|
|
+ return self::GetWorldBoss_ClaimRewards();
|
|
|
+ case CmdCode::fight_WorldBoss_settle: # 6830 世界boss结算
|
|
|
+ return self::WorldBoss_settle();
|
|
|
default:
|
|
|
Err(ErrCode::cmd_err);
|
|
|
}
|
|
@@ -1034,14 +1036,14 @@ class FightProc {
|
|
|
* @param type $id
|
|
|
*/
|
|
|
static function isFunUnlock($id) {
|
|
|
- $funMo = GameConfig::fun_unlock_getItem($id);
|
|
|
+ $funMo = GameConfig::fun_unlock_getItem($id);
|
|
|
if ($funMo->unlockType1 != null && self::unlockCondition($funMo->unlockType1, $funMo->unlockParas1)) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
if ($funMo->unlockType2 != null && self::unlockCondition($funMo->unlockType2, $funMo->unlockParas2)) {
|
|
|
return true;
|
|
|
- }
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -1053,7 +1055,7 @@ class FightProc {
|
|
|
$funUnlock = false;
|
|
|
switch ($conditionId) {
|
|
|
case Enum_FunUnlockType::battle_Gate:
|
|
|
- $gateId = $paras;
|
|
|
+ $gateId = $paras;
|
|
|
if (ctx()->gates->GateList->$gateId->fightNum > 0) {
|
|
|
$funUnlock = true;
|
|
|
}
|
|
@@ -1423,10 +1425,10 @@ class FightProc {
|
|
|
|
|
|
if ($type == 1) {
|
|
|
$lv = gMem()->zrevrank(MemKey_GameRun::Rank_MainGateIndex_Zone_zset(req()->zoneid), $uid);
|
|
|
- } else if($type == 2){
|
|
|
+ } else if ($type == 2) {
|
|
|
$lv = gMem()->zrevrank(MemKey_GameRun::Rank_FightPower_Zone_zset(req()->zoneid), $uid);
|
|
|
} elseif ($type == 3) {
|
|
|
- $memKey = self::GetWorldBoss_DamageMemKey();
|
|
|
+ $memKey = self::GetWorldBoss_DamageMemKey();
|
|
|
$lv = gMem()->zrevrank($memKey, $uid);
|
|
|
}
|
|
|
|
|
@@ -1872,16 +1874,85 @@ class FightProc {
|
|
|
}
|
|
|
|
|
|
// </editor-fold>
|
|
|
-// <editor-fold defaultstate="collapsed" desc="世界boss 排行榜">
|
|
|
+// <editor-fold defaultstate="collapsed" desc=" 世界boss 排行榜">
|
|
|
|
|
|
/**
|
|
|
- * 一个赛季完成后 排名数据清理掉 同时轮次要改变
|
|
|
+ * 结算世界boss排行奖励[定时发放奖励接口]
|
|
|
*/
|
|
|
- public static function ResetWorldBossRank() {
|
|
|
- if (!FightProc::isFunUnlock(25)) {
|
|
|
+ public static function triggerSettleRankReward_worldBoss() {
|
|
|
+ //校验下是否处在发放奖励信息的时间点 【每个轮次最后一天的最后10分钟】
|
|
|
+ $mo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::WorldBoss);
|
|
|
+
|
|
|
+ if ($mo == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if(now() < $mo->startTs){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ echo '----发放世界boss的排行奖励程序开始运行-----';
|
|
|
+ $memKey = MemKey_GameRun::WorldBoss_StartTs(req()->zoneid);
|
|
|
+ $mem = gMem();
|
|
|
+
|
|
|
+ $ts = $mem->get($memKey);
|
|
|
+ if ($ts == 0) {
|
|
|
+ $ts = $mo->startTs;
|
|
|
+ }
|
|
|
+
|
|
|
+ $curDay = TimeUtil::totalDays();
|
|
|
+ $endDay = TimeUtil::totalDays($ts);
|
|
|
+
|
|
|
+ $num = $curDay - $endDay;
|
|
|
+ $num += 1;
|
|
|
+
|
|
|
+ $yushu = $num % 3;
|
|
|
+
|
|
|
+ $tomorrowMidnight = strtotime('tomorrow', now()); //明天0点时间
|
|
|
+
|
|
|
+ $chaizhi = $tomorrowMidnight - now();
|
|
|
+
|
|
|
+ if ($yushu == 0 && $chaizhi <= 10 * 60) {
|
|
|
+ $damageMemKey = self::GetWorldBoss_DamageMemKey();
|
|
|
+ echo '发放奖励的menkey===============:';
|
|
|
+ echo "$damageMemKey";
|
|
|
+ if ($mem->exists($damageMemKey)) {
|
|
|
+ FightProc::settleRankReward_worldBoss();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ echo '----世界boss的排行奖励-发放完成----';
|
|
|
+ }
|
|
|
+
|
|
|
+ public static function settleRankReward_worldBoss() {
|
|
|
+ echo '----开始发放世界boss的排行奖励-----';
|
|
|
+ $dic = GameConfig::worldboss_rankreward();
|
|
|
+ if ($dic == null) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ $memKey = self::GetWorldBoss_DamageMemKey();
|
|
|
+ foreach ($dic as $id => $mo) {
|
|
|
+ $list = gMem()->zrevrange($memKey, $mo->rank_start - 1, $mo->rank_end - 1, true);
|
|
|
+
|
|
|
+ if (count($list) == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ foreach ($list as $uid => $score) {
|
|
|
+ EmailProc::SendWorldBossRewardMail(req()->zoneid, $uid, $mo->reward);
|
|
|
+ gMem()->zrem($memKey, $uid);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// $list = gMem()->zrevrange($memKey, 0, GameConfig::glc2()->WorldBoss_RankRewardStatistics, true);
|
|
|
+// if (count($list) <= 0) {
|
|
|
+// gMem()->delete($memKey);
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 重置每个赛季的开始时间 一个重置每个赛季的开始时间赛季完成后 排名数据清理掉 同时轮次要改变 [定时接口]
|
|
|
+ */
|
|
|
+ public static function ResetWorldBossRank_StartTs() {
|
|
|
$mo = GameConfig::subfun_unlock_getItem(Enum_SubFunType::WorldBoss);
|
|
|
if ($mo == null) {
|
|
|
return;
|
|
@@ -1889,7 +1960,7 @@ class FightProc {
|
|
|
if (now() < $mo->startTs) {
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+ echo '赛季的开始时间重置程序开始运行**********';
|
|
|
$memKey = MemKey_GameRun::WorldBoss_StartTs(req()->zoneid);
|
|
|
$mem = gMem();
|
|
|
|
|
@@ -1899,11 +1970,13 @@ class FightProc {
|
|
|
$mem->set($memKey, $mo->startTs);
|
|
|
$ts = $mo->startTs;
|
|
|
}
|
|
|
- if (now() - $ts >= $durationTs) {
|
|
|
- $nextTs = TimeUtil::getNextDayTs($mo->startTs, $mo->ts);
|
|
|
+
|
|
|
+ if (now() - $ts > $durationTs) {
|
|
|
+ $nextTs = TimeUtil::getNextDayTs($ts, $mo->ts);
|
|
|
$mem->set($memKey, $nextTs); //下一轮赛季的开始时间回存
|
|
|
+ echo '完成重置下一个赛季的开始时间';
|
|
|
//清理排行榜
|
|
|
- self::ClearWorldBossRank();
|
|
|
+ //self::ClearWorldBossRank();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1919,15 +1992,17 @@ class FightProc {
|
|
|
}
|
|
|
$mem->deleteMulti($arr);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 每天登录的时候 检测轮次变化
|
|
|
+ */
|
|
|
public static function ResetTurnNum() {
|
|
|
$num = self::GetCurTurnNum();
|
|
|
- if($num != ctx()->privateState->worldBoss_turnNum){
|
|
|
+ if ($num != ctx()->privateState->worldBoss_turnNum) {
|
|
|
ctx()->privateState->worldBoss_turnNum = $num;
|
|
|
- ctx()->privateState->worldBoss_received = array();
|
|
|
+ ctx()->privateState->worldBoss_received = array();
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 当前所在世界boss 的轮次 //当前轮次可以算出来
|
|
@@ -1946,19 +2021,19 @@ class FightProc {
|
|
|
return $num + 1;
|
|
|
}
|
|
|
|
|
|
- public static function GetWorldBoss_DamageMemKey(){
|
|
|
+ public static function GetWorldBoss_DamageMemKey() {
|
|
|
$num = self::GetCurTurnNum();
|
|
|
$memKey = MemKey_GameRun::WorldBoss_Rank($num, req()->zoneid);
|
|
|
return $memKey;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 世界boss榜 伤害值入榜
|
|
|
* @param type $gateIndex
|
|
|
*/
|
|
|
public static function Ranking_DamageVal($damageVal) {
|
|
|
//$num = self::GetCurTurnNum();
|
|
|
- $memKey = self::GetWorldBoss_DamageMemKey();// MemKey_GameRun::WorldBoss_Rank($num, req()->zoneid);
|
|
|
+ $memKey = self::GetWorldBoss_DamageMemKey(); // MemKey_GameRun::WorldBoss_Rank($num, req()->zoneid);
|
|
|
$mem = gMem();
|
|
|
|
|
|
$uid = req()->uid;
|
|
@@ -1984,21 +2059,20 @@ class FightProc {
|
|
|
//list() = req()->paras;
|
|
|
|
|
|
$selfIsHasRank = 0; //本人是否上榜 0未上榜没有排名 1上榜则selfRank就是排名
|
|
|
-
|
|
|
//$num = self::GetCurTurnNum();
|
|
|
//$memKey = MemKey_GameRun::WorldBoss_Rank($num, req()->zoneid);
|
|
|
$memKey = self::GetWorldBoss_DamageMemKey();
|
|
|
$list = gMem()->zrevrange($memKey, 0, GameConfig::glc2()->WorldBoss_RankRewardStatistics, true);
|
|
|
|
|
|
$rankStatistics = GameConfig::glc2()->WorldBoss_RankStatistics;
|
|
|
-
|
|
|
+
|
|
|
$selfRank = null;
|
|
|
$retArr = array();
|
|
|
$index = 0;
|
|
|
if (count($list) > 0) {
|
|
|
foreach ($list as $uid => $score) {
|
|
|
$index += 1;
|
|
|
- $rankInfo = self::initOtherUidRankInfo($uid, $score, 3);
|
|
|
+ $rankInfo = self::initOtherUidRankInfo($uid, $score, 3);
|
|
|
if ($rankInfo->uid == req()->uid && $index <= $rankStatistics) {
|
|
|
$selfIsHasRank = 1;
|
|
|
$selfRank = $rankInfo;
|
|
@@ -2016,86 +2090,98 @@ class FightProc {
|
|
|
$ret = array(
|
|
|
'rankInfo' => $retArr,
|
|
|
'selfRank' => $selfRank,
|
|
|
- 'selfIsHasRank' => $selfIsHasRank,
|
|
|
+ 'selfIsHasRank' => $selfIsHasRank,
|
|
|
);
|
|
|
return Resp::ok($ret);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 6827 当前轮次下 自己的最高伤害值
|
|
|
* @return type
|
|
|
- */
|
|
|
+ */
|
|
|
public static function GetWorldBoss_RankDamageVal() {
|
|
|
- $val = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
- if($val == null){
|
|
|
+ $val = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
+ if ($val == null) {
|
|
|
$val = 0;
|
|
|
- }
|
|
|
+ }
|
|
|
UserProc::updateUserInfo();
|
|
|
$ret = array(
|
|
|
- 'DamageVal' => intval($val),
|
|
|
+ 'DamageVal' => intval($val),
|
|
|
);
|
|
|
return Resp::ok($ret);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 6828 获取自己的排名信息
|
|
|
* @return type
|
|
|
*/
|
|
|
- public static function GetWorldBoss_GetSelfRank() {
|
|
|
+ public static function GetWorldBoss_GetSelfRank() {
|
|
|
// $lv = gMem()->zrevrank(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
// if($lv == null){
|
|
|
// $lv = 0;
|
|
|
// }
|
|
|
- $damageval = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
- if($damageval == null){
|
|
|
+ $damageval = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
+ if ($damageval == null) {
|
|
|
$damageval = 0;
|
|
|
- }
|
|
|
- $ins_rank = self::initOtherUidRankInfo(req()->uid, $damageval, 3);
|
|
|
-
|
|
|
+ }
|
|
|
+ $ins_rank = self::initOtherUidRankInfo(req()->uid, $damageval, 3);
|
|
|
+
|
|
|
UserProc::updateUserInfo();
|
|
|
$ret = array(
|
|
|
'selfRank' => $ins_rank,
|
|
|
-
|
|
|
);
|
|
|
return Resp::ok($ret);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
/**
|
|
|
* 6829 领取世界boss奖励
|
|
|
* @return type
|
|
|
*/
|
|
|
- public static function GetWorldBoss_ClaimRewards() {
|
|
|
- list($damageValId) = req()->paras;
|
|
|
-
|
|
|
- my_Assert(!in_array($damageValId, ctx()->privateState->worldBoss_received), ErrCode::active_hasgetted);
|
|
|
-
|
|
|
- $val = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
- if($val == null){
|
|
|
+ public static function GetWorldBoss_ClaimRewards() {
|
|
|
+ list($damageValId) = req()->paras;
|
|
|
+
|
|
|
+ my_Assert(!in_array($damageValId, ctx()->privateState->worldBoss_received), ErrCode::active_hasgetted);
|
|
|
+
|
|
|
+ $val = gMem()->zscore(self::GetWorldBoss_DamageMemKey(), req()->uid);
|
|
|
+ if ($val == null) {
|
|
|
$val = 0;
|
|
|
- }
|
|
|
- my_Assert($damageValId <= $val, ErrCode::active_worldBoss_notClaimRewards);
|
|
|
-
|
|
|
+ }
|
|
|
+ my_Assert($damageValId <= $val, ErrCode::active_worldBoss_notClaimRewards);
|
|
|
+
|
|
|
$turnNum = self::GetCurTurnNum();
|
|
|
$list = GameConfig::worldboss_demagereward_getItemArray($turnNum);
|
|
|
foreach ($list as $key => $mo) {
|
|
|
- if($mo->demageValId == $damageValId && $mo->orderId == $turnNum){
|
|
|
+ if ($mo->demageValId == $damageValId && $mo->orderId == $turnNum) {
|
|
|
StoreProc::AddMultiItemInStore($mo->reward);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
ctx()->privateState->worldBoss_received[] = $damageValId;
|
|
|
-
|
|
|
+
|
|
|
UserProc::updateUserInfo();
|
|
|
$ret = array(
|
|
|
'store' => ctx()->store,
|
|
|
- 'cash'=>ctx()->baseInfo->cash,
|
|
|
- 'reward'=> StoreProc::$reward,
|
|
|
- 'reward_Gem'=> StoreProc::$reward_Gem,
|
|
|
- 'reward_equip'=> StoreProc::$reward_equip,
|
|
|
+ 'cash' => ctx()->baseInfo->cash,
|
|
|
+ 'reward' => StoreProc::$reward,
|
|
|
+ 'reward_Gem' => StoreProc::$reward_Gem,
|
|
|
+ 'reward_equip' => StoreProc::$reward_equip,
|
|
|
);
|
|
|
return Resp::ok($ret);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 6830 世界boss结算
|
|
|
+ */
|
|
|
+ public static function WorldBoss_settle() {
|
|
|
+ list($damageNum) = req()->paras; //战斗结束伤害值
|
|
|
+ //校验每个轮次最后10分钟, 不能战斗
|
|
|
+
|
|
|
+
|
|
|
+ self::Ranking_DamageVal($damageNum);
|
|
|
+
|
|
|
+ UserProc::updateUserInfo();
|
|
|
+ return Resp::ok(array());
|
|
|
+ }
|
|
|
+
|
|
|
// </editor-fold>
|
|
|
}
|