远程事件不使用给定参数 |罗布乐思
Remote Event doesnt use given arguments | Roblox
客户:
local frame = script.Parent.Parent
script.Parent.MouseButton1Down:Connect(function()
script.Parent.SendReport:FireServer(game.Players.LocalPlayer,script.Parent.Parent.plr.Text, script.Parent.Parent.plr.Text, script.Parent.Parent.text.Text)
end)
服务器:
local event = script.Parent.SendReport
local function SendReport(plr,reportedu,title,text)
local Players = game:GetService("Players")
local http = game:GetService("HttpService")
local webhook = "https://discord.com/api/webhooks/968083074082537492/Rd-lXwnsMK3e7P3Ed0ztJc7jtJO40DSKv_YbMqf9O4_IQD3aWKv6xoJoOkjnfoRqI6bv"
local thumbt = Enum.ThumbnailType.HeadShot
local thumbs = Enum.ThumbnailSize.Size420x420
print(plr)
print(reportedu)
print(title)
print(text)
local se = Players:GetUserThumbnailAsync(plr.UserId,thumbt,thumbs)
local data = {
["embeds"] = {{
["title"] = "A report has been submitted by " .. plr.Name .. ", for the player: " .. reportedu,
["color"] = "000000",
["description"] = "**" .. title .. "**" .. "\n\n" .. text,
["thumbnail"] = se
}
}}
local finaldata = http:JSONEncode(data)
http:PostAsync(webhook, finaldata)
end
event.OnServerEvent:Connect(SendReport)
这是当我点击按钮时发生的事情我厌倦了一切但我无法从正确的文本框中获取文本
https://i.stack.imgur.com/Dqfxu.jpg
错误告诉您您正在尝试像字符串一样使用实例。这是由于 reportedu
变量是 LocalPlayer 对象是 Player 而不是字符串。所以你需要以某种方式将参数字符串化。但是,我相信您在使用 RemoteEvents 时犯了一个常见错误,根本不应该传入 LocalPlayer。
当您使用RemoteEvent:FireServer时,引擎会自动将发送它的播放器添加为第一个参数,您无需提供。
例如,如果您从客户端触发:
event:FireServer(a, b, c)
服务器收到...
event.OnServerEvent:Connect(function(player, a, b, c)
...
end)
这就是为什么您的 reportedu
变量在服务器上显示为 LocalPlayer
的原因。所以要解决这个问题,不要在客户端传递 LocalPlayer。
local frame = script.Parent.Parent
local btn = script.Parent
local event = script.Parent.SendReport
btn.MouseButton1Down:Connect(function()
local reportedu = frame.plr.Text
local title = frame.plr.Text
local text = frame.text.Text
event:FireServer(reportedu, title, text)
end)
客户:
local frame = script.Parent.Parent
script.Parent.MouseButton1Down:Connect(function()
script.Parent.SendReport:FireServer(game.Players.LocalPlayer,script.Parent.Parent.plr.Text, script.Parent.Parent.plr.Text, script.Parent.Parent.text.Text)
end)
服务器:
local event = script.Parent.SendReport
local function SendReport(plr,reportedu,title,text)
local Players = game:GetService("Players")
local http = game:GetService("HttpService")
local webhook = "https://discord.com/api/webhooks/968083074082537492/Rd-lXwnsMK3e7P3Ed0ztJc7jtJO40DSKv_YbMqf9O4_IQD3aWKv6xoJoOkjnfoRqI6bv"
local thumbt = Enum.ThumbnailType.HeadShot
local thumbs = Enum.ThumbnailSize.Size420x420
print(plr)
print(reportedu)
print(title)
print(text)
local se = Players:GetUserThumbnailAsync(plr.UserId,thumbt,thumbs)
local data = {
["embeds"] = {{
["title"] = "A report has been submitted by " .. plr.Name .. ", for the player: " .. reportedu,
["color"] = "000000",
["description"] = "**" .. title .. "**" .. "\n\n" .. text,
["thumbnail"] = se
}
}}
local finaldata = http:JSONEncode(data)
http:PostAsync(webhook, finaldata)
end
event.OnServerEvent:Connect(SendReport)
这是当我点击按钮时发生的事情我厌倦了一切但我无法从正确的文本框中获取文本
https://i.stack.imgur.com/Dqfxu.jpg
错误告诉您您正在尝试像字符串一样使用实例。这是由于 reportedu
变量是 LocalPlayer 对象是 Player 而不是字符串。所以你需要以某种方式将参数字符串化。但是,我相信您在使用 RemoteEvents 时犯了一个常见错误,根本不应该传入 LocalPlayer。
当您使用RemoteEvent:FireServer时,引擎会自动将发送它的播放器添加为第一个参数,您无需提供。
例如,如果您从客户端触发:
event:FireServer(a, b, c)
服务器收到...
event.OnServerEvent:Connect(function(player, a, b, c)
...
end)
这就是为什么您的 reportedu
变量在服务器上显示为 LocalPlayer
的原因。所以要解决这个问题,不要在客户端传递 LocalPlayer。
local frame = script.Parent.Parent
local btn = script.Parent
local event = script.Parent.SendReport
btn.MouseButton1Down:Connect(function()
local reportedu = frame.plr.Text
local title = frame.plr.Text
local text = frame.text.Text
event:FireServer(reportedu, title, text)
end)