$mysql_conf['host'], 'port' => $mysql_conf['port'], 'user' => $mysql_conf['user'], 'passwd' => $mysql_conf['passwd'], 'dbname' => 'gamedb2001_' . $mysql_conf['instance_id'] )); return $conn; } protected function getEquip($equip_id) { $g_conf_equip_cluster = require('../config/game2001api.equipUpgrade.cluster.php'); $equip_conf = getEquipConfig($g_conf_equip_cluster, $equip_id); $e = array( 'equip_id' => $equip_conf['id'], 'equip_name' => $equip_conf['name'], 'equip_type' => $equip_conf['equip_page'], 'equip_level' => $equip_conf['level'], 'equip_nextlevel' => $equip_conf['next_level'], 'equip_cost' => $equip_conf['cost'], 'equip_attr_type' => $equip_conf['attr_type'], 'equip_attr_value' => $equip_conf['attr_value'], ); return $e; } protected function getParameter($para_id) { $g_conf_para_cluster = require('../config/game2001api.parameter.cluster.php'); $para_conf = getParameterConfig($g_conf_para_cluster, $para_id); $p = array( 'id' => $para_conf['id'], 'param_name' => $para_conf['param_name'], 'param_value' => $para_conf['param_value'], ); return $p; } protected function subCoin($account_id, $equip_id) { $e = $this->getEquip($equip_id); if (!$e) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个装备'); die(); } $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $rowCoin = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;', array( ':accountid' => $account_id )); if ($rowCoin['coin_num'] < $e['equip_cost']) { phpcommon\sendError(ERR_USER_BASE + 3, '金币不足'); die(); } $ret = $conn->execScript('UPDATE user SET coin_num=:coin_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $account_id, ':coin_num' => $rowCoin['coin_num'] - $e['equip_cost'], ':modify_time' => time() )); if (!$ret) { die(); } return $e; } public function equipInfo() { $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); $equip_list = array(); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $rowCount = $conn->execQueryRowCount('SELECT * FROM equip WHERE accountid = :account_id;', array( ':account_id' => $account_id )); if ($rowCount != 0) { $active_time = 0; $equip_level = 0; $rows = $conn->execQuery('SELECT * FROM equip WHERE accountid=:account_id;', array( ':account_id' => $account_id )); foreach ($rows as $row) { if (time() >= $row['active_time'] && $row['active_time'] != 0) { $ret = $conn->execScript('UPDATE equip SET active_time=0, equip_experience_level=0, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $row['equip_id'], ':modify_time' => time() )); if (!$ret) { die(); return; } $equip_level = $row['equip_level']; $active_time = 0; } else { if ($row['active_time'] != 0) { $active_time = $row['active_time']; $equip_level = $row['equip_experience_level']; } else { $active_time = 0; $equip_level = $row['equip_level']; } } array_push($equip_list, array( 'equip_id' => $row['equip_id'], 'equip_level' => $equip_level, 'active_time' => $active_time )); } } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', 'equip_list' => $equip_list )); } public function updateEquip() { $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); $skin_list = array(); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); return; } $equip_id = $_REQUEST['equip_id']; $coin_num = $_REQUEST['coin_num']; $equip_level = $_REQUEST['equip_level']; $row = $conn->execQueryOne('SELECT * FROM equip WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id )); if (!$row) { $e = $this->subCoin($account_id, $equip_id . '-' . 1); $ret = $conn->execScript('INSERT INTO equip(accountid, equip_id, equip_level, equip_experience_level, active_time, create_time, modify_time) ' . ' VALUES(:accountid, :equip_id, :equip_level, :equip_experience_level, :active_time, :create_time, modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, equip_id=:equip_id, equip_level=:equip_level, equip_experience_level=:equip_experience_level, active_time=:active_time, modify_time=:modify_time;', array( ':accountid' => $account_id, ':equip_id' => $equip_id, ':equip_level' => $e['equip_nextlevel'], ':equip_experience_level' => 0, ':active_time' => 0, ':create_time' => time(), ':modify_time' => time() )); if (!$ret) { die(); return; } } else { if ($row['equip_level'] >= 9) { phpcommon\sendError(ERR_USER_BASE + 4, '装备已到满级'); return; } $e = $this->subCoin($account_id, $equip_id . '-' . $row['equip_level']); $ret = $conn->execScript('UPDATE equip SET equip_level=:equip_level, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id, ':equip_level' => $e['equip_nextlevel'], ':modify_time' => time() )); if (!$ret) { die(); return; } } $quest = new classes\Quest(); $quest->triggerQuest(QUEST_DAY_UPDATEEQUIP, 1, 1, $account_id); if ($e['equip_nextlevel'] == 9) { $quest->triggerQuest(QUEST_SUM_EQUIPMAX, 2, 1, $account_id); } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', )); } public function freeTryEquip() { $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); $equip_id = $_REQUEST['equip_id']; $equip_level = $_REQUEST['equip_level']; if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个角色'); return; } $e = $this->getEquip($equip_id . '-' . $equip_level); if (!$e) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个装备'); return; } $p = $this->getParameter(WEAPON_TRIAL); $time = $p['param_value']; $row = $conn->execQueryOne('SELECT * FROM equip WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id )); if (!$row) { $ret = $conn->execScript('INSERT INTO equip(accountid, equip_id, equip_level, equip_experience_level, active_time, create_time, modify_time) ' . ' VALUES(:accountid, :equip_id, 1, 9, :active_time, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:accountid, equip_id=:equip_id, equip_level=1, equip_experience_level=9, active_time=:active_time, modify_time=:modify_time;', array( ':accountid' => $account_id, ':equip_id' => $equip_id, ':active_time' => time() + $time, ':create_time' => time(), ':modify_time' => time() )); if (!$ret) { die(); return; } } else { $ret = $conn->execScript('UPDATE equip SET active_time=:active_time, equip_experience_level=9, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND equip_id=:equip_id;', array( ':account_id' => $account_id, ':equip_id' => $equip_id, ':active_time' => time() + $time, ':modify_time' => time() )); if (!$ret) { die(); return; } } echo json_encode(array( 'errcode' => 0, 'errmsg' => '', )); } } ?>