首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GMOD Lua使用类型不重要吗?

GMOD Lua使用类型不重要吗?
EN

Stack Overflow用户
提问于 2017-11-27 05:10:17
回答 1查看 1K关注 0票数 0

最近,我一直在为Garry的Mod制作一个模仿的HarborRP游戏表情,我正在尝试重新创建走私者NPC (如果你曾经玩过HarborRP,你会知道我的意思),所以基本上我希望当玩家按下他们的使用键时,NPC打开一个真皮框窗口。我创建了NPC,所有这些都是这样的,但是当播放器按下NPC上的use键时,会弹出100万个窗口,我将NPC/Entity的use类型设置为SIMPLE_USE,但这似乎并不重要,因为弹出了这么多窗口。VGUI/Derma框架的设置设置为MakePopup(),但这也无关紧要。如果你能发现它有什么问题,我对LUA知之甚少。

init.lua文件:

代码语言:javascript
运行
复制
include("shared.lua")
AddCSLuaFile("cl_init.lua")
AddCSLuaFile("shared.lua")

util.AddNetworkString("smug")
hook.Add("PlayerUse", "menuu", function(ply, ent)

    net.Start("smug")
    net.Send(ply)

end)

function ENT:Initialize()
    self:SetModel('models/humans/group01/female_01.mdl')
    self:SetHullType(HULL_HUMAN)
    self:SetHullSizeNormal()
    self:SetNPCState(NPC_STATE_SCRIPT)
    self:SetSolid(SOLID_BBOX)
    self:SetUseType(SIMPLE_USE)
    self:DropToFloor()
end

cl_init.lua文件:

代码语言:javascript
运行
复制
include("shared.lua")

function ENT:Draw()
    self.Entity:DrawModel()
end

net.Receive("smug", function()
if( !frame ) then
    local frame = vgui.Create("DFrame")

    frame:SetSize(900,600)
    frame:SetPos(ScrW()/2-450,ScrH()/2-300)
    frame:SetVisible(true)
    frame:MakePopup()

    frame:SetDeleteOnClose(true)
    elseif (frame) then print("HI")
end
end)

shared.lua文件:

代码语言:javascript
运行
复制
ENT.Base = "base_ai"
ENT.Type = "ai"
ENT.PrintName = "[DEV] Smuggler NPC"
ENT.Category = "InVaLiD's HBRP Entities"
ENT.Author = "InVaLiD"
ENT.Spawnable = true
ENT.AdminSpawnable = true
ENT.AutomaticFrameAdvance = true

需要注意的东西

  1. 所有这些文件都在addons/smug_npc/lua/entities/文件夹中。
  2. 是的,我知道我有奇怪的名字,那就是我。
  3. 我对lua有基本或不认识的知识,所以请解释一下:)
  4. 我真的很感激你的帮助和你帮助别人的意愿,请你知道,我感谢你们来到这里只是为了解决别人的问题,尽管你们可以花时间去做一些有意义的事情,谢谢!
EN

回答 1

Stack Overflow用户

发布于 2017-11-28 02:01:07

您需要将执行net.Send的代码放入实体ENT:Use函数,而不是放在PlayerUse钩子上。

代码语言:javascript
运行
复制
function ENT:Use(ply)
    net.Start("smug")
    net.Send(ply)
end

在初始化函数中的代码中已经包含了下面一行,使实体在播放器按E时只调用ENT:Use函数一次,这似乎是很好的做法:

代码语言:javascript
运行
复制
self:SetUseType(SIMPLE_USE)

此外,如果将来需要开发人员的帮助,我建议查看gmod论坛。

GMod论坛:https://gmod.facepunch.com/f

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47504289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档