roblox - 如何在 roblox 中制作一个工作团队更换器 GUI?
问题描述
我相信,在 2018 年 Roblox 切换编码平台时,大多数脚本都幸存下来了,但是我今年未能找到适合自己的工作团队变更者,该变更者在单击时会根据您是否在特定组中来更改您的团队。我的脚本编写者说它在工作室中工作,但游戏中弹出一个错误,显示“TeamColor 不是 PlayerGui Stack Begin Script 'Players.Benyal.PlayerGui.Starter GUI.TeamGui.Frame.Research and Development.LocalScript' 的有效成员” ,第 8 行堆栈结束”我的 scipter 尝试了许多不同的方法,但它就是行不通!有什么建议吗?
解决方案
此解决方案使用两个脚本(一个 LocalScript 和一个 Script),请按照以下步骤制作团队更改 GUI!
local teams = game:GetService("Teams")
local settings = {
["GUIHeight"] = 30, --put in a number over 20, or 100 if you want it to fill the screen
["GUIWidth"] = 40, --put in a number over 20, or 100 if you want it to fill the screen
["GUIColor"] = Color3.fromRGB(240,240,240), --color of the team changer gui
["TitleText"] = "Team Changer", --title text in the gui
["TitleFont"] = "ArialBold", --font of title
}
repeat wait() until game.Players.LocalPlayer and game.Players.LocalPlayer.PlayerGui
local plr = game.Players.LocalPlayer
local teamGUI = Instance.new("ScreenGui",plr.PlayerGui)
local frame = Instance.new("Frame",teamGUI)
frame.AnchorPoint,frame.Size,frame.Position,frame.BackgroundColor3 = Vector2.new(0.5,0.5),UDim2.new(settings.GUIWidth/100,0,settings.GUIHeight/100,0),UDim2.new(0.5,0,0.5,0),settings.GUIColor
local title = Instance.new("TextLabel",frame)
title.Text,title.Font,title.Size,title.TextScaled,title.BackgroundTransparency = settings.TitleText,settings.TitleFont,UDim2.new(1,0,0.15,0),true,0.5
local closebutton = Instance.new("TextButton",title)
closebutton.Size,closebutton.Position,closebutton.BackgroundColor3,closebutton.Text = UDim2.new(0.1,0,1,0),UDim2.new(0.9,0,0,0),Color3.fromRGB(255,155,155),"Close"
local list = Instance.new("ScrollingFrame",frame)
list.Size,list.Position,list.BackgroundTransparency = UDim2.new(1,0,0.85,0),UDim2.new(0,0,0.15,0),1
local UILayout = Instance.new("UIListLayout",list)
local serverTeamHandler = game.ReplicatedStorage:WaitForChild("teamChanger")
local getTeams = teams:GetChildren() --this part checks if you have teams in your game (you need to have put the teams in your game already)
for i,v in pairs(getTeams) do
print("[Team " .. i .. " found]: " .. v:GetFullName())
local teamButton = Instance.new("TextButton",list)
teamButton.BackgroundColor3 = v.TeamColor.Color
teamButton.Size = UDim2.new(1,0,0,40)
teamButton.Text,teamButton.TextColor3,teamButton.TextStrokeTransparency,teamButton.TextScaled = v.Name,Color3.fromRGB(255,255,255),0.7,true
teamButton.MouseButton1Down:connect(function()
print("You changed teams. You are now in: " .. v.Name)
serverTeamHandler:InvokeServer(v)
end)
end
closebutton.MouseButton1Click:connect(function()
frame:TweenPosition(UDim2.new(0.5,0,2,0),"Out","Quad",0.5)
local returnButton = Instance.new("TextButton",teamGUI)
returnButton.Size,returnButton.Position,returnButton.Text,returnButton.TextScaled = UDim2.new(0,200,0,50),UDim2.new(0.5,-100,1,-50),"Open Team Changer",true
returnButton.MouseButton1Down:connect(function()
returnButton:Destroy()
frame:TweenPosition(UDim2.new(0.5,0,0.5,0),"Out","Elastic",1,true)
end)
end)
步骤 1将 LocalScript 插入 StarterGui
第 2 步复制上面的东西并将其粘贴到这个 LocalScript 中
第 3 步将脚本插入 Workspace 或 ServerScriptService(您的选择)
第 4 步复制下面的内容并将其粘贴到脚本中
local teamChanger = Instance.new("RemoteFunction",game.ReplicatedStorage)
teamChanger.Name = "teamChanger"
local function changeTeam(client,team)
print(client.Name .. "changed teams: now in" .. team.Name)
client.Team = team
end
teamChanger.OnServerInvoke = changeTeam
如果您正确执行了这些步骤,您现在应该有一个工作团队在您的游戏中更改 GUI!只要您已经在游戏中插入了 Teams,它就可以工作。LocalScript 中的前几行也可以自定义!
推荐阅读
- r - 在 R 中:如何循环 data_A 中的名称以根据 data_A 中的 ColumnNum 从 data_B 中选择列?
- spring - 如何使用spring boot根据参数值保护具有不同身份验证的单页应用程序?
- kubernetes - 什么是 Istio 外部服务?
- c# - 连接两个表与三个 ON
- javascript - 用哈希比较两个对象
- pascal - 文件不存在时程序突然关闭(IOResult 文件处理)
- node.js - 删除请求仅响应 404 not found
- javascript - D3 检索矩形顶点以附加平行四边形(多边形)
- vue.js - v-model 上的 Vue getter 和 setter:
- python - Tfrecords 错误:“无效参数:reshape 的输入是具有 71680 个值的张量,但请求的形状具有 8960”