This commit is contained in:
hujiabin 2024-09-27 15:58:23 +08:00
parent 63cfb918b2
commit c84b774d26
7 changed files with 99 additions and 32 deletions

View File

@ -5,6 +5,7 @@ require_once('mt/Item.php');
require_once('mt/Drop.php');
require_once('mt/Hero.php');
require_once('mt/LootConfig.php');
require_once('mt/StakingVip.php');
require_once('models/Bag.php');
require_once('models/Hero.php');
@ -538,17 +539,34 @@ class BagController extends BaseAuthedController {
}
$costItems= array();
if ($itemMeta['gold'] > 0){
//vip加成金币消耗
$goldNum = $itemMeta['gold'];
if (in_array($itemMeta['sub_type'],array(4,5,6))){
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::GOLD_CUT_DOWN);
if ($rightVal > 0){
$goldNum -= $goldNum*$rightVal;
}
}
array_push($costItems,array(
'item_id' => V_ITEM_GOLD,
'item_num' => $itemMeta['gold'] * $itemNum
'item_num' => ceil($goldNum) * $itemNum
));
}
if ($itemMeta['diamond'] > 0){
//vip加成砖石消耗
$diamondNum = $itemMeta['diamond'];
if ($itemMeta['sub_type'] == 7){
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::DIAMOND_CUT_DOWN);
if ($rightVal > 0){
$diamondNum -= $diamondNum*$rightVal;
}
}
array_push($costItems,array(
'item_id' => V_ITEM_DIAMOND,
'item_num' => $itemMeta['diamond'] * $itemNum
'item_num' => ceil($diamondNum) * $itemNum
));
}
$lackItem = null;

View File

@ -908,4 +908,9 @@ class BaseAuthedController extends BaseController {
myself()->_callServiceStatic('LogService', 'addTgLog', $eventName, $prop);
}
public function _getVipRightsVal($type)
{
$vip = User::getVipLv(myself()->_getAddress());
return myself()->_callMtStatic('StakingVip', 'getValByLv', $vip, $type);
}
}

View File

@ -7,6 +7,7 @@ require_once('mt/EconomyAttribute.php');
require_once('mt/Manufacture.php');
require_once('mt/BattleBasicAttribute.php');
require_once('mt/BattleRandAttribute.php');
require_once('mt/StakingVip.php');
require_once('models/Hero.php');
require_once('models/HeroPreset.php');
require_once('services/AwardService.php');
@ -172,11 +173,16 @@ class HeroController extends BaseAuthedController {
if ($extraItemId == $extraItem[0]){
$chanceKey = min($extraItemNum,$extraItem[1]);
}
//vip加成金币消耗
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::HERO_UP);
$goldNum = $manufactureMeta['gold'];
if ($rightVal > 0){
$goldNum -= $goldNum*$rightVal;
}
$costItems = array(
array(
'item_id' => V_ITEM_GOLD,
'item_num' => $manufactureMeta['gold']
'item_num' => ceil($goldNum)
),
array(
'item_id' => $itemId,

View File

@ -10,6 +10,7 @@ require_once('mt/Item.php');
require_once('mt/BattleBasicAttribute.php');
require_once('mt/BattleRandAttribute.php');
require_once('mt/EconomyAttribute.php');
require_once('mt/StakingVip.php');
require_once('models/HeroSkin.php');
require_once('models/Chip.php');
require_once('models/User.php');
@ -1034,6 +1035,11 @@ class Hero extends BaseModel {
$lucky += self::getHeroLucky($row);
}
}
//Vip加成账号幸运值
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::ACCOUNT_LUCKY_INC);
if ($rightVal > 0){
$lucky += $rightVal;
}
return $lucky;
}

View File

@ -71,16 +71,16 @@ class User extends BaseModel {
return $rows ? $rows : null;
}
// public static function getVipLv($address){
// $row = SqlHelper::ormSelectOne(
// myself()->_getMarketMysql(''),
// 't_staking_cec',
// array(
// 'account_address' => $address
// )
// );
// return $row ? $row['vip_lv'] : 0;
// }
public static function getVipLv($address){
$row = SqlHelper::ormSelectOne(
myself()->_getMarketMysql(''),
't_staking_cec',
array(
'account_address' => $address
)
);
return $row ? $row['vip_lv'] : 0;
}
public static function show($row)
{
@ -141,7 +141,7 @@ class User extends BaseModel {
'honor_info' => $honorInfo,
'account_lucky' => $lucky,
'chest_rate' => $rate,
// 'vip_lv' => self::getVipLv($row['address']),
'vip_lv' => self::getVipLv($row['address']),
);
}
@ -207,7 +207,7 @@ class User extends BaseModel {
'last_login_time' => $row['last_login_time'],
'account_lucky' => $lucky,
'chest_rate' => $rate,
// 'vip_lv' => self::getVipLv($row['address']),
'vip_lv' => self::getVipLv($row['address']),
);
}

View File

@ -6,12 +6,12 @@ use phpcommon;
class StakingVip {
const GAIN_GOLD = 1;
const HERO_UP = 2;
const ACCOUNT_TIMES = 3;
const GOLD_CUT_DOWN = 4;
const DIAMOND_CUT_DOWN = 5;
const ACCOUNT_LUCKY_INC = 6;
const GAIN_GOLD = 1; //类型 = 1Gold模式额外获数量具体指不是比例
const HERO_UP = 2; //类型 = 2英雄升阶金币消耗减少比例
const ACCOUNT_TIMES = 3; //类型 = 3账号总打金次数增加场次
const GOLD_CUT_DOWN = 4; //类型 = 4购买特殊道具所需金币数量减少比例此处特殊道具包括-Bounty门票、恢复道具、封装道具
const DIAMOND_CUT_DOWN = 5; //类型 = 5购买特殊道具所需钻石数量减少比例此处特殊道具包括-英雄升阶概率提升道具
const ACCOUNT_LUCKY_INC = 6; //类型 = 6账号总有效幸运值增加数值
public static function find($lv)
{
@ -23,13 +23,34 @@ class StakingVip {
return array();
}
// public static function exportRights($lv){
// $meta = self::find($lv);
// if (!$meta || empty($meta['rights'])){
// return array();
// }
// $rights = explode('|',$meta['rights']);
// }
public static function exportRights($lv){
$meta = self::find($lv);
if (!$meta || empty($meta['rights'])){
return array();
}
$rightList = array();
$rights = explode('|',$meta['rights']);
foreach ($rights as $right){
$arr = explode(':',$right);
array_push($rightList,array(
'type' => $arr[0],
'val' => $arr[1],
));
}
return $rightList;
}
public static function getValByLv($lv,$type){
$rights = self::exportRights($lv);
$rightsHash = array();
array_walk($rights, function ($row) use(&$rightsHash) {
$rightsHash[$row['type']] = $row;
});
if (isset($rightsHash[$type])){
return $rightsHash[$type]['val'];
}
return 0;
}
protected static function getMetaList()
{

View File

@ -13,6 +13,7 @@ require_once('mt/Rank.php');
require_once('mt/RankSeason.php');
require_once('mt/EconomyAttribute.php');
require_once('mt/CircuitTime.php');
require_once('mt/StakingVip.php');
require_once('services/AwardService.php');
require_once('services/PropertyChgService.php');
@ -202,9 +203,15 @@ class RoomBattleDataService extends BaseService {
'heroInfo'=> $heroDb
)));
//金币模式检验
//Vip加成打金次数
$rewardsMaxTimes = $mapModeMeta['rewards_max_time'];
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::ACCOUNT_TIMES);
if ($rightVal > 0){
$rewardsMaxTimes += $rightVal;
}
if ($this->mapMode == mt\MapMode::GOLD_MODE &&
// ($goldModeTimes >= $mapModeMeta['rewards_max_time'] )){
(!Hero::verifyValid($heroDb) || $heroTimes >= $heroTimesMax || $goldModeTimes >= $mapModeMeta['rewards_max_time'])){
(!Hero::verifyValid($heroDb) || $heroTimes >= $heroTimesMax || $goldModeTimes >= $rewardsMaxTimes)){
error_log("金币模式:出战英雄没有打金时间或每日打金场次上限");
}else{
if (!empty($rewardMeta['goldLoot'])){
@ -259,7 +266,11 @@ class RoomBattleDataService extends BaseService {
$gold = $gold * ($powerRate + 1);
$hashRateValue = round($powerRate,4);
}
//Vip加成金币获得
$rightVal = myself()->_getVipRightsVal(mt\StakingVip::GAIN_GOLD);
if ($rightVal > 0){
$gold += $rightVal;
}
}
if ($gold > 0){
array_push($reward,array(
@ -267,7 +278,7 @@ class RoomBattleDataService extends BaseService {
"item_num" => floor($gold),
"details" => array(
'baseValue' => floor($baseValue),
// 'wealthValue' => $wealthValue,
'vipValue' => isset($rightVal) ? $rightVal : 0,
'hashRateValue' => isset($hashRateValue) ? $hashRateValue : 0,
)
));