286 lines
8.6 KiB
PHP
286 lines
8.6 KiB
PHP
<?php
|
|
|
|
require_once('mt/Hero.php');
|
|
require_once('mt/Item.php');
|
|
require_once('mt/HeroLevel.php');
|
|
require_once('mt/Skill.php');
|
|
require_once('mt/HeroQuality.php');
|
|
|
|
require_once('models/Hero.php');
|
|
require_once('models/HeroSkin.php');
|
|
require_once('models/Nft.php');
|
|
require_once('models/ChipPage.php');
|
|
require_once('models/Gun.php');
|
|
require_once('models/HeroPreset.php');
|
|
require_once('models/Bag.php');
|
|
require_once('models/Transaction.php');
|
|
require_once('models/BcOrder.php');
|
|
|
|
require_once('services/AwardService.php');
|
|
require_once('services/PropertyChgService.php');
|
|
require_once('services/LogService.php');
|
|
require_once('services/BlockChainService.php');
|
|
|
|
|
|
|
|
use phpcommon\SqlHelper;
|
|
use models\Hero;
|
|
use models\HeroSkin;
|
|
use models\ChipPage;
|
|
use models\Gun;
|
|
use models\Nft;
|
|
use models\HeroPreset;
|
|
use models\Bag;
|
|
use models\Transaction;
|
|
use models\BcOrder;
|
|
use services\LogService;
|
|
|
|
class HeroController extends BaseAuthedController {
|
|
|
|
|
|
public function heroList()
|
|
{
|
|
$heroList = array();
|
|
Hero::getHeroList(function ($row) use(&$heroList) {
|
|
// if(!in_array($row['hero_id'],array(30200,30700,31000))){
|
|
array_push($heroList, Hero::toDto($row));
|
|
// }
|
|
});
|
|
$this->_rspData(array(
|
|
'hero_list' => $heroList
|
|
));
|
|
}
|
|
|
|
public function heroDetails()
|
|
{
|
|
$unique_id = trim(getReqVal('unique_id', 0));
|
|
if ( ! $unique_id) {
|
|
$this->_rspErr(1, 'Please enter instructions');
|
|
return;
|
|
}
|
|
$heroDb = Hero::find($unique_id);
|
|
if (! $heroDb){
|
|
$this->_rspErr(1, "You don't have the hero yet");
|
|
return;
|
|
}
|
|
$heroDb['tags'] = '';
|
|
if ($heroDb['token_id']){
|
|
$nftDb = Nft::getNft($heroDb['token_id']);
|
|
$heroDb['tags'] = $nftDb['tags'];
|
|
}
|
|
$resetLv_state = $this->_getDailyV(TN_DAILY_RESET_HERO_LEVEL_STATE, $unique_id);
|
|
|
|
$hero = Hero::toDto($heroDb);
|
|
$hero['avatarInfo'] = Hero::avatarInfo($heroDb);
|
|
$hero['resetLv_state'] = $resetLv_state;
|
|
$this->_rspData(array(
|
|
'data' => $hero
|
|
));
|
|
}
|
|
|
|
public function skinList()
|
|
{
|
|
$heroId = getReqVal('hero_id',0);
|
|
if (!$heroId){
|
|
$this->_rspErr(1, "param null");
|
|
return;
|
|
}
|
|
$itemMeta = \mt\Item::get($heroId);
|
|
if (!$itemMeta || $itemMeta['type']!=\mt\Item::HERO_TYPE){
|
|
$this->_rspErr(1, "param error");
|
|
return;
|
|
}
|
|
$skinList = array();
|
|
$skinMeta = \mt\Item::getMetaListByType(\mt\Item::HERO_SKIN_TYPE);
|
|
if ($skinMeta){
|
|
foreach ($skinMeta as $value){
|
|
if ($value['playerid'] == $heroId){
|
|
array_push($skinList,HeroSkin::toDto($value));
|
|
}
|
|
}
|
|
}
|
|
$this->_rspData(array(
|
|
'skin_list' => $skinList
|
|
));
|
|
}
|
|
|
|
public function takeonSkin()
|
|
{
|
|
$heroUniId = getReqVal('hero_uniid', 0);
|
|
$skinId = getReqVal('skin_id', 0);
|
|
$heroDb = Hero::find($heroUniId);
|
|
$heroSkinDb = HeroSkin::find($skinId);
|
|
if (!$heroDb) {
|
|
$this->_rspErr(1, "You don't have the hero yet");
|
|
return;
|
|
}
|
|
$itemMeta = \mt\Item::get($skinId);
|
|
if ($itemMeta['isdefaultskin'] != 1 && !$heroSkinDb) {
|
|
$this->_rspErr(2, "You don't have the skin yet");
|
|
return;
|
|
}
|
|
HeroSkin::takeonSkin( $skinId,$heroDb['hero_id']);
|
|
$this->_rspOk();
|
|
}
|
|
|
|
/*
|
|
升阶预览
|
|
*/
|
|
public function upgradeQualityPreview(){
|
|
$itemId = getReqVal('itemId', 0);
|
|
$quality = getReqVal('quality', 0);
|
|
|
|
if ($quality == \mt\HeroQuality::MAX_QUALITY){
|
|
$this->_rspErr(5, "It's already the highest quality");
|
|
return;
|
|
}
|
|
$heroQualityMeta = \mt\HeroQuality::getByQuality($itemId,$quality+1);
|
|
if (!$heroQualityMeta){
|
|
$this->_rspErr(100, 'server internal error');
|
|
return;
|
|
}
|
|
$costItems = array(
|
|
array(
|
|
'item_id' => V_ITEM_GOLD,
|
|
'item_num' => $heroQualityMeta['gold']
|
|
),
|
|
array(
|
|
'item_id' => $heroQualityMeta['item'],
|
|
'item_num' => $heroQualityMeta['item_num']
|
|
),
|
|
);
|
|
$this->_rspData(array(
|
|
'cost' => $costItems
|
|
));
|
|
}
|
|
|
|
/*
|
|
英雄升阶
|
|
*/
|
|
public function upgradeQuality(){
|
|
$heroUniId = getReqVal('hero_uniid', 0);
|
|
$heroDb = Hero::find($heroUniId);
|
|
if (!$heroDb) {
|
|
$this->_rspErr(100, 'param error or null');
|
|
return;
|
|
}
|
|
if ($heroDb['quality'] == \mt\HeroQuality::MAX_QUALITY){
|
|
$this->_rspErr(5, "It's already the highest level");
|
|
return;
|
|
}
|
|
$heroQualityMeta = \mt\HeroQuality::getByQuality($heroDb['hero_id'],$heroDb['quality']+1);
|
|
if (!$heroQualityMeta){
|
|
$this->_rspErr(100, 'server internal error');
|
|
return;
|
|
}
|
|
$costItems = array(
|
|
array(
|
|
'item_id' => V_ITEM_GOLD,
|
|
'item_num' => $heroQualityMeta['gold']
|
|
),
|
|
array(
|
|
'item_id' => $heroQualityMeta['item'],
|
|
'item_num' => $heroQualityMeta['item_num']
|
|
),
|
|
);
|
|
$lackItem = null;
|
|
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
|
|
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
|
|
return;
|
|
}
|
|
$this->_decItems($costItems);
|
|
Hero::update($heroUniId, array(
|
|
'quality' => $heroDb['quality'] + 1,
|
|
));
|
|
$propertyChgService = new services\PropertyChgService();
|
|
$propertyChgService->addHeroChg();
|
|
$propertyChgService->addUserChg();
|
|
$propertyChgService->addBagChg();
|
|
$this->_rspData(array(
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
));
|
|
}
|
|
|
|
/*
|
|
英雄预设
|
|
*/
|
|
public function presetHero(){
|
|
$heroUid = getReqVal('hero_uid',0);
|
|
$heroDb = Hero::find($heroUid);
|
|
if (! $heroDb){
|
|
$this->_rspErr(1, "You don't have the hero yet");
|
|
return;
|
|
}
|
|
$data = HeroPreset::getHeroPreset($heroUid);
|
|
$this->_rspData(array(
|
|
'data' => $data,
|
|
));
|
|
}
|
|
|
|
/*
|
|
应用预设
|
|
*/
|
|
public function applyHero(){
|
|
$heroId = getReqVal('hero_uid',0);
|
|
$chipPageId = getReqVal('chip_page',0);
|
|
$weaponUid1 = getReqVal('weapon_uid1',0);
|
|
$weaponUid2 = getReqVal('weapon_uid2',0);
|
|
$skillId = getReqVal('skill_id',0);
|
|
$heroDb = Hero::find($heroId);
|
|
if (! $heroDb){
|
|
$this->_rspErr(1, "You don't have the hero yet");
|
|
return;
|
|
}
|
|
$chipPageDb = ChipPage::find($chipPageId);
|
|
if (! $chipPageDb){
|
|
$this->_rspErr(1, "You don't have the chip page");
|
|
return;
|
|
}
|
|
if ($weaponUid1){
|
|
$gunDb1 = Gun::find($weaponUid1);
|
|
if (!$gunDb1){
|
|
$this->_rspErr(1, "You don't have the gun1 yet");
|
|
return;
|
|
}
|
|
}
|
|
if ($weaponUid2){
|
|
$gunDb2 = Gun::find($weaponUid2);
|
|
if (!$gunDb2){
|
|
$this->_rspErr(1, "You don't have the gun2 yet");
|
|
return;
|
|
}
|
|
}
|
|
$skillMeta = \mt\Skill::get($skillId);
|
|
if (! $skillMeta){
|
|
$this->_rspErr(1,'skill_id parameter error');
|
|
return ;
|
|
}
|
|
HeroPreset::upsertPreset($heroId,$skillId,$chipPageId,$weaponUid1,$weaponUid2);
|
|
$propertyChgService = new services\PropertyChgService();
|
|
$propertyChgService->addGunChg();
|
|
$this->_rspData(array(
|
|
'property_chg' => $propertyChgService->toDto(),
|
|
));
|
|
}
|
|
|
|
/*
|
|
* 设置通用技能
|
|
*/
|
|
public function setHeroSkill(){
|
|
$skillId = getReqVal('skill_id',0);
|
|
$skillMeta = \mt\Skill::get($skillId);
|
|
if (! $skillMeta){
|
|
$this->_rspErr(1,'skill_id parameter error');
|
|
return ;
|
|
}
|
|
$userDb = $this->_getOrmUserInfo();
|
|
$hero_uid = $userDb['hero_id'];
|
|
$preset = HeroPreset::getHeroPreset($hero_uid);
|
|
HeroPreset::upsertPreset($hero_uid,$skillId,$preset['chip_page'],0,0);
|
|
$this->_rspOk();
|
|
}
|
|
|
|
|
|
|
|
}
|