MainProperty = {}
MainProperty._path = "res/private/main/"
-- 斗转星移技能ID
local DZXY_SkillID = 118
-- 醉酒相关是否显示
local ON_OFF_zuijiu = false
-- 聊天框的宽
MainProperty._ChatItemWidth = 310
function MainProperty.Init()
MainProperty._bubbleTipsDatas = {} -- 气泡数据
MainProperty._bubbleTipsCells = {}
MainProperty._quickUseCells = {}
MainProperty._pSize = {}
MainProperty._drawHWay = {} -- 绘制方式
MainProperty._exCellHei = 17
local values = GUIDefineEx.ChatContentInterval
MainProperty._listInterval, MainProperty._richVspace = values.listInterval, values.richVspace or 0
MainProperty._NGShow = tonumber(SL:GetValue("GAME_DATA", "OpenNGUI")) == 1 and
SL:GetValue("IS_LEARNED_INTERNAL")
MainProperty._uiSetHide = {}
end
function MainProperty.main()
local parent = GUI:Attach_Bottom()
GUI:LoadExport(parent, "main/main_property")
MainProperty._root = GUI:getChildByName(parent, "Main_Property")
MainProperty._ui = GUI:ui_delegate(MainProperty._root)
if not MainProperty._ui then
return false
end
MainProperty.Init()
local screenW = SL:GetValue("SCREEN_WIDTH")
GUI:setPosition(MainProperty._root, screenW / 2, 0)
local bottomHei = GUI:getContentSize(MainProperty._ui["bottomImg"]).height
GUI:setContentSize(MainProperty._ui["bottomImg"], screenW + 400, bottomHei)
local panelBgWid = GUI:getContentSize(MainProperty._ui["Panel_bg"]).width
GUI:setPositionX(MainProperty._ui["bottomImg"], panelBgWid / 2 - 100)
-- 时钟定时器
local function callback()
local date = os.date("*t", SL:GetValue("SERVER_TIME"))
GUI:Text_setString(MainProperty._ui["Text_time"], string.format("%02d:%02d:%02d", date.hour, date.min, date.sec))
end
local timeID = SL:Schedule(callback, 1)
callback()
-- FPS 帧率
local sumFps = 0
local count = 0
SL:Schedule(
function()
sumFps = sumFps + SL:GetValue("FPS")
count = count + 1
end,
0
)
SL:Schedule(
function()
local fps = math.min(math.ceil(sumFps / count), 60)
GUI:Text_setString(MainProperty._ui["Text_FPS"], string.format("FPS:%s", fps))
sumFps = 0
count = 0
end,
0.5
)
-- 聊天页打开
GUI:addOnClickEvent(MainProperty._ui["Panel_mini_chat_touch"], function()
if tonumber(SL:GetValue("GAME_DATA", "UIOpenMethod")) == 1 then
SL:CheckOpenLayer(SLDefine.HyperLinkID.Chat)
else
SL:JumpTo(SLDefine.HyperLinkID.Chat)
end
end)
-- 转生属性点分配页打开
GUI:addOnClickEvent(MainProperty._ui["btn_rein_add"], function()
if not GUI:GetWindow(nil, UIConst.LAYERID.ReinAttrGUI) then
if tonumber(SL:GetValue("GAME_DATA", "UIOpenMethod")) == 1 then
SL:CheckOpenLayer(SLDefine.HyperLinkID.ReinAttrPoint)
else
SL:JumpTo(SLDefine.HyperLinkID.ReinAttrPoint)
end
SL:PlayBtnClickAudio()
end
end)
MainProperty.OnRefreshPropertyShow()
MainProperty.OnRefreshNetShow()
MainProperty.OnRefreshBatteryShow()
MainProperty.RegisterEvent()
-- 初始化
MainProperty.InitAutoSFXTips()
MainProperty.InitHero()
MainProperty.InitMiniChat()
MainProperty.InitChatHideBtn()
MainProperty.InitQuickUseShow()
MainProperty.InitInternalUI()
MainProperty.InitQuickUseItems()
-- 龙头特效
GUI:Effect_Create(MainProperty._ui.Image_4, "dragon_anim", 39, 125, 0, 5010)
-- 商城按钮
GUI:addOnClickEvent(MainProperty._ui["store_btn"], function()
SL:JumpTo(ssrConstCfg.StoreHot)
end)
-- 排行榜
GUI:addOnClickEvent(MainProperty._ui["rank_btn"], function()
SL:JumpTo(ssrConstCfg.Rank)
end)
-- 面对面交易
GUI:addOnClickEvent(MainProperty._ui["jiaoyi_btn"], function()
SL:JumpTo(ssrConstCfg.Auction)
end)
-- BOSS查询
GUI:addOnClickEvent(MainProperty._ui["bossquery"], function()
ssrMessage:SubLink("BOSSqueryOBJ_main")
end)
-- 巡航系统
GUI:addOnClickEvent(MainProperty._ui["btn_xunhang"], function()
AutoXunHangOBJ:main()
end)
end
------------------------------ 快捷栏 -------------------------------------------------------
-- 初始化显示的快捷栏
function MainProperty.InitQuickUseItems()
local showNum = 0
local Panel_quick = MainProperty._ui["Panel_quick"]
if Panel_quick and GUI:getVisible(Panel_quick) then
for i = 1, 6 do
local item = MainProperty._ui[string.format("Panel_quick_use_%s", i)]
if item and GUI:getVisible(item) then
showNum = showNum + 1
local cell = MainProperty.CreateQuickUseCell(item, i)
MainProperty._quickUseCells[i] = cell
end
end
end
QuickUseData.SetQuickUseSize(showNum)
MainProperty.UpdateQuickUseItem()
end
-- 初始化显示的快捷栏
function MainProperty.InitQuickUseShow()
local showNum = 0
-- 默认个数
if MainProperty._ui["Panel_quick_use"] and GUI:getVisible(MainProperty._ui["Panel_quick_use"]) then
for i = 1, 6 do
local layout = MainProperty._ui[string.format("Panel_quick_use_%s", i)]
if layout and GUI:getVisible(layout) then
showNum = showNum + 1
end
end
end
-- 设置快捷框个数 (最大:6)
QuickUseData.SetQuickUseSize(showNum)
end
-- 快捷栏cell
function MainProperty.CreateQuickUseCell(parent, index)
if not parent then
return
end
-- 点击区域
local Panel_cell = GUI:Layout_Create(parent, "Panel_cell", 0, 0, 52, 50)
GUI:setTouchEnabled(Panel_cell, true)
local Image_bg = GUI:Image_Create(Panel_cell, "Image_bg", 26, 25, "res/public/1900012391.png")
GUI:setAnchorPoint(Image_bg, 0.5, 0.5)
GUI:setContentSize(Image_bg, 49, 49)
local Node_item = GUI:Node_Create(Panel_cell, "Node_item", 26, 25)
Panel_cell.nodeItem = Node_item
-- 拖动区域
local Panel_touch = GUI:Layout_Create(Panel_cell, "Panel_touch", 0, 0, 52, 50)
GUI:setTouchEnabled(Panel_touch, true)
GUI:setSwallowTouches(Panel_touch, false)
GUI:addOnClickEvent(Panel_cell, function(sender)
local quickUseItem = QuickUseData.GetQuickUseDataByPos(index)
if not quickUseItem then
return nil
end
SL:RequestUseItem(quickUseItem)
GUI:delayTouchEnabled(sender)
end)
GUI:addMouseButtonEvent(Panel_touch, {
OnSpecialRFunc = function(touchPos)
if not SL:GetValue("ITEM_MOVE_STATE") then
return -1
end
SL:ItemMoveCheck({ target = GUIDefine.ItemGoTo.QUICK_USE, pos = touchPos, posInQuickUse = index })
end
})
return { layout = Panel_cell, nodeItem = Node_item }
end
-- 快捷栏更新
function MainProperty.OnQuickUseRefresh(data)
local cell = MainProperty._quickUseCells[data.pos]
if not cell then
return false
end
GUI:ItemShow_resetMoveState(cell.item, data.state == 0)
end
-- 快捷栏操作
function MainProperty.OnQuickUseChange(data)
local opera = data.opera
if opera == GUIDefine.OperateType.INIT then
MainProperty.UpdateQuickUseItem()
elseif opera == GUIDefine.OperateType.ADD then
MainProperty.AddQuickUseItem(data.param)
elseif opera == GUIDefine.OperateType.DEL then
MainProperty.DelQuickUseItem(data.param)
elseif opera == GUIDefine.OperateType.CHANGE then
MainProperty.ChangeQuickUseItem(data.param)
end
end
--初始化列表
function MainProperty.UpdateQuickUseItem()
for k, v in pairs(MainProperty._quickUseCells) do
GUI:removeAllChildren(v.nodeItem)
end
local quickUseData = QuickUseData.GetQuickUseData()
for k, v in pairs(quickUseData) do
MainProperty.AddQuickUseItem({ index = k, itemData = v })
end
end
-- 添加 item
function MainProperty.AddQuickUseItem(data)
local cell = MainProperty._quickUseCells[data.index]
local function dealSpecialQuickUse()
local index = data.index
local size = QuickUseData.GetQuickUseSize()
local quickUseData = QuickUseData.GetQuickUseData()
local quickUseList = QuickUseData.GetQuickUseLocalList()
local replaceCell = nil
for i = 1, size do
if not quickUseData[i] and MainProperty._quickUseCells[i] and i ~= index then
replaceCell = MainProperty._quickUseCells[i]
cell = replaceCell
quickUseData[i] = quickUseData[index]
quickUseData[index] = nil
quickUseList[i] = quickUseList[index]
quickUseList[index] = 0
break
end
end
-- 无替代则放回背包
if not replaceCell then
local item = data.itemData
BagData.AddItemData(item)
--清数据
quickUseList[index] = 0
return true
end
end
if not cell then
if dealSpecialQuickUse() then
return
end
end
local nodeItem = cell.nodeItem
GUI:removeAllChildren(nodeItem)
local function getCount(item)
if item.OverLap > 1 then
return item.OverLap
end
if item.StdMode == 2 and item.Dura > 0 then --使用次数
return item.Dura < 1000 and 1 or math.floor(item.Dura / 1000) --小于1000都为1;大于1000向下取整
end
return 0
end
local itemData = data.itemData
local data = {
index = itemData.Index,
itemData = itemData,
count = getCount(itemData),
from = GUIDefine.ItemFrom
.QUICK_USE,
movable = true
}
local item = GUI:ItemShow_Create(nodeItem, "quickCell", 0, 0, data)
GUI:setAnchorPoint(item, 0.5, 0.5)
GUI:addOnTouchEvent(item, function()
if nodeItem.touching then
return false
end
cell.nodeItem.touching = true
SL:RequestUseItem(itemData)
SL:scheduleOnce(nodeItem, function(sender) sender.touching = nil end, 0.3)
end)
cell.item = item
end
-- 删除 item
function MainProperty.DelQuickUseItem(data)
local cell = MainProperty._quickUseCells[data.index]
if not cell then
return false
end
GUI:removeAllChildren(cell.nodeItem)
end
-- 修改 item
function MainProperty.ChangeQuickUseItem(data)
local cell = MainProperty._quickUseCells[data.index]
if not cell then
return false
end
local function getCount(item)
if item.OverLap > 1 then
return item.OverLap
end
if item.StdMode == 2 and item.Dura > 0 then --使用次数
return item.Dura < 1000 and 1 or math.floor(item.Dura / 1000) --小于1000都为1;大于1000向下取整
end
return 0
end
GUI:ItemShow_UpdateItemCountShow(cell.item, data.itemData, getCount(data.itemData))
end
--------------------------------------------------------------------------------------------
----------------------------- 气泡相关 ------------------------------------------------------
-- 气泡刷新
function MainProperty.OnRefreshBubbleTips(data)
if data.status then
MainProperty.AddBubbleTips(data)
else
MainProperty.RmvBubbleTips(data)
end
end
-- 添加气泡
function MainProperty.AddBubbleTips(data)
data.endTime = data.time and data.time + SL:GetValue("SERVER_TIME")
if MainProperty._bubbleTipsDatas[data.id] then
MainProperty._bubbleTipsDatas[data.id] = data
return false
end
MainProperty._bubbleTipsDatas[data.id] = data
local bubbleCell = MainProperty.CreateBubbleTipsCell(data)
GUI:ListView_pushBackCustomItem(MainProperty._ui["ListView_bubble_tips"], bubbleCell)
MainProperty._bubbleTipsCells[data.id] = bubbleCell
SL:PlaySound(50004)
end
-- 移除气泡
function MainProperty.RmvBubbleTips(data)
if not MainProperty._bubbleTipsDatas[data.id] then
return false
end
MainProperty._bubbleTipsDatas[data.id] = nil
GUI:ListView_removeChild(MainProperty._ui["ListView_bubble_tips"], MainProperty._bubbleTipsCells[data.id])
MainProperty._bubbleTipsCells[data.id] = nil
end
-- 气泡cell
function MainProperty.CreateBubbleTipsCell(data)
local bubbleCell = GUI:Layout_Create(-1, "bubbleCell", 0, 0, 50, 50)
GUI:setTouchEnabled(bubbleCell, true)
GUI:setAnchorPoint(bubbleCell, 0.5, 0.5)
-- 图标
local iconBtn = GUI:Button_Create(bubbleCell, "iconBtn", 25, 25,
string.len(data.path or "") > 0 and data.path or "Default/Button_Normal.png")
GUI:setAnchorPoint(iconBtn, 0.5, 0.5)
GUI:setContentSize(iconBtn, 46, 46)
GUI:setIgnoreContentAdaptWithSize(iconBtn, true)
GUI:addOnClickEvent(iconBtn, function()
if data.callback then
data.callback(bubbleCell)
end
end)
-- 倒计时
local timeText = GUI:Text_Create(bubbleCell, "timeText", 25, 7, 16, "#FF0000", "10")
GUI:setAnchorPoint(timeText, 0.5, 0.5)
-- 时间
local function callback()
if data.endTime then
local remaining = data.endTime - SL:GetValue("SERVER_TIME")
GUI:Text_setString(timeText, remaining)
if remaining <= 0 then
GUI:stopAllActions(timeText)
GUI:Text_setString(timeText, "")
if data.timeOverCB then
data.timeOverCB()
end
end
else
GUI:Text_setString(timeText, "")
end
end
SL:schedule(timeText, callback, 1)
callback()
GUI:Timeline_Waggle(bubbleCell, 0.05, 20)
return bubbleCell
end
-- 获取气泡按钮方法
function MainProperty.GetBubbleButtonByID(id)
for bubbleID, cell in pairs(MainProperty._bubbleTipsCells) do
if bubbleID == id then
return GUI:getChildByName(cell, "iconBtn")
end
end
return nil
end
--------------------------------------------------------------------------------------------
----------------------------- 自动提示 ------------------------------------------------------
function MainProperty.InitAutoSFXTips()
local contentSize = GUI:getContentSize(MainProperty._ui["Panel_auto_tips"])
local posX = contentSize.width / 2
local posY = 10
-- 自动战斗
MainProperty._nodeAutoFight = GUI:Node_Create(MainProperty._ui["Panel_auto_tips"], "nodeAutoFight", posX, posY)
GUI:setVisible(MainProperty._nodeAutoFight, false)
GUI:Effect_Create(MainProperty._nodeAutoFight, "autoFightSfx", 0, 0, 0, 4009)
-- 自动寻路
MainProperty._nodeAutoMove = GUI:Node_Create(MainProperty._ui["Panel_auto_tips"], "nodeAutoMove", posX, posY)
GUI:setVisible(MainProperty._nodeAutoMove, false)
GUI:Effect_Create(MainProperty._nodeAutoMove, "autoMoveSfx", 0, 0, 0, 4010)
end
----------------------------- 英雄相关 ------------------------------------------------------
function MainProperty.InitHero()
GUI:setVisible(MainProperty._ui["Image_barbg"], false)
MainProperty._maxAngerH = GUI:getContentSize(MainProperty._ui["Image_barbg"]).height
MainProperty.RefAnger(0)
if SL:GetValue("USEHERO") then
local modeShow = tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) and
tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) == 0
if modeShow then
local size = GUI:getContentSize(MainProperty._ui["Panel_hp"])
local heroProgress = GUI:ProgressTimer_Create(MainProperty._ui["Panel_hp"], "heroProgress", size.width / 2,
size.height / 2, MainProperty._path .. "Skill/hero2/0_0001.png")
GUI:setAnchorPoint(heroProgress, 0.5, 0.5)
GUI:ProgressTimer_setPercentage(heroProgress, 0)
heroProgress.idx = 1
SL:schedule(
MainProperty._ui["Panel_hp"],
function()
heroProgress.idx = heroProgress.idx + 1
if heroProgress.idx > 9 then
heroProgress.idx = 1
end
GUI:ProgressTimer_ChangeImg(
heroProgress,
string.format(MainProperty._path .. "Skill/hero2/0_000%s.png", heroProgress.idx)
)
end,
2 / 9
)
MainProperty._heroProgress = heroProgress
end
end
end
-- 刷新怒气条
function MainProperty.RefAnger(value)
local size = GUI:getContentSize(MainProperty._ui["Panel_bar"])
GUI:setContentSize(MainProperty._ui["Panel_bar"], size.width, value * (MainProperty._maxAngerH or 108))
end
function MainProperty.OnHeroAngerChange(data)
local modeShow = tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) and
tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) == 0
if modeShow and SL:GetValue("USEHERO") then
if SL:GetValue("HERO_IS_ALIVE") then -- 已召唤英雄
local forceRefresh = data and data.forceRefresh
local curAnger = SL:GetValue("H.ANGER")
local maxAnger = SL:GetValue("H.MAXANGER")
local angerBarWay = tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao"))
if angerBarWay and angerBarWay == 1 then -- 条形怒气条
if maxAnger ~= 0 then
MainProperty.RefAnger(curAnger / maxAnger)
end
if SL:GetValue("H.SHAN") then
if not GUI:getChildByName(MainProperty._ui["Panel_bar"], "anger_sfx") then
local sfx = GUI:Effect_Create(MainProperty._ui["Panel_bar"], "anger_sfx", -6, 66, 0, 7220)
GUI:setScaleY(sfx, MainProperty._maxAngerH / 108)
end
if MainSkill and MainSkill.JointHeroEffect then
MainSkill.JointHeroEffect(true)
end
else
local sfx = GUI:getChildByName(MainProperty._ui["Panel_bar"], "anger_sfx")
if sfx then
GUI:removeFromParent(sfx)
end
if MainSkill and MainSkill.JointHeroEffect then
MainSkill.JointHeroEffect(false)
end
end
else -- 圆形怒气条
local delayTime = SL:GetValue("H.DELAYT")
local speed = SL:GetValue("H.SPEED")
local shan = SL:GetValue("H.SHAN")
local curPro = curAnger / maxAnger * 100
local function ChangeShanEffect()
if shan then
if not MainProperty._heroProgress._shan or forceRefresh then
MainProperty._heroProgress._shan = true
if MainSkill and MainSkill.JointHeroEffect then
MainSkill.JointHeroEffect(true)
end
end
else
if MainProperty._heroProgress._shan or forceRefresh then
MainProperty._heroProgress._shan = false
if MainSkill and MainSkill.JointHeroEffect then
MainSkill.JointHeroEffect(false)
end
end
end
end
if GUI:getActionByTag(MainProperty._heroProgress, 77) then
GUI:stopAllActions(MainProperty._heroProgress)
GUI:ProgressTimer_setPercentage(MainProperty._heroProgress, curPro)
GUI:ProgressTimer_setReverseDirection(MainProperty._heroProgress, shan)
GUI:ProgressTimer_setPercentage(
MainProperty._heroProgress,
GUI:ProgressTimer_getPercentage(MainProperty._heroProgress)
)
ChangeShanEffect()
else
local pro = GUI:ProgressTimer_getPercentage(MainProperty._heroProgress)
local time = math.abs(curAnger - pro * maxAnger / 100) / speed * delayTime / 1000
GUI:ProgressTimer_progressTo(
MainProperty._heroProgress,
math.max(time - 0.05, 0),
curPro,
function()
GUI:ProgressTimer_setReverseDirection(MainProperty._heroProgress, shan)
local offset = shan and 0.01 or 0
GUI:ProgressTimer_setPercentage(
MainProperty._heroProgress,
GUI:ProgressTimer_getPercentage(MainProperty._heroProgress) - offset
)
ChangeShanEffect()
end,
77
)
end
end
else
if tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao")) and tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao")) == 1 then
MainProperty.RefAnger(0)
else
GUI:ProgressTimer_setPercentage(MainProperty._heroProgress, 0)
end
end
end
end
function MainProperty.OnHeroLoginOrOut()
if tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) and tonumber(SL:GetValue("GAME_DATA", "Progressbarmode")) == 0 then
if SL:GetValue("USEHERO") then
if not SL:GetValue("HERO_IS_ALIVE") then
if MainProperty._heroProgress then
GUI:stopAllActions(MainProperty._heroProgress)
MainProperty._heroProgress._shan = false
GUI:ProgressTimer_setPercentage(MainProperty._heroProgress, 0)
end
end
if tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao")) and tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao")) == 1 then
GUI:setVisible(MainProperty._ui["Image_barbg"], SL:GetValue("HERO_IS_ALIVE"))
MainProperty.RefAnger(0)
end
end
end
end
---------------------------------------------------------------------------------------------
----------------------------- 聊天相关 -------------------------------------------------------
-- 聊天框的宽
function MainProperty.GetChatWidth()
return MainProperty._ChatItemWidth
end
function MainProperty.InitChatHideBtn()
local widgetList = {
"Panel_quick_use_1",
"Panel_quick_use_2",
"Panel_quick_use_3",
"Panel_quick_use_4",
"Panel_quick_use_5",
"Panel_quick_use_6",
"Panel_auto_tips",
"Image_4",
"Panel_hp",
"Image_barbg",
"Image_barbg_dz",
}
local oriPosYList = {}
GUI:delayTouchEnabled(MainProperty._ui["Button_chat_hide"], 0.4)
local _layoutMiniChat = MainProperty._panelMiniChat
local lastShowState = GUI:getVisible(_layoutMiniChat)
GUI:addOnClickEvent(MainProperty._ui["Button_chat_hide"], function()
local state = not GUI:getVisible(_layoutMiniChat)
if lastShowState == state then
return
end
lastShowState = state
local function show()
GUI:setVisible(_layoutMiniChat, state)
end
if not oriPosYList["Panel_mini_chat"] then
oriPosYList["Panel_mini_chat"] = GUI:getPositionY(_layoutMiniChat)
end
local chatHei = GUI:getContentSize(_layoutMiniChat).height
local chatY = not state and (-chatHei) or oriPosYList["Panel_mini_chat"]
if not state then
GUI:runAction(
_layoutMiniChat,
GUI:ActionSequence(
GUI:ActionMoveTo(0.5, GUI:getPositionX(_layoutMiniChat), chatY),
GUI:CallFunc(show)
)
)
else
GUI:runAction(
_layoutMiniChat,
GUI:ActionSequence(
GUI:CallFunc(show),
GUI:ActionMoveTo(0.5, GUI:getPositionX(_layoutMiniChat), chatY)
)
)
end
GUI:Button_setBright(MainProperty._ui["Button_chat_hide"], state)
--通知服务端
SL:RequestNoticeChatVisible(state)
if SL:GetValue("GAME_DATA", "NeedResetPosWithChat") then
local idList = string.split(SL:GetValue("GAME_DATA", "NeedResetPosWithChat"), "#")
for _, id in ipairs(idList) do
local i = tonumber(id)
local name = widgetList[i]
local widget = MainProperty._ui[name]
if i and name and widget then
if i ~= 8 and i ~= 9 and i ~= 10 and i ~= 11 then
local chatHei = GUI:getContentSize(_layoutMiniChat).height
if not GUI:Widget_IsNull(widget) then
if not oriPosYList[name] then
oriPosYList[name] = GUI:getPositionY(widget)
end
local setY = not state and oriPosYList[name] - (chatHei) or oriPosYList[name]
GUI:runAction(widget, GUI:ActionMoveTo(0.5, GUI:getPositionX(widget), setY))
end
else
local function callback()
GUI:setVisible(widget, state)
GUI:setChildrenCascadeOpacityEnabled(widget, false)
if i == 11 then
MainProperty._uiSetHide[i] = not state
end
end
local canSet = true
if i == 10 then -- 怒气条
canSet = tonumber(SL:GetValue("GAME_DATA", "Heronuqitiao")) == 1 and
SL:GetValue("HERO_IS_ALIVE")
elseif i == 11 then -- 斗转条
canSet = SL:GetValue("SKILL_DATA", DZXY_SkillID) and MainProperty._NGShow
end
if canSet then
GUI:setChildrenCascadeOpacityEnabled(widget, true)
if not state then
GUI:runAction(
widget,
GUI:ActionSequence(GUI:ActionFadeOut(0.5), GUI:CallFunc(callback))
)
else
GUI:runAction(widget, GUI:ActionSequence(GUI:CallFunc(callback), GUI:ActionFadeIn(0.5)))
end
end
end
end
end
end
end)
end
function MainProperty.InitMiniChat()
MainProperty._panelMiniChat = MainProperty._ui["Panel_mini_chat"]
MainProperty._panelMiniChatBG = MainProperty._ui["Image_minichat_bg"]
MainProperty._listMiniChat = MainProperty._ui["ListView_minichat"]
MainProperty._listMiniChatEx = MainProperty._ui["ListView_chat_ex"]
GUI:ListView_autoPaintItems(MainProperty._listMiniChat)
MainProperty._ChatItemWidth = GUI:getContentSize(MainProperty._listMiniChat).width
MainProperty._chatListHei = GUI:getContentSize(MainProperty._listMiniChat).height
local listInterval = GUIDefineEx.ChatContentInterval.listInterval
if listInterval then
GUI:ListView_setItemsMargin(MainProperty._listMiniChat, listInterval)
GUI:ListView_setItemsMargin(MainProperty._listMiniChatEx, listInterval)
end
end
function MainProperty.OnChatMiniAddItem(item)
if not MainProperty._listMiniChat then
return false
end
GUI:ListView_pushBackCustomItem(MainProperty._listMiniChat, item)
-- 超出限制,移除先放入的
if #GUI:ListView_getItems(MainProperty._listMiniChat) > GUIDefineEx.MobileMainMaxChatNum then
GUI:ListView_removeItemByIndex(MainProperty._listMiniChat, 0)
end
GUI:ListView_jumpToBottom(MainProperty._listMiniChat)
end
function MainProperty.OnShowChatExNotice()
MainProperty.CheckChatExNotice()
end
function MainProperty.ResetExListSizeByData()
local exListView = MainProperty._listMiniChatEx
local itemCount = #ChatData.GetChatExItemsData()
local margin = GUI:ListView_getItemsMargin(exListView)
local height = MainProperty._exCellHei * itemCount + (itemCount - 1) * margin
GUI:setContentSize(exListView, GUI:getContentSize(exListView).width, height)
local contentHei = MainProperty._chatListHei or (GUI:getContentSize(MainProperty._panelMiniChat).height - 3)
local listviewSize = GUI:getContentSize(MainProperty._listMiniChat)
GUI:setContentSize(MainProperty._listMiniChat, listviewSize.width, contentHei - height)
GUI:ListView_jumpToBottom(MainProperty._listMiniChat)
end
function MainProperty.CheckChatExNotice()
local exList = MainProperty._listMiniChatEx
if not exList then
return false
end
if #GUI:ListView_getItems(exList) >= GUIDefine.ChatConfig.LIMIT_COUNT_EX then
return false
end
local chatExItems = SL:CopyData(ChatData.GetChatExItemsData())
if #chatExItems == 0 then
local oriWidth = GUI:getContentSize(exList).width
GUI:setContentSize(exList, oriWidth, 0)
return false
end
local data = chatExItems[#chatExItems]
if not data then
return false
end
data.Time = data.Time or 5
if data.Time <= 0 then
ChatData.RemoveChatExItemsData(data)
MainProperty.ResetExListSizeByData()
return false
end
data.Label = data.Label or ""
data.Y = data.Y or 0
data.Count = data.Count or 1
data.FColor = data.FColor or 255
data.BColor = data.BColor or 255
data.SendNameTemp = data.SendName or ""
local FColorHex = SL:GetHexColorByStyleId(data.FColor)
local BColorHex = SL:GetHexColorByStyleId(data.BColor)
local BColorEnable = data.BColor ~= -1
local cWidth = GUI:getContentSize(exList).width
local capacitySize = { width = cWidth, height = MainProperty._exCellHei }
local function resetListView()
local items = GUI:ListView_getItems(exList)
local height = 0
local margin = GUI:ListView_getItemsMargin(exList)
for i, v in ipairs(items) do
local interval = i ~= #items and margin or 0
height = height + GUI:getContentSize(v).height + interval
end
GUI:setContentSize(exList, capacitySize.width, height)
local contentHei = MainProperty._chatListHei or (GUI:getContentSize(MainProperty._panelMiniChat).height - 3)
local listviewSize = GUI:getContentSize(MainProperty._listMiniChat)
GUI:setContentSize(MainProperty._listMiniChat, listviewSize.width, contentHei - height)
GUI:ListView_jumpToBottom(MainProperty._listMiniChat)
end
local layout = GUI:Layout_Create(-1, "layout", 0, 0, capacitySize.width, capacitySize.height)
if BColorEnable then
GUI:Layout_setBackGroundColor(layout, BColorHex)
GUI:Layout_setBackGroundColorType(layout, 0)
end
GUI:ListView_pushBackCustomItem(exList, layout)
resetListView()
local scrollWidget = GUI:Widget_Create(layout, "scrollWidget", 0, 0, capacitySize.width, capacitySize.height)
local scrollAble = nil
local scrollSize = { width = 0, height = 0 }
local remaining = data.Time
local Msg = SL:FixStringFormatCharacter(data.Msg)
local hasFormat = string.find(Msg, "%%")
local showName = data.SendName and (data.SendName .. ": ") or ""
local function callback()
remaining = math.min(remaining, data.Time)
ChatData.SyncChatExItemsTime(data, remaining)
local name = showName or ""
local str = name .. (hasFormat and string.format(Msg, remaining) or Msg)
local fontSize = SL:GetValue("GAME_DATA", "DEFAULT_FONT_SIZE") or 16
GUI:removeAllChildren(scrollWidget)
local richText = GUI:RichTextFCOLOR_Create(scrollWidget, "richText", 0, capacitySize.height / 2, str, 1000,
fontSize, FColorHex, MainProperty._richVspace or 0, nil, nil, { outlineSize = 0 })
GUI:setTouchEnabled(richText, true)
GUI:setAnchorPoint(richText, 0, 0.5)
if BColorEnable then
GUI:RichTextFCOLOR_setBackgroundColor(richText, BColorHex)
end
if not scrollAble then
scrollSize = GUI:getContentSize(richText)
scrollAble = scrollSize.width > capacitySize.width
end
local richTextSize = GUI:getContentSize(richText)
GUI:setContentSize(scrollWidget, capacitySize.width, richTextSize.height)
GUI:setContentSize(layout, capacitySize.width, richTextSize.height)
if remaining < 0 then
GUI:ListView_removeItemByIndex(exList, GUI:ListView_getItemIndex(exList, layout))
resetListView()
ChatData.RemoveChatExItemsData(data)
end
remaining = remaining - 1
end
SL:schedule(layout, callback, 1)
callback()
-- 滚动
if scrollAble then
local time = (scrollSize.width - capacitySize.width) / 50
GUI:runAction(scrollWidget,
GUI:ActionRepeatForever(GUI:ActionSequence(GUI:ActionMoveTo(time, capacitySize.width - scrollSize.width, 0),
GUI:DelayTime(3), GUI:ActionMoveTo(0, 0, 0))))
end
end
function MainProperty.OnChatExClear()
if not MainProperty._listMiniChatEx then
return false
end
GUI:stopAllActions(MainProperty._listMiniChatEx)
GUI:removeAllChildren(MainProperty._listMiniChatEx)
end
function MainProperty.OnChatAutoShout(data)
if data and data.openChat and MainProperty._fristCheckAuto then
return false
end
if not MainProperty._fristCheckAuto then
MainProperty._fristCheckAuto = true
end
if not ChatData.GetAutoShoutSwitch() then
return GUI:stopActionByTag(MainProperty._panelMiniChat, 888)
end
local shoutInput = ChatData.GetLocalChatDataByChannel(GUIDefine.ChatChannel.SHOUT)
if not shoutInput or shoutInput == "" then
return false
end
-- 发送
local function sendChatMsg(input, channel)
if not channel or not GUIFunction:CheckAbleToSayByChannel(channel) then
return false
end
local sendData = {
textType = GUIDefine.ChatTextType.NORMAL,
msg = input,
channel = channel,
risk = 0,
oriMsg =
input,
status = 0
}
GUIFunction:SendChatMsg(sendData)
end
-- 自动喊话开关
local autoShoutCallback = nil
autoShoutCallback = function(shoutInput)
GUI:stopActionByTag(MainProperty._panelMiniChat, 888)
if not shoutInput or shoutInput == "" then
return false
end
if not ChatData.GetAutoShoutSwitch() then
return false
end
local delay = ChatData.GetAutoShoutDelay()
local action = SL:schedule(MainProperty._panelMiniChat, function()
-- 发送
sendChatMsg(shoutInput, GUIDefine.ChatChannel.SHOUT)
end, delay)
GUI:setTag(action, 888)
--
sendChatMsg(shoutInput, GUIDefine.ChatChannel.SHOUT)
end
autoShoutCallback(shoutInput)
end
---------------------------------------------------------------------------------------------
------------------------------ 内功相关 ------------------------------------------------------
function MainProperty.InitInternalUI()
-- 斗转
local dzBg = MainProperty._ui["Image_barbg_dz"]
if dzBg then
GUI:addOnClickEvent(dzBg, function()
local curDZValue = SL:GetValue("CUR_ABIL_BY_ID", GUIDefine.AttTypeTable.Internal_DZValue) or 0
local maxDZValue = SL:GetValue("MAX_ABIL_BY_ID", GUIDefine.AttTypeTable.Internal_DZValue) or 0
local str = string.format("斗转星移值: %s/%s", curDZValue, maxDZValue)
local pos = GUI:getWorldPosition(dzBg)
local data = {}
data.str = str
data.worldPos = { x = pos.x, y = pos.y + GUI:getContentSize(dzBg).height }
data.anchorPoint = { x = 0, y = 1 }
UIOperator:OpenCommonDescTipsUI(data)
end)
end
-- 醉酒
local zjBg = MainProperty._ui["Image_barbg_zj"]
if zjBg then
GUI:addOnClickEvent(zjBg, function()
local per = 0
local str = string.format("醉酒值: %s%%", per)
local pos = GUI:getWorldPosition(zjBg)
local data = {}
data.str = str
data.worldPos = { x = pos.x, y = pos.y + GUI:getContentSize(zjBg).height }
data.anchorPoint = { x = 0, y = 1 }
UIOperator:OpenCommonDescTipsUI(data)
end)
end
end
function MainProperty.OnRefreshNGShow()
if SL:GetValue("GAME_DATA", "OpenNGUI") ~= 1 then
return
end
-- 斗转星移值
if not MainProperty._dzPanelHei then
MainProperty._dzPanelHei = GUI:getContentSize(MainProperty._ui["Panel_bar_dz"]).height
end
local wid = GUI:getContentSize(MainProperty._ui["Panel_bar_dz"]).width
local curDZValue = SL:GetValue("CUR_ABIL_BY_ID", GUIDefine.AttTypeTable.Internal_DZValue)
local maxDZValue = SL:GetValue("MAX_ABIL_BY_ID", GUIDefine.AttTypeTable.Internal_DZValue)
local per = 0
if curDZValue and maxDZValue and maxDZValue > 0 then
per = curDZValue / maxDZValue
end
GUI:setContentSize(MainProperty._ui["Panel_bar_dz"], { width = wid, height = MainProperty._dzPanelHei * per })
-- 醉酒值
if not MainProperty._zjPanelHei then
MainProperty._zjPanelHei = GUI:getContentSize(MainProperty._ui["Panel_bar_zj"]).height
end
local wid = GUI:getContentSize(MainProperty._ui["Panel_bar_zj"]).width
local per = 0
GUI:setContentSize(MainProperty._ui["Panel_bar_zj"], { width = wid, height = MainProperty._zjPanelHei * per })
MainProperty._NGShow = tonumber(SL:GetValue("GAME_DATA", "OpenNGUI")) == 1 and SL:GetValue("IS_LEARNED_INTERNAL")
MainProperty.OnRefreshDZShow()
GUI:setVisible(MainProperty._ui["Image_barbg_zj"], ON_OFF_zuijiu)
GUI:setTouchEnabled(MainProperty._ui["Image_barbg_zj"], MainProperty._NGShow and ON_OFF_zuijiu)
end
function MainProperty.OnRefreshDZShow()
local dzBg = MainProperty._ui["Image_barbg_dz"]
if dzBg and not MainProperty._uiSetHide[11] then
if SL:GetValue("SKILL_DATA", DZXY_SkillID) then
GUI:setVisible(dzBg, MainProperty._NGShow and true)
GUI:setTouchEnabled(dzBg, MainProperty._NGShow and true)
else
GUI:setVisible(dzBg, false)
GUI:setTouchEnabled(dzBg, false)
end
end
end
---------------------------------------------------------------------------------------------
function MainProperty.OnRefreshPropertyShow()
--Level
local roleLevel = SL:GetValue("LEVEL")
local reinLv = SL:GetValue("RELEVEL") or 0
local str = string.format("%s%s", reinLv > 0 and reinLv .. "转" or "", roleLevel .. "级")
GUI:Text_setString(MainProperty._ui["Text_level"], str)
--EXP
local curExp = SL:GetValue("EXP")
local maxExp = SL:GetValue("MAXEXP")
local expPer = maxExp == 0 and 0 or curExp / maxExp * 100
GUI:LoadingBar_setPercent(MainProperty._ui["LoadingBar_exp"], expPer)
GUI:Text_setString(MainProperty._ui["Text_exp"], string.format("%.1f%%", expPer))
--HPMP
local curHP = SL:GetValue("HP")
local maxHP = SL:GetValue("MAXHP")
local curMP = SL:GetValue("MP")
local maxMP = SL:GetValue("MAXMP")
local hpPer = curHP / maxHP * 100
local mpPer = curMP / maxMP * 100
GUI:Text_setString(MainProperty._ui["Text_hp"], string.format("%s/%s", SL:HPUnit(curHP), SL:HPUnit(maxHP)))
GUI:Text_setString(MainProperty._ui["Text_mp"], string.format("%s/%s", SL:HPUnit(curMP), SL:HPUnit(maxMP)))
local roleJob = SL:GetValue("JOB")
if roleLevel < 28 and roleJob == 0 then -- 战士等级小于28 显示全血
GUI:setVisible(MainProperty._ui["LoadingBar_hp"], false)
GUI:setVisible(MainProperty._ui["LoadingBar_mp"], false)
GUI:setVisible(MainProperty._ui["Image_divide"], false)
GUI:setVisible(MainProperty._ui["LoadingBar_fhp"], true)
GUI:LoadingBar_setPercent(MainProperty._ui["LoadingBar_fhp"], hpPer)
else
GUI:setVisible(MainProperty._ui["LoadingBar_hp"], true)
GUI:setVisible(MainProperty._ui["LoadingBar_mp"], true)
GUI:setVisible(MainProperty._ui["Image_divide"], false)
GUI:setVisible(MainProperty._ui["LoadingBar_fhp"], false)
GUI:LoadingBar_setPercent(MainProperty._ui["LoadingBar_hp"], hpPer)
GUI:LoadingBar_setPercent(MainProperty._ui["LoadingBar_mp"], mpPer)
end
-- 刷新魔血球动画
MainProperty.RefreshSfxShowPercent()
-- 刷新内功相关显示
MainProperty.OnRefreshNGShow()
end
function MainProperty.OnRefreshNetShow()
-- 网络类型 -1:未识别 0:wifi 1:蜂窝
local netType = SL:GetValue("NET_TYPE")
if MainProperty._ui["Image_net"] and netType then
if netType == 0 then
GUI:Image_loadTexture(MainProperty._ui["Image_net"], "res/private/main/Other/1900012501.png")
else
GUI:Image_loadTexture(MainProperty._ui["Image_net"], "res/private/main/Other/1900012500.png")
end
end
end
function MainProperty.OnRefreshBatteryShow(data)
local per = tonumber(data or SL:GetValue("BATTERY"))
if MainProperty._ui["LoadingBar_battery"] and per then
GUI:LoadingBar_setPercent(MainProperty._ui["LoadingBar_battery"], per)
end
end
function MainProperty.OnShowOrHideAutoFightTips(status)
if status then
GUI:setVisible(MainProperty._nodeAutoMove, false)
GUI:setVisible(MainProperty._nodeAutoFight, true)
else
GUI:setVisible(MainProperty._nodeAutoFight, false)
end
end
function MainProperty.OnShowOrHideAutoMoveTips(status)
if status then
GUI:setVisible(MainProperty._nodeAutoFight, false)
GUI:setVisible(MainProperty._nodeAutoMove, true)
else
GUI:setVisible(MainProperty._nodeAutoMove, false)
end
end
function MainProperty.OnReinAttrChange()
local point = SL:GetValue("BONUS_POINT")
local isshow = point and tonumber(point) > 0 or false
GUI:setVisible(MainProperty._ui["btn_rein_add"], isshow)
end
-- 脚本添加魔血球动画
function MainProperty.OnPlayMagicBallEffect(data)
local prefixL = { "hp_", "mp_", "fhp_" }
local tagList = { "HPSFX", "MPSFX", "FHPSFX" }
if data.type < 0 or data.type > 2 or data.count < 0 or data.interval < 0 then
return
end
local scale = data.scale == 0 and 1 or (data.scale / 100)
local timeval = data.interval / 1000
local prefix = prefixL[data.type + 1] or ""
local ani = GUI:Animation_Create()
local pSize = { width = 0, height = 0 }
for i = data.beginNum, data.beginNum + data.count - 1 do
local path = string.format("res/private/mhp_ui/%s%s.png", prefix, i)
if SL:IsFileExist(path) then
local sp = GUI:Sprite_Create(-1, "sp", 0, 0, path)
pSize = GUI:getContentSize(sp)
GUI:Animation_addSpriteFrame(ani, GUI:Sprite_getSpriteFrame(sp))
end
end
GUI:Animation_setDelayPerUnit(ani, timeval)
GUI:Animation_setLoops(ani, 1)
GUI:Animation_setRestoreOriginalFrame(ani, true)
local contentSize = { width = pSize.width * scale, height = pSize.height * scale }
local tag = tagList[data.type + 1]
local widget = MainProperty._ui[string.format("Panel_%ssfx", prefix)]
local sprite
if tag and widget then
MainProperty._pSize[tag] = contentSize
GUI:setContentSize(widget, contentSize.width, contentSize.height)
if not GUI:getChildByName(widget, tag) then
sprite = GUI:Sprite_Create(widget, tag, 0, 0)
GUI:setScale(sprite, scale)
GUI:runAction(sprite, GUI:ActionRepeatForever(GUI:ActionAnimate(ani)))
end
end
if data.time ~= -1 and data.time > 0 then
SL:ScheduleOnce(function()
if sprite and not GUI:Widget_IsNull(sprite) then
GUI:stopAllActions(sprite)
GUI:removeFromParent(sprite)
end
end, data.time)
end
GUI:setVisible(MainProperty._ui["Panel_hp_sfx"], data.type ~= 2)
GUI:setVisible(MainProperty._ui["Panel_mp_sfx"], data.type ~= 2)
GUI:setVisible(MainProperty._ui["Panel_fhp_sfx"], true)
if data.type == 0 then -- HP
GUI:setPosition(widget, data.offsetX, data.offsetY)
elseif data.type == 1 then -- MP
local hpPosX = GUI:getPositionX(MainProperty._ui["Panel_hp_sfx"])
local hpWidth = GUI:getContentSize(MainProperty._ui["Panel_hp_sfx"]).width
GUI:setPosition(widget, hpPosX + hpWidth + 4 + data.offsetX, data.offsetY)
elseif data.type == 2 then -- FHP
GUI:setPosition(widget, data.offsetX, data.offsetY)
end
MainProperty._drawHWay[tag] = data.drawHWay
if data.drawHWay and data.drawHWay == 1 then --按HP/MP真实高度绘制
MainProperty.RefreshSfxShowPercent()
end
end
function MainProperty.RefreshSfxShowPercent()
--HPMP
local curHP = SL:GetValue("HP")
local maxHP = SL:GetValue("MAXHP")
local curMP = SL:GetValue("MP")
local maxMP = SL:GetValue("MAXMP")
local hpPer = curHP / maxHP
local mpPer = curMP / maxMP
local roleJob = SL:GetValue("JOB")
local roleLevel = SL:GetValue("LEVEL")
if roleLevel < 28 and roleJob == 0 then -- 战士等级小于28 显示全血
if MainProperty._ui["Panel_hp_sfx"] and MainProperty._ui["Panel_mp_sfx"] then
GUI:setVisible(MainProperty._ui["Panel_hp_sfx"], false)
GUI:setVisible(MainProperty._ui["Panel_hp_sfx"], false)
GUI:setVisible(MainProperty._ui["Panel_fhp_sfx"], true)
end
else
if MainProperty._ui["Panel_hp_sfx"] and MainProperty._ui["Panel_mp_sfx"] then
GUI:setVisible(MainProperty._ui["Panel_hp_sfx"], true)
GUI:setVisible(MainProperty._ui["Panel_mp_sfx"], true)
GUI:setVisible(MainProperty._ui["Panel_fhp_sfx"], false)
end
end
local prefixL = { "hp_", "mp_", "fhp_" }
local tagList = { "HPSFX", "MPSFX", "FHPSFX" }
for _, tag in ipairs(tagList) do
local widget = MainProperty._ui[string.format("Panel_%ssfx", prefixL[_])]
if widget and GUI:getChildByName(widget, tag) then
local pSize = MainProperty._pSize[tag]
local drawHWay = MainProperty._drawHWay[tag]
if not pSize or (not drawHWay) or drawHWay ~= 1 then
return
end
local percent = tag == "MPSFX" and mpPer or hpPer
GUI:setContentSize(widget, pSize.width, pSize.height * percent)
end
end
end
----------------------------- 倒计时提示 -----------------------------------------------------
function MainProperty.OnAddQuitTimeTips(data)
if not data or not data.time or not data.type then
return false
end
local time
local type = data.type -- 1 小退 2 大退
local Node_quit_tip = MainProperty._ui["Node_quit_tip"]
if not Node_quit_tip then
return false
end
local tips = {
[1] = "%s秒后将返回选角界面",
[2] = "%s秒后将退出游戏",
}
local function refreshTime()
time = time and time - 1 or data.time
local str = string.format(tips[type], time)
GUI:removeAllChildren(Node_quit_tip)
local width = SL:GetValue("SCREEN_WIDTH")
local richText = GUI:RichText_Create(Node_quit_tip, "richtips", 0, 0, str, width,
SL:GetValue("GAME_DATA", "DEFAULT_FONT_SIZE") or 16, "#ffffff")
GUI:setAnchorPoint(richText, 0.5, 0)
end
GUI:stopAllActions(Node_quit_tip)
SL:schedule(Node_quit_tip, refreshTime, 1)
refreshTime()
end
function MainProperty.OnDelQuitTimeTips()
local Node_quit_tip = MainProperty._ui["Node_quit_tip"]
if not Node_quit_tip then
return false
end
GUI:stopAllActions(Node_quit_tip)
GUI:removeAllChildren(Node_quit_tip)
end
---------------------------------------------------------------------------------------------
---------------------------- 窗体尺寸改变 ----------------------------------------------------
function MainProperty.OnWindowChange()
GUI:setPositionX(MainProperty._root, SL:GetValue("SCREEN_WIDTH") / 2)
end
---------------------------------------------------------------------------------------------
------------------------------ 注册事件 ------------------------------------------------------
function MainProperty.RegisterEvent(...)
-- 气泡相关
SL:RegisterLUAEvent(LUA_EVENT_BUBBLETIPS_STATUS_CHANGE, "MainProperty", MainProperty.OnRefreshBubbleTips)
-- 注册事件
SL:RegisterLUAEvent(LUA_EVENT_HPMP_CHANGE, "MainProperty", MainProperty.OnRefreshPropertyShow)
SL:RegisterLUAEvent(LUA_EVENT_LEVEL_CHANGE, "MainProperty", MainProperty.OnRefreshPropertyShow)
SL:RegisterLUAEvent(LUA_EVENT_EXP_CHANGE, "MainProperty", MainProperty.OnRefreshPropertyShow)
SL:RegisterLUAEvent(LUA_EVENT_ROLE_PROPERTY_CHANGE, "MainProperty", MainProperty.OnRefreshPropertyShow)
SL:RegisterLUAEvent(LUA_EVENT_NET_CHANGE, "MainProperty", MainProperty.OnRefreshNetShow)
SL:RegisterLUAEvent(LUA_EVENT_BATTERY_CHANGE, "MainProperty", MainProperty.OnRefreshBatteryShow)
-- 脚本展示魔血球动画
SL:RegisterLUAEvent(LUA_EVENT_PLAY_MAGICBALL_EFFECT, "MainProperty", MainProperty.OnPlayMagicBallEffect)
-- 自动提示相关
SL:RegisterLUAEvent(LUA_EVENT_AUTOFIGHT_TIPS_SHOW, "MainProperty", MainProperty.OnShowOrHideAutoFightTips)
SL:RegisterLUAEvent(LUA_EVENT_AUTOMOVE_TIPS_SHOW, "MainProperty", MainProperty.OnShowOrHideAutoMoveTips)
-- 英雄相关
SL:RegisterLUAEvent(LUA_EVENT_HERO_ANGER_CHANGE, "MainProperty", MainProperty.OnHeroAngerChange)
SL:RegisterLUAEvent(LUA_EVENT_HERO_LOGIN, "MainProperty", MainProperty.OnHeroLoginOrOut)
SL:RegisterLUAEvent(LUA_EVENT_HERO_LOGOUT, "MainProperty", MainProperty.OnHeroLoginOrOut)
-- 转生点改变
SL:RegisterLUAEvent(LUA_EVENT_REIN_ATTR_CHANGE, "MainProperty", MainProperty.OnReinAttrChange)
-- 学习内功
SL:RegisterLUAEvent(LUA_EVENT_PLAYER_LEARNED_INTERNAL, "MainProperty", MainProperty.OnRefreshNGShow)
-- 斗转值改变
SL:RegisterLUAEvent(LUA_EVENT_PLAYER_INTERNAL_DZVALUE_CHANGE, "MainProperty", MainProperty.OnRefreshNGShow)
-- 技能初始化/增加/删除
SL:RegisterLUAEvent(LUA_EVENT_SKILL_INIT, "MainProperty", MainProperty.OnRefreshDZShow)
SL:RegisterLUAEvent(LUA_EVENT_SKILL_ADD, "MainProperty", MainProperty.OnRefreshDZShow)
SL:RegisterLUAEvent(LUA_EVENT_SKILL_DEL, "MainProperty", MainProperty.OnRefreshDZShow)
SL:RegisterLUAEvent(LUA_EVENT_CHATMINI_ITEM_ADD, "MainProperty", MainProperty.OnChatMiniAddItem)
SL:RegisterLUAEvent(LUA_EVENT_CHAT_EX_NOTICE_ADD, "MainProperty", MainProperty.OnShowChatExNotice)
SL:RegisterLUAEvent(LUA_EVENT_QUICKUSE_DATA_OPER, "MainProperty", MainProperty.OnQuickUseChange)
SL:RegisterLUAEvent(LUA_EVENT_QUICKUSE_ITEM_REFRESH, "MainProperty", MainProperty.OnQuickUseRefresh)
SL:RegisterLUAEvent(LUA_EVENT_MAIN_ADD_QUIT_TIME_TIPS, "MainProperty", MainProperty.OnAddQuitTimeTips)
SL:RegisterLUAEvent(LUA_EVENT_MAIN_DEL_QUIT_TIME_TIPS, "MainProperty", MainProperty.OnDelQuitTimeTips)
SL:RegisterLUAEvent(LUA_EVENT_MAIN_CHAT_EX_CLEAR, "MainProperty", MainProperty.OnChatExClear)
SL:RegisterLUAEvent(LUA_EVENT_CHAT_MOBILE_AUTO_SHOUT, "MainProperty", MainProperty.OnChatAutoShout)
SL:RegisterLUAEvent(LUA_EVENT_WINDOW_CHANGE, "MainProperty", MainProperty.OnWindowChange)
end
----------------------------------------------------------------------------------------------
MainProperty.main()