-
Notifications
You must be signed in to change notification settings - Fork 0
/
character_api.lua
147 lines (127 loc) · 5.08 KB
/
character_api.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
function SetBodyMesh(player, mesh)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Body")
SkeletalMeshComponent:SetSkeletalMesh(USkeletalMesh.LoadFromAsset(mesh))
end
AddEvent("Character:SetBodyMesh", SetBodyMesh)
function SetHairMesh(player, mesh)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Body")
if(SkeletalMeshComponent == nil) then
return
end
SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Clothing4")
SkeletalMeshComponent:SetSkeletalMesh(USkeletalMesh.LoadFromAsset(mesh))
end
AddEvent("Character:SetHairMesh", SetHairMesh)
function SetHairColor(player, color)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Clothing4")
if(SkeletalMeshComponent == nil) then
return
end
local r, g, b, a = HexToRGBA("0x"..color)
if SkeletalMeshComponent ~= nil then
SkeletalMeshComponent:SetColorParameterOnMaterials("Hair Color", FLinearColor(r / 7,g / 7,b / 7, 1))
end
end
AddEvent("Character:SetHairColor", SetHairColor)
function SetTopMesh(player, mesh)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Body")
if(SkeletalMeshComponent == nil) then
return
end
SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Clothing0")
SkeletalMeshComponent:SetSkeletalMesh(USkeletalMesh.LoadFromAsset(mesh))
end
AddEvent("Character:SetTopMesh", SetTopMesh)
function SetPantMesh(player, mesh)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Body")
if(SkeletalMeshComponent == nil) then
return
end
SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Clothing1")
SkeletalMeshComponent:SetSkeletalMesh(USkeletalMesh.LoadFromAsset(mesh))
end
AddEvent("Character:SetPantMesh", SetPantMesh)
function SetShoesMesh(player, mesh)
if player == -1 then
player = GetPlayerId()
end
local SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Body")
if(SkeletalMeshComponent == nil) then
return
end
SkeletalMeshComponent = GetPlayerSkeletalMeshComponent(player, "Clothing2")
SkeletalMeshComponent:SetSkeletalMesh(USkeletalMesh.LoadFromAsset(mesh))
end
AddEvent("Character:SetShoesMesh", SetShoesMesh)
function CharacterSetPart(player, partType, value)
if partType == "body" then
SetBodyMesh(player, value)
elseif partType == "hair" then
SetHairMesh(player, value)
elseif partType == "hairColor" then
SetHairColor(player, value)
elseif partType == "top" then
SetTopMesh(player, value)
elseif partType == "pant" then
SetPantMesh(player, value)
elseif partType == "shoes" then
SetShoesMesh(player, value)
end
end
AddRemoteEvent("Character:Style:SetPart", CharacterSetPart)
AddEvent("OnPlayerStreamIn", function(player)
if GetPlayerPropertyValue(player, "body") ~= nil then
SetBodyMesh(player, GetPlayerPropertyValue(player, "body"))
SetHairMesh(player, GetPlayerPropertyValue(player, "hair"))
SetHairColor(player, GetPlayerPropertyValue(player, "hairColor"))
SetTopMesh(player, GetPlayerPropertyValue(player, "top"))
SetPantMesh(player, GetPlayerPropertyValue(player, "pant"))
SetShoesMesh(player, GetPlayerPropertyValue(player, "shoes"))
-- Plate tag
TogglePlayerTag(player, "health", false)
TogglePlayerTag(player, "armor", false)
if GetPlayerPropertyValue(player, "isInvisible") ~= nil then
if GetPlayerPropertyValue(player, "isInvisible") == "true" then
TogglePlayerTag(player, "name", false)
TogglePlayerTag(player, "voice", false)
end
end
end
-- Scale character
if GetPlayerPropertyValue(player, "characterScale") ~= nil then
Actor = GetPlayerActor(player)
local scale = GetPlayerPropertyValue(player, "characterScale")
Actor:SetActorScale3D(FVector(tonumber(scale), tonumber(scale), tonumber(scale)))
AddPlayerChat(PropertyValue)
end
end)
AddEvent("OnPlayerNetworkUpdatePropertyValue", function(player, PropertyName, PropertyValue)
if PropertyName == "characterScale" then
Actor = GetPlayerActor(player)
Actor:SetActorScale3D(FVector(tonumber(PropertyValue), tonumber(PropertyValue), tonumber(PropertyValue)))
AddPlayerChat(PropertyValue)
end
end)
function UnFreezePlayer()
SetIgnoreMoveInput(false)
end
AddRemoteEvent("Character:UnFreezePlayer", UnFreezePlayer)
function FreezePlayer()
SetIgnoreMoveInput(true)
end
AddRemoteEvent("Character:FreezePlayer", FreezePlayer)