活动
This commit is contained in:
parent
ba90c85676
commit
d88a77e92f
@ -1693,4 +1693,49 @@ CREATE TABLE `t_avatar` (
|
|||||||
PRIMARY KEY (`idx`),
|
PRIMARY KEY (`idx`),
|
||||||
UNIQUE KEY `hero_idx_type` (`hero_idx`, `item_type`)
|
UNIQUE KEY `hero_idx_type` (`hero_idx`, `item_type`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `t_unlocked_map` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
|
||||||
|
`map_id` int(11) NOT NULL COMMENT '地图ID',
|
||||||
|
`unlockedtime` int(11) NOT NULL DEFAULT '0' COMMENT '激活时间',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `account_map_id` (`account_id`, `map_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `t_exchange_code` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`exchangecode` varchar(16) NOT NULL COMMENT '兑换码',
|
||||||
|
`packageno` varchar(32) NOT NULL COMMENT '礼包id',
|
||||||
|
`codetype` int(11) NOT NULL COMMENT '兑换码类型',
|
||||||
|
`memo` varchar(40) NOT NULL DEFAULT '0' COMMENT '备注',
|
||||||
|
`channellist` varchar(255) NOT NULL DEFAULT '' COMMENT '绑定渠道列表',
|
||||||
|
`batchid` int(11) NOT NULL DEFAULT '0' COMMENT '兑换码批次号',
|
||||||
|
`usetimes` int(11) NOT NULL DEFAULT '0' COMMENT '使用次数',
|
||||||
|
`last_usetime` int(11) NOT NULL DEFAULT '0' COMMENT '最后使用时间',
|
||||||
|
`last_useuser` varchar(64) NOT NULL DEFAULT '' COMMENT '最后使用者',
|
||||||
|
`begindate` int(11) NOT NULL DEFAULT '0' COMMENT '开始时间',
|
||||||
|
`enddate` int(11) NOT NULL DEFAULT '0' COMMENT '结束时间',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `exchangecode` (`exchangecode`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `t_exchange_record` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
|
||||||
|
`exchangecode` varchar(16) NOT NULL COMMENT '兑换码',
|
||||||
|
`packageno` varchar(32) NOT NULL COMMENT '礼包id',
|
||||||
|
`codetype` int(11) NOT NULL COMMENT '兑换码类型',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `exchangecode_account` (`exchangecode`,`account_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
49
sql/gamedb2006_migrate_231219_01.sql
Normal file
49
sql/gamedb2006_migrate_231219_01.sql
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
begin;
|
||||||
|
|
||||||
|
CREATE TABLE `t_unlocked_map` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
|
||||||
|
`map_id` int(11) NOT NULL COMMENT '地图ID',
|
||||||
|
`unlockedtime` int(11) NOT NULL DEFAULT '0' COMMENT '激活时间',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `account_map_id` (`account_id`, `map_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `t_exchange_code` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`exchangecode` varchar(16) NOT NULL COMMENT '兑换码',
|
||||||
|
`packageno` varchar(32) NOT NULL COMMENT '礼包id',
|
||||||
|
`codetype` int(11) NOT NULL COMMENT '兑换码类型',
|
||||||
|
`memo` varchar(40) NOT NULL DEFAULT '0' COMMENT '备注',
|
||||||
|
`channellist` varchar(255) NOT NULL DEFAULT '' COMMENT '绑定渠道列表',
|
||||||
|
`batchid` int(11) NOT NULL DEFAULT '0' COMMENT '兑换码批次号',
|
||||||
|
`usetimes` int(11) NOT NULL DEFAULT '0' COMMENT '使用次数',
|
||||||
|
`last_usetime` int(11) NOT NULL DEFAULT '0' COMMENT '最后使用时间',
|
||||||
|
`last_useuser` varchar(64) NOT NULL DEFAULT '' COMMENT '最后使用者',
|
||||||
|
`begindate` int(11) NOT NULL DEFAULT '0' COMMENT '开始时间',
|
||||||
|
`enddate` int(11) NOT NULL DEFAULT '0' COMMENT '结束时间',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `exchangecode` (`exchangecode`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE `t_exchange_record` (
|
||||||
|
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
|
||||||
|
`account_id` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id(channel + "_" + gameid + "_" + openid)',
|
||||||
|
`exchangecode` varchar(16) NOT NULL COMMENT '兑换码',
|
||||||
|
`packageno` varchar(32) NOT NULL COMMENT '礼包id',
|
||||||
|
`codetype` int(11) NOT NULL COMMENT '兑换码类型',
|
||||||
|
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
|
||||||
|
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
|
||||||
|
PRIMARY KEY (`idx`),
|
||||||
|
UNIQUE KEY `exchangecode_account` (`exchangecode`,`account_id`)
|
||||||
|
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
|
||||||
|
|
||||||
|
insert into version (version) values(2023092001);
|
||||||
|
|
||||||
|
commit;
|
102
webapp/controller/ActivityController.class.php
Normal file
102
webapp/controller/ActivityController.class.php
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once('models/ExchangeCode.php');
|
||||||
|
require_once('models/Map.php');
|
||||||
|
require_once('mt/Item.php');
|
||||||
|
require_once('services/AwardService.php');
|
||||||
|
require_once('services/PropertyChgService.php');
|
||||||
|
|
||||||
|
use models\ExchangeCode;
|
||||||
|
use models\Map;
|
||||||
|
class ActivityController extends BaseAuthedController {
|
||||||
|
|
||||||
|
public function exchangeCode(){
|
||||||
|
$code = trim(getReqVal('code', 0));
|
||||||
|
$result = ExchangeCode::find($code);
|
||||||
|
if (!$result){
|
||||||
|
myself()->_rspErr(1, 'invalid code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ($result['begindate'] > myself()->_getNowTime() || $result['enddate'] < myself()->_getNowTime()){
|
||||||
|
myself()->_rspErr(1, 'invalid code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch ($result['codetype']){
|
||||||
|
//一对一(一码只能兑换一次,并且该类道具一人也只能兑换一次)
|
||||||
|
case 1 :{
|
||||||
|
$recordDb = ExchangeCode::getRecordByCode($code);
|
||||||
|
if ($recordDb){
|
||||||
|
myself()->_rspErr(1, 'been used code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$recordDb2 = ExchangeCode::findRecordByPackage($result['packageno']);
|
||||||
|
if ($recordDb2){
|
||||||
|
myself()->_rspErr(1, 'In exchange for rewards');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//一对多(一码可被多人使用,仅一人一次,并且该类道具一人也只能兑换一次)
|
||||||
|
case 2 :{
|
||||||
|
$recordDb = ExchangeCode::findRecordByCode($code);
|
||||||
|
if ($recordDb){
|
||||||
|
myself()->_rspErr(1, 'been used code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$recordDb2 = ExchangeCode::findRecordByPackage($result['packageno']);
|
||||||
|
if ($recordDb2){
|
||||||
|
myself()->_rspErr(1, 'In exchange for rewards');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//多对一
|
||||||
|
case 3:{
|
||||||
|
$recordDb = ExchangeCode::getRecordByCode($code);
|
||||||
|
if ($recordDb){
|
||||||
|
myself()->_rspErr(1, 'been used code');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default :{
|
||||||
|
myself()->_rspErr(1, 'invalid');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$itemMt = \mt\Item::get($result['packageno']);
|
||||||
|
if (!$itemMt){
|
||||||
|
myself()->_rspErr(1, "Props that don't exist");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$items = array(
|
||||||
|
array(
|
||||||
|
'item_id' => $itemMt['id'],
|
||||||
|
'item_num' => 1
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$propertyChgService = new services\PropertyChgService();
|
||||||
|
$awardService = new services\AwardService();
|
||||||
|
$this->_addItems($items, $awardService, $propertyChgService);
|
||||||
|
$fieldKv = array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'exchangecode' => $code,
|
||||||
|
'packageno' => $itemMt['id'],
|
||||||
|
'codetype' => $result['codetype'],
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime(),
|
||||||
|
);
|
||||||
|
ExchangeCode::insetRecord($fieldKv);
|
||||||
|
ExchangeCode::updateExchangeCode($code);
|
||||||
|
$this->_rspOk();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMap(){
|
||||||
|
$mapDb = Map::findMap();
|
||||||
|
$this->_rspData(array("data"=>$mapDb));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -16,6 +16,7 @@ require_once('models/Parachute.php');
|
|||||||
require_once('models/Chip.php');
|
require_once('models/Chip.php');
|
||||||
require_once('models/Pass.php');
|
require_once('models/Pass.php');
|
||||||
require_once('models/Avatar.php');
|
require_once('models/Avatar.php');
|
||||||
|
require_once('models/Map.php');
|
||||||
require_once('mt/Parameter.php');
|
require_once('mt/Parameter.php');
|
||||||
require_once('mt/RankSeason.php');
|
require_once('mt/RankSeason.php');
|
||||||
require_once('mt/LevelUp.php');
|
require_once('mt/LevelUp.php');
|
||||||
@ -38,6 +39,7 @@ use models\UserSeasonRing;
|
|||||||
use models\Chip;
|
use models\Chip;
|
||||||
use models\Pass;
|
use models\Pass;
|
||||||
use models\Avatar;
|
use models\Avatar;
|
||||||
|
use models\Map;
|
||||||
use services\LogService;
|
use services\LogService;
|
||||||
|
|
||||||
class BaseAuthedController extends BaseController {
|
class BaseAuthedController extends BaseController {
|
||||||
@ -467,7 +469,7 @@ class BaseAuthedController extends BaseController {
|
|||||||
$headFrames = array();
|
$headFrames = array();
|
||||||
foreach ($items as $item) {
|
foreach ($items as $item) {
|
||||||
//道具产出埋点
|
//道具产出埋点
|
||||||
LogService::productItem($item);
|
// LogService::productItem($item);
|
||||||
if ($awardService){
|
if ($awardService){
|
||||||
$awardService->addItem($item['item_id'], $item['item_num']);
|
$awardService->addItem($item['item_id'], $item['item_num']);
|
||||||
}
|
}
|
||||||
@ -562,6 +564,11 @@ class BaseAuthedController extends BaseController {
|
|||||||
Avatar::addAvatar($itemMeta);
|
Avatar::addAvatar($itemMeta);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case mt\Item::UNLOCKED_MAP_TYPE:
|
||||||
|
{
|
||||||
|
Map::upsertMap($itemMeta);
|
||||||
|
}
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
$this->_addLog('additems', 'invalid_item', array(
|
$this->_addLog('additems', 'invalid_item', array(
|
||||||
|
92
webapp/models/ExchangeCode.php
Normal file
92
webapp/models/ExchangeCode.php
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace models;
|
||||||
|
|
||||||
|
use mt;
|
||||||
|
use phpcommon\SqlHelper;
|
||||||
|
class ExchangeCode extends BaseModel
|
||||||
|
{
|
||||||
|
public static function find($code){
|
||||||
|
$row = SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_exchange_code',
|
||||||
|
array(
|
||||||
|
'exchangecode'=> $code
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (!$row){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function updateExchangeCode($code){
|
||||||
|
SqlHelper::update
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_exchange_code',
|
||||||
|
array(
|
||||||
|
'exchangecode'=> $code
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'usetimes' => function(){
|
||||||
|
return "usetimes + 1";
|
||||||
|
},
|
||||||
|
"last_usetime" => myself()->_getNowTime(),
|
||||||
|
"last_useuser" => myself()->_getAccountId(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getRecordByCode($code){
|
||||||
|
$row = SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_exchange_record',
|
||||||
|
array(
|
||||||
|
'exchangecode'=> $code
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (!$row){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findRecordByCode($code){
|
||||||
|
$row = SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_exchange_record',
|
||||||
|
array(
|
||||||
|
'account_id'=> myself()->_getAccountId(),
|
||||||
|
'exchangecode'=> $code,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (!$row){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function findRecordByPackage($package){
|
||||||
|
$row = SqlHelper::ormSelectOne(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_exchange_record',
|
||||||
|
array(
|
||||||
|
'account_id'=> myself()->_getAccountId(),
|
||||||
|
'packageno'=> $package,
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (!$row){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return $row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function insetRecord($fieldKv){
|
||||||
|
SqlHelper::insert
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_exchange_record',
|
||||||
|
$fieldKv
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
42
webapp/models/Map.php
Normal file
42
webapp/models/Map.php
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace models;
|
||||||
|
|
||||||
|
use phpcommon\SqlHelper;
|
||||||
|
class Map extends BaseModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function findMap(){
|
||||||
|
$rows = SqlHelper::ormSelect(
|
||||||
|
myself()->_getSelfMysql(),
|
||||||
|
't_unlocked_map',
|
||||||
|
array(
|
||||||
|
'account_id'=> myself()->_getAccountId()
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return $rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function upsertMap($itemMeta){
|
||||||
|
SqlHelper::upsert
|
||||||
|
(myself()->_getSelfMysql(),
|
||||||
|
't_unlocked_map',
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'map_id' => $itemMeta['param1'],
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'unlockedtime' => myself()->_getNowTime(),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'account_id' => myself()->_getAccountId(),
|
||||||
|
'map_id' => $itemMeta['param1'],
|
||||||
|
'unlockedtime' => myself()->_getNowTime(),
|
||||||
|
'createtime' => myself()->_getNowTime(),
|
||||||
|
'modifytime' => myself()->_getNowTime(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,351 +1,352 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace mt;
|
namespace mt;
|
||||||
|
|
||||||
require_once('mt/StrHelper.php');
|
require_once('mt/StrHelper.php');
|
||||||
require_once('mt/AttrHelper.php');
|
require_once('mt/AttrHelper.php');
|
||||||
|
|
||||||
use phpcommon;
|
use phpcommon;
|
||||||
|
|
||||||
class Item {
|
class Item {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
0 无功能
|
0 无功能
|
||||||
1 不进背包道具(数值道具)
|
1 不进背包道具(数值道具)
|
||||||
2 礼包
|
2 礼包
|
||||||
3 英雄
|
3 英雄
|
||||||
4 英雄皮肤
|
4 英雄皮肤
|
||||||
5 头像
|
5 头像
|
||||||
6 头像框
|
6 头像框
|
||||||
7 枪械
|
7 枪械
|
||||||
8 枪械皮肤
|
8 枪械皮肤
|
||||||
9 功能性道具
|
9 功能性道具
|
||||||
10 材料
|
10 材料
|
||||||
11 碎片
|
11 碎片
|
||||||
12 盲盒
|
12 盲盒
|
||||||
13 芯片
|
13 芯片
|
||||||
15 碎片透明箱子
|
15 碎片透明箱子
|
||||||
16 降落伞皮肤
|
16 降落伞皮肤
|
||||||
19 赛季戒指
|
19 赛季戒指
|
||||||
23 随机宝箱
|
23 随机宝箱
|
||||||
24 Gacha
|
24 Gacha
|
||||||
26 晶体
|
26 晶体
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
type类型为1时,配置一下子类id
|
type类型为1时,配置一下子类id
|
||||||
1.金币
|
1.金币
|
||||||
2.钻石
|
2.钻石
|
||||||
3.角色账号经验
|
3.角色账号经验
|
||||||
4.日活跃
|
4.日活跃
|
||||||
5.周活跃
|
5.周活跃
|
||||||
6.工会经验
|
6.工会经验
|
||||||
7.手册经验
|
7.手册经验
|
||||||
8.英雄熟练度
|
8.英雄熟练度
|
||||||
|
|
||||||
type类型为2时,配置一下子类id
|
type类型为2时,配置一下子类id
|
||||||
1.自动打开
|
1.自动打开
|
||||||
2.手动打开
|
2.手动打开
|
||||||
|
|
||||||
type类型为7时,配置一下子类id
|
type类型为7时,配置一下子类id
|
||||||
1.冲锋枪
|
1.冲锋枪
|
||||||
2.散弹枪
|
2.散弹枪
|
||||||
3.狙击枪
|
3.狙击枪
|
||||||
4.火箭筒
|
4.火箭筒
|
||||||
5.激光枪
|
5.激光枪
|
||||||
6.冰冻枪
|
6.冰冻枪
|
||||||
7.火焰枪
|
7.火焰枪
|
||||||
|
|
||||||
type类型为9时,配置一下子类id
|
type类型为9时,配置一下子类id
|
||||||
1.改名卡
|
1.改名卡
|
||||||
2.喇叭
|
2.喇叭
|
||||||
3.战队改名卡
|
3.战队改名卡
|
||||||
4.体力药剂
|
4.体力药剂
|
||||||
5.耐久药剂
|
5.耐久药剂
|
||||||
|
|
||||||
type类型为10时,配置一下子类id
|
type类型为10时,配置一下子类id
|
||||||
1.角色材料
|
1.角色材料
|
||||||
2.科研材料
|
2.科研材料
|
||||||
|
|
||||||
type类型为11时,配置一下子类id
|
type类型为11时,配置一下子类id
|
||||||
1.角色碎片
|
1.角色碎片
|
||||||
2.枪械碎片
|
2.枪械碎片
|
||||||
|
|
||||||
type类型为13时,配置一下子类id
|
type类型为13时,配置一下子类id
|
||||||
1.角色芯片
|
1.角色芯片
|
||||||
2.枪械芯片
|
2.枪械芯片
|
||||||
|
|
||||||
type类型为15时,配置一下子类id
|
type类型为15时,配置一下子类id
|
||||||
1.角色碎片
|
1.角色碎片
|
||||||
2.枪械碎片
|
2.枪械碎片
|
||||||
*/
|
*/
|
||||||
const NONE_TYPE = 0;
|
const NONE_TYPE = 0;
|
||||||
const VIRTUAL_TYPE = 1;
|
const VIRTUAL_TYPE = 1;
|
||||||
const GIFT_PACKAGE_TYPE = 2;
|
const GIFT_PACKAGE_TYPE = 2;
|
||||||
const HERO_TYPE = 3;
|
const HERO_TYPE = 3;
|
||||||
const HERO_SKIN_TYPE = 4;
|
const HERO_SKIN_TYPE = 4;
|
||||||
const HEAD_TYPE = 5;
|
const HEAD_TYPE = 5;
|
||||||
const HEAD_FRAME_TYPE = 6;
|
const HEAD_FRAME_TYPE = 6;
|
||||||
const GUN_TYPE = 7;
|
const GUN_TYPE = 7;
|
||||||
const GUN_SKIN_TYPE = 8;
|
const GUN_SKIN_TYPE = 8;
|
||||||
const FUNC_TYPE = 9;
|
const FUNC_TYPE = 9;
|
||||||
const MATERIAL_TYPE = 10;
|
const MATERIAL_TYPE = 10;
|
||||||
const FRAGMENT_TYPE = 11;
|
const FRAGMENT_TYPE = 11;
|
||||||
const BLIND_BOX_TYPE = 12;
|
const BLIND_BOX_TYPE = 12;
|
||||||
const CHIP_TYPE = 13;
|
const CHIP_TYPE = 13;
|
||||||
const FRAGMENT_BOX_TYPE = 15;
|
const FRAGMENT_BOX_TYPE = 15;
|
||||||
const PARACHUTE_TYPE = 16;
|
const PARACHUTE_TYPE = 16;
|
||||||
const CHIP_BOX_TYPE = 17;
|
const CHIP_BOX_TYPE = 17;
|
||||||
const RING_TYPE = 19;
|
const RING_TYPE = 19;
|
||||||
const EMOJI_TYPE = 20;
|
const EMOJI_TYPE = 20;
|
||||||
const RANDOM_BOX_TYPE = 21;
|
const RANDOM_BOX_TYPE = 21;
|
||||||
const HONOR_TYPE = 24;
|
const HONOR_TYPE = 24;
|
||||||
const CRYSTAL_TYPE = 26;
|
const CRYSTAL_TYPE = 26;
|
||||||
|
|
||||||
const CHEST_BOX_TYPE = 23;
|
const CHEST_BOX_TYPE = 23;
|
||||||
const PLANET_TYPE = 28;
|
const PLANET_TYPE = 28;
|
||||||
const AVATAR_TYPE = 29;
|
const AVATAR_TYPE = 29;
|
||||||
|
const UNLOCKED_MAP_TYPE = 30;
|
||||||
const FUNC_RENAME_CARD_SUBTYPE = 1;
|
|
||||||
const FUNC_GUILD_CARD_SUBTYPE = 3;
|
const FUNC_RENAME_CARD_SUBTYPE = 1;
|
||||||
const DRUG_TILI_SUBTYPE = 4;
|
const FUNC_GUILD_CARD_SUBTYPE = 3;
|
||||||
const DRUG_DURABILITY_SUBTYPE = 5;
|
const DRUG_TILI_SUBTYPE = 4;
|
||||||
|
const DRUG_DURABILITY_SUBTYPE = 5;
|
||||||
const ROLE_CHIP_SUBTYPE = 1;
|
|
||||||
const GUN_CHIP_SUBTYPE = 2;
|
const ROLE_CHIP_SUBTYPE = 1;
|
||||||
const MATERIAL_CHIP_SUBTYPE = 3;
|
const GUN_CHIP_SUBTYPE = 2;
|
||||||
|
const MATERIAL_CHIP_SUBTYPE = 3;
|
||||||
const HERO_FRAGMENT_SUBTYPE = 1;
|
|
||||||
const HERO_FRAGMENT_SUBTYPE_PRO = 3;
|
const HERO_FRAGMENT_SUBTYPE = 1;
|
||||||
const GUN_FRAGMENT_SUBTYPE = 2;
|
const HERO_FRAGMENT_SUBTYPE_PRO = 3;
|
||||||
const GUN_FRAGMENT_SUBTYPE_PRO = 4;
|
const GUN_FRAGMENT_SUBTYPE = 2;
|
||||||
|
const GUN_FRAGMENT_SUBTYPE_PRO = 4;
|
||||||
|
|
||||||
public static function get($id)
|
|
||||||
{
|
public static function get($id)
|
||||||
return getXVal(self::getMetaList(), $id, null);
|
{
|
||||||
}
|
return getXVal(self::getMetaList(), $id, null);
|
||||||
|
}
|
||||||
public static function isType($meta, $type)
|
|
||||||
{
|
public static function isType($meta, $type)
|
||||||
return $meta['type'] == $type;
|
{
|
||||||
}
|
return $meta['type'] == $type;
|
||||||
|
}
|
||||||
public static function inTypes($meta, $types)
|
|
||||||
{
|
public static function inTypes($meta, $types)
|
||||||
return in_array($meta['type'], $types);
|
{
|
||||||
}
|
return in_array($meta['type'], $types);
|
||||||
|
}
|
||||||
public static function filter($cb)
|
|
||||||
{
|
public static function filter($cb)
|
||||||
foreach (self::getMetaList() as $meta) {
|
{
|
||||||
if (!$cb($meta)) {
|
foreach (self::getMetaList() as $meta) {
|
||||||
return;
|
if (!$cb($meta)) {
|
||||||
}
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public static function getPriceInfo($meta)
|
|
||||||
{
|
public static function getPriceInfo($meta)
|
||||||
$info = array(
|
{
|
||||||
'item_id' => $meta['id'],
|
$info = array(
|
||||||
'price_info' => array(
|
'item_id' => $meta['id'],
|
||||||
'cost_list' => array(),
|
'price_info' => array(
|
||||||
'discount_begin_time' => phpcommon\datetimeToTimestamp($meta['discount_begin']),
|
'cost_list' => array(),
|
||||||
'discount_end_time' => phpcommon\datetimeToTimestamp($meta['discount_end'])
|
'discount_begin_time' => phpcommon\datetimeToTimestamp($meta['discount_begin']),
|
||||||
)
|
'discount_end_time' => phpcommon\datetimeToTimestamp($meta['discount_end'])
|
||||||
);
|
)
|
||||||
$discount = splitStr1($meta['discount']);
|
);
|
||||||
if ($meta['gold'] > 0) {
|
$discount = splitStr1($meta['discount']);
|
||||||
array_push($info['price_info']['cost_list'],
|
if ($meta['gold'] > 0) {
|
||||||
array(
|
array_push($info['price_info']['cost_list'],
|
||||||
array(
|
array(
|
||||||
'item_id' => V_ITEM_GOLD,
|
array(
|
||||||
'item_num' => $meta['gold'],
|
'item_id' => V_ITEM_GOLD,
|
||||||
'discount' => count($discount) > 0 ? (int)$discount[0] : 0
|
'item_num' => $meta['gold'],
|
||||||
)));
|
'discount' => count($discount) > 0 ? (int)$discount[0] : 0
|
||||||
}
|
)));
|
||||||
if ($meta['diamond'] > 0) {
|
}
|
||||||
array_push($info['price_info']['cost_list'],
|
if ($meta['diamond'] > 0) {
|
||||||
array(
|
array_push($info['price_info']['cost_list'],
|
||||||
array(
|
array(
|
||||||
'item_id' => V_ITEM_DIAMOND,
|
array(
|
||||||
'item_num' => $meta['diamond'],
|
'item_id' => V_ITEM_DIAMOND,
|
||||||
'discount' => count($discount) > 1 ? (int)$discount[1] : 0
|
'item_num' => $meta['diamond'],
|
||||||
)
|
'discount' => count($discount) > 1 ? (int)$discount[1] : 0
|
||||||
));
|
)
|
||||||
}
|
));
|
||||||
return $info;
|
}
|
||||||
}
|
return $info;
|
||||||
|
}
|
||||||
public static function getCostItems($priceInfo, $costItemId)
|
|
||||||
{
|
public static function getCostItems($priceInfo, $costItemId)
|
||||||
$costGroup = null;
|
{
|
||||||
array_walk($priceInfo['cost_list'], function ($val) use(&$costGroup, $costItemId) {
|
$costGroup = null;
|
||||||
if ($costGroup) {
|
array_walk($priceInfo['cost_list'], function ($val) use(&$costGroup, $costItemId) {
|
||||||
return;
|
if ($costGroup) {
|
||||||
}
|
return;
|
||||||
if (count($val) > 0 && $val[0]['item_id'] == $costItemId) {
|
}
|
||||||
$costGroup = $val;
|
if (count($val) > 0 && $val[0]['item_id'] == $costItemId) {
|
||||||
return;
|
$costGroup = $val;
|
||||||
}
|
return;
|
||||||
});
|
}
|
||||||
if (!$costGroup) {
|
});
|
||||||
return null;
|
if (!$costGroup) {
|
||||||
}
|
return null;
|
||||||
$costItems = array();
|
}
|
||||||
array_walk($costGroup, function ($val) use (&$costItems, $priceInfo) {
|
$costItems = array();
|
||||||
if ($val['discount'] > 0 &&
|
array_walk($costGroup, function ($val) use (&$costItems, $priceInfo) {
|
||||||
myself()->_getNowTime() >= $priceInfo['discount_begin_time'] &&
|
if ($val['discount'] > 0 &&
|
||||||
myself()->_getNowTime() <= $priceInfo['discount_end_time']
|
myself()->_getNowTime() >= $priceInfo['discount_begin_time'] &&
|
||||||
) {
|
myself()->_getNowTime() <= $priceInfo['discount_end_time']
|
||||||
array_push($costItems, array(
|
) {
|
||||||
'item_id' => $val['item_id'],
|
array_push($costItems, array(
|
||||||
'item_num' => (int)($val['item_num'] * ($priceInfo['discount'] / 100)),
|
'item_id' => $val['item_id'],
|
||||||
));
|
'item_num' => (int)($val['item_num'] * ($priceInfo['discount'] / 100)),
|
||||||
} else {
|
));
|
||||||
array_push($costItems, array(
|
} else {
|
||||||
'item_id' => $val['item_id'],
|
array_push($costItems, array(
|
||||||
'item_num' => $val['item_num'],
|
'item_id' => $val['item_id'],
|
||||||
));
|
'item_num' => $val['item_num'],
|
||||||
}
|
));
|
||||||
});
|
}
|
||||||
return $costItems;
|
});
|
||||||
}
|
return $costItems;
|
||||||
|
}
|
||||||
public static function getUseCostItems($itemMeta)
|
|
||||||
{
|
public static function getUseCostItems($itemMeta)
|
||||||
$costItems = array();
|
{
|
||||||
foreach (splitStr2($itemMeta['use_cost']) as $arr) {
|
$costItems = array();
|
||||||
if (count($arr) >= 2) {
|
foreach (splitStr2($itemMeta['use_cost']) as $arr) {
|
||||||
array_push($costItems, array(
|
if (count($arr) >= 2) {
|
||||||
'item_id' => $arr[0],
|
array_push($costItems, array(
|
||||||
'item_num' => $arr[1]
|
'item_id' => $arr[0],
|
||||||
));
|
'item_num' => $arr[1]
|
||||||
}
|
));
|
||||||
}
|
}
|
||||||
return $costItems;
|
}
|
||||||
}
|
return $costItems;
|
||||||
|
}
|
||||||
public static function isRandAttrItem($itemMeta)
|
|
||||||
{
|
public static function isRandAttrItem($itemMeta)
|
||||||
return $itemMeta['type'] == self::MATERIAL_TYPE &&
|
{
|
||||||
$itemMeta['sub_type'] == self::MATERIAL_CHIP_SUBTYPE;
|
return $itemMeta['type'] == self::MATERIAL_TYPE &&
|
||||||
}
|
$itemMeta['sub_type'] == self::MATERIAL_CHIP_SUBTYPE;
|
||||||
|
}
|
||||||
public static function isRoleChipItem($itemMeta)
|
|
||||||
{
|
public static function isRoleChipItem($itemMeta)
|
||||||
return $itemMeta['type'] == self::CHIP_TYPE &&
|
{
|
||||||
$itemMeta['sub_type'] == self::ROLE_CHIP_SUBTYPE;
|
return $itemMeta['type'] == self::CHIP_TYPE &&
|
||||||
}
|
$itemMeta['sub_type'] == self::ROLE_CHIP_SUBTYPE;
|
||||||
|
}
|
||||||
public static function isGunChipItem($itemMeta)
|
|
||||||
{
|
public static function isGunChipItem($itemMeta)
|
||||||
return $itemMeta['type'] == self::CHIP_TYPE &&
|
{
|
||||||
$itemMeta['sub_type'] == self::GUN_CHIP_SUBTYPE;
|
return $itemMeta['type'] == self::CHIP_TYPE &&
|
||||||
}
|
$itemMeta['sub_type'] == self::GUN_CHIP_SUBTYPE;
|
||||||
|
}
|
||||||
public static function getBaseAttrs($meta)
|
|
||||||
{
|
public static function getBaseAttrs($meta)
|
||||||
$cfgAttrs = StrHelper::parseList($meta['attrs'], array('|', ':'));
|
{
|
||||||
$attrs = array();
|
$cfgAttrs = StrHelper::parseList($meta['attrs'], array('|', ':'));
|
||||||
foreach ($cfgAttrs as $cfgAttr) {
|
$attrs = array();
|
||||||
array_push($attrs, array(
|
foreach ($cfgAttrs as $cfgAttr) {
|
||||||
'attr_id' => $cfgAttr[0],
|
array_push($attrs, array(
|
||||||
'type' => $cfgAttr[1],
|
'attr_id' => $cfgAttr[0],
|
||||||
'val' => $cfgAttr[2],
|
'type' => $cfgAttr[1],
|
||||||
));
|
'val' => $cfgAttr[2],
|
||||||
}
|
));
|
||||||
return $attrs;
|
}
|
||||||
}
|
return $attrs;
|
||||||
|
}
|
||||||
public static function isBagItem($type, $subType)
|
|
||||||
{
|
public static function isBagItem($type, $subType)
|
||||||
return in_array($type, array(
|
{
|
||||||
self::GIFT_PACKAGE_TYPE,
|
return in_array($type, array(
|
||||||
self::FUNC_TYPE,
|
self::GIFT_PACKAGE_TYPE,
|
||||||
self::MATERIAL_TYPE,
|
self::FUNC_TYPE,
|
||||||
self::FRAGMENT_TYPE,
|
self::MATERIAL_TYPE,
|
||||||
14,
|
self::FRAGMENT_TYPE,
|
||||||
self::FRAGMENT_BOX_TYPE,
|
14,
|
||||||
self::CHEST_BOX_TYPE,
|
self::FRAGMENT_BOX_TYPE,
|
||||||
self::CRYSTAL_TYPE,
|
self::CHEST_BOX_TYPE,
|
||||||
));
|
self::CRYSTAL_TYPE,
|
||||||
}
|
));
|
||||||
|
}
|
||||||
public static function getMetaListByType($type)
|
|
||||||
{
|
public static function getMetaListByType($type)
|
||||||
$metaList = array();
|
{
|
||||||
foreach (self::getMetaList() as $meta){
|
$metaList = array();
|
||||||
if ($meta['type'] == $type){
|
foreach (self::getMetaList() as $meta){
|
||||||
array_push($metaList,$meta);
|
if ($meta['type'] == $type){
|
||||||
}
|
array_push($metaList,$meta);
|
||||||
}
|
}
|
||||||
return $metaList;
|
}
|
||||||
}
|
return $metaList;
|
||||||
|
}
|
||||||
public static function isFragment($itemMeta)
|
|
||||||
{
|
public static function isFragment($itemMeta)
|
||||||
return $itemMeta['type'] == self::FRAGMENT_TYPE;
|
{
|
||||||
}
|
return $itemMeta['type'] == self::FRAGMENT_TYPE;
|
||||||
|
}
|
||||||
public static function groupFragment($tokenIds, &$heros, &$guns, &$specHeros, &$specGuns)
|
|
||||||
{
|
public static function groupFragment($tokenIds, &$heros, &$guns, &$specHeros, &$specGuns)
|
||||||
$heroItemIds = array(
|
{
|
||||||
110110,
|
$heroItemIds = array(
|
||||||
110120,
|
110110,
|
||||||
110130,
|
110120,
|
||||||
110140,
|
110130,
|
||||||
110150,
|
110140,
|
||||||
110160,
|
110150,
|
||||||
110170,
|
110160,
|
||||||
110180
|
110170,
|
||||||
);
|
110180
|
||||||
$gunItemIds = array(
|
);
|
||||||
110210,
|
$gunItemIds = array(
|
||||||
110220,
|
110210,
|
||||||
110230,
|
110220,
|
||||||
110240,
|
110230,
|
||||||
110250,
|
110240,
|
||||||
110260,
|
110250,
|
||||||
110270,
|
110260,
|
||||||
110280
|
110270,
|
||||||
);
|
110280
|
||||||
foreach ($tokenIds as $tokenId) {
|
);
|
||||||
if (in_array($tokenId, $heroItemIds)) {
|
foreach ($tokenIds as $tokenId) {
|
||||||
array_push($heros, $tokenId);
|
if (in_array($tokenId, $heroItemIds)) {
|
||||||
}
|
array_push($heros, $tokenId);
|
||||||
if (in_array($tokenId, $gunItemIds)) {
|
}
|
||||||
array_push($guns, $tokenId);
|
if (in_array($tokenId, $gunItemIds)) {
|
||||||
}
|
array_push($guns, $tokenId);
|
||||||
switch ($tokenId) {
|
}
|
||||||
case 110100:
|
switch ($tokenId) {
|
||||||
{
|
case 110100:
|
||||||
array_push($specHeros, $tokenId);
|
{
|
||||||
}
|
array_push($specHeros, $tokenId);
|
||||||
break;
|
}
|
||||||
case 110200:
|
break;
|
||||||
{
|
case 110200:
|
||||||
array_push($specGuns, $tokenId);
|
{
|
||||||
}
|
array_push($specGuns, $tokenId);
|
||||||
break;
|
}
|
||||||
default:
|
break;
|
||||||
{
|
default:
|
||||||
}
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$heros = array_unique($heros);
|
}
|
||||||
$guns = array_unique($guns);
|
$heros = array_unique($heros);
|
||||||
}
|
$guns = array_unique($guns);
|
||||||
|
}
|
||||||
protected static function getMetaList()
|
|
||||||
{
|
protected static function getMetaList()
|
||||||
if (!self::$metaList) {
|
{
|
||||||
self::$metaList = getMetaTable('item@item.php');
|
if (!self::$metaList) {
|
||||||
}
|
self::$metaList = getMetaTable('item@item.php');
|
||||||
return self::$metaList;
|
}
|
||||||
}
|
return self::$metaList;
|
||||||
|
}
|
||||||
protected static $metaList;
|
|
||||||
|
protected static $metaList;
|
||||||
}
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user