点击 vgui 按钮时如何调用函数
2021-2-1 16:28:50
收藏:0
阅读:131
评论:2
(我对 Lua 还比较陌生,请原谅我在解释时可能犯的错误)我正试图制作一个任务系统,以便玩家可以在打开实体并选择开始任务时点击任务。我似乎无法想出如何让我的“function npcquestkill()”仅在玩家点击开始任务按钮时启动。任务按钮是“local Button = vgui.Create("DButton", Frame)”。我该如何处理这个问题。
net.Receive("OBJ_OPEN", function()
local Frame = vgui.Create("DFrame")
Frame:SetPos( 700, 400 )
Frame:SetSize( 500, 350 )
Frame:SetTitle( "Objectives" )
Frame:SetVisible( true )
Frame:SetDraggable( false )
Frame:ShowCloseButton( true )
Frame:MakePopup()
Frame.Paint = function( self, w, h )
draw.RoundedBox( 0, 0, 0, w, h, Color( 231, 76, 60, 150 ) )
end
local Button = vgui.Create("DButton", Frame)
Button:SetText( "Kill 10 Covenant in One Session" )
Button:SetTextColor( Color(255,255,255) )
Button:SetPos( 5, 30 )
Button:SetSize( 490, 50 )
Button.Paint = function( self, w, h )
draw.RoundedBox( 0, 0, 0, w, h, Color( 41, 128, 185, 250 ) ) -- 绘制蓝色按钮
end
Button.DoClick = function()
Button:SetText( "Kill 10 Covenant in One Session: In Progress")
vbutton = 2
end
if (vbutton == 2) then
Button:SetText( "Kill 10 Covenant in One Session: In Progress")
elseif (vbutton == 1) then
Button:SetText( "Kill 10 Covenant in One Session" )
end
end)
function npcquestkill()
npckills = npckills + 1
print(npckills)
end
function rewards(ply)
if(npckills == 50)then
ply:AddMoney(1000)
vbutton = 1
end
end
hook.Add("OnNPCKilled","npcquestkill", npcquestkill)
点赞
用户11251604
我似乎弄不清楚如何使我的“function npcquestkill()”只有在玩家点击任务按钮以开始它时才会启动。
当前该函数已挂钩到事件“OnNPCKilled”,即在脚本运行时即可挂钩:
hook.Add("OnNPCKilled","npcquestkill", npcquestkill)
这意味着每次杀死 NPC 时都会执行函数 npcquestkill。
您可以使挂钩在按下按钮时添加,或者使用条件,这样只有在按下按钮后才会增加计数。
话虽如此,如果这是针对多人游戏的,您应该创建一个类,创建玩家对象,每个对象都保持自己的计数。除非当然它是一个全服事件,只有单个计数相关。
2021-02-04 14:52:14
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

根据 DButton 文档,您需要实现以下函数:
就像您已经做了一样。
此函数将在鼠标左键单击(按下和释放)按钮时调用。
官方示例
请注意,您需要将
//替换为--。