Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 如何换回播放器';聊天室中的默认颜色_Lua_Roblox - Fatal编程技术网

Lua 如何换回播放器';聊天室中的默认颜色

Lua 如何换回播放器';聊天室中的默认颜色,lua,roblox,Lua,Roblox,我一直在学习如何更改玩家的聊天颜色和标签,现在我唯一想做的就是将其更改回默认值 这是代码(我只想包括重要的代码) ceValue.Changed:Connect(函数() 本地玩家=游戏。玩家:WaitForChild(ceValue.Value) 本地角色=玩家。角色 而角色 如果chatService~=nil,则 本地扬声器=聊天室服务:GetSpeaker(player.Name) 重复等待(1) speaker=chatService:GetSpeaker(player.Name) 直

我一直在学习如何更改玩家的聊天颜色和标签,现在我唯一想做的就是将其更改回默认值

这是代码(我只想包括重要的代码)

ceValue.Changed:Connect(函数()
本地玩家=游戏。玩家:WaitForChild(ceValue.Value)
本地角色=玩家。角色
而角色
如果chatService~=nil,则
本地扬声器=聊天室服务:GetSpeaker(player.Name)
重复等待(1)
speaker=chatService:GetSpeaker(player.Name)
直到演讲者~=零
扬声器:SetExtraData(“名称颜色”,ceColor)
扬声器:SetExtraData(“ChatColor”,ceColor)
如果ceValue.Value==“”则
对于i,v成对(game.Players:GetChildren())执行
speaker=chatService:GetSpeaker(v.Name)
--///这里是我想改变玩家聊天颜色的地方///---
终止
打破
终止
等待(0.5)
终止
终止
(完)

每个聊天扬声器在创建时都会根据其用户名分配一种颜色。这样,如果每个演讲者离开并加入另一个游戏,他们就不会得到不同的颜色

有两种不同的方法可以检索扬声器的默认颜色

获取默认颜色 省省吧 一旦玩家加入,你可以缓存他们的颜色,然后允许他们修改它。对于这种方法,你必须确保你不允许玩家事先修改他们的颜色-否则,你最终会保存错误的颜色

此代码段将获取其默认颜色,并使用
chatService
中的
ComputeNameColor(player.Name)
存储该颜色

localplayers=game:GetService(“玩家”)
PlayerAdded:Connect(函数(播放器)
本地颜色=ComputeNameColor(player.Name)
本地colorObj=Instance.new(“Color3Value”)
colorObj.Name=“DefaultChatColor”
colorObj.Value=颜色
colorObj.Parent=播放器
(完)
聊天颜色确实由
BrickColor
Color3
值组成,但是Roblox的颜色字典中引用这些
BrickColor
项的属性无论如何都会将它们转换为
Color3

稍后,只需调用
player.DefaultChatColor.Value
即可再次检索聊天颜色

再生 如果无法从Color3值中检索颜色,则始终可以像Roblox那样生成扬声器的默认颜色-对用户名执行数学运算!您需要调用
GetNameColor(Speaker)
来获取演讲者的团队/默认颜色,或者
ComputeNameColor(player.Name)
来完全忽略团队

生成默认颜色的代码出现在第86-127行的
game.Chat.DefaultChatModules.ExtraDataInitializer
中(由于变量名的原因,该代码似乎在其中运行),但如果您在GUI或其他地方工作,则可以克隆该代码:

本地名称\u颜色=
{
颜色3.新(253/255,41/255,67/255),--砖颜色。新(“亮红色”)。颜色,
颜色3.新(1/255,162/255,255/255),--砖颜色。新(“亮蓝色”)。颜色,
颜色3.新(2/255,184/255,87/255),--砖颜色。新(“地球绿”)。颜色,
BrickColor.全新(“亮紫色”).颜色,
BrickColor.全新(“亮橙色”).颜色,
砖颜色。新(“亮黄色”)。颜色,
BrickColor.新(“浅红色紫色”).颜色,
砖颜色。新(“砖黄色”)。颜色,
}
本地函数GetNameValue(pName)
本地值=0
对于索引=1,#pName do
local cValue=string.byte(string.sub(pName,index,index))
本地反向索引=#pName-索引+1
如果#pName%2==1,则
反向索引=反向索引-1
终止
如果反向索引%4>=2,则
cValue=-cValue
终止
值=值+C值
终止
返回值
终止
局部颜色偏移=0
本地函数ComputeNameColor(pName)
返回名称颜色[((GetNameValue(pName)+颜色偏移量)%#名称颜色)+1]
终止
本地函数GetNameColor(扬声器)
本地玩家=演讲者:GetPlayer()
如果是玩家的话
如果player.Team~=零,则
return player.TeamColor.Color
终止
终止
返回ComputeNameColor(speaker.Name)
终止
应用 在本例中,应用新的或旧的聊天颜色应该与您在代码中已经完成的操作相同:使用
speaker:setExtraData(“(x)color”,oldColor)

“重新生成它”
ceValue.Changed:Connect(函数()
本地玩家=游戏。玩家:WaitForChild(ceValue.Value)
本地角色=玩家。角色
而角色
如果chatService~=nil,则
本地扬声器=聊天室服务:GetSpeaker(player.Name)
重复等待(1)
speaker=chatService:GetSpeaker(player.Name)
直到演讲者~=零
扬声器:SetExtraData(“名称颜色”,ceColor)
扬声器:SetExtraData(“ChatColor”,ceColor)
如果ceValue.Value==“”则
对于i,v成对(game.Players:GetChildren())执行
speaker=chatService:GetSpeaker(v.Name)
defColor=GetNameColor(扬声器)
扬声器:SetExtraData(“名称颜色”,defColor)
扬声器:SetExtraData(“ChatColor”,defColor)
终止
打破
终止
等待(0.5)
终止
终止
(完)
“保存它!”
ceValue.Changed:Connect(函数()
本地玩家=游戏。玩家:WaitForChild(ceValue.Value)
本地角色=玩家。角色
而角色
如果chatService~=nil,则
本地扬声器=聊天室服务:GetSpeaker(player.Name)
重复等待(1)
speaker=chatService:GetSpeaker(player.Name)
直到演讲者~=零