lua - 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
如果您对某些整数的来源感到困惑,那么它来自脚本的其他部分。虽然我已经测试过它们是否有效。只是需要一些网络帮助。
提前致谢!
解决方案
我通过绕过整个 currentplayer 概念来解决这个问题。相反,我决定对玩家进行数学计算,如下所示。
服务器端:
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
推荐阅读
- angular - 子路由是否需要默认组件
- php - 无法在php中输出最后一个自动生成的ID
- python - 当 boto3 client.put_object() 不成功时会发生什么?
- r - 如何在保留所有列的同时按 ID 分组并使用 dplyr 对它们的存在进行二分法?
- dart - 如何在颤振中获得其他类的功能?
- react-leaflet - 如何将我的自定义地图图块的返回 url 传递给 react-leaflet?
- c++ - 高精度线程同步
- html - 在css中裁剪视频的底部
- vba - 当特定范围内的值 = 同一张表中另一个范围内的值时,则
- javascript - 在 Node.js 中打印年份的最短方法?