468 lines
17 KiB
PHP
468 lines
17 KiB
PHP
<?php
|
|
require_once('mt/Task.php');
|
|
require_once('mt/Parameter.php');
|
|
require_once 'metatable/drop.php';
|
|
class NTaskController extends BaseAuthedController {
|
|
|
|
public $m_testCnt = 0;
|
|
public function getGunInfo()
|
|
{
|
|
$account_id = $_REQUEST['account_id'];
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM gun_intensify WHERE accountid=:accountid; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id));
|
|
if($row) {
|
|
error_log("GunTest3======");
|
|
}
|
|
else{
|
|
error_log("GunTest4=======");
|
|
}
|
|
$this->sendDataToClient(0,"test02",$row);
|
|
}
|
|
public function test()
|
|
{
|
|
error_log("testController====".$this->m_testCnt);
|
|
$this->m_testCnt ++;
|
|
}
|
|
public function updateLogin()//更新登录任务
|
|
{
|
|
|
|
}
|
|
public function getRewardState($_num)
|
|
{
|
|
$g = $_num % 10;
|
|
$s = floor(($_num % 100)/10);
|
|
$b = floor(($_num % 1000)/100);
|
|
$q = floor(($_num % 10000)/1000);
|
|
$w = floor(($_num % 100000)/10000);
|
|
$listArr = array();
|
|
array_push($listArr,$g);
|
|
array_push($listArr,$s);
|
|
array_push($listArr,$b);
|
|
array_push($listArr,$q);
|
|
array_push($listArr,$w);
|
|
return $listArr;
|
|
}
|
|
public function getLvTastRewardByTaskID()//领取玩家等级成长任务奖励
|
|
{
|
|
$code = 100;
|
|
$account_id = $_REQUEST['account_id'];
|
|
$taskID = $_REQUEST['id'];
|
|
$taskCfg = mt\Task::getTaskCfgByID($taskID);
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT lv FROM user WHERE accountid=:accountid;";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id));
|
|
$playerLv = 0;
|
|
$itemList = array();
|
|
$resultArr = array();
|
|
array_push($resultArr,array("taskID"=>$taskID));
|
|
if($row)
|
|
{
|
|
$playerLv = $row[0]["lv"];
|
|
}
|
|
else
|
|
{
|
|
$code = 99;//玩家不存在
|
|
}
|
|
$playerLv = 7;
|
|
if($code == 100)
|
|
{
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id; ";
|
|
$row2 = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':quest_id' => $taskID));
|
|
if(!$row2)
|
|
{
|
|
$lvLimit = $taskCfg["value"];
|
|
if($playerLv >= $lvLimit)
|
|
{
|
|
$dropID = $taskCfg["reward_dropid"];
|
|
$dropItemArr = metatable\getDropListById($dropID);
|
|
$dropItemLen = count($dropItemArr);
|
|
$dropList = array();
|
|
for($j = 0; $j < $dropItemLen ; $j++)
|
|
{
|
|
$itemID = $dropItemArr[$j]["item_id"];
|
|
$itemNum = $dropItemArr[$j]["item_num"];
|
|
$item = array("item_id"=>$itemID,"item_num"=>$itemNum);
|
|
if($itemID == Daily_AP_ID)
|
|
{
|
|
error_log("我是每日活跃度ID=====".$itemID."==".$itemNum);
|
|
$this->updateActivePointTODB(999,$itemNum,0);
|
|
}
|
|
else if($itemID == WEEK_AP_ID)
|
|
{
|
|
$this->updateActivePointTODB(998,$itemNum,0);
|
|
error_log("我是周活跃度ID=====".$itemID."==".$itemNum);
|
|
}
|
|
else
|
|
{
|
|
|
|
array_push($itemList,$item);
|
|
}
|
|
array_push($resultArr,$item);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$code = 97;//等级不足
|
|
}
|
|
//
|
|
}
|
|
else
|
|
{
|
|
$code = 98;//奖励已经领取
|
|
}
|
|
}
|
|
if($code == 100)
|
|
{
|
|
$itemLen = count($itemList);
|
|
if($itemLen >0 )
|
|
{
|
|
$this->addItem($itemList);
|
|
}
|
|
$this->InsertTaskType($taskID,$taskCfg["type"],0);
|
|
}
|
|
error_log("PlayerLv=====".$playerLv);
|
|
$this->sendDataToClient($code,"GetPlayerLvTaskReward",$resultArr);
|
|
}
|
|
public function getRewardByTaskID()//领取任务奖励
|
|
{
|
|
$code = 100;
|
|
$account_id = $_REQUEST['account_id'];
|
|
$taskID = $_REQUEST['id'];
|
|
$tmpIndex = $_REQUEST["rewardIndex"];
|
|
$taskCfg = mt\Task::getTaskCfgByID($taskID);
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':quest_id' => $taskID));
|
|
$itemList = array();
|
|
$resultArr = array();
|
|
array_push($resultArr,array("taskID"=>$taskID,"index"=>$tmpIndex));
|
|
$rewardState = 0;//未领取奖励状态
|
|
error_log("准备领取奖励测试======".$taskID."==".json_encode($row));
|
|
if($row)
|
|
{
|
|
$rewardState = $row[0]["quest_state"];//重新赋值是否领取了奖励
|
|
$isGet = 0;//是否领取了奖励
|
|
$listArr = [];
|
|
$maxNum = 0;
|
|
$dropID = 0;
|
|
|
|
if($taskID >=900 && $taskID < 1000)
|
|
{
|
|
$targetLimitID = 0;
|
|
$targetDropID = 0;
|
|
$stateNum = $rewardState;
|
|
if($taskID == 999)
|
|
{
|
|
$targetLimitID = 208;
|
|
$targetDropID = 209;
|
|
}
|
|
else if($taskID == 998)
|
|
{
|
|
$targetLimitID = 210;
|
|
$targetDropID = 211;
|
|
}
|
|
if($stateNum <= 0)
|
|
{
|
|
$stateNum = 1000000;
|
|
}
|
|
$listArr = $this->getRewardState($stateNum);
|
|
$limitCfg = mt\Parameter::getParameterCfgByID($targetLimitID);
|
|
$dropIDCfg = mt\Parameter::getParameterCfgByID($targetDropID);
|
|
$limitStr = $limitCfg["param_value"];
|
|
$limitStrArr = explode("|",$limitStr);
|
|
$dropIDStr = $dropIDCfg["param_value"];
|
|
$dropIDStrArr = explode("|",$dropIDStr);
|
|
$dropID = $dropIDStrArr[$tmpIndex - 1];
|
|
$maxNum = $limitStrArr[$tmpIndex - 1];
|
|
$tmpState = $listArr[$tmpIndex - 1];
|
|
if($tmpState >= 1)
|
|
{
|
|
$isGet = 1;//奖励已经领取
|
|
}
|
|
else
|
|
{
|
|
$listArr[$tmpIndex - 1] = 1;
|
|
}
|
|
$listLen = count($listArr);
|
|
$newState = "10";
|
|
for($i = $listLen -1;$i >=0;$i--)
|
|
{
|
|
$newState = $newState."".$listArr[$i];
|
|
}
|
|
$rewardState = $newState;
|
|
error_log("配置信息======".$maxNum."==".$dropID."==".json_encode($listArr)."==".$newState);
|
|
}
|
|
else
|
|
{
|
|
$maxNum = $taskCfg["value"];
|
|
$dropID = $taskCfg["reward_dropid"];
|
|
$isGet = $rewardState;
|
|
$rewardState = 1;
|
|
}
|
|
if($isGet == 0)//未领取奖励
|
|
{
|
|
$curNum = $row[0]["quest_num"];
|
|
if($curNum >= $maxNum)
|
|
{
|
|
$dropItemArr = metatable\getDropListById($dropID);
|
|
$dropItemLen = count($dropItemArr);
|
|
$dropList = array();
|
|
for($j = 0; $j < $dropItemLen ; $j++)
|
|
{
|
|
$itemID = $dropItemArr[$j]["item_id"];
|
|
$itemNum = $dropItemArr[$j]["item_num"];
|
|
$item = array("item_id"=>$itemID,"item_num"=>$itemNum);
|
|
if($itemID == Daily_AP_ID)
|
|
{
|
|
error_log("我是每日活跃度ID=====".$itemID."==".$itemNum);
|
|
$this->updateActivePointTODB(999,$itemNum,0);
|
|
}
|
|
else if($itemID == WEEK_AP_ID)
|
|
{
|
|
$this->updateActivePointTODB(998,$itemNum,0);
|
|
error_log("我是周活跃度ID=====".$itemID."==".$itemNum);
|
|
}
|
|
else
|
|
{
|
|
|
|
array_push($itemList,$item);
|
|
}
|
|
array_push($resultArr,$item);
|
|
}
|
|
|
|
}
|
|
else
|
|
{
|
|
$code = 92;//条件不足领取奖励
|
|
}
|
|
}
|
|
else//已经领取了奖励
|
|
{
|
|
$code = 91;//j奖励已经领取
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$code = 90;//任务不存在
|
|
}
|
|
if($code == 100)
|
|
{
|
|
$itemLen = count($itemList);
|
|
if($itemLen >0 )
|
|
{
|
|
$this->addItem($itemList);
|
|
}
|
|
$this->updateActivePointTODB($taskID,0,$rewardState);
|
|
|
|
}
|
|
$this->sendDataToClient($code,"GetRewardFromTask",$resultArr);
|
|
//error_log("准备领取奖励=====".json_encode($_REQUEST)."==".$taskID);
|
|
}
|
|
//更新日活跃和周活跃分数
|
|
public function updateActivePointTODB($_questID,$_questNum,$_rewardState)
|
|
{
|
|
$account_id = $_REQUEST['account_id'];
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':quest_id' => $_questID));
|
|
$nowSeconds = $this->getNowTime();
|
|
$nextDaySeconds = phpcommon\getNextDaySeconds($nowSeconds);
|
|
$nextWeekSeconds = phpcommon\getMondaySeconds($nowSeconds);
|
|
$weekDeadLine = ($nextWeekSeconds + 86400*7);
|
|
$rewardState = 0;
|
|
$modifyTime = 0;
|
|
$taskNum = 0 ;
|
|
if($row) {
|
|
$item = $row[0];
|
|
$taskNum = $item["quest_num"];
|
|
$taskCondition = $item["quest_type"];
|
|
$rewardState = $item["quest_state"];
|
|
$modifyTime = $item["modify_time"];
|
|
|
|
if($taskCondition == 1 || $taskCondition == 99)//每日任务 周活跃奖励
|
|
|
|
{
|
|
if($nowSeconds >= $modifyTime)//是否过期
|
|
{
|
|
$rewardState = 0;
|
|
$modifyTime = $nextDaySeconds;
|
|
if($taskCondition == 99)
|
|
{
|
|
$modifyTime = $weekDeadLine;
|
|
}
|
|
$taskNum = $_questNum;
|
|
}
|
|
else
|
|
{
|
|
$taskNum = $taskNum + $_questNum;
|
|
$rewardState = $_rewardState;
|
|
|
|
}
|
|
}
|
|
phpcommon\SqlHelper::update
|
|
($this->getSelfMysql(),
|
|
'quest',
|
|
array(
|
|
'accountid' => $this->getAccountId(),
|
|
'quest_id' => $_questID
|
|
),
|
|
array(
|
|
'quest_num' =>$taskNum,
|
|
"quest_state" =>$rewardState,
|
|
'modify_time' => $modifyTime
|
|
)
|
|
);
|
|
}
|
|
else{
|
|
error_log("questInfo2=======");
|
|
}
|
|
}
|
|
public function updateTaskToDB($_questID,$_questNum)
|
|
{
|
|
|
|
$taskCfg = mt\Task::getTaskCfgByID($_questID);
|
|
$taskType = $taskCfg["type"];
|
|
$account_id = $_REQUEST['account_id'];
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id; ";
|
|
//$sqlStr = "SELECT * FROM quest WHERE quest_id=:quest_id; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':quest_id' => $_questID));
|
|
//$row = $conn->execQuery($sqlStr,array(':quest_id' => $_questID));
|
|
$questNum = 0;
|
|
$nowSeconds = phpcommon\getNowTime();
|
|
$nextDaySeconds = phpcommon\getNextDaySeconds($nowSeconds);
|
|
$nowTime = $this->getNowTime();
|
|
$modifyTime = 0;
|
|
$getReward = 0 ;
|
|
if($row) {
|
|
$modifyTime = $row[0]["modify_time"];
|
|
$getReward = $row[0]["quest_state"];
|
|
if($nowTime >= $modifyTime)
|
|
{
|
|
$getReward = 0;//第二天 数据恢复
|
|
$questNum = $_questNum;
|
|
$modifyTime = $nextDaySeconds;
|
|
}
|
|
else
|
|
{
|
|
$questNum = $row[0]["quest_num"] + $_questNum;
|
|
}
|
|
}
|
|
else{
|
|
$modifyTime = $nextDaySeconds;
|
|
$questNum = $_questNum;
|
|
}
|
|
//quest_state = 奖励是否领取
|
|
phpcommon\SqlHelper::insertOrUpdate
|
|
($this->getSelfMysql(),
|
|
'quest',
|
|
array(
|
|
'accountid' => $account_id,
|
|
'quest_id' => $_questID
|
|
),
|
|
array(
|
|
'accountid' => $account_id,
|
|
'quest_id' => $_questID,
|
|
'quest_num' =>$questNum,
|
|
'quest_type' =>$taskType,
|
|
'quest_state' =>0,
|
|
'create_time' => $this->getNowTime(),
|
|
'modify_time' => $modifyTime
|
|
),
|
|
array(
|
|
'quest_num' => $questNum,
|
|
'quest_state' =>$getReward,
|
|
'modify_time' => $modifyTime
|
|
)
|
|
);
|
|
}
|
|
public function getAllTaskInfo()
|
|
{
|
|
$account_id = $_REQUEST['account_id'];
|
|
$conn = $this->getMysql($account_id);
|
|
$nowSeconds = $this->getNowTime();
|
|
$nextDaySeconds = phpcommon\getNextDaySeconds($nowSeconds);
|
|
|
|
$nextWeekSeconds = phpcommon\getMondaySeconds($nowSeconds);
|
|
$weekDeadLine = ($nextWeekSeconds + 86400*7);
|
|
|
|
|
|
//插入今日活跃度任务开始--
|
|
$this->InsertTaskType(999,1,$nextDaySeconds);
|
|
//插入今日活跃度任务结束--
|
|
//插入每周活跃度任务开始--
|
|
$this->InsertTaskType(998,99,$weekDeadLine);
|
|
//插入每周活跃度任务结束--
|
|
|
|
|
|
$resultArr = array();
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id));
|
|
if($row) {
|
|
|
|
foreach($row as $item)
|
|
{
|
|
$taskID = $item["quest_id"];
|
|
$taskNum = $item["quest_num"];
|
|
$rewardState = $item["quest_state"];
|
|
$taskCondition = $item["quest_type"];
|
|
$modifyTime = $item["modify_time"];
|
|
if($taskCondition == 1 || $taskCondition == 99)//每日任务 周活跃奖励
|
|
{
|
|
if($nowSeconds >= $modifyTime)
|
|
{
|
|
$rewardState = 0;
|
|
$modifyTime = $nextDaySeconds;
|
|
if($taskCondition == 99)
|
|
{
|
|
$modifyTime = $weekDeadLine;
|
|
}
|
|
$taskNum = 0;
|
|
error_log("重置======".$nowSeconds."==".$modifyTime);
|
|
}
|
|
}
|
|
$tmpData = array("id"=>$taskID,"num"=>$taskNum,"rewardState"=>$rewardState,"condition"=>$taskCondition,"modifyTime"=>$modifyTime);
|
|
array_push($resultArr,$tmpData);
|
|
}
|
|
}
|
|
else{
|
|
error_log("questInfo2=======");
|
|
}
|
|
|
|
$this->sendDataToClient(100,"getAllTaskInfo",$resultArr);
|
|
}
|
|
public function InsertTaskType($questID,$dailyType,$deadline)
|
|
{
|
|
$nowSeconds = $this->getNowTime();
|
|
$account_id = $_REQUEST['account_id'];
|
|
$conn = $this->getMysql($account_id);
|
|
$sqlStr = "SELECT * FROM quest WHERE accountid=:accountid AND quest_id=:quest_id; ";
|
|
$row = $conn->execQuery($sqlStr,array(':accountid' => $account_id,':quest_id' => $questID));
|
|
if($row)
|
|
{
|
|
|
|
}
|
|
else//不存在插入
|
|
{
|
|
$sqlStr ='INSERT INTO quest(accountid, quest_id, quest_num, quest_type, quest_state, create_time, modify_time) ' .
|
|
' VALUES(:accountid, :quest_id, :quest_num, :quest_type, :quest_state, :create_time, :modify_time) ';
|
|
$params = array(
|
|
':accountid' => $account_id,
|
|
':quest_id' => $questID,
|
|
':quest_num' => 0,
|
|
':quest_type' => $dailyType,
|
|
':quest_state'=> 1000000,
|
|
':create_time' => $nowSeconds,
|
|
':modify_time' => $deadline
|
|
);
|
|
$ret = $conn->execScript($sqlStr,$params);
|
|
if (!$ret) {
|
|
die();
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|