94 lines
2.9 KiB
Lua
94 lines
2.9 KiB
Lua
------------------------------------------------
|
||
--作者: yangqf
|
||
--日期: 2021-02-22
|
||
--文件: SitDownSystem.lua
|
||
--模块: SitDownSystem
|
||
--描述: 打坐系统
|
||
------------------------------------------------
|
||
|
||
local SitDownSystem = {
|
||
--打坐开始时间
|
||
SitDownStartTime = 0,
|
||
--打坐期间增加的经验 总值
|
||
TotalExp = 0,
|
||
--经验加成百分比,百分比数值 例150%,值为150
|
||
CurExpAddRate = 0,
|
||
}
|
||
|
||
--请求开始打坐
|
||
function SitDownSystem:ReqStartSitDown()
|
||
local _mapCfg = GameCenter.MapLogicSystem.MapCfg
|
||
if _mapCfg == nil then
|
||
return
|
||
end
|
||
|
||
if _mapCfg.MapExp == 1 then
|
||
Utils.ShowPromptByEnum("C_EXPCOPY_CANNOT_SITDOWN")
|
||
return
|
||
end
|
||
|
||
local _lp = GameCenter.GameSceneSystem:GetLocalPlayer()
|
||
if _lp ~= nil and _lp.IsOnMount then
|
||
--判断是否可以在坐骑上打坐
|
||
local _mountId = _lp.Skin:GetSkinPartCfgID(FSkinPartCode.Mount)
|
||
local _cfg = DataConfig.DataHuaxingHorse[_mountId]
|
||
local _doMountDown = true
|
||
if _cfg ~= nill and _cfg.CanSitDown ~= 0 then
|
||
_doMountDown = false
|
||
end
|
||
if _doMountDown then
|
||
_lp:MountDown()
|
||
end
|
||
end
|
||
GameCenter.Network.Send("MSG_Hook.ReqStartSitDown", {})
|
||
end
|
||
|
||
--请求结束打坐
|
||
function SitDownSystem:ReqEndSitDown()
|
||
GameCenter.Network.Send("MSG_Hook.ReqEndSitDown", {})
|
||
end
|
||
|
||
--返回开始打坐消息
|
||
function SitDownSystem:ResStartSitDown(result)
|
||
if result.canSitDown then
|
||
local _player = GameCenter.GameSceneSystem:FindPlayer(result.roleId)
|
||
if _player ~= nil then
|
||
_player:Action_SitDown();
|
||
--如果角色正在打坐了,那么就打开获得经验的面板
|
||
if _player:IsLocalPlayer() then
|
||
self.SitDownStartTime = GameCenter.HeartSystem.ServerTime
|
||
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_SITDOWN_START)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
--同步经验值和飘字 x秒同步一次,x由配置表控制(经验地图、打坐的同步频率不同,global表:1480, 1481)
|
||
function SitDownSystem:ResSyncExpAdd(result)
|
||
local _lp = GameCenter.GameSceneSystem:GetLocalPlayer()
|
||
if _lp == nil then
|
||
return
|
||
end
|
||
self.TotalExp = self.TotalExp + result.addExp
|
||
self.CurExpAddRate = result.rate
|
||
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_SHOWEXP_UPDATE, result.addExp)
|
||
end
|
||
|
||
--返回结束打坐
|
||
function SitDownSystem:ResEndSitDown(result)
|
||
if result.success then
|
||
local _player = GameCenter.GameSceneSystem:FindPlayer(result.roleId)
|
||
if _player ~= nil then
|
||
if _player.IsSitDown then
|
||
_player:Stop_Action()
|
||
end
|
||
if _player:IsLocalPlayer() then
|
||
self.SitDownStartTime = 0
|
||
self.TotalExp = 0
|
||
GameCenter.PushFixEvent(LogicLuaEventDefine.EID_EVENT_SITDOWN_END)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
return SitDownSystem |