Files
Main/Assets/GameAssets/Resources/Lua/Logic/SitDown/SitDownSystem.lua
2025-01-25 04:38:09 +08:00

94 lines
2.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

------------------------------------------------
--作者: 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