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; } } } }