我想添加内挂功能,被玩家攻击时,可以设定"不处理,反击,逃跑"3个选项
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-05-21 17:15:47 |
👁️ 阅读: 4
根据浮生梦老师前端课程内容,要实现内挂功能中的"被玩家攻击时"设置选项,可以按照以下步骤创建:
## 1. 创建设置界面布局
```lua
-- 创建父容器
local parent = GUI:Win_Create("GMMain", 0, 0, 0, 0, false, false, true, false, false, false, 1)
-- 创建设置项容器
local setSelectContent = GUI:Layout_Create(parent, "setSelectContent", 9, 127, 280, 45, false)
GUI:Layout_setBackGroundColorOpacity(setSelectContent, 255)
GUI:Layout_setBackGroundImage(setSelectContent, "")
GUI:setAnchorPoint(setSelectContent, 0, 1)
GUI:setTag(setSelectContent, 60)
GUI:setTouchEnabled(setSelectContent, true)
-- 创建描述文本
local text_desc = GUI:Text_Create(setSelectContent, "text_desc", 15, 22, 16, "#FFFFFF", "被玩家攻击")
GUI:Text_enableOutline(text_desc, "#000000", 0)
GUI:setAnchorPoint(text_desc, 0, 0.5)
GUI:setContentSize(text_desc, 80, 18)
GUI:setIgnoreContentAdaptWithSize(text_desc, true)
GUI:setTag(text_desc, 62)
-- 创建选择面板
local Panel_select = GUI:Layout_Create(setSelectContent, "Panel_select", 104, 22, 120, 28, false)
GUI:Layout_setBackGroundColorOpacity(Panel_select, 255)
GUI:Layout_setBackGroundImage(Panel_select, "")
GUI:setAnchorPoint(Panel_select, 0, 0.5)
GUI:setTag(Panel_select, 164)
GUI:setTouchEnabled(Panel_select, true)
-- 创建背景图片
local Image_bg = GUI:Image_Create(Panel_select, "Image_bg", 60, 14, "res/public/text_bg_1.png")
GUI:setAnchorPoint(Image_bg, 0.5, 0.5)
GUI:setContentSize(Image_bg, 120, 26)
GUI:setTag(Image_bg, 165)
-- 创建选项显示文本
local Text_desc_2 = GUI:Text_Create(Panel_select, "Text_desc_2", 50, 14, 16, "#FFFFFF", "不处理")
GUI:Text_enableOutline(Text_desc_2, "#000000", 0)
GUI:setAnchorPoint(Text_desc_2, 0.5, 0.5)
GUI:setContentSize(Text_desc_2, 48, 18)
GUI:setIgnoreContentAdaptWithSize(Text_desc_2, true)
GUI:setTag(Text_desc_2, 167)
-- 创建下拉箭头
local Image_2 = GUI:Image_Create(Panel_select, "Image_2", 105, 13, "res/private/setting/img_arrow.png")
GUI:setAnchorPoint(Image_2, 0.5, 0.5)
GUI:setContentSize(Image_2, 21, 17)
GUI:setTag(Image_2, 166)
```
## 2. 添加选项逻辑处理
```lua
-- 定义选项数组
local items = { "不处理", "反击", "逃跑" }
-- 获取当前设置值
local values = SL:GetMetaValue("SETTING_VALUE", SLDefine.SETTINGID.SETTING_IDX_BEDAMAGED_PLAYER)
-- 设置默认值
if not values[1] or (values[1] and values[1] == 0) then
values[1] = 1 -- 默认为"不处理"
end
-- 显示当前选项
GUI:Text_setString(Text_desc_2, items[values[1]])
-- 添加点击事件
GUI:addOnClickEvent(Panel_select, function()
if #items == 0 then
return
end
local func = function(res)
if res ~= 0 then -- 0表示关闭,非0表示选中的编号
-- 保存设置值
SL:SetMetaValue("SETTING_VALUE", SLDefine.SETTINGID.SETTING_IDX_BEDAMAGED_PLAYER, { res })
-- 更新显示文本
GUI:Text_setString(Text_desc_2, items[res])
end
end
-- 获取面板位置和大小
local size = GUI:getContentSize(Panel_select)
local position = GUI:convertToWorldSpace(Panel_select, 0, 0)
-- 打开选择列表
SL:OpenSelectListUI(items, position, size.width, size.height, func)
end)
```
## 3. 设置ID定义(需要在SLDefine中找到对应ID)
根据浮生梦老师前端课程内容,需要使用以下设置ID:
```lua
-- 被玩家攻击时的设置ID
SLDefine.SETTINGID.SETTING_IDX_BEDAMAGED_PLAYER
```
## 4. 功能说明
1. **三个选项**:
- "不处理":被玩家攻击时不采取行动
- "反击":被玩家攻击时自动反击
- "逃跑":被玩家攻击时自动逃跑
2. **数据存储**:
- 使用`SL:GetMetaValue`获取当前设置值
- 使用`SL:SetMetaValue`保存用户选择
3. **界面交互**:
- 点击选择面板弹出选项列表
- 选择后自动更新显示和保存设置
这个实现方式与996引擎的内挂设置系统完全一致,确保了功能兼容性和稳定性。
← 返回问答库