添加算力玩法

This commit is contained in:
hujiabin 2023-08-22 16:15:14 +08:00
parent fc6e1d1af8
commit 7ca69ada14
5 changed files with 93 additions and 12 deletions

View File

@ -40,7 +40,7 @@ class ComputingPower(object):
'params': [
_common.ReqHead(),
['item_id', 0, '晶体item'],
['item_num', 0, '晶体数量'],
# ['item_num', 0, '晶体数量'],
],
'response': [
_common.RspHead(),

View File

@ -11,6 +11,7 @@ require_once('models/CrystalRecord.php');
use models\ComputingPower;
use models\CrystalRecord;
use mt\HashRate;
use phpcommon\SqlHelper;
class ComputingPowerController extends BaseAuthedController
{
@ -99,22 +100,77 @@ class ComputingPowerController extends BaseAuthedController
public function exchangeCrystal(){
$itemId = getReqVal('item_id', 0);
$itemNum = getReqVal('item_num', 0);
// $itemNum = getReqVal('item_num', 0);
$itemMeta = \mt\Item::get($itemId);
if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE || !$itemNum){
if (!$itemMeta || $itemMeta['type'] != \mt\Item::CRYSTAL_TYPE ){
$this->_rspErr(1, 'param error');
return ;
}
$hashRateMeta = HashRate::findHash($itemId);
if (!$hashRateMeta){
$this->_rspErr(1, 'param error');
return ;
}
$param = explode('|',$hashRateMeta['parameter']);
$crystalNum = 0;
switch ($itemId){
case ComputingPower::CRYSTAL1 : {
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
$crystalNum = max(0,floor($killsNum/$param[0]) +
floor($starNum/$param[1]) );
}
break;
case ComputingPower::CRYSTAL2 : {
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$crystalNum = max(0,floor($consumeCost/$param[0]));
}
break;
case ComputingPower::CRYSTAL3 : {
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$crystalNum = max(0,floor($consumeCost/$param[0]));
}
}
if ($crystalNum < 1){
$this->_rspErr(1, 'There are no available crystals');
return ;
}
$items = array(
array(
'item_id' => $itemId,
'item_num' => $itemNum,
'item_num' => $crystalNum,
)
);
$propertyChgService = new services\PropertyChgService();
$awardService = new services\AwardService();
$this->_addItems($items,$awardService,$propertyChgService);
CrystalRecord::addCrystalRecord($itemId,$itemNum);
CrystalRecord::addCrystalRecord($itemId,$crystalNum);
switch ($itemId) {
case ComputingPower::CRYSTAL1 : {
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
$newKillsNum = floor($killsNum/$param[0]) * $param[0];
myself()->_decV(TN_TOTAL_KILLS_NUM,0,$newKillsNum);
$newStarNum = floor($starNum/$param[1]) * $param[1];
myself()->_decV(TN_TOTAL_STAR_NUM,0,$newStarNum);
}
break;
case ComputingPower::CRYSTAL2 : {
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$newConsumeCost = floor($consumeCost/$param[0]) * $param[0];
myself()->_decV(TN_TOTAL_DIAMOND_CONSUME,0,$newConsumeCost);
}
break;
case ComputingPower::CRYSTAL3 : {
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$newConsumeCost = floor($consumeCost/$param[0]) * $param[0];
myself()->_decV(TN_TOTAL_CEG_CONSUME,0,$newConsumeCost);
}
break;
}
$this->_rspData(array(
'award' => $awardService->toDto(),
'property_chg' => $propertyChgService->toDto(),

View File

@ -199,7 +199,11 @@ END
}
break;
case 3 : {
myself()->_incV(TN_TOTAL_RANK_NUM,0,$num);
myself()->_incV(TN_TOTAL_DIAMOND_CONSUME,0,$num);
}
break;
case 4 : {
myself()->_incV(TN_TOTAL_CEG_CONSUME,0,$num);
}
}
}

View File

@ -23,35 +23,54 @@ class HashRateService extends BaseService
'state' => self::NONE_STATE,
);
$hashRateMeta = HashRate::findHash($crystalMeta['id']);
$ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']);
$crystalDto['claimed'] = intval($ownedNum);
switch ($crystalMeta['sub_type']){
case 1 : {
$killsNum = myself()->_getV(TN_TOTAL_KILLS_NUM,0);
$starNum = myself()->_getV(TN_TOTAL_STAR_NUM,0);
$rankNum = myself()->_getV(TN_TOTAL_RANK_NUM,0);
// $rankNum = myself()->_getV(TN_TOTAL_RANK_NUM,0);
$crystalDto['total'] = array(
'param1' => intval($killsNum),
'param2' => intval($starNum),
'param3' => intval($rankNum),
// 'param3' => intval($rankNum),
);
$param = explode('|',$hashRateMeta['parameter']);
$totalNum = max(0,floor($killsNum/$param[0]) +
floor($starNum/$param[1]) + $rankNum);
$ownedNum = CrystalRecord::getCrystalNum($crystalMeta['id']);
$crystalDto['pending'] = intval(max(0,$totalNum - $ownedNum));
$crystalDto['claimed'] = intval($ownedNum);
floor($starNum/$param[1]) );
// $crystalDto['pending'] = intval(max(0,$totalNum - $ownedNum));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 2 : {
// 游戏内消费总价值
$consumeCost = myself()->_getV(TN_TOTAL_DIAMOND_CONSUME,0);
$crystalDto['total'] = array(
'param1' => intval($consumeCost),
);
$totalNum = max(0,floor($consumeCost/$hashRateMeta['parameter']));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 3 : {
// Market交易总价值
$consumeCost = myself()->_getV(TN_TOTAL_CEG_CONSUME,0);
$crystalDto['total'] = array(
'param1' => intval($consumeCost),
);
$totalNum = max(0,floor($consumeCost/$hashRateMeta['parameter']));
$crystalDto['pending'] = intval($totalNum);
$crystalDto['state'] = $crystalDto['pending'] > 0 ? self::RECEIVED_STATE : self::NONE_STATE;
}
break;
case 4 : {
// 质压总价值
$crystalDto['total'] = array(
'param1' => 0,
);
}
break;
}

View File

@ -220,6 +220,7 @@ class TameBattleDataService extends BaseService {
//击杀
if (getXVal($this->battleInfo,'pvp_kill', 0) > 0){
myself()->_incV(TN_TOTAL_KILLS_NUM, 0, getXVal($this->battleInfo,'pvp_kill', 0));
RankBattle::upsert($account,RankBattle::KILL_TIMES,getXVal($this->battleInfo,'pvp_kill', 0));
}
}
@ -691,6 +692,7 @@ class TameBattleDataService extends BaseService {
$propertyChgService = new services\PropertyChgService();
$awardService = new services\AwardService();
myself()->_addItems($items, $awardService,$propertyChgService);
myself()->_incV(TN_TOTAL_STAR_NUM, 0, $finalNum);
}
}