【问题标题】:Making an abstract object within a LocalScript (Roblox LUA)在 LocalScript (Roblox LUA) 中创建抽象对象
【发布时间】:2017-06-15 23:39:40
【问题描述】:

我正在尝试在游戏中添加金钱系统。我添加了一个脚本,当将孩子添加到播放器中时,它会在 LocalPlayer 内的 NumberValue 中提供 2500 美元。但是我不确定如何在脚本中创建 NumberValue 并且我不能使用 instance.new 因为 NumberValues 是抽象的。有什么想法吗?

编辑-这是我尝试过的一些代码,它克隆了一个预先存在的 NumberValue

function AddPlayer()
    local Money = script.Parent.Money
    local Clone = Money:Clone()
    Clone.Parent = game.Players.LocalPlayer   
    Clone.Value = 2500
    Clone.Name = "Money"
end

game.Players.ChildAdded:connect(AddPlayer)

【问题讨论】:

  • 能否请您显示一些您尝试过的代码?照原样没有多大意义。
  • 嗯,没有代码可以显示,它现在几乎是一个空函数和一个函数连接
  • 首先,打开FilteringEnabled 并且不要对这些东西使用LocalScripts。这应该在服务器端完成
  • 好吧,我只是假设因为它是玩家的事情,所以应该使用本地脚本。我也不是很热衷于本地脚本。现在也可以了,谢谢!
  • 在本地处理诸如 UI 和鼠标/按键事件之类的事情时使用 LocalScripts,在处理诸如货币之类的可怕重要事情时,请将其保持在服务器端,这样人们就无法利用您的游戏。

标签: lua roblox


【解决方案1】:

我不知道NumberValues 是“抽象”是什么意思(澄清一下?)。但是应该没有什么可以阻止您使用Instance.new创建它

local Money = Instance.new("NumberValue")
Money.Name = "Money"
Money.Value = 2500

作为warspyking said,您应该在服务器上执行此操作,而you should have FilteringEnabled。

基本上用代码将普通脚本放在“Game.ServerScriptService”中:

game:GetService("Players").PlayerAdded:connect(function(player)
    local Money = Instance.new("NumberValue")
    Money.Name = "Money"
    Money.Value = 2500
    Money.Parent = player
end)

还需要注意的是,您应该使用PlayerAdded 而不是ChildAdded,因为PlayerAdded 仅在添加玩家时触发,而ChildAdded 也会在有人将垃圾放入Game.Players 时触发。

【讨论】:

    猜你喜欢
    • 2018-07-28
    • 2016-07-23
    • 2021-08-14
    • 2021-08-27
    • 1970-01-01
    • 2016-07-21
    • 2019-01-10
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多