local SCALE = 0.5
local Letters = {
A={"00100","01010","01110","01010","01010"},
B={"01100","01010","01110","01010","01100"},
C={"01110","01000","01000","01000","01110"},
D={"01100","01010","01010","01010","01100"},
E={"01110","01000","01110","01000","01110"},
F={"01110","01000","01110","01000","01000"},
G={"01110","01000","01010","01010","01110"},
H={"01010","01010","01110","01010","01010"},
I={"01110","00100","00100","00100","01110"},
J={"00100","00100","10100","10100","01000"},
K={"01001","01010","01000","01010","01001"},
L={"01000","01000","01000","01000","01111"},
M={"11111","10101","10101","10101","10101"},
N={"10001","11001","10101","10011","10001"},
O={"01110","01010","01010","01010","01110"},
P={"01110","01010","01100","01000","01000"},
Q={"11110","11010","10110","10010","11111"},
R={"11111","10001","11111","10010","10001"},
S={"11111","10000","11111","00001","11111"},
T={"11111","00100","00100","00100","00100"},
U={"10001","10001","10001","10001","11111"},
V={"10001","10001","01010","01010","00100"},
W={"10101","10101","10101","01010","01010"},
X={"10001","01010","00100","01010","10001"},
Y={"10001","01010","00100","00100","00100"},
Z={"11111","00001","11111","10000","11111"},
}
local TEXT = getgenv().PlayerText
local function CreateBlock(offset, parent)
local p = Instance.new("Part")
p.Size = Vector3.new(SCALE, SCALE, SCALE)
p.Anchored = false
p.CanCollide = false
p.Material = Enum.Material.Neon
p.Color = Color3.new(1,1,1)
p.CFrame = offset
p.Parent = parent
return p
end
local function CreateLetter(char, baseCFrame, parent)
local map = Letters[char]
if not map then return end
for y = 1, #map do
for x = 1, #map[y] do
if map[y]:sub(x,x) == "1" then
local offset = CFrame.new((x * SCALE), -(y * SCALE), 0)
CreateBlock(baseCFrame * offset, parent)
end
end
end
end
local function BuildText(player)
local char = player.Character
if not char then return end
local head = char:FindFirstChild("Head")
if not head then return end
if char:FindFirstChild("3DText") then
char["3DText"]:Destroy()
end
local model = Instance.new("Model")
model.Name = "3DText"
model.Parent = char
local totalWidth = (#TEXT * 6 * SCALE)
local startX = -(totalWidth / 2)
local offset = CFrame.new(0, 5, 0)
local tilt = CFrame.Angles(0, math.rad(55), 0)
local xOffset = 0
for letter in TEXT:gmatch(".") do
local letterCFrame =
head.CFrame *
CFrame.Angles(0, math.rad(180), 0) *
offset *
CFrame.new(startX + xOffset, 0, 0)
CreateLetter(letter, letterCFrame, model)
xOffset += 6 * SCALE
end
for _, part in ipairs(model:GetChildren()) do
if part:IsA("Part") then
local weld = Instance.new("WeldConstraint")
weld.Part0 = head
weld.Part1 = part
weld.Parent = part
end
end
for _, part in ipairs(model:GetChildren()) do
if part:IsA("Part") then
local proxy = Instance.new("Part")
proxy.Size = Vector3.new(0.2, 0.2, 0.2)
proxy.Transparency = 1
proxy.CanCollide = false
proxy.Anchored = false
proxy.Name = "TextProxy"
proxy.Parent = game.Players.LocalPlayer.Character.gay
proxy.CFrame = part.CFrame
local weld1 = Instance.new("WeldConstraint")
weld1.Part0 = head
weld1.Part1 = proxy
weld1.Parent = proxy
local weld2 = Instance.new("WeldConstraint")
weld2.Part0 = proxy
weld2.Part1 = part
weld2.Parent = part
end
end
end
BuildText(getgenv().Player)