$mysql_conf['host'], 'port' => $mysql_conf['port'], 'user' => $mysql_conf['user'], 'passwd' => $mysql_conf['passwd'], 'dbname' => 'gamedb2003_' . $mysql_conf['instance_id'] )); return $conn; } protected function getQuest($quest_id) { $g_conf_quest_cluster = require('../res/task@task.php'); $quest_conf = getQuestConfig($g_conf_quest_cluster, $quest_id); $q = array( 'id' => $quest_conf['id'], 'type' => $quest_conf['type'], 'condition' => $quest_conf['condition'], 'value' => $quest_conf['value'], 'jewel_reward' => $quest_conf['jewel_reward'], ); return $q; } public function questInfo() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $conn = $this->getMysql($account_id); $quest_list = array(); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $rows= $conn->execQuery('SELECT * FROM quest WHERE accountid=:accountid;', array( ':accountid' => $account_id, )); if ($rows) { foreach ($rows as $row) { array_push($quest_list, array( 'quest_id' => $row['quest_id'], 'quest_num' => $row['quest_num'], 'quest_status' => $row['quest_status'] )); } } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', 'quest_list' => $quest_list, )); } public function triggerQuest() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $condition = $_REQUEST['type']; $num = $_REQUEST['num']; $g_conf_task_cluster = require('../res/task@task.php'); $quest_list = array(); $sum = 0; $status = 0; $rows = $conn->execQuery('SELECT quest_id, quest_num, quest_status ' . ' FROM quest WHERE accountid=:accountid AND quest_type=:quest_type;', array( ':accountid' => $account_id, ':quest_type' => $condition, )); if (!$rows) { //插入任务 for ($i = 1; $i <= count($g_conf_task_cluster); $i++) { $q = $this->getQuest($i + 71000); if ($condition != $q['condition']) { continue; } if ($num < $q['value']) { $sum = $num ; $status = 0; } else { $sum = $q['value']; $status = 1; array_push($quest_list, array( 'id' => $q['id'], 'num' => $num, 'status' => $status )); } $this->insertQuest($q['id'], $account_id, $sum, $status, $condition); } } else { //更新任务 foreach ($rows as $row) { $q = $this->getQuest($row['quest_id']); if ($row['quest_num'] + $num < $q['value']) { $sum = $row['quest_num'] + $num ; $status = 0; } else { if ($row['quest_status'] != 0) { $sum = $q['value']; $status = $row['quest_status']; } else { $sum = $q['value']; $status = 1; array_push($quest_list, array( 'id' => $row['quest_id'], 'num' => $num, 'status' => $status )); } } $this->updateQuest($row['quest_id'], $account_id, $sum, $status); } } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', 'quest_list' => $quest_list, )); } public function submitQuest() { $account_id = $_REQUEST['account_id']; //登录校验 $login = loginVerify($account_id, $_REQUEST['session_id']); if (!$login) { phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); return; } $quest_id = $_REQUEST['id']; $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $q = $this->getQuest($quest_id); $row = $conn->execQueryOne('SELECT quest_status, quest_num ' . ' FROM quest WHERE accountid=:accountid AND quest_id=:quest_id;', array( ':accountid' => $account_id, ':quest_id' => $quest_id, )); if (!$row || !$q) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个任务'); return; } if ($row['quest_status'] == 2) { phpcommon\sendError(ERR_USER_BASE + 2, '任务奖励已领取'); return; } //更新任务 $this->updateQuest($quest_id, $account_id, $row['quest_num'], 2); echo json_encode(array( 'errcode' => 0, 'errmsg' => '', )); } protected function updateQuest($id, $account_id, $num, $status) { $conn = $this->getMysql($account_id); $ret = $conn->execScript('UPDATE quest SET quest_status=:status, quest_num=:num, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND quest_id =:quest_id;', array( ':accountid' => $account_id, ':quest_id' => $id, ':num' => $num, ':status' => $status, ':modify_time' => time() )); if (!$ret) { die(); } } protected function insertQuest($id, $account_id, $num, $status, $type) { $conn = $this->getMysql($account_id); $ret = $conn->execScript('INSERT INTO quest(accountid, quest_id, quest_num, quest_type, quest_status, create_time, modify_time) ' . ' VALUES(:accountid, :quest_id, :quest_num, :quest_type, :quest_status, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, quest_id=:quest_id, quest_num=:quest_num, quest_type=:quest_type, quest_status=:quest_status, modify_time=:modify_time;', array( ':accountid' => $account_id, ':quest_id' => $id, ':quest_num' => $num, ':quest_type' => $type, ':quest_status'=> $status, ':create_time' => time(), ':modify_time' => time() )); if (!$ret) { die(); } } } ?>