$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 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'], 'price' => $item_conf['price'], 'dprice' => $item_conf['dprice'], 'type' => $item_conf['fuction'], 'index' => $item_conf['fuctionindex'] ); return $it; } protected function getDrop($drop_id) { $g_conf_drop_cluster = require('../res/drop@drop.php'); $drop_conf = getDropConfig($g_conf_drop_cluster, $drop_id); $d = array( 'drop_id' => $drop_conf['drop_id'], 'item_id' => $drop_conf['item_id'], 'num' => $drop_conf['num'], 'weight' => $drop_conf['weight'], 'type' => $drop_conf['type'] ); return $d; } 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) { $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( 'itemid' => $item_id, 'itemnum' => $item_num, )); if ($it['type'] == 5) { $item_list = $this->addGift($it['index'], $account_id); } else if ($it['type'] == 7) { $this->addPass($it['id'], $item_num, $account_id); } foreach ($item_list as $item) { $i = $this->getItem($item['itemid']); switch ($i['type']) { case 1: //添加金币 $this->addCoin($item['itemid'], $item['itemnum'], $account_id); break; case 2: //添加钻石 $this->addDiamond($item['itemid'], $item['itemnum'], $account_id); break; case 3: //添加角色碎片 $this->addSkinFragment($item['itemid'], $item['itemnum'], $account_id); break; case 4: //添加角色 $item_list = $this->addSkin($item['itemid'], $item['itemnum'], $account_id); break; case 6: //添加表情 $item_list = $this->addEmoji($item['itemid'], $account_id, $it['dprice']); break; default: break; } } 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 addGift($dropid, $accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $d = $this->getDrop($dropid); if (!$d) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个道具'); die(); } $item_list = array(); $item_id_array = $this->getExplode($d['item_id']); $weight_sum = 0; $keys = 0; $item_num_array = $this->getExplode($d['num']); $weight_array = $this->getExplode($d['weight']); for ($i = 0; $i < count($weight_array); $i++) { $random = Rand(0, 10000); if ($weight_array[$i][0] > $random) { $item_id = $item_id_array[$i][0]; $item_num = $item_num_array[$i][0]; array_push($item_list, array( 'itemid' => $item_id, 'itemnum' => $item_num, )); } } return $item_list; } //添加表情 protected function addEmoji($itemid, $accountid, $dprice) { $item_list = array(); $item_id = 0; $item_num = 0; $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $row = $conn->execQueryOne('SELECT status FROM emoji WHERE accountid=:accountid AND emojiid=:emojiid;', array( ':accountid' => $accountid, ':emojiid' => $itemid, )); if (!$row) { $ret = $conn->execScript('INSERT INTO emoji(accountid, emojiid, status, create_time, modify_time) ' . ' VALUES(:account_id, :emojiid, 1, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:account_id, emojiid=:emojiid, status=1, modify_time=:modify_time;', array( ':account_id' => $accountid, ':emojiid' => $itemid, ':create_time' => time(), ':modify_time' => time() )); if(!$ret){ die(); return; } $item_id = $itemid; $item_num = 1; } else { $item_id = 10003; $item_num = $dprice; $this->addDiamond($item_id, $item_num, $accountid); } array_push($item_list, array( 'itemid' => $item_id, 'itemnum' => $item_num, )); return $item_list; } //添加钻石 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 addSkinFragment($item_id, $item_num, $accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $rowSkin = $conn->execQueryOne('SELECT fragment_num FROM skin WHERE accountid=:accountid AND fragment_id=:fragment_id;', array( ':accountid' => $accountid, ':fragment_id' => $item_id )); if (!$rowSkin) { $ret = $conn->execScript('INSERT INTO skin(accountid, skin_id, skin_status, fragment_id, fragment_num, active_time, fragment_status, skin_type, skin_level, skin_experience_level, skin_experience_type, create_time, modify_time) ' . ' VALUES(:account_id, :skin_id, :skin_status, :fragment_id, :fragment_num, 0, 0, :skin_type, 1, 0, 0, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:account_id, skin_id=:skin_id, skin_status=:skin_status, fragment_id=:fragment_id, fragment_num=:fragment_num, active_time=0, fragment_status=0, skin_type=:skin_type, skin_level=1, skin_experience_level=0, skin_experience_type=0, modify_time=:modify_time;', array( ':account_id' => $accountid, ':skin_id' => $item_id + 1000, ':skin_status' => 2, ':fragment_id' => $item_id, ':fragment_num' => $item_num, ':skin_type' => 1, ':create_time' => time(), ':modify_time' => time() )); if(!$ret){ die(); } } else { $ret = $conn->execScript('UPDATE skin SET fragment_num=:fragment_num, modify_time=:modify_time ' . ' WHERE accountid=:accountid AND fragment_id=:fragment_id;', array( ':accountid' => $accountid, ':fragment_id' => $item_id, ':fragment_num' => $item_num + $rowSkin['fragment_num'], ':modify_time' => time() )); if (!$ret) { die(); } } } //添加角色 protected function addSkin($item_id, $item_num, $accountid) { $item_list = array(); $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $rowSkin = $conn->execQueryOne('SELECT fragment_num, skin_status FROM skin WHERE accountid=:accountid AND fragment_id=:fragment_id;', array( ':accountid' => $accountid, ':fragment_id' => $item_id - 1000 )); if (!$rowSkin || $rowSkin['skin_status'] == 2) { $ret = $conn->execScript('INSERT INTO skin(accountid, skin_id, skin_status, fragment_id, fragment_num, active_time, fragment_status, skin_type, skin_level, skin_experience_level, skin_experience_type, create_time, modify_time) ' . ' VALUES(:account_id, :skin_id, :skin_status, :fragment_id, 0, 0, 0, :skin_type, 1, 0, 0, :create_time, :modify_time) ' . ' ON DUPLICATE KEY UPDATE accountid=:account_id, skin_id=:skin_id, skin_status=:skin_status, fragment_id=:fragment_id, fragment_num=0, active_time=0, fragment_status=0, skin_type=:skin_type, skin_level=1, skin_experience_level=0, skin_experience_type=0, modify_time=:modify_time;', array( ':account_id' => $accountid, ':skin_id' => $item_id, ':skin_status' => 1, ':fragment_id' => $item_id - 1000, ':skin_type' => 1, ':create_time' => time(), ':modify_time' => time() )); if(!$ret){ die(); } $item_id = $item_id; $item_num = 1; } else { $i = $this->getItem($item_id); $item_id = 10003; $item_num = $i['dprice']; $this->addDiamond($item_id, $item_num, $accountid); } array_push($item_list, array( 'item_id' => $item_id, 'item_num' => $item_num, )); return $item_list; } //添加通行证 protected function addPass($item_id, $item_num, $accountid) { $conn = $this->getMysql($accountid); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); die(); } $user_ret = $conn->execScript('UPDATE user SET pass_status=1, modify_time=:modify_time ' . ' WHERE accountid=:accountid;', array( ':accountid' => $accountid, ':modify_time' => time() )); if (!$user_ret) { die(); } } } ?>