This commit is contained in:
wangwei01 2019-07-02 14:57:26 +08:00
parent 88fdadd28c
commit 1c584f0d64
5 changed files with 103 additions and 35 deletions

View File

@ -60,6 +60,7 @@ CREATE TABLE `user` (
`first_fight` int(11) NOT NULL COMMENT '是否是第一次战斗', `first_fight` int(11) NOT NULL COMMENT '是否是第一次战斗',
`collect_status` int(11) NOT NULL COMMENT '收藏状态', `collect_status` int(11) NOT NULL COMMENT '收藏状态',
`keys_num` int(11) NOT NULL COMMENT '钥匙数量', `keys_num` int(11) NOT NULL COMMENT '钥匙数量',
`battle_re_times` int(11) NOT NULL COMMENT '每日战斗奖励次数',
PRIMARY KEY (`idx`), PRIMARY KEY (`idx`),
UNIQUE KEY `accountid` (`accountid`) UNIQUE KEY `accountid` (`accountid`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

View File

@ -134,5 +134,11 @@ function getItemConfig($item_table, $item_id)
$item_id = (int)$item_id; $item_id = (int)$item_id;
return array_key_exists($item_id, $item_table) ? $item_table[$item_id] : null; return array_key_exists($item_id, $item_table) ? $item_table[$item_id] : null;
} }
function getShareConfig($share_table, $share_id)
{
$share_id = (int)$share_id;
return array_key_exists($share_id, $share_table) ? $share_table[$share_id] : null;
}
checkMysqlConfig(); checkMysqlConfig();
checkRedisConfig(); checkRedisConfig();

View File

@ -67,7 +67,7 @@ define('DOUBLE_END_WAR', 24); //战斗结束翻倍率
define('DOUBLE_BOX', 25); //抽箱子奖励翻倍率 define('DOUBLE_BOX', 25); //抽箱子奖励翻倍率
define('FREE_DRESS_MAX_TIME', 30); //免费获取皮肤次数上限 define('FREE_DRESS_MAX_TIME', 30); //免费获取皮肤次数上限
define('RAND_SHOP_GOLD', 39); //商店金币刷新价格 define('RAND_SHOP_GOLD', 39); //商店金币刷新价格
define('MAX_BATTLE_REWARD', 40); //战斗额外奖励次数
require 'config_loader.php'; require 'config_loader.php';

View File

@ -35,6 +35,19 @@ class RoleController{
return $act; return $act;
} }
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) protected function getExplode($string)
{ {
@ -87,9 +100,9 @@ class RoleController{
':accountid' => $account_id ':accountid' => $account_id
)); ));
if (!$row) { if (!$row) {
$ret = $conn->execScript('INSERT INTO user(accountid, user_name, avatar_url, game_times, win_times, kills, harm, add_HP, alive_time, coin_num, integral, kill_his, alive_time_his, harm_his, add_HP_his, act_share_time, act_share_status, create_time, modify_time, first_fight, collect_status, keys_num) ' . $ret = $conn->execScript('INSERT INTO user(accountid, user_name, avatar_url, game_times, win_times, kills, harm, add_HP, alive_time, coin_num, integral, kill_his, alive_time_his, harm_his, add_HP_his, act_share_time, act_share_status, create_time, modify_time, first_fight, collect_status, keys_num, battle_re_times) ' .
' VALUES(:accountid, :user_name, :avatar_url, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, create_time, :modify_time, 0, 0, 0) ' . ' VALUES(:accountid, :user_name, :avatar_url, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, create_time, :modify_time, 0, 0, 0, 0) ' .
' ON DUPLICATE KEY UPDATE accountid=:accountid, user_name=:user_name, avatar_url=:avatar_url, game_times=0, win_times=0, kills=0, harm=0, add_HP=0, alive_time=0, coin_num=0, integral=0, kill_his=0, alive_time_his=0, harm_his=0, add_HP_his=0, act_share_time=0, act_share_status=0, modify_time=:modify_time, first_fight=0, collect_status=0, keys_num=0;', ' ON DUPLICATE KEY UPDATE accountid=:accountid, user_name=:user_name, avatar_url=:avatar_url, game_times=0, win_times=0, kills=0, harm=0, add_HP=0, alive_time=0, coin_num=0, integral=0, kill_his=0, alive_time_his=0, harm_his=0, add_HP_his=0, act_share_time=0, act_share_status=0, modify_time=:modify_time, first_fight=0, collect_status=0, keys_num=0, battle_re_times=0;',
array( array(
':accountid' => $account_id, ':accountid' => $account_id,
':user_name' => $user_name, ':user_name' => $user_name,
@ -287,12 +300,38 @@ class RoleController{
//额外奖励 //额外奖励
$times = $this->getRewardTimes($coin_num); $times = $this->getRewardTimes($coin_num);
$extra_coin = $coin_num * ($times - 1); $extra_coin = $coin_num * ($times - 1);
$skin_id = 13002; $d = $this->getDrop(24004);
$skin_num = 6; if (!$d) {
phpcommon\sendError(ERR_USER_BASE + 3, '没有这个奖励');
return;
}
$skin_id_array = $this->getExplode($d['item_id']);
$weight_sum = 0;
$keys = 0;
$skin_num_array = $this->getExplode($d['num']);
$weight_array = $this->getExplode($d['weight']);
for ($i = 0; $i < count($weight_array); $i++) {
$weight_sum += $weight_array[$i][0];
}
srand($room_uuid); srand($room_uuid);
$randnum = Rand(0,100); $random = Rand(0, $weight_sum);
error_log($randnum); $weight = 0;
for ($i = 0; $i < count($weight_array); $i++) {
$weight += $weight_array[$i][0];
if ($weight > $random) {
$keys = $i;
break;
}
}
$extra_drop = "";
$skin_id = $skin_id_array[$keys][0];
$skin_num = $skin_num_array[$keys][0];
$p_battle_reward = $this->getParameter(MAX_BATTLE_REWARD);
if ($row['battle_re_times'] >= $p_battle_reward['param_value']) {
$extra_drop = '10001:' . $extra_coin;
} else {
$extra_drop = '10001:' . $extra_coin . '|10002:1' . '|' . $skin_id . ':' . $skin_num; $extra_drop = '10001:' . $extra_coin . '|10002:1' . '|' . $skin_id . ':' . $skin_num;
}
echo json_encode(array( echo json_encode(array(
'errcode' => 0, 'errcode' => 0,
'errmsg' => '', 'errmsg' => '',
@ -435,21 +474,55 @@ class RoleController{
$coin_num = $row['coin']; $coin_num = $row['coin'];
$times = $this->getRewardTimes($coin_num); $times = $this->getRewardTimes($coin_num);
$coin_num = $row['coin'] * ($times - 1); $coin_num = $row['coin'] * ($times - 1);
$d = $this->getDrop(24004);
if (!$d) {
phpcommon\sendError(ERR_USER_BASE + 3, '没有这个奖励');
return;
}
$skin_id_array = $this->getExplode($d['item_id']);
$weight_sum = 0;
$keys = 0;
$skin_num_array = $this->getExplode($d['num']);
$weight_array = $this->getExplode($d['weight']);
for ($i = 0; $i < count($weight_array); $i++) {
$weight_sum += $weight_array[$i][0];
}
srand($room_uuid);
$random = Rand(0, $weight_sum);
$weight = 0;
for ($i = 0; $i < count($weight_array); $i++) {
$weight += $weight_array[$i][0];
if ($weight > $random) {
$keys = $i;
break;
}
}
$skin_id = $skin_id_array[$keys][0];
$skin_num = $skin_num_array[$keys][0];
$p_battle_reward = $this->getParameter(MAX_BATTLE_REWARD);
$addreward = new classes\AddReward();
$addreward->addReward(10001, $coin_num, $account_id);
$rowUser = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;', $rowUser = $conn->execQueryOne('SELECT * FROM user WHERE accountid=:accountid;',
array( array(
':accountid' => $account_id ':accountid' => $account_id
)); ));
$ret = $conn->execScript('UPDATE user SET coin_num=:coin_num, modify_time=:modify_time WHERE accountid=:accountid;', if ($rowUser['battle_re_times'] < $p_battle_reward['param_value']) {
$keys_num = $rowUser['keys_num'] + 1;
$battle_re_times = $rowUser['battle_re_times'] + 1;
$addreward->addReward($skin_id, $skin_num, $account_id);
$ret = $conn->execScript('UPDATE user SET battle_re_times=:battle_re_times, keys_num=:keys_num, modify_time=:modify_time ' .
' WHERE accountid=:accountid;',
array( array(
':accountid' => $account_id, ':keys_num' => $keys_num,
':coin_num' => $coin_num + $rowUser['coin_num'], ':battle_re_times' => $battle_re_times,
':modify_time' => time() ':modify_time' => time(),
':accountid' => $account_id
)); ));
if (!$ret) { if (!$ret) {
die(); die();
return; return;
} }
}
echo json_encode(array( echo json_encode(array(
'errcode' => 0, 'errcode' => 0,
'errmsg' => '', 'errmsg' => '',
@ -487,10 +560,11 @@ class RoleController{
phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家');
return; return;
} }
$ret = $conn->execScript('UPDATE user SET collect_status=1, modify_time=:modify_time, ' . $ret = $conn->execScript('UPDATE user SET collect_status=1, modify_time=:modify_time ' .
' WHERE accountid=:accountid;', ' WHERE accountid=:accountid;',
array( array(
':modify_time' => time() ':modify_time' => time(),
':accountid' => $account_id
)); ));
if (!$ret) { if (!$ret) {
die(); die();
@ -526,18 +600,6 @@ class RoleController{
)); ));
} }
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;
}
} }
?> ?>

View File

@ -192,7 +192,6 @@ class SupplyBoxController{
} }
if ($free_open == 1) { if ($free_open == 1) {
$p_times = $this->getParameter(FREE_DRESS_MAX_TIME); $p_times = $this->getParameter(FREE_DRESS_MAX_TIME);
$p_times['param_value'];
if ($row['free_times'] >= $p_times['param_value']) { if ($row['free_times'] >= $p_times['param_value']) {
phpcommon\sendError(ERR_USER_BASE + 3, '免费次数不足'); phpcommon\sendError(ERR_USER_BASE + 3, '免费次数不足');
return; return;