英雄皮肤

This commit is contained in:
hujiabin 2023-03-07 11:34:53 +08:00
parent b8e082a83f
commit 59ec4c358a
6 changed files with 391 additions and 299 deletions

View File

@ -26,6 +26,7 @@ class Hero(object):
'url': 'webapp/index.php?c=Hero&a=skinList',
'params': [
_common.ReqHead(),
['hero_id', 0, '英雄itemId'],
],
'response': [
_common.RspHead(),

View File

@ -245,10 +245,9 @@ class Hero(object):
['lock_type', 0, '0:无锁 1:升级 2:升阶 3:派遣中'],
['unlock_lefttime', 0, '解锁剩余时间(单位秒)'],
['unlock_time', 0, '使用解锁utc时间(升级或者升阶触发),锁定期间不可战斗和做其他操作,配合lock_type使用'],
['current_pvp_get_ceg', 0, '当前pvp获取的ceg数量'],
['current_pve_get_ceg', 0, '当前pve获取的ceg数量'],
['last_pvp_get_ceg_time', 0, '最后一次获取pvp获取ceg时间'],
['last_pve_get_ceg_time', 0, '最后一次获取pve获取ceg时间'],
['current_get_gold', 0, '当前获取的gold数量'],
['last_get_gold_time', 0, '最后一次获取gold时间'],
['gold_uplimit', 0, '每天gold上限'],
['unlock_trade_time', 0, '出售解锁utc时间(升级或者升阶完成后触发),只锁交易其他的操作仍可进行和lock_type无关是独立的锁!!!'],
['advanced_count', 0, '进阶次数'],
['offer_reward_state', 0, '是否悬赏中'],
@ -289,8 +288,8 @@ class HeroSkin(object):
def __init__(self):
self.fields = [
['skin_id', 0, '英雄皮肤id'],
['skin_state', 0, '英雄皮肤状态 0=已经购1 = 试用状态'],
['try_expire_at', 0, '试用到期时间(utc时间)'],
['is_have', 0, '是否拥有 1拥有 0未拥有'],
['use_state', 0, '选中状态 1选中 0未选中'],
]
class Item(object):

View File

@ -184,6 +184,7 @@ CREATE TABLE `t_hero_skin` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`account_id` varchar(60) CHARACTER SET utf8 NOT NULL COMMENT 'account_id',
`skin_id` int(11) NOT NULL DEFAULT '0' COMMENT '英雄皮肤id',
`hero_id` int(11) NOT NULL DEFAULT '0' COMMENT '英雄id',
`skin_state` int(11) NOT NULL DEFAULT '0' COMMENT '英雄皮肤状态 0=已经购1 = 试用状态',
`get_from` int(11) NOT NULL DEFAULT '0' COMMENT '获得方式 0 = 系统赠送 1 = 金币购买',
`consume_num` int(11) NOT NULL DEFAULT '0' COMMENT '消耗货币的具体数量',

View File

@ -75,6 +75,299 @@ class HeroController extends BaseAuthedController {
));
}
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;
}
if (!$heroSkinDb) {
$this->_rspErr(2, "You don't have the skin yet");
return;
}
HeroSkin::takeonSkin( $skinId,$heroDb['hero_id']);
$this->_rspOk();
}
public function upgradeLevelPreview(){
$heroUniId = getReqVal('hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
if (!$heroDb) {
$this->_rspErr(1, 'hero does not exist');
return;
}
$heroMeta = mt\Hero::get($heroDb['hero_id']);
if (!$heroMeta) {
$this->_rspErr(100, 'server internal error');
return;
}
$nextLevelMeta = mt\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, "It's already the highest level");
return;
}
$meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1);
$costItems = array(
array(
'item_id' => V_ITEM_GOLD,
'item_num' => $meta['gold']
),
array(
'item_id' => V_ITEM_DIAMOND,
'item_num' => $meta['diamond']
)
);
$newHeroDb = $heroDb;
$newHeroDb['hero_lv'] += 1;
$attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,0);
$newHeroDb['rand_attr'] = json_encode($attrs);
$heroDto = Hero::toDto($heroDb);
$newHeroDto = Hero::toDto($newHeroDb);
$this->_rspData(array(
'old_hero' => $heroDto,
'new_hero' => $newHeroDto,
'cost' => $costItems
));
}
public function upgradeLv()
{
$heroUniId = getReqVal('hero_uniid', 0);
$costHeroUniId = getReqVal('cost_hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
$oldHero = Hero::toDto($heroDb);
$costHeroDb = Hero::findEx($costHeroUniId);
if (!$heroDb) {
$this->_rspErr(100, 'param error or null');
return;
}
if ($heroDb['hero_lv'] == Hero::LV_1 ||
$heroDb['hero_lv'] == Hero::LV_2 ||
$heroDb['hero_lv'] == Hero::LV_3 ){
if (! $costHeroDb){
$this->_rspErr(100, 'material param error or null');
return;
}
if ($costHeroDb['token_id']){
$this->_rspErr(100, 'NFT cannot be a material');
return;
}
if ($costHeroDb['state'] == Hero::FREE_STATE){
$this->_rspErr(100, 'Unable to use free hero');
return;
}
switch ($heroDb['hero_lv']){
case Hero::LV_1:{
if ($heroDb['hero_lv'] < $costHeroDb['hero_lv']){
$this->_rspErr(100, 'Grade discrepancy');
return;
}
};break;
case Hero::LV_2:{
if ($heroDb['hero_lv'] < $costHeroDb['hero_lv'] && $costHeroDb['hero_lv'] <= Hero::LV_1){
$this->_rspErr(100, 'Grade discrepancy');
return;
}
};break;
case Hero::LV_3:{
if ($heroDb['hero_lv'] < $costHeroDb['hero_lv'] && $costHeroDb['hero_lv'] <= Hero::LV_2){
$this->_rspErr(100, 'Grade discrepancy');
return;
}
}
}
}
$heroMeta = mt\Hero::get($heroDb['hero_id']);
if (!$heroMeta) {
$this->_rspErr(100, 'server internal error');
return;
}
$nextLevelMeta = mt\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, "It's already the highest level");
return;
}
//升级所需消耗
$meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1);
$costItems = array(
array(
'item_id' => V_ITEM_GOLD,
'item_num' => $meta['gold']
),
array(
'item_id' => V_ITEM_DIAMOND,
'item_num' => $meta['diamond']
)
);
$lackItem = null;
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
return;
}
$this->_decItems($costItems);
$attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,1);
Hero::update($heroUniId, array(
'hero_lv' => $heroDb['hero_lv'] + 1,
'rand_attr' => json_encode($attrs),
'state' => Hero::GETED_STATE,
));
if ($costHeroDb){
Hero::update($costHeroUniId, array(
'account_id' => myself()->_getAccountId() . '!!!',
));
}
if ($heroDb['hero_lv'] + 1 > myself()->_getV(TN_HERO_MAX_LEVEL, 0)) {
myself()->_setV(TN_HERO_MAX_LEVEL, 0, $heroDb['hero_lv'] + 1);
}
$newHero = Hero::toDto(Hero::find($heroUniId));
$propertyChgService = new services\PropertyChgService();
$propertyChgService->addHeroChg();
$propertyChgService->addUserChg();
$this->_rspData(array(
'property_chg' => $propertyChgService->toDto(),
'old_hero' => $oldHero,
'new_hero' => $newHero,
));
}
public function presetHero(){
$heroId = getReqVal('hero_uid',0);
$heroDb = Hero::find($heroId);
if (! $heroDb){
$this->_rspErr(1, "You don't have the hero yet");
return;
}
$row = SqlHelper::ormSelectOne(
$this->_getSelfMysql(),
't_hero_preset',
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
)
);
if ($row){
$data = array(
'skill_id' => $row['skill_id'],
'weapon_uid1' => $row['weapon_uid1'],
'weapon_uid2' => $row['weapon_uid2'],
'chip_page' => $row['chip_page'],
);
}else{
$data = array(
'skill_id' => \mt\Skill::DEFAULT_SKILL,
'weapon_uid1' => 0,
'weapon_uid2' => 0,
'chip_page' => 1,
);
}
$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 ;
}
SqlHelper::upsert
($this->_getSelfMysql(),
't_hero_preset',
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
),
array(
'skill_id' => $skillId,
'weapon_uid1' => $weaponUid1,
'weapon_uid2' => $weaponUid2,
'chip_page' => $chipPageId,
'modifytime' => $this->_getNowTime(),
),
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
'skill_id' => $skillId,
'weapon_uid1' => $weaponUid1,
'weapon_uid2' => $weaponUid2,
'chip_page' => $chipPageId,
'createtime' => $this->_getNowTime(),
'modifytime' => $this->_getNowTime(),
)
);
$this->_rspOk();
}
public function upgradeSkillCommon(){
$heroUniId = getReqVal('hero_uniid', 0);
$skillIndex = getReqVal('skill_index', 0);
@ -157,42 +450,6 @@ class HeroController extends BaseAuthedController {
));
}
public function skinList()
{
$skinList = array();
SqlHelper::ormSelect(
$this->_getSelfMysql(),
't_hero_skin',
array(
'account_id' => $this->_getAccountId()
),
function ($row) use(&$skinList) {
array_push($skinList, HeroSkin::toDto($row));
}
);
$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;
}
if (!$heroSkinDb) {
$this->_rspErr(2, "You don't have the skin yet");
return;
}
Hero::takeonSkin($heroUniId, $skinId);
$this->_rspOk();
}
public function getUpgradeLevelList()
{
$infos = array();
@ -625,51 +882,6 @@ class HeroController extends BaseAuthedController {
));
}
public function upgradeLevelPreview(){
$heroUniId = getReqVal('hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
if (!$heroDb) {
$this->_rspErr(1, 'hero does not exist');
return;
}
$heroMeta = mt\Hero::get($heroDb['hero_id']);
if (!$heroMeta) {
$this->_rspErr(100, 'server internal error');
return;
}
$nextLevelMeta = mt\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, "It's already the highest level");
return;
}
$meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1);
$costItems = array(
array(
'item_id' => V_ITEM_GOLD,
'item_num' => $meta['gold']
),
array(
'item_id' => V_ITEM_DIAMOND,
'item_num' => $meta['diamond']
)
);
$newHeroDb = $heroDb;
$newHeroDb['hero_lv'] += 1;
$attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,0);
$newHeroDb['rand_attr'] = json_encode($attrs);
$heroDto = Hero::toDto($heroDb);
$newHeroDto = Hero::toDto($newHeroDb);
$this->_rspData(array(
'old_hero' => $heroDto,
'new_hero' => $newHeroDto,
'cost' => $costItems
));
}
public function upgradeQualityOld()
{
$costHeroUniId = getReqVal('cost_hero_uniid', 0);
@ -973,189 +1185,4 @@ class HeroController extends BaseAuthedController {
'old_hero'=>Hero::toDto($oldHeroDb)
));
}
public function upgradeLv()
{
$heroUniId = getReqVal('hero_uniid', 0);
$costHeroUniId = getReqVal('cost_hero_uniid', 0);
$heroDb = Hero::find($heroUniId);
$oldHero = Hero::toDto($heroDb);
$costHeroDb = Hero::findEx($costHeroUniId);
if (!$heroDb) {
$this->_rspErr(100, 'param error or null');
return;
}
if ($heroDb['hero_lv'] == Hero::LV_1 ||
$heroDb['hero_lv'] == Hero::LV_2 ||
$heroDb['hero_lv'] == Hero::LV_3 ){
if (! $costHeroDb){
$this->_rspErr(100, 'material param error or null');
return;
}
if ($costHeroDb['token_id']){
$this->_rspErr(100, 'NFT cannot be a material');
return;
}
if ($costHeroDb['state'] == Hero::FREE_STATE){
$this->_rspErr(100, 'Unable to use free hero');
return;
}
if ($heroDb['hero_lv'] != $costHeroDb['hero_lv']){
$this->_rspErr(100, 'You need the same level to do it');
return;
}
}
$heroMeta = mt\Hero::get($heroDb['hero_id']);
if (!$heroMeta) {
$this->_rspErr(100, 'server internal error');
return;
}
$nextLevelMeta = mt\HeroLevelAttr::getByLevel($heroDb['hero_lv'] + 1);
if (!$nextLevelMeta) {
$this->_rspErr(5, "It's already the highest level");
return;
}
//升级所需消耗
$meta = mt\HeroLevel::get($heroDb['hero_lv'] + 1);
$costItems = array(
array(
'item_id' => V_ITEM_GOLD,
'item_num' => $meta['gold']
),
array(
'item_id' => V_ITEM_DIAMOND,
'item_num' => $meta['diamond']
)
);
$lackItem = null;
if (!$this->_hasEnoughItems($costItems, $lackItem)) {
$this->_rspErr(3, $this->_getLackItemErrMsg($lackItem));
return;
}
$this->_decItems($costItems);
$attrs = mt\HeroLevelAttr::addRandAttrNew($heroDb,1);
Hero::update($heroUniId, array(
'hero_lv' => $heroDb['hero_lv'] + 1,
'rand_attr' => json_encode($attrs),
'state' => Hero::GETED_STATE,
));
if ($costHeroDb){
Hero::update($costHeroUniId, array(
'account_id' => myself()->_getAccountId() . '!!!',
));
}
if ($heroDb['hero_lv'] + 1 > myself()->_getV(TN_HERO_MAX_LEVEL, 0)) {
myself()->_setV(TN_HERO_MAX_LEVEL, 0, $heroDb['hero_lv'] + 1);
}
$newHero = Hero::toDto(Hero::find($heroUniId));
$propertyChgService = new services\PropertyChgService();
$propertyChgService->addHeroChg();
$propertyChgService->addUserChg();
$this->_rspData(array(
'property_chg' => $propertyChgService->toDto(),
'old_hero' => $oldHero,
'new_hero' => $newHero,
));
}
public function presetHero(){
$heroId = getReqVal('hero_uid',0);
$heroDb = Hero::find($heroId);
if (! $heroDb){
$this->_rspErr(1, "You don't have the hero yet");
return;
}
$row = SqlHelper::ormSelectOne(
$this->_getSelfMysql(),
't_hero_preset',
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
)
);
if ($row){
$data = array(
'skill_id' => $row['skill_id'],
'weapon_uid1' => $row['weapon_uid1'],
'weapon_uid2' => $row['weapon_uid2'],
'chip_page' => $row['chip_page'],
);
}else{
$data = array(
'skill_id' => \mt\Skill::DEFAULT_SKILL,
'weapon_uid1' => 0,
'weapon_uid2' => 0,
'chip_page' => 1,
);
}
$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 ;
}
SqlHelper::upsert
($this->_getSelfMysql(),
't_hero_preset',
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
),
array(
'skill_id' => $skillId,
'weapon_uid1' => $weaponUid1,
'weapon_uid2' => $weaponUid2,
'chip_page' => $chipPageId,
'modifytime' => $this->_getNowTime(),
),
array(
'account_id' => $this->_getAccountId(),
'hero_uid' => $heroId,
'skill_id' => $skillId,
'weapon_uid1' => $weaponUid1,
'weapon_uid2' => $weaponUid2,
'chip_page' => $chipPageId,
'createtime' => $this->_getNowTime(),
'modifytime' => $this->_getNowTime(),
)
);
$this->_rspOk();
}
}

View File

@ -5,6 +5,7 @@ namespace models;
require_once('mt/Hero.php');
require_once('mt/HeroLevelAttr.php');
require_once('mt/HeroQuality.php');
require_once('mt/HeroLevel.php');
require_once('mt/AttrHelper.php');
require_once('mt/Item.php');
require_once('mt/SkillCommon.php');
@ -231,24 +232,24 @@ class Hero extends BaseModel {
$unlockTime = $row['unlock_time'];
}
$qualityMeta = mt\HeroQuality::getByQuality($row['quality']);
$levelMeta = mt\HeroLevel::getByLevel($row['hero_lv']);
$todayGetGold = $row['today_get_gold'];
$lastGetGoldTime = $row['last_get_gold_time'];
if (myself()->_getDaySeconds($lastGetGoldTime) <
myself()->_getNowDaySeconds()) {
$todayGetGold = 0;
}
$todayPveGetCeg = $row['today_pve_get_ceg'];
$lastPveGetCegTime = $row['last_pve_get_ceg_time'];
if (myself()->_getDaySeconds($lastPveGetCegTime) <
myself()->_getNowDaySeconds()) {
$todayPveGetCeg = 0;
}
$todayMissionGetCeg = $row['today_mission_get_ceg'];
$lastMissionGetCegTime = $row['last_mission_get_ceg_time'];
if (myself()->_getDaySeconds($lastMissionGetCegTime) < myself()->_getNowDaySeconds()) {
$todayMissionGetCeg = 0;
}
// $todayPveGetCeg = $row['today_pve_get_ceg'];
// $lastPveGetCegTime = $row['last_pve_get_ceg_time'];
// if (myself()->_getDaySeconds($lastPveGetCegTime) <
// myself()->_getNowDaySeconds()) {
// $todayPveGetCeg = 0;
// }
// $todayMissionGetCeg = $row['today_mission_get_ceg'];
// $lastMissionGetCegTime = $row['last_mission_get_ceg_time'];
// if (myself()->_getDaySeconds($lastMissionGetCegTime) < myself()->_getNowDaySeconds()) {
// $todayMissionGetCeg = 0;
// }
$baseAttr=[];
$attrPro=[];
$heroMeta = mt\Hero::get($row['hero_id']);
@ -285,12 +286,13 @@ class Hero extends BaseModel {
'unlock_time' => $unlockTime,
'unlock_lefttime' => max(0,
$unlockTime - myself()->_getNowTime()),
'current_pvp_get_ceg' => $todayGetGold / 100,
'last_pvp_get_ceg_time' => $lastGetGoldTime,
'current_pve_get_ceg' => $todayPveGetCeg / 100,
'last_pve_get_ceg_time' => $lastPveGetCegTime,
'current_mission_get_ceg' => $todayMissionGetCeg / 100,
'last_mission_get_ceg_time' => $lastMissionGetCegTime,
'current_get_gold' => $todayGetGold / 100,
'last_get_gold_time' => $lastGetGoldTime,
'gold_uplimit' => $levelMeta['gold_limit'],
// 'current_pve_get_ceg' => $todayPveGetCeg / 100,
// 'last_pve_get_ceg_time' => $lastPveGetCegTime,
// 'current_mission_get_ceg' => $todayMissionGetCeg / 100,
// 'last_mission_get_ceg_time' => $lastMissionGetCegTime,
'unlock_trade_time' => $row['unlock_trade_time'],
'advanced_count' => $row['advanced_count'],
// 'lucky' => $heroLucky,
@ -342,6 +344,14 @@ class Hero extends BaseModel {
public static function internalAddHero($conn, $heroMeta, $accountId, $tokenId,$state)
{
$skinItemMeta = \mt\Item::getMetaListByType(\mt\Item::HERO_SKIN_TYPE);
if ($skinItemMeta){
foreach ($skinItemMeta as $value){
if ($value['playerid'] == $heroMeta['id'] && $value['isdefaultskin'] ==1){
HeroSkin::addSkin($value);
}
}
}
$realHeroMeta = mt\Hero::get($heroMeta['id']);
$randAttr = array();
$fieldsKv = array(

View File

@ -25,13 +25,69 @@ class HeroSkin extends BaseModel {
return $row;
}
public static function toDto($row)
public static function findBx($heroId)
{
return array(
'skin_id' => $row['skin_id'],
'skin_state' => $row['skin_state'],
'try_expire_at' => $row['try_expire_at'],
$row = SqlHelper::ormSelectOne(
myself()->_getSelfMysql(),
't_hero_skin',
array(
'account_id' => myself()->_getAccountId(),
'hero_id' => $heroId
)
);
return $row;
}
public static function takeonSkin($skinId,$heroId){
$row = self::findBx($heroId);
SqlHelper::update(
myself()->_getSelfMysql(),
't_hero_skin',
array(
'account_id' => myself()->_getAccountId(),
'skin_id' => $row['skin_id']
),
array(
'hero_id'=>0
)
);
SqlHelper::update(
myself()->_getSelfMysql(),
't_hero_skin',
array(
'account_id' => myself()->_getAccountId(),
'skin_id' => $skinId
),
array(
'hero_id'=>$heroId
)
);
}
public static function getSkinList($cb){
SqlHelper::ormSelect(
myself()->_getSelfMysql(),
't_hero_skin',
array(
'account_id' => myself()->_getAccountId()
),
function ($row) use($cb) {
$cb($row);
}
);
}
public static function toDto($meta)
{
$row = self::find($meta['id']);
$array = array(
'skin_id'=>$meta['id'],
'is_have' => $row?1:0,
'use_state' => $row['hero_id']?1:0,
);
return $array;
}
public static function addSkin($itemMeta)
@ -43,10 +99,7 @@ class HeroSkin extends BaseModel {
'account_id' => myself()->_getAccountId(),
'skin_id' => $itemMeta['id']
),
array(
'skin_state' => 3,
'modifytime' => myself()->_getNowTime()
),
array(),
array(
'account_id' => myself()->_getAccountId(),
'skin_id' => $itemMeta['id'],
@ -54,6 +107,7 @@ class HeroSkin extends BaseModel {
'get_from' => 0,
'consume_num' => 0,
'try_expire_at' => 0,
'hero_id' => $itemMeta['isdefaultskin']?$itemMeta['playerid']:0,
'createtime' => myself()->_getNowTime(),
'modifytime' => myself()->_getNowTime()
)