$mysql_conf['host'], 'port' => $mysql_conf['port'], 'user' => $mysql_conf['user'], 'passwd' => $mysql_conf['passwd'], 'dbname' => 'gamedb2004_' . $mysql_conf['instance_id'] )); return $conn; } protected function getItem($item_id) { $g_conf_item_cluster = require('../res/item@item.php'); $item_conf = getItemConfig($g_conf_item_cluster, $item_id); $it = array( 'id' => $item_conf['id'], 'diamond' => $item_conf['diamond'], 'type' => $item_conf['fuction'], 'diamond_hour' => $item_conf['diamond_hour'] ); return $it; } protected function getExplode($string) { $delim = "|"; $drop_multiply = explode($delim, $string); $delim1 = ":"; $arr = array(); for ($i = 0; $i < count($drop_multiply); $i++) { $mul = explode($delim1, $drop_multiply[$i]); array_push($arr, $mul); } return $arr; } public function addReward($item_id, $item_num, $account_id, $time) { $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $it = $this->getItem($item_id); if (!$it) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个道具'); die(); } $item_list = array(); array_push($item_list, array( 'item_id' => $item_id, 'item_num' => $item_num, 'time' => $time )); foreach ($item_list as $item) { $i = $this->getItem($item['item_id']); if ($i['type'] == 1){ $this->addCoin($item['item_id'], $item['item_num'], $account_id); } else if ($i['type'] == 2) { $this->addDiamond($item['item_id'], $item['item_num'], $account_id); } else { $price = $i['diamond']; if ($time != 0) { $price = $i['diamond_hour'] * $time; } $item_list = $this->addItem($item['item_id'], $item['time'], $account_id, $price); } } return $item_list; } public function getCoinNum($accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $row = $conn->execQueryOne('SELECT coin_num FROM user WHERE accountid=:accountid;', array( ':accountid' => $accountid )); return $row['coin_num']; } public function getDiamondNum($accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $row = $conn->execQueryOne('SELECT diamond_num FROM user WHERE accountid=:accountid;', array( ':accountid' => $accountid )); return $row['diamond_num']; } //添加钻石 protected function addDiamond($item_id, $item_num, $accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $row = $conn->execQueryOne('SELECT diamond_num FROM user WHERE accountid=:accountid;', array( ':accountid' => $accountid )); $ret = $conn->execScript('UPDATE user SET diamond_num=:diamond_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $accountid, ':diamond_num' => $item_num + $row['diamond_num'], ':modify_time' => time() )); if (!$ret) { die(); } } //添加金币 protected function addCoin($item_id, $item_num, $accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $row = $conn->execQueryOne('SELECT coin_num FROM user WHERE accountid=:accountid;', array( ':accountid' => $accountid )); $ret = $conn->execScript('UPDATE user SET coin_num=:coin_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $accountid, ':coin_num' => $item_num + $row['coin_num'], ':modify_time' => time() )); if (!$ret) { die(); } } //添加道具 protected function addItem($item_id, $time, $accountid, $price) { $item_list = array(); $item_num = 1; $item_id = $item_id; $time = $time; $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $status = 2; $active_time = $time * 3600 + time(); if ($time == 0) { $active_time = 0; $status = 1; } $row = $conn->execQueryOne('SELECT * FROM bag WHERE accountid=:accountid AND id=:id;', array( ':accountid' => $accountid, 'id' => $item_id )); if (!$row) { $ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, active_time, create_time, modify_time) ' . ' VALUES(:account_id, :id, 0, :status, :active_time, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=:status, active_time=:active_time, modify_time=:modify_time;', array( ':account_id' => $accountid, ':id' => $item_id, ':active_time' => $active_time, ':status' => $status, ':create_time' => time(), ':modify_time' => time() )); if(!$ret){ die(); } } else { if ($row['status'] != 2 && $row['active_time'] == 0) { $item_id = 10003; $item_num = $price; $time = 0; $this->addDiamond($item_id, $item_num, $accountid); } else { $nowTime = $row['active_time']; if ($time == 0) { $nowTime = 0; $status = 1; } else { if ($row['active_time'] < time() + $time * 3600) { $nowTime = time() + $time * 3600; } } $ret = $conn->execScript('UPDATE bag SET active_time=:active_time, status=:status, modify_time=:modify_time ' . ' WHERE accountid=:account_id AND id=:id;', array( ':account_id' => $accountid, ':id' => $item_id, ':active_time' => $nowTime, ':status' => $status, ':modify_time' => time() )); if (!$ret) { die(); } } } array_push($item_list, array( 'item_id' => $item_id, 'item_num' => $item_num, 'time' => $time, )); return $item_list; } } ?>