gold = glc()->Init_Player_gold; $this->cash = glc()->Init_Player_cash; $this->xp = 0; $this->maxXp = GameConfig::player_level_getItem(2)->xp_need; $this->level = 1; $this->name = ''; $this->img = ""; $heroMo = GameConfig::hero_getItem(glc()->CreateUserGame_defaultHeroId); $this->headImg = $heroMo->img; } // // /** * 给玩家增加体力 * @param int $amt */ function Add_tili($amt) { my_Assert($amt >= 0, "体力amt小于0"); //ActiveProc::ChangeTili($amt); for ($i = 0; $i < $amt; $i++) { if ((now() - $this->tili_ts) / glc()->tili_RecoverTS < $this->GetTili_RecoverrMax()) { $this->tili_ts -= glc()->tili_RecoverTS; } else { $this->tili++; } } } /** * 体力恢复的最大值(购买或者邮件领取的可以超出,超出后体力恢复失效) */ function GetTili_RecoverrMax() { $maxTili = glc()->tili_RecoverrMax; $monthTs = 30 * 24 * 60 * 60; if (ctx()->privateState->honourCardShop_ts > 0 && now() - ctx()->privateState->honourCardShop_ts < $monthTs) { $maxTili += glc()->tili_RecoverrMax_Add_HonourCard; } return $maxTili; } /** * 检查并修改体力ts的最小值. */ function Reset_tilits() { $maxTili = $this->GetTili_RecoverrMax(); $min = now() - glc()->tili_RecoverTS * $maxTili; if ($this->tili_ts < $min) { $this->tili_ts = $min; } } /** * 扣除玩家体力 * @param int $amt * @return bool 成功与否 */ function Consume_tili($amt) { if ($amt >= 0) { TaskProc::OnAccumulateTiliNum($amt); $cpt = glc()->tili_RecoverTS; if ($this->tili > 0) { if ($this->tili - $amt >= 0) { $this->tili -= $amt; return true; } else { $amt -= $this->tili; $this->tili = 0; $this->tili_ts += $amt * $cpt; return true; } } else if ($this->tili_ts + $amt * $cpt < now()) { $this->tili_ts += $amt * $cpt; return true; } } return false; } /** * @return int 计算当前可用体力值 */ function CurTili() { $maxTili = $this->GetTili_RecoverrMax(); $rec = (now() - $this->tili_ts) / glc()->tili_RecoverTS; $rec = $maxTili < $rec ? $maxTili : $rec; $t = $this->tili + $rec; return $t; } /** * 用户获得金币 * @param int $amt */ function Add_Gold($amt, $mask = 0) { my_Assert($amt >= 0, "参数为负"); TaskProc::OnAccumulateGoldNum($amt); $this->gold += $amt; } /** * 扣除玩家金币 * @param int $amt * @return boolean true:成功, false:金币不足 */ function Consume_Gold($amt) { if ($amt > 0) { if ($this->gold - $amt >= 0) { $this->gold -= $amt; return true; } } return false; } /** * 增加用户钻石 * @param type $amt */ function Add_Cash($amt) { my_Assert($amt >= 0, "amt值为负"); $this->cash += $amt; } /** * 扣除玩家钻石 * @param int $amt * @return bool 成功与否 */ function Consume_Cash($amt) { if ($amt >= 0) { if ($this->cash - $amt >= 0) { $this->cash -= $amt; TaskProc::OnConsumeCashNum($amt); return true; } } return false; } /** * 用户获得经验值 * @param int $amt */ function Add_Exp($amt) { my_Assert($amt >= 0, "amt值为负"); $cfgLVs = GameConfig::player_level(); $this->xp += $amt; $initLevel = $curLevel = $this->level; $nextLevel = $curLevel + 1; while ($this->xp >= $cfgLVs->$nextLevel->xp_need) { # 超过升级所需经验 if ($this->level < glc()->Game_MaxPlayerLevel) { # 如果未到达最大等级 StoreProc::AddMultiItemInStore(GameConfig::player_level_getItem($this->level)->reward, Enum_StoreSourceType::AddExp); $this->level++; FightProc::funUnlock_userLv($this->level); $this->xp -= $cfgLVs->$nextLevel->xp_need; $curLevel = $this->level; $nextLevel = $curLevel + 1; my_Assert(CommUtil::isPropertyExists($cfgLVs, $nextLevel), ErrCode::err_const_no); // "取英雄升级常量数据失败." . $nextLevel . "级"); $this->maxXp = $cfgLVs->$nextLevel->xp_need; TaskProc::OnUserLevel_X($this->level); FightProc::skillUnlock_userLevel($this->level); # 等级解锁技能 // StatProc::UserLevel($nowlv); # 等级统计 } else { # 如果已到达最大等级则仅补齐缺失的经验即可 $this->xp = $this->maxXp; # 经验不能超过最大值 break; } } } // // }