Gmod lua 试图用错误的键索引字符串值('addmoney' 不是字符串库的一部分)

尝试运行我的脚本时,我一直收到这个错误:

[ERROR] addons/moneymanagement/lua/autorun/derma.init.lua:7: attempt to index a string value with bad
 key ('addMoney' is not part of the string library)
  1. error - [C]:-1
   2. __index - lua/includes/extensions/string.lua:297
    3. func - addons/moneymanagement/lua/autorun/derma.init.lua:7
     4. unknown - lua/includes/extensions/net.lua:32

服务端:

util.AddNetworkString("add_money")
net.Receive("add_money", function()
local currentplayer = net.ReadString()
local moneyamount = net.ReadUInt(24)
currentplayer:addMoney(moneyamount)

end)

客户端:

--add_money
addbutton = vgui.Create("DButton", f)
addbutton:Center()
addbutton:SetText("Add Money")
addbutton:SetSize(220, 80)
addbutton:SetPos(450, 65)
function addbutton:DoClick()
--Include net function here
--https://maurits.tv/data/garrysmod/wiki/wiki.garrysmod.com/index1b73.html
print("Sent playername " .. SelectedPlayer .. " and amount " .. input:GetValue() .. " to server") --debug
print(SelectedPlayer) --debug
net.Start("add_money")
net.WriteString(SelectedPlayer)
net.WriteUInt(input:GetValue(), 24)
net.SendToServer()
-- Still need to add server side net
-- Remember to define
    end

如果你对一些整数的来源感到困惑,这些整数来自脚本的其他部分。虽然我已经测试过它们是否工作。只需要一些有关网络的帮助。

提前谢谢!

点赞
用户12918181
用户12918181
`local currentplayer = net.ReadString()` 

`net.ReadString()` 是一个字符串,你需要这样写:

local currentplayer = getPlayer(net.ReadString()) currentplayer:addMoney(moneyamount)


2020-02-20 15:56:38
用户12933405
用户12933405

我通过避开当前玩家的概念来解决了这个问题。 相反,我决定像下面展示的那样使用玩家的 steamid 进行数学计算。

服务器端:

util.AddNetworkString("add_money")

net.Receive("add_money", function()
--local currentplayer = net.ReadEntity()
local moneyamount = net.ReadUInt(24)
local currentplayersteamid = net.ReadString()
print("This is how much to give: " .. moneyamount)
print("current steamid " .. currentplayersteamid)

for k, v in pairs( player.GetAll()) do
--  print(v) --debug
    gather = v:SteamID()
if tostring(gather) == currentplayersteamid then

    v:addMoney(moneyamount)

return end
end

客户端:

--add_money
addbutton = vgui.Create("DButton", f)
addbutton:Center()
addbutton:SetText("Add Money")
addbutton:SetSize(220, 80)
addbutton:SetPos(450, 65)
function addbutton:DoClick()
--Include net function here
--https://maurits.tv/String/garrysmod/wiki/wiki.garrysmod.com/index1b73.html
print("Sent playername " .. SelectedPlayer .. " and amount " .. input:GetValue() .. " to server") --debug
print(SelectedPlayer) --debug
net.Start("add_money")
--net.WriteString(SelectedPlayer)
net.WriteUInt(input:GetValue(), 24)
net.WriteString(PlayerSteamID)
net.SendToServer()
-- Still need to add server side net
-- Remember to define
    end
2020-02-20 17:41:15