api(); DebugHelper::debug($ret); } /** * 运行环境自检: * PHP 版本,扩展模块 * redis操作性 * sqldb操作性 */ static function selfTest() { echoLine("phpver: " . PHP_VERSION . PHP_EOL); # 打印下PHP版本 SelfChecker::CheckConfig(); # 进行配置环境检测 } //---------------------------------------------------- /** * 给玩家发邮件 * @param type $uid * @param type $zoneid * @param type $items * @param type $ctx */ public static function sendUserEmail($uid, $zoneid, $title, $reward, $ctx) { $mail = new Ins_Email(null, 1, $title, # $ctx, $reward); $list = explode(',', $uid); if (count($list) != 0) { foreach ($list as $userId) { EmailProc::InsertMail($zoneid, $userId, $mail); } } echo '邮件已经成功发送'; } private static function GetUserDataKeys($uid, $zoneid) { $list = array(); $zoneKey = MemKey_User::Union_PlayedZoneInfo_normal($uid); # 分区信息 $list[] = $zoneKey; $publicKey = MemKey_User::Union_PublicState_hash($uid); # 公共信息 $list[] = $publicKey; $gameInfoKey = MemKey_User::Info_hash($zoneid, $uid); # 游戏数据主体 $list[] = $gameInfoKey; $interactKey = MemKey_User::Interact($zoneid, $uid); # 交互字段 $list[] = $interactKey; $OffensiveLogKey = MemKey_User::OffensiveLog_zset($zoneid, $uid); # 主动挑战记录 $list[] = $OffensiveLogKey; $DefensiveLogKey = MemKey_User::DefensiveLog_zset($zoneid, $uid); # 被动挑战记录 $list[] = $DefensiveLogKey; $PVP_OffensiveLogKey = MemKey_User::PVP_OffensiveLog_zset($zoneid, $uid); # 竞技场主动挑战记录 $list[] = $PVP_OffensiveLogKey; $PVP_DefensiveLogKey = MemKey_User::PVP_DefensiveLog_zset($zoneid, $uid); # 竞技场被动挑战记录 $list[] = $PVP_DefensiveLogKey; $SigKey = MemKey_User::Sig($zoneid, $uid); # 玩家证书 $list[] = $SigKey; $CurIdKey = MemKey_User::Mail_CurId_int($zoneid, $uid); # 当前邮件编号 $list[] = $CurIdKey; $SysRecordKey = MemKey_User::Mail_SysRecord_set($zoneid, $uid); # 当前已经领取过的系统邮件记录 $list[] = $SysRecordKey; $QueueKey = MemKey_User::Mail_Queue_hash($zoneid, $uid); # 邮件列表 $list[] = $QueueKey; return $list; } /** * 删除账号-区别内外网 * @param type $uid * @param type $zoneid */ static public function deleteUserUId($uid, $zoneid) { $mem = gMem(); $list = self::GetUserDataKeys($uid, $zoneid); # 玩家数据key foreach ($list as $key) { if ($mem->exists($key)) { $mem->delete($key); } } // self::deleteUserMapData($uid, $zoneid); // echo '删除账号成功'; } /** * 删除账号-区别内外网 * @param type $uid * @param type $type */ static public function deleteUserMapData($uid, $zoneid) { if (gMongo()->delete("playerMapInfo", array('Uid' => $uid, 'ZoneId' => intval($zoneid)))) { # 地图 echoLine("地图数据删除成功"); } else { echoLine("请单独检查一下地图数据是否已删除."); } if (gMongo()->delete("PlayerInfo", array('Uid' => $uid, 'ZoneId' => intval($zoneid)))) { # 地图 echoLine("Player数据删除成功"); } else { echoLine("请单独检查一下Player数据是否已删除."); } if (gMongo()->delete("userInfoBack", array('key' => MemKey_User::Info_hash($zoneid, $uid))) > 0) { # 游戏数据备份 echoLine("玩家info备份数据删除成功"); } } /** * 跳过当前任务步骤 * @param type $uid * @param type $zoneid * @param type $curNum */ static public function JumpCurTaskStep($uid, $zoneid, $curNum) { $userRedisKey = MemKey_User::Info_hash($zoneid, $uid); $privateState = gMem()->hget($userRedisKey, 'privateState'); $store = gMem()->hget($userRedisKey, 'store'); $k = 1; $curMainTaskUId = $privateState->taskCardTracing->$k; if (StlUtil::dictHasProperty($store->taskcards, $curMainTaskUId)) { $curSteps = $store->taskcards->$curMainTaskUId->curSteps; $n = count($curSteps); $index = 0; foreach ($curSteps as &$val) { $index += 1; if ($index == $n) { $val->cur = $curNum; } } $store->taskcards->$curMainTaskUId->curSteps = $curSteps; gMem()->hset($userRedisKey, 'store', $store); echoLine("修改成功"); } else { echoLine("不存在这个任务信息"); } } /** * 将当前任务改成一个新的任务 * @param type $uid * @param type $zoneid * @param type $taskId */ static public function SetNewTask($uid, $zoneid, $taskId) { $userRedisKey = MemKey_User::Info_hash($zoneid, $uid); $privateState = gMem()->hget($userRedisKey, 'privateState'); $store = gMem()->hget($userRedisKey, 'store'); $k = 1; $curMainTaskUId = $privateState->taskCardTracing->$k; $task = new Ins_TaskCard($taskId); $task->uid = $curMainTaskUId; $task->state = 2; $store->taskcards->$curMainTaskUId = $task; gMem()->hset($userRedisKey, 'store', $store); echoLine("修改成功"); } private static function MemOnline() { static $cmem = null; if ($cmem == null) { $nosql = config::Inst()->nosql; $cmem = new CRedisUtil(); $cmem->conn($nosql->host, $nosql->port, $nosql->pwd, 0); } return $cmem; } private static function MemDev() { static $cmem = null; if ($cmem == null) { $nosql = config::Inst()->nosql; $cmem = new CRedisUtil(); $cmem->conn($nosql->host, $nosql->port, $nosql->pwd, 2); } return $cmem; } /** * 临时方法: 从online复制数据到dev,覆盖 * @param type $uid * @param type $zoneid */ public static function tempCopyDataFromOnlineToDev($uid, $zoneid) { $devMem = self::MemDev(); $onlineMem = self::MemOnline(); // $zoneKey = MemKey_User::Union_PlayedZoneInfo_normal($uid); # 分区信息 // $zoneInfo = $onlineMem->get($zoneKey); // $devMem->set($zoneKey, $zoneInfo); // $publicKey = MemKey_User::Union_PublicState_hash($uid); # 公共信息 // $pubs = $onlineMem->hgetall($publicKey); // $devMem->hmset($publicKey, $pubs); $gameInfoKey = MemKey_User::Info_hash($zoneid, $uid); # 游戏数据主体 $userInfo = $onlineMem->hgetall($gameInfoKey); $obj = new Data_UserGame($userInfo); $devMem->delete($gameInfoKey); $devMem->hmset_Cas($gameInfoKey, $obj); // self::deleteUserMapData($uid, $zoneid); // echo '账号主体数据已覆盖'; } }