Merge branch 'hjb' of git.kingsome.cn:server/game2006api into hjb

This commit is contained in:
hujiabin 2024-01-03 13:46:22 +08:00
commit 7cca1f6446
10 changed files with 3966 additions and 1667 deletions

36
doc/Match.py Normal file
View File

@ -0,0 +1,36 @@
# -*- coding: utf-8 -*-
import _common
class Match(object):
def __init__(self):
self.apis = [
{
'name': 'getMatchInfo',
'desc': '获取匹配信息',
'group': 'Match',
'url': 'webapp/index.php?c=Match&a=getMatchInfo',
'params': [
_common.ReqHead(),
['team_uuid', '', '队伍唯一id'],
],
'response': [
_common.RspHead(),
['info', _common.MatchInfo(), '匹配信息'],
]
},
{
'name': 'cancel',
'desc': '取消匹配',
'group': 'Match',
'url': 'webapp/index.php?c=Match&a=cancel',
'params': [
_common.ReqHead(),
['team_uuid', '', '队伍唯一id'],
],
'response': [
_common.RspHead(),
]
}
]

File diff suppressed because it is too large Load Diff

140
sql/migrate/bcnftdb.sql Normal file
View File

@ -0,0 +1,140 @@
-- MySQL dump 10.14 Distrib 5.5.41-MariaDB, for Linux (x86_64)
--
-- Host: localhost Database: bcnft
-- ------------------------------------------------------
-- Server version 5.5.41-MariaDB
--
-- Table structure for table `version`
--
DROP TABLE IF EXISTS `version`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `version` (
`idx` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增id',
`version` int(11) NOT NULL DEFAULT '0' COMMENT '版本号',
PRIMARY KEY (`idx`),
UNIQUE KEY `version` (`version`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `t_nft`
--
DROP TABLE IF EXISTS `t_nft`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_nft` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`owner_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'owner_address',
`creator_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'creator_address',
`token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'token_id',
`token_type` int(11) NOT NULL DEFAULT '0' COMMENT 'nft类型 1:英雄 2:枪支 3:芯片 6:荣誉 7:徽章',
`token_state` int(11) NOT NULL DEFAULT '0' COMMENT '0:正常状态 1:出售中 2:出租中',
`item_id` int(11) NOT NULL DEFAULT '0' COMMENT '道具id',
`deleted` int(11) NOT NULL DEFAULT '0' COMMENT 'deleted',
`confirm_count` int(11) NOT NULL DEFAULT '0' COMMENT 'confirm_count',
`confirm_block_number` bigint NOT NULL DEFAULT '0' COMMENT 'confirm_block_number',
`tags` varchar(60) NOT NULL DEFAULT '' COMMENT 'tags',
`net_id` bigint NOT NULL DEFAULT '0' COMMENT 'net_id',
`contract_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'contract_address',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),
UNIQUE KEY `unikey` (`net_id`, `contract_address`, `token_id`),
KEY `owner_address_token_type` (`owner_address`, `token_type`),
KEY `owner_address_contract_address` (`owner_address`, `contract_address`),
KEY `owner_address` (`owner_address`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `t_log`
--
DROP TABLE IF EXISTS `t_log`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_log` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`type` varchar(255) NOT NULL DEFAULT '' COMMENT '日志类型',
`subtype` varchar(255) NOT NULL DEFAULT '' COMMENT '日志子类型',
`param1` mediumblob COMMENT 'param1',
`param2` mediumblob COMMENT 'param2',
`param3` mediumblob COMMENT 'param3',
`param4` mediumblob COMMENT 'param4',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `t_buy_record`
--
DROP TABLE IF EXISTS `t_buy_record`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_buy_record` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`blobdata` mediumblob COMMENT 'blobdata',
`buyer_address` mediumblob COMMENT 'buyer_address',
`order_id` varchar(60) COMMENT '订单id',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),
KEY `order_id` (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `t_nft1155`
--
DROP TABLE IF EXISTS `t_nft1155`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_nft1155` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`owner_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'owner_address',
`token_id` varchar(60) NOT NULL DEFAULT '' COMMENT 'token_id',
`item_id` int(11) NOT NULL DEFAULT '0' COMMENT '道具id',
`balance` bigint NOT NULL DEFAULT '0' COMMENT '余额',
`item_uniid` bigint NOT NULL DEFAULT '0' COMMENT 'item_uniid',
`confirm_count` int(11) NOT NULL DEFAULT '0' COMMENT 'confirm_count',
`confirm_block_number` bigint NOT NULL DEFAULT '0' COMMENT 'confirm_block_number',
`net_id` bigint NOT NULL DEFAULT '0' COMMENT 'net_id',
`contract_address` varchar(60) NOT NULL DEFAULT '' COMMENT 'contract_address',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),
UNIQUE KEY `unikey` (`owner_address`, `contract_address`, `token_id`),
KEY `owner_address` (`owner_address`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `t_callback`
--
DROP TABLE IF EXISTS `t_callback`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `t_callback` (
`idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id',
`cb_uuid` varchar(60) COMMENT '年月日时分秒_进程id_自增id',
`params` mediumblob COMMENT '需要签名的字段(json不含签名)',
`signature` varchar(60) COMMENT 'signature',
`secret_key` varchar(60) COMMENT 'secret_key',
`createtime` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`modifytime` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间',
PRIMARY KEY (`idx`),
UNIQUE KEY `cb_uuid` (`cb_uuid`),
KEY `signature` (`signature`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
-- Dump completed on 2015-08-19 18:51:22

1696
sql/migrate/gamedb.sql Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,121 +1,123 @@
<?php
define('TEAMID_KEY', 'team_uuid:');
define('RANKING_KEY', 'game2006api:');
define('DAILY_SELECTION_KEY', 'game2006api:daily_selection:');
define('PLANET_BUY_KEY', 'game2006api:planet_buy:');
define('LAST_SESSION_KEY', 'last_session:');
define('V_ITEM_GOLD', 10001); //金币
define('V_ITEM_DIAMOND', 10014); //钻石
define('V_ITEM_EXP', 10003); //经验
define('V_ITEM_ACTIVE', 10004); //活跃度
define('V_ITEM_BCEG', 10010); //BCEG
define('V_ITEM_STAR', 10011); //星星
define('V_ITEM_PASS', 10012); //通行证
define('V_ITEM_RESET_CARD', 10013); //重置卡
define('V_ITEM_REVIVE_COIN', 140001); //复活币
define('V_ITEM_HERO_META', 100005); //英雄升级材料
define('V_ITEM_GUN_META', 100006); //枪械升级材料
define('V_ITEM_CHIP_META', 100007); //芯片升级材料
define('TN_BEGIN', 8001);
define('TN_ACTIVE', 8002);
define('TN_SHOP', 8003);
define('TN_RECHARGE_UPGRADE_TIMES', 8004);
define('TN_SHARE_GAMES', 8005);
define('TN_HERO_LEVEL_UP', 8006);
define('TN_END', 8007);
define('TN_HERO_MAX_LEVEL', 8008);
define('TN_LAST_RANKING_TIME', 8009);
define('TN_MISSION_STAR_SEASON', 8010);
define('TN_RANK_STATUS', 8011);
define('TN_FIRST_TUPOP_STATUS', 8012);
define('TN_TOTAL_KILLS_NUM', 8013);
define('TN_TOTAL_STAR_NUM', 8014);
define('TN_TOTAL_RANK_NUM', 8015);
define('TN_TOTAL_DIAMOND_CONSUME', 8016);//钻石消耗
define('TN_TOTAL_CEG_CONSUME', 8017);//ceg消耗
define('TN_DAILY_BEGIN', 9001);
define('TN_DAILY_LOGINS', 9001);
define('TN_DAILY_ACTIVE', 9002);
define('TN_DAILY_SHOP', 9003);
define('TN_DAILY_RECHARGE_UPGRADE_TIMES', 9004);
define('TN_DAILY_SHARE_GAMES', 9005);
define('TN_DAILY_PVE_BATTLE_TIMES', 9006);
define('TN_DAILY_PVE_GET_FRAGMENT_NUM', 9007);
define('TN_DAILY_PVP_BATTLE_TIMES', 9008);
define('TN_DAILY_PVP_GET_FRAGMENT_NUM', 9009);
define('TN_DAILY_PVE_LAST_GET_FRAGMENT_BATTLE', 9010);
define('TN_DAILY_RANK_BATTLE_TIMES', 9011);
define('TN_DAILY_END', 9011);
define('TN_DAILY_PVE_GET_HERO_FRAGMENT_NUM', 9012);
define('TN_DAILY_PVE_GET_GUN_FRAGMENT_NUM', 9013);
define('TN_DAILY_COMPLETE_TASK_NUM', 9014);
define('TN_DAILY_USED_GOLD_NUM', 9015);
define('TN_DAILY_GET_STAR_NUM', 9016);
define('TN_DAILY_BUY_PASS_STATE', 9017);
define('TN_DAILY_BUY_LEVEL_STATE', 9018);
define('TN_DAILY_RESET_HERO_LEVEL_STATE', 9019);
define('TN_DAILY_REFRESH_MISSION_TIMES', 9020);
define('TN_WEEKLY_BEGIN', 10001);
define('TN_WEEKLY_ACTIVE', 10002);
define('TN_WEEKLY_SHOP', 10003);
define('TN_WEEKLY_RECHARGE_UPGRADE_TIMES', 10004);
define('TN_WEEKLY_SHARE_GAMES', 10005);
define('TN_WEEKLY_END', 10005);
define('SHOP_BUY_MODE_NORMAL', 0);
define('SHOP_BUY_MODE_DAILY_SELECTION', 1);
define('MARKET_BUY_MODE_NORMAL', 2);
const kHAT_Begin = 0;
const kHAT_Hp = 1;
const kHAT_HPRecover = 2;
const kHAT_Atk = 3;
const kHAT_Def = 4;
const kHAT_Speed = 5;
const kHAT_ShotRange = 6;
const kHAT_ShotSpeed = 7;
const kHAT_ReloadSpeed = 8;
const kHAT_FireRate = 9;
const kHAT_Volume = 10;
const kHAT_MaxHp = 11;
const kHAT_ShotView = 12;
const kHAT_View = 13;
const kHAT_ReloadTime = 14;
const kHAT_WeaponDmg = 20;
const kHAT_WeaponShotSpeed = 21;
const kHAT_WeaponReloadTime = 22;
const kHAT_WeaponExplosionRange = 23;
const kHAT_WeaponExplosionContinueTime = 24;
const kHAT_PoisoningReduction = 25;
const kHAT_RescueTime = 26;
const kHAT_DrugTime = 27;
const kHAT_DrugEfficacy = 28;
const kHAT_CarOil = 29;
const kHAT_WeaponExplosionDealyTime = 30;
const kHAT_RecoverHpAdd = 31;
const kHAT_SkillTime = 32;
const kHAT_WeaponThrowRange = 33;
const kHAT_LUCKY = 34;
const kHAT_Critical = 42;
const kHAT_CriDamage = 43;
const kHAT_Dodge = 44;
const kHAT_Ruduce = 45;
const kHAT_BrainLifePct = 47;
const kHAT_BulletSpeed = 49;
const kHAT_BulletSpeedPct = 50;
const kHAT_ABS_VAL = 1;
const kHAT_RATE_VAL = 2;
const kWantedLockType = 3;
const kMaxHeroUpLevelNum = 2;
const kMaxHeroUpQualityNum = 2;
const kMaxEmojiNum = 6;
<?php
define('TEAMID_KEY', 'team_uuid:');
define('RANKING_KEY', 'game2006api:');
define('DAILY_SELECTION_KEY', 'game2006api:daily_selection:');
define('PLANET_BUY_KEY', 'game2006api:planet_buy:');
define('LAST_SESSION_KEY', 'last_session:');
define('MATCH_CURRENT_TEAM_KEY', 'match:current_team:');
define('MATCH_OK_KEY', 'match:ok:');
define('V_ITEM_GOLD', 10001); //金币
define('V_ITEM_DIAMOND', 10014); //钻石
define('V_ITEM_EXP', 10003); //经验
define('V_ITEM_ACTIVE', 10004); //活跃度
define('V_ITEM_BCEG', 10010); //BCEG
define('V_ITEM_STAR', 10011); //星星
define('V_ITEM_PASS', 10012); //通行证
define('V_ITEM_RESET_CARD', 10013); //重置卡
define('V_ITEM_REVIVE_COIN', 140001); //复活币
define('V_ITEM_HERO_META', 100005); //英雄升级材料
define('V_ITEM_GUN_META', 100006); //枪械升级材料
define('V_ITEM_CHIP_META', 100007); //芯片升级材料
define('TN_BEGIN', 8001);
define('TN_ACTIVE', 8002);
define('TN_SHOP', 8003);
define('TN_RECHARGE_UPGRADE_TIMES', 8004);
define('TN_SHARE_GAMES', 8005);
define('TN_HERO_LEVEL_UP', 8006);
define('TN_END', 8007);
define('TN_HERO_MAX_LEVEL', 8008);
define('TN_LAST_RANKING_TIME', 8009);
define('TN_MISSION_STAR_SEASON', 8010);
define('TN_RANK_STATUS', 8011);
define('TN_FIRST_TUPOP_STATUS', 8012);
define('TN_TOTAL_KILLS_NUM', 8013);
define('TN_TOTAL_STAR_NUM', 8014);
define('TN_TOTAL_RANK_NUM', 8015);
define('TN_TOTAL_DIAMOND_CONSUME', 8016);//钻石消耗
define('TN_TOTAL_CEG_CONSUME', 8017);//ceg消耗
define('TN_DAILY_BEGIN', 9001);
define('TN_DAILY_LOGINS', 9001);
define('TN_DAILY_ACTIVE', 9002);
define('TN_DAILY_SHOP', 9003);
define('TN_DAILY_RECHARGE_UPGRADE_TIMES', 9004);
define('TN_DAILY_SHARE_GAMES', 9005);
define('TN_DAILY_PVE_BATTLE_TIMES', 9006);
define('TN_DAILY_PVE_GET_FRAGMENT_NUM', 9007);
define('TN_DAILY_PVP_BATTLE_TIMES', 9008);
define('TN_DAILY_PVP_GET_FRAGMENT_NUM', 9009);
define('TN_DAILY_PVE_LAST_GET_FRAGMENT_BATTLE', 9010);
define('TN_DAILY_RANK_BATTLE_TIMES', 9011);
define('TN_DAILY_END', 9011);
define('TN_DAILY_PVE_GET_HERO_FRAGMENT_NUM', 9012);
define('TN_DAILY_PVE_GET_GUN_FRAGMENT_NUM', 9013);
define('TN_DAILY_COMPLETE_TASK_NUM', 9014);
define('TN_DAILY_USED_GOLD_NUM', 9015);
define('TN_DAILY_GET_STAR_NUM', 9016);
define('TN_DAILY_BUY_PASS_STATE', 9017);
define('TN_DAILY_BUY_LEVEL_STATE', 9018);
define('TN_DAILY_RESET_HERO_LEVEL_STATE', 9019);
define('TN_DAILY_REFRESH_MISSION_TIMES', 9020);
define('TN_WEEKLY_BEGIN', 10001);
define('TN_WEEKLY_ACTIVE', 10002);
define('TN_WEEKLY_SHOP', 10003);
define('TN_WEEKLY_RECHARGE_UPGRADE_TIMES', 10004);
define('TN_WEEKLY_SHARE_GAMES', 10005);
define('TN_WEEKLY_END', 10005);
define('SHOP_BUY_MODE_NORMAL', 0);
define('SHOP_BUY_MODE_DAILY_SELECTION', 1);
define('MARKET_BUY_MODE_NORMAL', 2);
const kHAT_Begin = 0;
const kHAT_Hp = 1;
const kHAT_HPRecover = 2;
const kHAT_Atk = 3;
const kHAT_Def = 4;
const kHAT_Speed = 5;
const kHAT_ShotRange = 6;
const kHAT_ShotSpeed = 7;
const kHAT_ReloadSpeed = 8;
const kHAT_FireRate = 9;
const kHAT_Volume = 10;
const kHAT_MaxHp = 11;
const kHAT_ShotView = 12;
const kHAT_View = 13;
const kHAT_ReloadTime = 14;
const kHAT_WeaponDmg = 20;
const kHAT_WeaponShotSpeed = 21;
const kHAT_WeaponReloadTime = 22;
const kHAT_WeaponExplosionRange = 23;
const kHAT_WeaponExplosionContinueTime = 24;
const kHAT_PoisoningReduction = 25;
const kHAT_RescueTime = 26;
const kHAT_DrugTime = 27;
const kHAT_DrugEfficacy = 28;
const kHAT_CarOil = 29;
const kHAT_WeaponExplosionDealyTime = 30;
const kHAT_RecoverHpAdd = 31;
const kHAT_SkillTime = 32;
const kHAT_WeaponThrowRange = 33;
const kHAT_LUCKY = 34;
const kHAT_Critical = 42;
const kHAT_CriDamage = 43;
const kHAT_Dodge = 44;
const kHAT_Ruduce = 45;
const kHAT_BrainLifePct = 47;
const kHAT_BulletSpeed = 49;
const kHAT_BulletSpeedPct = 50;
const kHAT_ABS_VAL = 1;
const kHAT_RATE_VAL = 2;
const kWantedLockType = 3;
const kMaxHeroUpLevelNum = 2;
const kMaxHeroUpQualityNum = 2;
const kMaxEmojiNum = 6;

View File

@ -351,6 +351,110 @@ class BattleController extends BaseAuthedController {
$customData = json_decode($customData, true);
}
error_log(json_encode($customData));
$zoneId = $customData['zone_id'];
$nodeId = $customData['node_id'];
$roomUuid = $customData['room_uuid'];
$startTime = $customData['start_time'];
$data = array(
'sign' => $sign,
'zone_id' => $zoneId,
'node_id' => $nodeId,
'room_uuid' => $roomUuid,
'start_time' => $startTime,
'team_list' => array()
);
$currSeason = mt\RankSeason::getCurrentSeason();
foreach ($customData['team_list'] as $team) {
$teamInfo = array(
'team_uuid' => $team['team_uuid'],
'members' => array()
);
foreach ($team['members'] as $member) {
$accountId = $member['account_id'];
$switchOk = $this->switchOnlineAccount($accountId);
if (!$switchOk) {
myself()->_rspErr(1, 'data error');
return;
}
$info = $this->genInitBattleData();
$userDb = User::find($accountId);
if ($userDb) {
$userPresetInfo = User::toPreset($userDb);
$info['elo'] = $userDb['elo'];
$info['rank'] = $userDb['rank'];
$info['name'] = $userPresetInfo['name'];
$info['level'] = $userPresetInfo['level'];
$info['parachute'] = $userPresetInfo['parachute'];
$info['hero_uniid'] = $userPresetInfo['hero_uniId'];
$info['hero_id'] = $userPresetInfo['hero_id'];
$info['hero_skin'] = $userPresetInfo['hero_skin'];
$info['skill_id'] = $userPresetInfo['presetInfo']['skill_id'];
$info['weapon_uuid1'] = $userPresetInfo['presetInfo']['weapon_uid1'];
$info['weapon_uuid2'] = $userPresetInfo['presetInfo']['weapon_uid2'];
$chipPageDb = ChipPage::find($userPresetInfo['presetInfo']['chip_page']);
$info['chip_page'] = ChipPage::toDtoBattle($chipPageDb);
$info['honor_info'] = $userPresetInfo['honor_info'];
$battleDb = Battle::find($accountId);
if ($battleDb){
$battleData = json_decode($battleDb['battle_data'], true);
$seasonBattleData = isset($battleData) ? getXVal($battleData, 'data', array()) : array();
$info['battle_times'] = getXVal($seasonBattleData, 'total_battle_times', 0);
}
$heroDb = Hero::findByAccountId($accountId,$info['hero_uniid']);
if ($heroDb) {
$info['is_valid_battle'] = 1;
$info['hero_dto'] = Hero::toDto($heroDb);
} else {
$info['errcode'] = 51;
$info['errmsg'] = 'paramater error';
}
{
$itemDb = Bag::findEx($accountId, V_ITEM_REVIVE_COIN);
$info['revive_coin'] = $itemDb && $itemDb['item_num'] > 0 ? $itemDb['item_num'] : 0;
}
{
$info['match_mode'] = 0;
if ($currSeason){
$info['match_mode'] = 1;
}
}
}
array_push($teamInfo['members'], $info);
}
array_push($data['team_list'], $teamInfo);
}
error_log(json_encode($data));
myself()->_rspData($data);
}
public function getMobaBattleData()
{
$sign = '';
$customData = array();
{
$rawData = file_get_contents('php://input');
error_log($rawData);
$headStr = strstr($rawData, '|', true);
$sign = strstr($headStr, ':', true);
$customData = strstr($rawData, '|');
$customData = substr($customData, 1);
error_log(json_encode(array(
'sign' => $sign,
'customData' => $customData
)));
if (md5($customData . HALL_KEY) != $sign) {
myself()->_rspErr(1, 'sign error');
return;
}
$customData = json_decode($customData, true);
}
$zoneId = $customData['zone_id'];
$nodeId = $customData['node_id'];
$roomUuid = $customData['room_uuid'];

View File

@ -0,0 +1,264 @@
<?php
require_once('models/User.php');
require_once('models/Hero.php');
require_once('models/Gun.php');
require_once('models/ChipPage.php');
require_once('models/HeroPreset.php');
require_once('models/HeroSkin.php');
require_once('mt/PveGemini.php');
require_once('mt/Skill.php');
require_once('mt/StarLevel.php');
require_once('services/PropertyChgService.php');
use phpcommon\SqlHelper;
use models\User;
use models\Hero;
use models\Gun;
use models\ChipPage;
use models\HeroPreset;
use models\HeroSkin;
class MatchController extends BaseAuthedController {
public function getMatchInfo()
{
$teamUuid = getReqVal('team_uuid', '');
$r = $this->_getRedis($teamUuid);
$teamDb = $this->readTeamDb($r, $teamUuid);
if (empty($teamDb)) {
$this->_rspErr(1, 'The team has been disbanded');
return;
}
$matchInfo = array(
'state' => 0,
'team_list' => array()
);
$matchOkDb = $this->readMatchOk($r, $teamUuid);
if ($matchOkDb) {
$this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600);
$this->refreshKeyExpire($r, MATCH_OK_KEY . $matchOkDb['target_team'], 1000*600);
$this->refreshKeyExpire($r, TEAMID_KEY . $matchOkDb['target_team'], 1000*600);
$this->fillMatchInfo($r, $teamUuid, $matchInfo, $matchOkDb);
} else {
$this->execMatch($r, $teamUuid, $teamDb, $matchInfo);
}
$this->_rspData($matchInfo);
}
public function cancel()
{
$teamUuid = getReqVal('team_uuid', '');
$r = $this->_getRedis($teamUuid);
$teamDb = $this->readTeamDb($r, $teamUuid);
if (!empty($teamDb)) {
$r->del(MATCH_OK_KEY . $teamUuid);
$matchOkDb = $this->readMatchOk($r, $teamUuid);
if ($matchOkDb) {
$r->del(MATCH_OK_KEY . $matchOkDb['target_team']);
}
{
$currMatchDb = $this->readCurrMatchTeam($r);
if (!empty($currMatchDb)) {
unset($currMatchDb[$teamUuid]);
$r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb));
$this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600);
}
}
}
$this->_rspOk();
}
private function readTeamDb($r, $teamUuid)
{
$teamDbStr = $r->get(TEAMID_KEY . $teamUuid);
if (empty($teamDbStr)) {
return null;
}
$this->refreshKeyExpire($r, TEAMID_KEY . $teamUuid, 1000*600);
$teamDb = json_decode($teamDbStr, true);
return $teamDb;
}
/*
{
"": {
"team_uuid": "dafsdf"
"match_time": 231434
}
}
*/
private function readCurrMatchTeam($r)
{
$teamDbStr = $r->get(MATCH_CURRENT_TEAM_KEY);
if (empty($teamDbStr)) {
return null;
}
$teamDb = json_decode($teamDbStr, true);
return $teamDb;
}
/*
{
"target_team": "dafsdf"
"match_time": 231434
}
*/
private function readMatchOk($r, $teamUuid)
{
$teamDbStr = $r->get(MATCH_OK_KEY . $teamUuid);
if (empty($teamDbStr)) {
return null;
}
$this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600);
$teamDb = json_decode($teamDbStr, true);
return $teamDb;
}
private function refreshKeyExpire($r, $key, $time)
{
$r->pexpire($key, $time);
}
private function execMatch($r, $teamUuid, $teamDb, &$matchInfo)
{
$currMatchDb = $this->readCurrMatchTeam($r);
if (empty($currMatchDb)) {
$currMatchDb = array(
$teamUuid => array(
'team_uuid' => $teamUuid,
'match_time' => $this->_getNowTime()
)
);
$r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb));
$this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600);
} else {
$delTeams = array();
$selfTeamDb = $currMatchDb[$teamUuid];
if ($selfTeamDb && myself()->_getNowTime() - $selfTeamDb['match_time'] > 7) {
$this->matchOk($r, $teamUuid, $selfTeamDb);
$this->fillMatchInfo($r, $teamUuid, $matchInfo, $this->readMatchOk($r, $teamUuid));
array_push($delTeams, $teamUuid);
} else {
foreach ($currMatchDb as $key => $val) {
$tmpTeamDb = $this->readTeamDb($r, $key);
if ($tmpTeamDb['zid'] != $teamDb['zid'] ||
$tmpTeamDb['node_id'] != $teamDb['node_id'] ||
$tmpTeamDb['map_id'] != $teamDb['map_id']) {
continue;
}
if (!empty($tmpTeamDb) && $this->_getNowTime() - $val['match_time'] > 120) {
array_push($delTeams, $key);
} else {
$found = false;
if ($key == $teamUuid) {
$found = true;
} else {
foreach ($val['member_list'] as $member) {
if ($member['account_id'] == myself()->_getAccountId()) {
$found = true;
break;
}
}
}
if (!$found) {
$this->matchOk($r, $teamUuid, $val);
$this->fillMatchInfo($r, $teamUuid, $matchInfo, $this->readMatchOk($r, $teamUuid));
array_push($delTeams, $key);
}
}
}//end foreach $currMatchDb
}
if (count($delTeams) > 0) {
foreach ($delTeams as $id) {
unset($currMatchDb[$id]);
}
$r->set(MATCH_CURRENT_TEAM_KEY, json_encode($currMatchDb));
$this->refreshKeyExpire($r, MATCH_CURRENT_TEAM_KEY, 1000*600);
}
}
}
private function matchOk($r, $teamUuid, $currMatchDb)
{
{
$matchOkDb = array(
'target_team' => $currMatchDb['team_uuid'],
'match_time' => $this->_getNowTime()
);
$r->set(MATCH_OK_KEY . $teamUuid, json_encode($matchOkDb));
$this->refreshKeyExpire($r, MATCH_OK_KEY . $teamUuid, 1000*600);
}
{
$matchOkDb = array(
'target_team' => $teamUuid,
'match_time' => $this->_getNowTime()
);
$r->set(MATCH_OK_KEY . $currMatchDb['team_uuid'], json_encode($matchOkDb));
$this->refreshKeyExpire($r, MATCH_OK_KEY . $currMatchDb['team_uuid'], 1000*600);
}
}
private function fillMatchInfo($r, $teamUuid, &$matchInfo, $matchOkDb)
{
if (empty($matchOkDb)) {
return;
}
error_log(json_encode($matchOkDb));
$matchInfo['state'] = 1;
$data = array(
'zid' => '',
'node_id' => '',
'room_uuid' => '',
'start_time' => $matchOkDb['match_time'],
'team_list' => array()
);
$teamList = array();
{
$teamDb = $this->readTeamDb($r, $teamUuid);
array_push($matchInfo['team_list'], $teamDb);
$teamInfo = array(
'team_uuid' => $teamDb['team_uuid'],
'members' => array()
);
foreach ($teamDb['member_list'] as $val) {
array_push($teamInfo['members'], array(
'account_id' => $val['account_id']
));
}
array_push($teamList, $teamInfo);
$data['zid'] = $teamDb['zid'];
$data['node_id'] = $teamDb['node_id'];
$data['room_uuid'] = $teamDb['team_uuid'];
}
{
$teamDb = $this->readTeamDb($r, $matchOkDb['target_team']);
if (!empty($teamDb) && $teamDb['team_uuid'] != $teamUuid) {
array_push($matchInfo['team_list'], $teamDb);
$teamInfo = array(
'team_uuid' => $teamDb['team_uuid'],
'members' => array()
);
foreach ($teamDb['member_list'] as $val) {
array_push($teamInfo['members'], array(
'account_id' => $val['account_id']
));
}
array_push($teamList, $teamInfo);
if (strcasecmp($teamDb['team_uuid'], $data['room_uuid']) < 0) {
$data['room_uuid'] = $teamDb['team_uuid'];
}
}
}
$data['team_list'] = $teamList;
$payload = md5(json_encode($data) . '520d8eAbB(8cf1^#$^&!@d833a42c820432PDAFE^^)') .
":moba_room|" . json_encode($data);
$matchInfo['join_msg'] = array(
'team_uuid' => $teamUuid,
'payload' => $payload
);
}
}

View File

@ -62,6 +62,10 @@ class NftController extends BaseAuthedController
array_push($listInfo,$info);
}
break;
case Nft::EXPLORER_TYPE : {
array_push($listInfo,$info);
}
break;
}
}
}

View File

@ -116,22 +116,22 @@ class UserController extends BaseAuthedController {
}
}
if (SERVER_ENV == _TEST) {
if (defined('PRESENT_FREE_ITEM')) {
array_push($addItems,
array(
'item_id' => V_ITEM_GOLD,
'item_num' => 500000
));
$itemIds = array(30100,30200,30300,30400,30500,30600,30700,30800,30900,31000,40702,40902,40102);
foreach ($itemIds as $row){
array_push($addItems,
array(
'item_id' => $row,
'item_num' => 1
));
}
}
array_push($addItems,
array(
'item_id' => V_ITEM_GOLD,
'item_num' => 500000
));
$itemIds = array(30100,30200,30300,30400,30500,30600,30700,30800,30900,31000,40702,40902,40102);
foreach ($itemIds as $row){
array_push($addItems,
array(
'item_id' => $row,
'item_num' => 1
));
}
}
$awardService = new services\AwardService();
$propertyChgService = new services\PropertyChgService();

View File

@ -25,6 +25,7 @@ class Nft extends BaseModel
const HONOR1_TYPE = 6; //荣誉
const GENESIS_TYPE = 7; //创世徽章
const PLANET_TYPE = 8; //星球
const EXPLORER_TYPE = 9; //Explorer
const RING_TYPE = 19; //戒指
const AVATAR_TYPE = 30; //装饰
@ -432,7 +433,8 @@ class Nft extends BaseModel
self::HONOR1_TYPE,
self::RING_TYPE,
self::GENESIS_TYPE,
self::PLANET_TYPE
self::PLANET_TYPE,
self::EXPLORER_TYPE
));
}