1
This commit is contained in:
commit
759a2c9b87
@ -166,8 +166,6 @@ CREATE TABLE `t_hero` (
|
|||||||
`last_pve_get_ceg_time` bigint NOT NULL DEFAULT '0' COMMENT '最后pve获取金币的时间',
|
`last_pve_get_ceg_time` bigint NOT NULL DEFAULT '0' COMMENT '最后pve获取金币的时间',
|
||||||
`today_mission_get_ceg` bigint NOT NULL DEFAULT '0' COMMENT '悬赏任务获得金币',
|
`today_mission_get_ceg` bigint NOT NULL DEFAULT '0' COMMENT '悬赏任务获得金币',
|
||||||
`last_mission_get_ceg_time` bigint NOT NULL DEFAULT '0' COMMENT '最后悬赏任务获取金币的时间',
|
`last_mission_get_ceg_time` bigint NOT NULL DEFAULT '0' COMMENT '最后悬赏任务获取金币的时间',
|
||||||
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
|
||||||
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
|
||||||
`active_token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'active_token_id',
|
`active_token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'active_token_id',
|
||||||
`active_count` int(11) NOT NULL DEFAULT '0' COMMENT 'active_count',
|
`active_count` int(11) NOT NULL DEFAULT '0' COMMENT 'active_count',
|
||||||
`activate` int(11) NOT NULL DEFAULT '0' COMMENT '是否激活 1:已初始激活',
|
`activate` int(11) NOT NULL DEFAULT '0' COMMENT '是否激活 1:已初始激活',
|
||||||
@ -177,7 +175,10 @@ CREATE TABLE `t_hero` (
|
|||||||
`seal_type` int(11) NOT NULL DEFAULT '0' COMMENT '0:未封存 1:已封存',
|
`seal_type` int(11) NOT NULL DEFAULT '0' COMMENT '0:未封存 1:已封存',
|
||||||
`unseal_time` int(11) NOT NULL DEFAULT '0' COMMENT '解开封时间',
|
`unseal_time` int(11) NOT NULL DEFAULT '0' COMMENT '解开封时间',
|
||||||
`is_old` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:展示红点 1:不用展示 ',
|
`is_old` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:展示红点 1:不用展示 ',
|
||||||
|
`gold_times` int(11) NOT NULL DEFAULT '0' COMMENT '打金次数 ',
|
||||||
|
`gold_modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '打金时间 ',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
PRIMARY KEY (`idx`),
|
PRIMARY KEY (`idx`),
|
||||||
UNIQUE KEY `token_id` (`token_id`),
|
UNIQUE KEY `token_id` (`token_id`),
|
||||||
KEY `account_id` (`account_id`)
|
KEY `account_id` (`account_id`)
|
||||||
@ -1940,6 +1941,7 @@ CREATE TABLE `t_box_alloc` (
|
|||||||
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
`room_uuid` varchar(60) NOT NULL COMMENT '公告标题',
|
`room_uuid` varchar(60) NOT NULL COMMENT '公告标题',
|
||||||
`account_id` varchar(60) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT 'account_id',
|
`account_id` varchar(60) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT 'account_id',
|
||||||
|
`phase` int(11) NOT NULL DEFAULT '0' COMMENT '阶段',
|
||||||
`used_num` int(11) NOT NULL DEFAULT '0' COMMENT '已消耗的箱子数',
|
`used_num` int(11) NOT NULL DEFAULT '0' COMMENT '已消耗的箱子数',
|
||||||
`box_num` int(11) NOT NULL DEFAULT '0' COMMENT '分配的箱子数',
|
`box_num` int(11) NOT NULL DEFAULT '0' COMMENT '分配的箱子数',
|
||||||
`return_account_id` varchar(60) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT 'return_account_id',
|
`return_account_id` varchar(60) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT 'return_account_id',
|
||||||
@ -2118,6 +2120,7 @@ CREATE TABLE `t_user_invitation_code_bind` (
|
|||||||
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Table structure for table `t_user_bind_gold_record`
|
-- Table structure for table `t_user_bind_gold_record`
|
||||||
--
|
--
|
||||||
@ -2135,3 +2138,4 @@ CREATE TABLE `t_user_bind_gold_record` (
|
|||||||
PRIMARY KEY (`idx`)
|
PRIMARY KEY (`idx`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ require_once('services/BattleDataService.php');
|
|||||||
require_once('services/TameBattleDataService.php');
|
require_once('services/TameBattleDataService.php');
|
||||||
require_once('services/RoomBattleDataService.php');
|
require_once('services/RoomBattleDataService.php');
|
||||||
require_once('services/FormulaService.php');
|
require_once('services/FormulaService.php');
|
||||||
|
require_once('services/BattleBoxService.php');
|
||||||
require_once('mt/RankSeason.php');
|
require_once('mt/RankSeason.php');
|
||||||
require_once('mt/Robot.php');
|
require_once('mt/Robot.php');
|
||||||
require_once('mt/Skill.php');
|
require_once('mt/Skill.php');
|
||||||
@ -1308,8 +1309,7 @@ class BattleController extends BaseAuthedController {
|
|||||||
$r->setPx(DEC_BATTLE_TICKET . $roomUuid, 1, 1000 * 3600);
|
$r->setPx(DEC_BATTLE_TICKET . $roomUuid, 1, 1000 * 3600);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requestAllocBoxNum()
|
public function requestAllocBoxNum() {
|
||||||
{
|
|
||||||
if (!myself()->_switchIsOpen('bigEventBoxDrop')) {
|
if (!myself()->_switchIsOpen('bigEventBoxDrop')) {
|
||||||
myself()->_rspData(array(
|
myself()->_rspData(array(
|
||||||
'box_num' => 0
|
'box_num' => 0
|
||||||
@ -1324,7 +1324,6 @@ class BattleController extends BaseAuthedController {
|
|||||||
'room_uuid' => $roomUuid,
|
'room_uuid' => $roomUuid,
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$boxNum = 0;
|
|
||||||
if (!empty($row)) {
|
if (!empty($row)) {
|
||||||
if ($row['createtime'] > myself()->_getNowDaySeconds()) {
|
if ($row['createtime'] > myself()->_getNowDaySeconds()) {
|
||||||
$boxNum = $row['box_num'];
|
$boxNum = $row['box_num'];
|
||||||
@ -1334,40 +1333,10 @@ class BattleController extends BaseAuthedController {
|
|||||||
));
|
));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$alreadyAllocBoxNum = $this->getAlreadyAllocBoxNum();
|
$boxNum = services\BattleBoxService::allocBox($roomUuid);
|
||||||
$dailyMaxNum = mt\Parameter::getVal('battle_event_loot_daily_max', 0);
|
|
||||||
$allocableNum = intval($dailyMaxNum - $alreadyAllocBoxNum);
|
|
||||||
$lstVal = mt\Parameter::getListValue('battle_event_loot_per_game');
|
|
||||||
if ($allocableNum <= 0 || empty($lstVal) || count($lstVal) < 2) {
|
|
||||||
myself()->_rspData(array(
|
|
||||||
'box_num' => 0
|
|
||||||
));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$rnd = rand($lstVal[0], $lstVal[1]);
|
|
||||||
if ($rnd <= 0) {
|
|
||||||
myself()->_rspData(array(
|
|
||||||
'box_num' => 0
|
|
||||||
));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$boxNum = min($rnd, $allocableNum);
|
|
||||||
SqlHelper::insert(
|
|
||||||
$this->_getSelfMysql(),
|
|
||||||
't_box_alloc',
|
|
||||||
array(
|
|
||||||
'room_uuid' => $roomUuid,
|
|
||||||
'account_id' => myself()->_getAccountId(),
|
|
||||||
'box_num' => $boxNum,
|
|
||||||
'createtime' => myself()->_getNowTime(),
|
|
||||||
'modifytime' => myself()->_getNowTime(),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
$this->incAlreadyAllocBoxNum($boxNum);
|
|
||||||
myself()->_rspData(array(
|
myself()->_rspData(array(
|
||||||
'box_num' => $boxNum
|
'box_num' => $boxNum
|
||||||
));
|
));
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function requestReturnBoxNum()
|
public function requestReturnBoxNum()
|
||||||
@ -1398,28 +1367,10 @@ class BattleController extends BaseAuthedController {
|
|||||||
'return_time' => myself()->_getNowTime(),
|
'return_time' => myself()->_getNowTime(),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
$this->incAlreadyAllocBoxNum(-max(0, $allocBoxNum - $usedNum));
|
services\BattleBoxService::incAlreadyAllocBoxNum($row['phase'],
|
||||||
|
$row['createtime'],
|
||||||
|
-max(0, $allocBoxNum - $usedNum));
|
||||||
myself()->_rspOk();
|
myself()->_rspOk();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function getAlreadyAllocBoxNum()
|
|
||||||
{
|
|
||||||
$key = 'box_daily_already_alloc_num:' . myself()->_getNowDaySeconds();
|
|
||||||
$r = $this->_getRedis($key);
|
|
||||||
$num = $r->get($key);
|
|
||||||
return empty($num) ? 0 : $num;
|
|
||||||
}
|
|
||||||
|
|
||||||
private function incAlreadyAllocBoxNum($val)
|
|
||||||
{
|
|
||||||
$key = 'box_daily_already_alloc_num:' . myself()->_getNowDaySeconds();
|
|
||||||
$r = $this->_getRedis($key);
|
|
||||||
$num = intval($r->get($key));
|
|
||||||
if (empty($num)) {
|
|
||||||
$r->setPx($key, $val, 1000 * 3600 * 24 * 7);
|
|
||||||
} else {
|
|
||||||
$r->setPx($key, $num + $val, 1000 * 3600 * 24 * 7);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,11 +3,13 @@
|
|||||||
require_once('phpcommon/bignumber.php');
|
require_once('phpcommon/bignumber.php');
|
||||||
require_once('phpcommon/sqlhelper.php');
|
require_once('phpcommon/sqlhelper.php');
|
||||||
require_once('services/BlockChainService.php');
|
require_once('services/BlockChainService.php');
|
||||||
|
require_once('services/BattleBoxService.php');
|
||||||
require_once('models/BuyRecord.php');
|
require_once('models/BuyRecord.php');
|
||||||
|
|
||||||
use models\Battle;
|
use models\Battle;
|
||||||
use phpcommon\SqlHelper;
|
use phpcommon\SqlHelper;
|
||||||
use services\BlockChainService;
|
use services\BlockChainService;
|
||||||
|
use services\BattleBoxService;
|
||||||
use models\BuyRecord;
|
use models\BuyRecord;
|
||||||
|
|
||||||
class ToolsController extends BaseController {
|
class ToolsController extends BaseController {
|
||||||
@ -489,4 +491,34 @@ class ToolsController extends BaseController {
|
|||||||
echo $checkSql2;
|
echo $checkSql2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function battleBoxAlloc()
|
||||||
|
{
|
||||||
|
$phase = getReqVal('phase', '');
|
||||||
|
$day = 0;
|
||||||
|
BattleBoxService::internalClear($phase, $day);
|
||||||
|
BattleBoxService::allocBox(myself()->_getNowTime());
|
||||||
|
BattleBoxService::dump($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function battleBoxDump()
|
||||||
|
{
|
||||||
|
$phase = getReqVal('phase', '');
|
||||||
|
$day = getReqVal('day', '');
|
||||||
|
BattleBoxService::dump($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function battleBoxClear()
|
||||||
|
{
|
||||||
|
$phase = getReqVal('phase', '');
|
||||||
|
$day = getReqVal('day', '');
|
||||||
|
BattleBoxService::clear($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function battleBoxSet()
|
||||||
|
{
|
||||||
|
$phase = getReqVal('phase', '');
|
||||||
|
$day = getReqVal('day', '');
|
||||||
|
BattleBoxService::set($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -123,6 +123,30 @@ class MapMode
|
|||||||
return !empty($meta['daily_open_time_2']) && !empty($meta['daily_end_time_2']);
|
return !empty($meta['daily_open_time_2']) && !empty($meta['daily_end_time_2']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getCurrentBoxDropInfo(&$mapModeMeta, &$phase, &$startTime, &$endTime)
|
||||||
|
{
|
||||||
|
self::traverseMeta(function ($meta)
|
||||||
|
use (&$mapModeMeta, &$phase, &$startTime, &$endTime) {
|
||||||
|
if ($meta['mapMode'] == self::TREASURE_BOX_MODE) {
|
||||||
|
if (self::configedDailyTimeLimit1($meta)) {
|
||||||
|
$mapModeMeta = $meta;
|
||||||
|
$phase = 1;
|
||||||
|
$startTime = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ". $meta['daily_open_time']));
|
||||||
|
$endTime = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ". $meta['daily_end_time']));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (self::configedDailyTimeLimit2($meta)) {
|
||||||
|
$mapModeMeta = $meta;
|
||||||
|
$phase = 2;
|
||||||
|
$startTime = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ". $meta['daily_open_time2']));
|
||||||
|
$endTime = myself()->_getDaySecondsOffset(strtotime("2024-6-22 ". $meta['daily_end_time2']));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
protected static function getMetaList()
|
protected static function getMetaList()
|
||||||
{
|
{
|
||||||
if (!self::$metaList) {
|
if (!self::$metaList) {
|
||||||
|
240
webapp/services/BattleBoxService.php
Normal file
240
webapp/services/BattleBoxService.php
Normal file
@ -0,0 +1,240 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace services;
|
||||||
|
|
||||||
|
require_once('mt/Parameter.php');
|
||||||
|
require_once('mt/MapMode.php');
|
||||||
|
|
||||||
|
use mt;
|
||||||
|
use phpcommon\SqlHelper;
|
||||||
|
/*
|
||||||
|
1、周期还害没结束,箱子就掉完了
|
||||||
|
完成度=T max/T cost time(last time-start time)
|
||||||
|
|
||||||
|
2、周期结束,箱子也还没掉完
|
||||||
|
完成度=N real num/N max
|
||||||
|
|
||||||
|
下一天的投放数量(下一天max)
|
||||||
|
下一天max=min(today max*today 完成度,qlobal max)
|
||||||
|
*/
|
||||||
|
class BattleBoxService {
|
||||||
|
|
||||||
|
const DAILY_PHASE_DROP_LAST_TIME_KEY = 'daily_phase_drop_last_time:';
|
||||||
|
const DAILY_PHASE_DROP_TOTAL_KEY = 'daily_phase_drop_total:';
|
||||||
|
const DAILY_PHASE_ALLOC_NUM_KEY = 'daily_phase_alloc_num:';
|
||||||
|
const DAILY_PHASE_ALREADY_ALLOC_NUM_KEY = 'daily_phase_already_alloc_num:';
|
||||||
|
|
||||||
|
public static function allocBox($roomUuid)
|
||||||
|
{
|
||||||
|
if (!myself()->_switchIsOpen('bigEventBoxDrop')) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$boxNum = 0;
|
||||||
|
|
||||||
|
$mapModeMeta = null;
|
||||||
|
$currPhase = 0;
|
||||||
|
$startTime = 0;
|
||||||
|
$endTime = 0;
|
||||||
|
|
||||||
|
$minNum = 0;
|
||||||
|
$maxNum = 0;
|
||||||
|
$maxNumLimit = 5000;
|
||||||
|
$completionDegree = 0;
|
||||||
|
mt\MapMode::getCurrentBoxDropInfo($mapModeMeta, $currPhase, $startTime, $endTime);
|
||||||
|
$maxLst0 = mt\Parameter::getListValue('battle_event_loot_daily_period_max_0');
|
||||||
|
$maxLst1 = mt\Parameter::getListValue('battle_event_loot_daily_period_max_1');
|
||||||
|
if (count($maxLst0) != 2 || count($maxLst1) != 2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ($currPhase < 1 || $currPhase > 2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$minNum = $maxLst0[$currPhase];
|
||||||
|
$maxNum = $maxLst0[$currPhase];
|
||||||
|
|
||||||
|
error_log(json_encode(array(
|
||||||
|
'mapNodeMeta' => $mapModeMeta,
|
||||||
|
'currPhase' => $currPhase,
|
||||||
|
'startTime' => $startTime,
|
||||||
|
'endTime' => $endTime,
|
||||||
|
'maxLst0' => $maxLst0,
|
||||||
|
'maxLst1' => $maxLst1,
|
||||||
|
)));
|
||||||
|
|
||||||
|
$allocableNum = self::getDailyPhaseAllocNum($currPhase, myself()->_getNowDaySeconds());
|
||||||
|
$alreadyAllocNum = self::getDailyPhaseAlreadyAllocNum($currPhase, myself()->_getNowDaySeconds());
|
||||||
|
if ($allocableNum <= 0) {
|
||||||
|
$yesterDayTime = myself()->_getNowDaySeconds() - 3600 * 24;
|
||||||
|
$yesterDayDropLastTime = self::getDailyPhaseDropLastTime($currPhase, $yesterDayTime);
|
||||||
|
$yesterDayDropTotal = self::getDailyPhaseDropTotalNum($currPhase, $yesterDayTime);
|
||||||
|
$yesterDayAllocNum = self::getDailyPhaseAllocNum($currPhase, $yesterDayTime);
|
||||||
|
if ($yesterDayAllocNum <= 0) {
|
||||||
|
$allocableNum = $maxNum;
|
||||||
|
} else {
|
||||||
|
if ($yesterDayDropTotal >= $yesterDayAllocNum) {
|
||||||
|
//掉完了
|
||||||
|
$costTime = myself()->_getDaySecondsOffset($yesterDayDropLastTime) - $startTime;
|
||||||
|
if ($costTime <= 0) {
|
||||||
|
$completionDegree = 1;
|
||||||
|
} else {
|
||||||
|
$completionDegree = ($endTime - $startTime) / $costTime;
|
||||||
|
}
|
||||||
|
error_log(json_encode(array(
|
||||||
|
'yesterDayDropLastTime' => $yesterDayDropLastTime,
|
||||||
|
'yesterDayDropLastTime2' => myself()->_getDaySecondsOffset($yesterDayDropLastTime),
|
||||||
|
'startTime' => $startTime,
|
||||||
|
'costTime' => $costTime,
|
||||||
|
'completionDegree' => $completionDegree,
|
||||||
|
)));
|
||||||
|
} else {
|
||||||
|
//没掉完
|
||||||
|
$completionDegree = $yesterDayDropTotal / $yesterDayAllocNum;
|
||||||
|
}
|
||||||
|
$allocableNum = min($maxNumLimit, $yesterDayAllocNum * $completionDegree);
|
||||||
|
}
|
||||||
|
if ($allocableNum > 0) {
|
||||||
|
self::setDailyPhaseAllocNum($currPhase, myself()->_getNowDaySeconds(), $allocableNum);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$allocableNum = max(0, $allocableNum - $alreadyAllocNum);
|
||||||
|
}
|
||||||
|
if ($allocableNum > 0) {
|
||||||
|
$lstVal = mt\Parameter::getListValue('battle_event_loot_per_game');
|
||||||
|
if (!($allocableNum <= 0 || empty($lstVal) || count($lstVal) < 2)) {
|
||||||
|
$rnd = rand($lstVal[0], $lstVal[1]);
|
||||||
|
if ($rnd > 0) {
|
||||||
|
$boxNum = min($rnd, $allocableNum);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($boxNum > 0) {
|
||||||
|
if (getReqVal('c', '') != 'Tools') {
|
||||||
|
SqlHelper::insert(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_box_alloc',
|
||||||
|
array(
|
||||||
|
'room_uuid' => $roomUuid,
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'phase' => $currPhase,
|
||||||
|
'box_num' => $boxNum,
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
self::incAlreadyAllocNum($currPhase, myself()->_getNowDaySeconds(), $boxNum);
|
||||||
|
}
|
||||||
|
return $boxNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function dump($phase, $day)
|
||||||
|
{
|
||||||
|
$daySeconds = myself()->_getNowDaySeconds() + $day * 3600 * 24;
|
||||||
|
$data = array(
|
||||||
|
'phase' => $phase,
|
||||||
|
'drop_last_time' => self::getDailyPhaseDropLastTime($phase, $daySeconds),
|
||||||
|
'drop_total' => self::getDailyPhaseDropTotalNum($phase, $daySeconds),
|
||||||
|
'alloc_num' => self::getDailyPhaseAllocNum($phase, $daySeconds),
|
||||||
|
'already_alloced_num' => self::getDailyPhaseAlreadyAllocNum($phase, $daySeconds),
|
||||||
|
);
|
||||||
|
myself()->_rspData($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function internalClear($phase, $day)
|
||||||
|
{
|
||||||
|
$daySeconds = myself()->_getNowDaySeconds() + $day * 3600 * 24;
|
||||||
|
self::getDailyPhaseDropLastTime($phase, $daySeconds, 0);
|
||||||
|
self::setDailyPhaseDropTotalNum($phase, $daySeconds, 0);
|
||||||
|
self::setDailyPhaseAllocNum($phase, $daySeconds, 0);
|
||||||
|
self::setDailyPhaseAlreadyAllocNum($phase, $daySeconds, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function clear($phase, $day)
|
||||||
|
{
|
||||||
|
self::internalClear($phase, $day);
|
||||||
|
self::dump($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function set($phase, $day)
|
||||||
|
{
|
||||||
|
$daySeconds = myself()->_getNowDaySeconds() + $day * 3600 * 24;
|
||||||
|
self::setDailyPhaseDropLastTime($phase, $daySeconds, getReqVal('drop_last_time', 0));
|
||||||
|
self::setDailyPhaseDropTotalNum($phase, $daySeconds, getReqVal('drop_total', 0));
|
||||||
|
self::setDailyPhaseAllocNum($phase, $daySeconds, getReqVal('alloc_num', 0));
|
||||||
|
self::setDailyPhaseAlreadyAllocNum($phase, $daySeconds, getReqVal('already_alloced_num', 0));
|
||||||
|
self::dump($phase, $day);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getDailyPhaseDropLastTime($phase, $time)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_DROP_LAST_TIME_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$lastTime = $r->get($key);
|
||||||
|
return empty($lastTime) ? 0 : $lastTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getDailyPhaseDropTotalNum($phase, $time)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_DROP_TOTAL_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$num = $r->get($key);
|
||||||
|
return empty($num) ? 0 : $num;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getDailyPhaseAllocNum($phase, $time)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_ALLOC_NUM_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$num = $r->get($key);
|
||||||
|
return empty($num) ? 0 : $num;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function setDailyPhaseDropLastTime($phase, $time, $val)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_DROP_LAST_TIME_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$r->setPx($key, $val, 1000 * 3600 * 24 * 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function setDailyPhaseDropTotalNum($phase, $time, $val)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_DROP_TOTAL_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$r->setPx($key, $val, 1000 * 3600 * 24 * 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function setDailyPhaseAllocNum($phase, $time, $val)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_ALLOC_NUM_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$r->setPx($key, $val, 1000 * 3600 * 24 * 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function setDailyPhaseAlreadyAllocNum($phase, $time, $val)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_ALREADY_ALLOC_NUM_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$r->set($key, $val);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getDailyPhaseAlreadyAllocNum($phase, $time)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_ALREADY_ALLOC_NUM_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$num = $r->get($key);
|
||||||
|
return empty($num) ? 0 : $num;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function incAlreadyAllocNum($phase, $time, $val)
|
||||||
|
{
|
||||||
|
$key = self::DAILY_PHASE_ALREADY_ALLOC_NUM_KEY . $phase . ':' . $time;
|
||||||
|
$r = myself()->_getRedis($key);
|
||||||
|
$num = intval($r->get($key));
|
||||||
|
if (empty($num)) {
|
||||||
|
$r->setPx($key, $val, 1000 * 3600 * 24 * 7);
|
||||||
|
} else {
|
||||||
|
$r->setPx($key, $num + $val, 1000 * 3600 * 24 * 7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -142,17 +142,17 @@ class RoomBattleDataService extends BaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$battleSingleDb = BattleSettlement::findSingle($this->battleSettlementDb['battle_uuid']);
|
||||||
if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){
|
if ($this->mapMode == mt\MapMode::TREASURE_BOX_MODE && $member['move_distance'] <= 2000 ){
|
||||||
error_log("金币模式:消极战斗");
|
error_log("金币模式:消极战斗");
|
||||||
}else{
|
}else{
|
||||||
$this->_getBattleRewards($userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member);
|
$this->_getBattleRewards($battleSingleDb, $userDb,$heroDb,$battleScore,$myTeamScoreAvg,$myTeamScore,$member['reward'], $member);
|
||||||
myself()->_addItems($member['reward'], $awardService,$propertyChgService);
|
myself()->_addItems($member['reward'], $awardService,$propertyChgService);
|
||||||
if ($this->mapMode == mt\MapMode::GOLD_MODE){
|
if ($this->mapMode == mt\MapMode::GOLD_MODE){
|
||||||
$member['today_hero_battles'] = $heroDb['idx'] . '|' .myself()->_getDailyV(TN_DAILY_GOLD_MODE_BATTLE_TIMES,$heroDb['idx']);
|
$member['today_hero_battles'] = $heroDb['idx'] . '|' .myself()->_getDailyV(TN_DAILY_GOLD_MODE_BATTLE_TIMES,$heroDb['idx']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$battleSingleDb = BattleSettlement::findSingle($this->battleSettlementDb['battle_uuid']);
|
|
||||||
if ($battleSingleDb){
|
if ($battleSingleDb){
|
||||||
$battleSingleData = emptyReplace(json_decode($battleSingleDb['data'], true), array());
|
$battleSingleData = emptyReplace(json_decode($battleSingleDb['data'], true), array());
|
||||||
$battleSingleData['reward'] = $member['reward'];
|
$battleSingleData['reward'] = $member['reward'];
|
||||||
@ -177,7 +177,7 @@ class RoomBattleDataService extends BaseService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function _getBattleRewards($userDb,$heroDb,$battleScore,$teamScoreAvg,$teamScore,&$reward, $member){
|
public function _getBattleRewards($battleSingleDb, $userDb,$heroDb,$battleScore,$teamScoreAvg,$teamScore,&$reward, $member){
|
||||||
error_log('settlementReward -> _getBattleRewards');
|
error_log('settlementReward -> _getBattleRewards');
|
||||||
$mapModeMeta = mt\MapMode::findByMapMode($this->mapMode);
|
$mapModeMeta = mt\MapMode::findByMapMode($this->mapMode);
|
||||||
$teamRank = getXVal($this->teamData,'pvp_team_rank', 0);
|
$teamRank = getXVal($this->teamData,'pvp_team_rank', 0);
|
||||||
@ -229,7 +229,7 @@ class RoomBattleDataService extends BaseService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
//宝箱掉落
|
//宝箱掉落
|
||||||
$this->_dropBox($rewardMeta,$teamRank,$reward,$member);
|
$this->_dropBox($battleSingleDb, $rewardMeta,$teamRank,$reward,$member);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -328,7 +328,7 @@ class RoomBattleDataService extends BaseService {
|
|||||||
return $gold;
|
return $gold;
|
||||||
}
|
}
|
||||||
|
|
||||||
private function _dropBox($rewardMeta,$teamRank,&$reward,$member){
|
private function _dropBox($battleSingleDb, $rewardMeta,$teamRank,&$reward,$member){
|
||||||
//宝箱掉落
|
//宝箱掉落
|
||||||
$chestLootProbArr = explode(";",$rewardMeta['chestLootProb']);
|
$chestLootProbArr = explode(";",$rewardMeta['chestLootProb']);
|
||||||
$rate = isset($chestLootProbArr[$teamRank-1]) ? $chestLootProbArr[$teamRank-1] : 0;
|
$rate = isset($chestLootProbArr[$teamRank-1]) ? $chestLootProbArr[$teamRank-1] : 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user