1--! \page features Features
4--! When
a player connects to the server, they may create
a character and load said character. The character is then
saved to the
player's data and can be loaded again when the player reconnects. Characters will be saved automatically at predetermined intervals or upon disconnection or when switching characters.\n\n
5--! Characters are not given items in the traditional sense. Instead, they are given items by a unique ID from an item defined in the framework's (or
gamemode's or even plugin's) files. This special
item definition is then used to create an
item instance that is added to the character
's inventory. This allows for items to be created dynamically and given to characters. This allows for the same Project Zomboid item to be reused for different purposes.\n\n
7--! \page global_variables Global Variables
8--! \section Characters Characters
9--! FrameworkZ.Characters\n
10--! See Characters for the module on characters.\n\n
11--! FrameworkZ.Characters.List\n
12--! A list of all instanced characters in the game.
14local isClient = isClient
16FrameworkZ = FrameworkZ or {}
18--! \brief Characters module for FrameworkZ. Defines and interacts with CHARACTER object.
19--! \class FrameworkZ.Characters
20FrameworkZ.Characters = {}
26SKIN_COLOR_DARK_BROWN = 4
31HAIR_COLOR_BLONDE_R = 0.9
32HAIR_COLOR_BLONDE_G = 0.9
33HAIR_COLOR_BLONDE_B = 0.6
34HAIR_COLOR_BROWN_R = 0.3
35HAIR_COLOR_BROWN_G = 0.2
36HAIR_COLOR_BROWN_B = 0.2
37HAIR_COLOR_GRAY_R = 0.5
38HAIR_COLOR_GRAY_G = 0.5
39HAIR_COLOR_GRAY_B = 0.5
47--! \brief Deprecated. To be removed.
48EQUIPMENT_SLOT_HEAD = "Hat"
50--! \brief Deprecated. To be removed.
51EQUIPMENT_SLOT_FACE = "Mask"
53--! \brief Deprecated. To be removed.
54EQUIPMENT_SLOT_EARS = "Ears"
56--! \brief Deprecated. To be removed.
57EQUIPMENT_SLOT_BACKPACK = "Back"
59--! \brief Deprecated. To be removed.
60EQUIPMENT_SLOT_GLOVES = "Hands"
62--! \brief Deprecated. To be removed.
63EQUIPMENT_SLOT_UNDERSHIRT = "Tshirt"
65--! \brief Deprecated. To be removed.
66EQUIPMENT_SLOT_OVERSHIRT = "Shirt"
68--! \brief Deprecated. To be removed.
69EQUIPMENT_SLOT_VEST = "TorsoExtraVest"
71--! \brief Deprecated. To be removed.
72EQUIPMENT_SLOT_BELT = "Belt"
74--! \brief Deprecated. To be removed.
75EQUIPMENT_SLOT_PANTS = "Pants"
77--! \brief Deprecated. To be removed.
78EQUIPMENT_SLOT_SOCKS = "Socks"
80--! \brief Deprecated. To be removed.
81EQUIPMENT_SLOT_SHOES = "Shoes"
83FZ_ENUM_CHARACTER_INFO_FACTION = 1
84FZ_ENUM_CHARACTER_INFO_GENDER = 2
85FZ_ENUM_CHARACTER_INFO_NAME = 2
86FZ_ENUM_CHARACTER_INFO_DESCRIPTION = 3
87FZ_ENUM_CHARACTER_INFO_AGE = 4
88FZ_ENUM_CHARACTER_INFO_HEIGHT = 5
89FZ_ENUM_CHARACTER_INFO_WEIGHT = 6
90FZ_ENUM_CHARACTER_INFO_PHYSIQUE = 7
91FZ_ENUM_CHARACTER_INFO_EYE_COLOR = 8
92FZ_ENUM_CHARACTER_INFO_BEARD_COLOR = 9
93FZ_ENUM_CHARACTER_INFO_HAIR_COLOR = 10
94FZ_ENUM_CHARACTER_INFO_SKIN_COLOR = 11
95FZ_ENUM_CHARACTER_INFO_HAIR_STYLE = 12
96FZ_ENUM_CHARACTER_INFO_BEARD_STYLE = 13
97FZ_ENUM_CHARACTER_SLOT_BANDAGE = 15
98FZ_ENUM_CHARACTER_SLOT_WOUND = 16
99FZ_ENUM_CHARACTER_SLOT_BELT_EXTRA = 17
100FZ_ENUM_CHARACTER_SLOT_BELT = 18
101FZ_ENUM_CHARACTER_SLOT_BELLY_BUTTON = 19
102FZ_ENUM_CHARACTER_SLOT_MAKEUP_FULL_FACE = 20
103FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES = 21
104FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES_SHADOW = 22
105FZ_ENUM_CHARACTER_SLOT_MAKEUP_LIPS = 23
106FZ_ENUM_CHARACTER_SLOT_MASK = 24
107FZ_ENUM_CHARACTER_SLOT_MASK_EYES = 25
108FZ_ENUM_CHARACTER_SLOT_MASK_FULL = 26
109FZ_ENUM_CHARACTER_SLOT_UNDERWEAR = 27
110FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_BOTTOM = 28
111FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_TOP = 29
112FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA1 = 30
113FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA2 = 31
114FZ_ENUM_CHARACTER_SLOT_HAT = 32
115FZ_ENUM_CHARACTER_SLOT_FULL_HAT = 33
116FZ_ENUM_CHARACTER_SLOT_EARS = 34
117FZ_ENUM_CHARACTER_SLOT_EAR_TOP = 35
118FZ_ENUM_CHARACTER_SLOT_NOSE = 36
119FZ_ENUM_CHARACTER_SLOT_TORSO1 = 37
120FZ_ENUM_CHARACTER_SLOT_TORSO_LEGS1 = 38
121FZ_ENUM_CHARACTER_SLOT_TANK_TOP = 39
122FZ_ENUM_CHARACTER_SLOT_TSHIRT = 40
123FZ_ENUM_CHARACTER_SLOT_SHORT_SLEEVE_SHIRT = 41
124FZ_ENUM_CHARACTER_SLOT_LEFT_WRIST = 42
125FZ_ENUM_CHARACTER_SLOT_RIGHT_WRIST = 43
126FZ_ENUM_CHARACTER_SLOT_SHIRT = 44
127FZ_ENUM_CHARACTER_SLOT_NECK = 45
128FZ_ENUM_CHARACTER_SLOT_NECKLACE = 46
129FZ_ENUM_CHARACTER_SLOT_NECKLACE_LONG = 47
130FZ_ENUM_CHARACTER_SLOT_RIGHT_MIDDLE_FINGER = 48
131FZ_ENUM_CHARACTER_SLOT_LEFT_MIDDLE_FINGER = 49
132FZ_ENUM_CHARACTER_SLOT_LEFT_RING_FINGER = 50
133FZ_ENUM_CHARACTER_SLOT_RIGHT_RING_FINGER = 51
134FZ_ENUM_CHARACTER_SLOT_HANDS = 52
135FZ_ENUM_CHARACTER_SLOT_HANDS_LEFT = 53
136FZ_ENUM_CHARACTER_SLOT_HANDS_RIGHT = 54
137FZ_ENUM_CHARACTER_SLOT_SOCKS = 55
138FZ_ENUM_CHARACTER_SLOT_LEGS1 = 56
139FZ_ENUM_CHARACTER_SLOT_PANTS = 57
140FZ_ENUM_CHARACTER_SLOT_SKIRT = 58
141FZ_ENUM_CHARACTER_SLOT_LEGS5 = 59
142FZ_ENUM_CHARACTER_SLOT_DRESS = 60
143FZ_ENUM_CHARACTER_SLOT_SWEATER = 61
144FZ_ENUM_CHARACTER_SLOT_SWEATER_HAT = 62
145FZ_ENUM_CHARACTER_SLOT_JACKET = 63
146FZ_ENUM_CHARACTER_SLOT_JACKET_DOWN = 64
147FZ_ENUM_CHARACTER_SLOT_JACKET_BULKY = 65
148FZ_ENUM_CHARACTER_SLOT_JACKET_HAT = 66
149FZ_ENUM_CHARACTER_SLOT_JACKET_HAT_BULKY = 67
150FZ_ENUM_CHARACTER_SLOT_JACKET_SUIT = 68
151FZ_ENUM_CHARACTER_SLOT_FULL_SUIT = 69
152FZ_ENUM_CHARACTER_SLOT_BOILDER_SUIT = 70
153FZ_ENUM_CHARACTER_SLOT_FULL_SUIT_HEAD = 71
154FZ_ENUM_CHARACTER_SLOT_FULL_TOP = 72
155FZ_ENUM_CHARACTER_SLOT_BATH_ROBE = 73
156FZ_ENUM_CHARACTER_SLOT_SHOES = 74
157FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_FRONT = 75
158FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_BACK = 76
159FZ_ENUM_CHARACTER_SLOT_AMMO_STRAP = 77
160FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA = 78
161FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA_VEST = 79
162FZ_ENUM_CHARACTER_SLOT_TAIL = 80
163FZ_ENUM_CHARACTER_SLOT_BACK = 81
164FZ_ENUM_CHARACTER_SLOT_LEFT_EYE = 82
165FZ_ENUM_CHARACTER_SLOT_RIGHT_EYE = 83
166FZ_ENUM_CHARACTER_SLOT_EYES = 84
167FZ_ENUM_CHARACTER_SLOT_SCARF = 85
168FZ_ENUM_CHARACTER_SLOT_ZED_DMG = 86
170FZ_SLOT_BANDAGE = "Bandage"
171FZ_SLOT_WOUND = "Wound"
172FZ_SLOT_BELT_EXTRA = "BeltExtra"
174FZ_SLOT_BELLY_BUTTON = "BellyButton"
175FZ_SLOT_MAKEUP_FULL_FACE = "MakeUp_FullFace"
176FZ_SLOT_MAKEUP_EYES = "MakeUp_Eyes"
177FZ_SLOT_MAKEUP_EYES_SHADOW = "MakeUp_EyesShadow"
178FZ_SLOT_MAKEUP_LIPS = "MakeUp_Lips"
180FZ_SLOT_MASK_EYES = "MaskEyes"
181FZ_SLOT_MASK_FULL = "MaskFull"
182FZ_SLOT_UNDERWEAR = "Underwear"
183FZ_SLOT_UNDERWEAR_BOTTOM = "UnderwearBottom"
184FZ_SLOT_UNDERWEAR_TOP = "UnderwearTop"
185FZ_SLOT_UNDERWEAR_EXTRA1 = "UnderwearExtra1"
186FZ_SLOT_UNDERWEAR_EXTRA2 = "UnderwearExtra2"
188FZ_SLOT_FULL_HAT = "FullHat"
190FZ_SLOT_EAR_TOP = "EarTop"
192FZ_SLOT_TORSO1 = "Torso1"
193FZ_SLOT_TORSO_LEGS1 = "Torso1Legs1"
194FZ_SLOT_TANK_TOP = "TankTop"
195FZ_SLOT_TSHIRT = "Tshirt"
196FZ_SLOT_SHORT_SLEEVE_SHIRT = "ShortSleeveShirt"
197FZ_SLOT_LEFT_WRIST = "LeftWrist"
198FZ_SLOT_RIGHT_WRIST = "RightWrist"
199FZ_SLOT_SHIRT = "Shirt"
201FZ_SLOT_NECKLACE = "Necklace"
202FZ_SLOT_NECKLACE_LONG = "Necklace_Long"
203FZ_SLOT_RIGHT_MIDDLE_FINGER = "Right_MiddleFinger"
204FZ_SLOT_LEFT_MIDDLE_FINGER = "Left_MiddleFinger"
205FZ_SLOT_LEFT_RING_FINGER = "Left_RingFinger"
206FZ_SLOT_RIGHT_RING_FINGER = "Right_RingFinger"
207FZ_SLOT_HANDS = "Hands"
208FZ_SLOT_HANDS_LEFT = "HandsLeft"
209FZ_SLOT_HANDS_RIGHT = "HandsRight"
210FZ_SLOT_SOCKS = "Socks"
211FZ_SLOT_LEGS1 = "Legs1"
212FZ_SLOT_PANTS = "Pants"
213FZ_SLOT_SKIRT = "Skirt"
214FZ_SLOT_LEGS5 = "Legs5"
215FZ_SLOT_DRESS = "Dress"
216FZ_SLOT_SWEATER = "Sweater"
217FZ_SLOT_SWEATER_HAT = "SweaterHat"
218FZ_SLOT_JACKET = "Jacket"
219FZ_SLOT_JACKET_DOWN = "Jacket_Down"
220FZ_SLOT_JACKET_BULKY = "Jacket_Bulky"
221FZ_SLOT_JACKET_HAT = "JacketHat"
222FZ_SLOT_JACKET_HAT_BULKY = "JacketHat_Bulky"
223FZ_SLOT_JACKET_SUIT = "JacketSuit"
224FZ_SLOT_FULL_SUIT = "FullSuit"
225FZ_SLOT_BOILDER_SUIT = "Boilersuit"
226FZ_SLOT_FULL_SUIT_HEAD = "FullSuitHead"
227FZ_SLOT_FULL_TOP = "FullTop"
228FZ_SLOT_BATH_ROBE = "BathRobe"
229FZ_SLOT_SHOES = "Shoes"
230FZ_SLOT_FANNY_PACK_FRONT = "FannyPackFront"
231FZ_SLOT_FANNY_PACK_BACK = "FannyPackBack"
232FZ_SLOT_AMMO_STRAP = "AmmoStrap"
233FZ_SLOT_TORSO_EXTRA = "TorsoExtra"
234FZ_SLOT_TORSO_EXTRA_VEST = "TorsoExtraVest"
237FZ_SLOT_LEFT_EYE = "LeftEye"
238FZ_SLOT_RIGHT_EYE = "RightEye"
240FZ_SLOT_SCARF = "Scarf"
241FZ_SLOT_ZED_DMG = "ZedDmg"
243FrameworkZ.Characters.DefaultData = {
244 [FZ_ENUM_CHARACTER_INFO_FACTION] = "",
245 [FZ_ENUM_CHARACTER_INFO_GENDER] = "",
246 [FZ_ENUM_CHARACTER_INFO_NAME] = "",
247 [FZ_ENUM_CHARACTER_INFO_DESCRIPTION] = "",
248 [FZ_ENUM_CHARACTER_INFO_AGE] = -1,
249 [FZ_ENUM_CHARACTER_INFO_HEIGHT] = -1,
250 [FZ_ENUM_CHARACTER_INFO_WEIGHT] = -1,
251 [FZ_ENUM_CHARACTER_INFO_PHYSIQUE] = "",
252 [FZ_ENUM_CHARACTER_INFO_EYE_COLOR] = "",
253 [FZ_ENUM_CHARACTER_INFO_BEARD_COLOR] = "",
254 [FZ_ENUM_CHARACTER_INFO_HAIR_COLOR] = "",
255 [FZ_ENUM_CHARACTER_INFO_SKIN_COLOR] = "",
256 [FZ_ENUM_CHARACTER_INFO_HAIR_STYLE] = "",
257 [FZ_ENUM_CHARACTER_INFO_BEARD_STYLE] = "",
258 [FZ_ENUM_CHARACTER_SLOT_BANDAGE] = {},
259 [FZ_ENUM_CHARACTER_SLOT_WOUND] = {},
260 [FZ_ENUM_CHARACTER_SLOT_BELT_EXTRA] = {},
261 [FZ_ENUM_CHARACTER_SLOT_BELT] = {},
262 [FZ_ENUM_CHARACTER_SLOT_BELLY_BUTTON] = {},
263 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_FULL_FACE] = {},
264 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES] = {},
265 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES_SHADOW] = {},
266 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_LIPS] = {},
267 [FZ_ENUM_CHARACTER_SLOT_MASK] = {},
268 [FZ_ENUM_CHARACTER_SLOT_MASK_EYES] = {},
269 [FZ_ENUM_CHARACTER_SLOT_MASK_FULL] = {},
270 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR] = {},
271 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_BOTTOM] = {},
272 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_TOP] = {},
273 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA1] = {},
274 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA2] = {},
275 [FZ_ENUM_CHARACTER_SLOT_HAT] = {},
276 [FZ_ENUM_CHARACTER_SLOT_FULL_HAT] = {},
277 [FZ_ENUM_CHARACTER_SLOT_EARS] = {},
278 [FZ_ENUM_CHARACTER_SLOT_EAR_TOP] = {},
279 [FZ_ENUM_CHARACTER_SLOT_NOSE] = {},
280 [FZ_ENUM_CHARACTER_SLOT_TORSO1] = {},
281 [FZ_ENUM_CHARACTER_SLOT_TORSO_LEGS1] = {},
282 [FZ_ENUM_CHARACTER_SLOT_TANK_TOP] = {},
283 [FZ_ENUM_CHARACTER_SLOT_TSHIRT] = {},
284 [FZ_ENUM_CHARACTER_SLOT_SHORT_SLEEVE_SHIRT] = {},
285 [FZ_ENUM_CHARACTER_SLOT_LEFT_WRIST] = {},
286 [FZ_ENUM_CHARACTER_SLOT_RIGHT_WRIST] = {},
287 [FZ_ENUM_CHARACTER_SLOT_SHIRT] = {},
288 [FZ_ENUM_CHARACTER_SLOT_NECK] = {},
289 [FZ_ENUM_CHARACTER_SLOT_NECKLACE] = {},
290 [FZ_ENUM_CHARACTER_SLOT_NECKLACE_LONG] = {},
291 [FZ_ENUM_CHARACTER_SLOT_RIGHT_MIDDLE_FINGER] = {},
292 [FZ_ENUM_CHARACTER_SLOT_LEFT_MIDDLE_FINGER] = {},
293 [FZ_ENUM_CHARACTER_SLOT_LEFT_RING_FINGER] = {},
294 [FZ_ENUM_CHARACTER_SLOT_RIGHT_RING_FINGER] = {},
295 [FZ_ENUM_CHARACTER_SLOT_HANDS] = {},
296 [FZ_ENUM_CHARACTER_SLOT_HANDS_LEFT] = {},
297 [FZ_ENUM_CHARACTER_SLOT_HANDS_RIGHT] = {},
298 [FZ_ENUM_CHARACTER_SLOT_SOCKS] = {},
299 [FZ_ENUM_CHARACTER_SLOT_LEGS1] = {},
300 [FZ_ENUM_CHARACTER_SLOT_PANTS] = {},
301 [FZ_ENUM_CHARACTER_SLOT_SKIRT] = {},
302 [FZ_ENUM_CHARACTER_SLOT_LEGS5] = {},
303 [FZ_ENUM_CHARACTER_SLOT_DRESS] = {},
304 [FZ_ENUM_CHARACTER_SLOT_SWEATER] = {},
305 [FZ_ENUM_CHARACTER_SLOT_SWEATER_HAT] = {},
306 [FZ_ENUM_CHARACTER_SLOT_JACKET] = {},
307 [FZ_ENUM_CHARACTER_SLOT_JACKET_DOWN] = {},
308 [FZ_ENUM_CHARACTER_SLOT_JACKET_BULKY] = {},
309 [FZ_ENUM_CHARACTER_SLOT_JACKET_HAT] = {},
310 [FZ_ENUM_CHARACTER_SLOT_JACKET_HAT_BULKY] = {},
311 [FZ_ENUM_CHARACTER_SLOT_JACKET_SUIT] = {},
312 [FZ_ENUM_CHARACTER_SLOT_FULL_SUIT] = {},
313 [FZ_ENUM_CHARACTER_SLOT_BOILDER_SUIT] = {},
314 [FZ_ENUM_CHARACTER_SLOT_FULL_SUIT_HEAD] = {},
315 [FZ_ENUM_CHARACTER_SLOT_FULL_TOP] = {},
316 [FZ_ENUM_CHARACTER_SLOT_BATH_ROBE] = {},
317 [FZ_ENUM_CHARACTER_SLOT_SHOES] = {},
318 [FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_FRONT] = {},
319 [FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_BACK] = {},
320 [FZ_ENUM_CHARACTER_SLOT_AMMO_STRAP] = {},
321 [FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA] = {},
322 [FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA_VEST] = {},
323 [FZ_ENUM_CHARACTER_SLOT_TAIL] = {},
324 [FZ_ENUM_CHARACTER_SLOT_BACK] = {},
325 [FZ_ENUM_CHARACTER_SLOT_LEFT_EYE] = {},
326 [FZ_ENUM_CHARACTER_SLOT_RIGHT_EYE] = {},
327 [FZ_ENUM_CHARACTER_SLOT_EYES] = {},
328 [FZ_ENUM_CHARACTER_SLOT_SCARF] = {},
329 [FZ_ENUM_CHARACTER_SLOT_ZED_DMG] = {}
332FrameworkZ.Characters.SlotList = {
333 [FZ_ENUM_CHARACTER_SLOT_BANDAGE] = FZ_SLOT_BANDAGE,
334 [FZ_ENUM_CHARACTER_SLOT_WOUND] = FZ_SLOT_WOUND,
335 [FZ_ENUM_CHARACTER_SLOT_BELT_EXTRA] = FZ_SLOT_BELT_EXTRA,
336 [FZ_ENUM_CHARACTER_SLOT_BELT] = FZ_SLOT_BELT,
337 [FZ_ENUM_CHARACTER_SLOT_BELLY_BUTTON] = FZ_SLOT_BELLY_BUTTON,
338 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_FULL_FACE] = FZ_SLOT_MAKEUP_FULL_FACE,
339 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES] = FZ_SLOT_MAKEUP_EYES,
340 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES_SHADOW] = FZ_SLOT_MAKEUP_EYES_SHADOW,
341 [FZ_ENUM_CHARACTER_SLOT_MAKEUP_LIPS] = FZ_SLOT_MAKEUP_LIPS,
342 [FZ_ENUM_CHARACTER_SLOT_MASK] = FZ_SLOT_MASK,
343 [FZ_ENUM_CHARACTER_SLOT_MASK_EYES] = FZ_SLOT_MASK_EYES,
344 [FZ_ENUM_CHARACTER_SLOT_MASK_FULL] = FZ_SLOT_MASK_FULL,
345 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR] = FZ_SLOT_UNDERWEAR,
346 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_BOTTOM] = FZ_SLOT_UNDERWEAR_BOTTOM,
347 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_TOP] = FZ_SLOT_UNDERWEAR_TOP,
348 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA1] = FZ_SLOT_UNDERWEAR_EXTRA1,
349 [FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA2] = FZ_SLOT_UNDERWEAR_EXTRA2,
350 [FZ_ENUM_CHARACTER_SLOT_HAT] = FZ_SLOT_HAT,
351 [FZ_ENUM_CHARACTER_SLOT_FULL_HAT] = FZ_SLOT_FULL_HAT,
352 [FZ_ENUM_CHARACTER_SLOT_EARS] = FZ_SLOT_EARS,
353 [FZ_ENUM_CHARACTER_SLOT_EAR_TOP] = FZ_SLOT_EAR_TOP,
354 [FZ_ENUM_CHARACTER_SLOT_NOSE] = FZ_SLOT_NOSE,
355 [FZ_ENUM_CHARACTER_SLOT_TORSO1] = FZ_SLOT_TORSO1,
356 [FZ_ENUM_CHARACTER_SLOT_TORSO_LEGS1] = FZ_SLOT_TORSO_LEGS1,
357 [FZ_ENUM_CHARACTER_SLOT_TANK_TOP] = FZ_SLOT_TANK_TOP,
358 [FZ_ENUM_CHARACTER_SLOT_TSHIRT] = FZ_SLOT_TSHIRT,
359 [FZ_ENUM_CHARACTER_SLOT_SHORT_SLEEVE_SHIRT] = FZ_SLOT_SHORT_SLEEVE_SHIRT,
360 [FZ_ENUM_CHARACTER_SLOT_LEFT_WRIST] = FZ_SLOT_LEFT_WRIST,
361 [FZ_ENUM_CHARACTER_SLOT_RIGHT_WRIST] = FZ_SLOT_RIGHT_WRIST,
362 [FZ_ENUM_CHARACTER_SLOT_SHIRT] = FZ_SLOT_SHIRT,
363 [FZ_ENUM_CHARACTER_SLOT_NECK] = FZ_SLOT_NECK,
364 [FZ_ENUM_CHARACTER_SLOT_NECKLACE] = FZ_SLOT_NECKLACE,
365 [FZ_ENUM_CHARACTER_SLOT_NECKLACE_LONG] = FZ_SLOT_NECKLACE_LONG,
366 [FZ_ENUM_CHARACTER_SLOT_RIGHT_MIDDLE_FINGER] = FZ_SLOT_RIGHT_MIDDLE_FINGER,
367 [FZ_ENUM_CHARACTER_SLOT_LEFT_MIDDLE_FINGER] = FZ_SLOT_LEFT_MIDDLE_FINGER,
368 [FZ_ENUM_CHARACTER_SLOT_LEFT_RING_FINGER] = FZ_SLOT_LEFT_RING_FINGER,
369 [FZ_ENUM_CHARACTER_SLOT_RIGHT_RING_FINGER] = FZ_SLOT_RIGHT_RING_FINGER,
370 [FZ_ENUM_CHARACTER_SLOT_HANDS] = FZ_SLOT_HANDS,
371 [FZ_ENUM_CHARACTER_SLOT_HANDS_LEFT] = FZ_SLOT_HANDS_LEFT,
372 [FZ_ENUM_CHARACTER_SLOT_HANDS_RIGHT] = FZ_SLOT_HANDS_RIGHT,
373 [FZ_ENUM_CHARACTER_SLOT_SOCKS] = FZ_SLOT_SOCKS,
374 [FZ_ENUM_CHARACTER_SLOT_LEGS1] = FZ_SLOT_LEGS1,
375 [FZ_ENUM_CHARACTER_SLOT_PANTS] = FZ_SLOT_PANTS,
376 [FZ_ENUM_CHARACTER_SLOT_SKIRT] = FZ_SLOT_SKIRT,
377 [FZ_ENUM_CHARACTER_SLOT_LEGS5] = FZ_SLOT_LEGS5,
378 [FZ_ENUM_CHARACTER_SLOT_DRESS] = FZ_SLOT_DRESS,
379 [FZ_ENUM_CHARACTER_SLOT_SWEATER] = FZ_SLOT_SWEATER,
380 [FZ_ENUM_CHARACTER_SLOT_SWEATER_HAT] = FZ_SLOT_SWEATER_HAT,
381 [FZ_ENUM_CHARACTER_SLOT_JACKET] = FZ_SLOT_JACKET,
382 [FZ_ENUM_CHARACTER_SLOT_JACKET_DOWN] = FZ_SLOT_JACKET_DOWN,
383 [FZ_ENUM_CHARACTER_SLOT_JACKET_BULKY] = FZ_SLOT_JACKET_BULKY,
384 [FZ_ENUM_CHARACTER_SLOT_JACKET_HAT] = FZ_SLOT_JACKET_HAT,
385 [FZ_ENUM_CHARACTER_SLOT_JACKET_HAT_BULKY] = FZ_SLOT_JACKET_HAT_BULKY,
386 [FZ_ENUM_CHARACTER_SLOT_JACKET_SUIT] = FZ_SLOT_JACKET_SUIT,
387 [FZ_ENUM_CHARACTER_SLOT_FULL_SUIT] = FZ_SLOT_FULL_SUIT,
388 [FZ_ENUM_CHARACTER_SLOT_BOILDER_SUIT] = FZ_SLOT_BOILDER_SUIT,
389 [FZ_ENUM_CHARACTER_SLOT_FULL_SUIT_HEAD] = FZ_SLOT_FULL_SUIT_HEAD,
390 [FZ_ENUM_CHARACTER_SLOT_FULL_TOP] = FZ_SLOT_FULL_TOP,
391 [FZ_ENUM_CHARACTER_SLOT_BATH_ROBE] = FZ_SLOT_BATH_ROBE,
392 [FZ_ENUM_CHARACTER_SLOT_SHOES] = FZ_SLOT_SHOES,
393 [FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_FRONT] = FZ_SLOT_FANNY_PACK_FRONT,
394 [FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_BACK] = FZ_SLOT_FANNY_PACK_BACK,
395 [FZ_ENUM_CHARACTER_SLOT_AMMO_STRAP] = FZ_SLOT_AMMO_STRAP,
396 [FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA] = FZ_SLOT_TORSO_EXTRA,
397 [FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA_VEST] = FZ_SLOT_TORSO_EXTRA_VEST,
398 [FZ_ENUM_CHARACTER_SLOT_TAIL] = FZ_SLOT_TAIL,
399 [FZ_ENUM_CHARACTER_SLOT_BACK] = FZ_SLOT_BACK,
400 [FZ_ENUM_CHARACTER_SLOT_LEFT_EYE] = FZ_SLOT_LEFT_EYE,
401 [FZ_ENUM_CHARACTER_SLOT_RIGHT_EYE] = FZ_SLOT_RIGHT_EYE,
402 [FZ_ENUM_CHARACTER_SLOT_EYES] = FZ_SLOT_EYES,
403 [FZ_ENUM_CHARACTER_SLOT_SCARF] = FZ_SLOT_SCARF,
404 [FZ_ENUM_CHARACTER_SLOT_ZED_DMG] = FZ_SLOT_ZED_DMG
407FrameworkZ.Characters.List = {}
409--! \brief Unique IDs list for characters.
410FrameworkZ.Characters.Cache = {}
412--! \brief Deprecated. To be removed.
413FrameworkZ.Characters.EquipmentSlots = {
417 EQUIPMENT_SLOT_BACKPACK,
418 EQUIPMENT_SLOT_GLOVES,
419 EQUIPMENT_SLOT_UNDERSHIRT,
420 EQUIPMENT_SLOT_OVERSHIRT,
423 EQUIPMENT_SLOT_PANTS,
424 EQUIPMENT_SLOT_SOCKS,
427FrameworkZ.Characters = FrameworkZ.Foundation:NewModule(FrameworkZ.Characters, "Characters")
429--! \brief Character class for FrameworkZ.
432CHARACTER.__index = CHARACTER
434--! \brief Save the character's
data from the character
object.
435--! \param shouldTransmit \boolean (Optional) Whether or not to transmit the character
's data to the server.
436--! \return \boolean Whether or not the character was successfully saved.
437function CHARACTER:Save(shouldTransmit)
438 if shouldTransmit == nil then shouldTransmit = true end
440 local player = FrameworkZ.Players:GetPlayerByID(self:GetIsoPlayer():getUsername())
441 local characterData = FrameworkZ.Players:GetCharacterDataByID(self:GetIsoPlayer():getUsername(), self.id)
443 if not player or not characterData then return false end
444 FrameworkZ.Players:ResetCharacterSaveInterval()
446 -- Save "physical" character inventory
447 local inventory = self:GetIsoPlayer():getInventory():getItems()
448 characterData.INVENTORY_PHYSICAL = {}
449 for i = 0, inventory:size() - 1 do
450 table.insert(characterData.INVENTORY_PHYSICAL, {id = inventory:get(i):getFullType()})
453 -- Save logical character inventory
454 characterData.INVENTORY_LOGICAL = self.inventory.items
456 -- Save character equipment
457 characterData.EQUIPMENT_SLOT_HEAD = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_HEAD) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_HEAD):getFullType()} or nil
458 characterData.EQUIPMENT_SLOT_FACE = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_FACE) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_FACE):getFullType()} or nil
459 characterData.EQUIPMENT_SLOT_EARS = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_EARS) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_EARS):getFullType()} or nil
460 characterData.EQUIPMENT_SLOT_BACKPACK = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_BACKPACK) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_BACKPACK):getFullType()} or nil
461 characterData.EQUIPMENT_SLOT_GLOVES = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_GLOVES) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_GLOVES):getFullType()} or nil
462 characterData.EQUIPMENT_SLOT_UNDERSHIRT = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_UNDERSHIRT) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_UNDERSHIRT):getFullType()} or nil
463 characterData.EQUIPMENT_SLOT_OVERSHIRT = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_OVERSHIRT) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_OVERSHIRT):getFullType()} or nil
464 characterData.EQUIPMENT_SLOT_VEST = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_VEST) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_VEST):getFullType()} or nil
465 characterData.EQUIPMENT_SLOT_BELT = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_BELT) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_BELT):getFullType()} or nil
466 characterData.EQUIPMENT_SLOT_PANTS = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_PANTS) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_PANTS):getFullType()} or nil
467 characterData.EQUIPMENT_SLOT_SOCKS = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_SOCKS) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_SOCKS):getFullType()} or nil
468 characterData.EQUIPMENT_SLOT_SHOES = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_SHOES) and {id = self:GetIsoPlayer():getWornItem(EQUIPMENT_SLOT_SHOES):getFullType()} or nil
470 -- Save character position/direction angle
471 characterData.POSITION_X = self:GetIsoPlayer():getX()
472 characterData.POSITION_Y = self:GetIsoPlayer():getY()
473 characterData.POSITION_Z = self:GetIsoPlayer():getZ()
474 characterData.DIRECTION_ANGLE = self:GetIsoPlayer():getDirectionAngle()
476 local getStats = self:GetIsoPlayer():getStats()
477 characterData.STAT_HUNGER = getStats:getHunger()
478 characterData.STAT_THIRST = getStats:getThirst()
479 characterData.STAT_FATIGUE = getStats:getFatigue()
480 characterData.STAT_STRESS = getStats:getStress()
481 characterData.STAT_PAIN = getStats:getPain()
482 characterData.STAT_PANIC = getStats:getPanic()
483 characterData.STAT_BOREDOM = getStats:getBoredom()
484 --characterData.STAT_UNHAPPINESS = getStats:getUnhappyness()
485 characterData.STAT_DRUNKENNESS = getStats:getDrunkenness()
486 characterData.STAT_ENDURANCE = getStats:getEndurance()
487 --characterData.STAT_TIREDNESS = getStats:getTiredness()
490 modData.status.health = character:getBodyDamage():getOverallBodyHealth()
491 modData.status.injuries = character:getBodyDamage():getInjurySeverity()
492 modData.status.hyperthermia = character:getBodyDamage():getTemperature()
493 modData.status.hypothermia = character:getBodyDamage():getColdStrength()
494 modData.status.wetness = character:getBodyDamage():getWetness()
495 modData.status.hasCold = character:getBodyDamage():HasACold()
496 modData.status.sick = character:getBodyDamage():getSicknessLevel()
499 player.Characters[self.id] = characterData
501 if isClient() and shouldTransmit == true then
502 self:GetIsoPlayer():transmitModData()
508--! \brief Destroy a character. This will remove the character from the list of characters and is usually called after a player has disconnected.
509function CHARACTER:Destroy()
512 sendClientCommand("FZ_CHAR", "destroy", {self:GetIsoPlayer():getUsername()})
519--! \brief Initialize the default items for a character based on their faction. Called when FZ_CHAR mod data is first created.
520function CHARACTER:InitializeDefaultItems()
521 local faction = FrameworkZ.Factions:GetFactionByID(self.faction)
524 for k, v in pairs(faction.defaultItems) do
530function CHARACTER:GetAge() return self.Age end
531function CHARACTER:SetAge(age) self.Age = age end
533function CHARACTER:GetBeardColor() return self.BeardColor end
534function CHARACTER:SetBeardColor(beardColor) self.BeardColor = beardColor end
536function CHARACTER:GetBeardStyle() return self.BeardStyle end
537function CHARACTER:SetBeardStyle(beardStyle) self.BeardStyle = beardStyle end
539function CHARACTER:GetDescription() return self.Description end
540function CHARACTER:SetDescription(description) self.Description = description end
542function CHARACTER:GetEyeColor() return self.EyeColor end
543function CHARACTER:SetEyeColor(eyeColor) self.EyeColor = eyeColor end
545function CHARACTER:GetFaction() return self.Faction end
546function CHARACTER:SetFaction(faction) self.Faction = faction end
548function CHARACTER:GetHairColor() return self.HairColor end
549function CHARACTER:SetHairColor(hairColor) self.HairColor = hairColor end
551function CHARACTER:GetHairStyle() return self.HairStyle end
552function CHARACTER:SetHairStyle(hairStyle) self.HairStyle = hairStyle end
554function CHARACTER:GetHeight() return self.Height end
555function CHARACTER:SetHeight(height) self.Height = height end
557function CHARACTER:GetID() return self.ID end
558function CHARACTER:SetID(id) self.ID = id end
560function CHARACTER:GetInventory() return self.Inventory end
561function CHARACTER:SetInventory(inventory) self.Inventory = inventory end
563function CHARACTER:GetIsoPlayer() return self.IsoPlayer end
564function CHARACTER:SetIsoPlayer(isoPlayer) print("Failed to set IsoPlayer object to '" .. tostring(isoPlayer) .. "'. IsoPlayer is read-only and must be set upon object creation.") end
566function CHARACTER:GetLogicalInventory() return self.LogicalInventory end
567function CHARACTER:SetLogicalInventory(logicalInventory) self.LogicalInventory = logicalInventory end
569function CHARACTER:GetName() return self.Name end
570function CHARACTER:SetName(name) self.Name = name end
572function CHARACTER:GetPhysicalInventory() return self.PhysicalInventory end
573function CHARACTER:SetPhysicalInventory(physicalInventory) self.PhysicalInventory = physicalInventory end
575function CHARACTER:GetPhysique() return self.Physique end
576function CHARACTER:SetPhysique(physique) self.Physique = physique end
578function CHARACTER:GetPlayer() return self.Player end
579function CHARACTER:SetPlayer(player) self.Player = player end
581function CHARACTER:GetRecognizes() return self.Recognizes end
582function CHARACTER:SetRecognizes(recognizes) self.Recognizes = recognizes end
584function CHARACTER:GetSkinColor() return self.SkinColor end
585function CHARACTER:SetSkinColor(skinColor) self.SkinColor = skinColor end
587function CHARACTER:GetUID() return self.UID end
588function CHARACTER:SetUID(uid) self.UID = uid end
590function CHARACTER:GetUsername() return self.Username end
591function CHARACTER:SetUsername(username) print("Failed to set username to: '" .. username .. "'. Username is read-only and must be set upon object creation.") end
593function CHARACTER:GetWeight() return self.Weight end
594function CHARACTER:SetWeight(weight) self.Weight = weight end
596function CHARACTER:GetSaveableData()
597 return FrameworkZ.Foundation:ProcessSaveableData(self, {"isoPlayer"}, {"inventory"})
600--[[ Note: Setup UID on Player object inside of stored Characters at Character
601function CHARACTER:SetUID(uid)
602 local player = FrameworkZ.Players:GetPlayerByID(self:GetUsername()) if not player then return false, "Could not find player by ID." end
605 player.Characters[self:GetID()].META_UID = uid
611--! \brief Give a character items by the specified amount.
612--! \param itemID \string The ID of the item to give.
613--! \param amount \integer The amount of the item to give.
614function CHARACTER:GiveItems(uniqueID, amount)
616 self:GiveItem(uniqueID)
620function CHARACTER:TakeItems(uniqueID, amount)
622 self:TakeItem(uniqueID)
626--! \brief Give a character an item.
627--! \param uniqueID \string The ID of the item to give.
628--! \return \boolean Whether or not the item was successfully given.
629function CHARACTER:GiveItem(uniqueID)
630 local inventory = self:GetInventory()
631 if not inventory then return false, "Failed to find inventory." end
632 local instance, message = FrameworkZ.Items:CreateItem(uniqueID, self:GetIsoPlayer())
633 if not instance then return false, "Failed to create item: " .. message end
635 inventory:AddItem(instance)
637 return instance, message
640--! \brief Take an item from a character's inventory.
641--! \param uniqueID \string The unique ID of the
item to take.
642--! \return \boolean \string Whether or not the
item was successfully taken and the
success or failure
message.
647 return true,
"Successfully took " ..
uniqueID ..
"."
653--! \brief Take an
item from
a character
's inventory by its instance ID. Useful for taking a specific item from a stack.
654--! \param instanceID \integer The instance ID of the item to take.
655--! \return \boolean \string Whether or not the item was successfully taken and the success or failure message.
656function CHARACTER:TakeItemByInstanceID(instanceID)
657 local success, message = FrameworkZ.Items:RemoveInstance(instanceID, self:GetIsoPlayer():getUsername())
660 return true, "Successfully took item with instance ID " .. instanceID .. "."
663 return false, "Failed to find item with instance ID " .. instanceID .. ": " .. message
666--! \brief Checks if a character is a citizen.
667--! \return \boolean Whether or not the character is a citizen.
668function CHARACTER:IsCitizen()
669 if not self.faction then return false end
671 if self.faction == FACTION_CITIZEN then
678--! \brief Checks if a character is a combine.
679--! \return \boolean Whether or not the character is a combine.
680function CHARACTER:IsCombine()
681 if not self.faction then return false end
683 if self.faction == FACTION_CP then
685 elseif self.faction == FACTION_OTA then
687 elseif self.faction == FACTION_ADMINISTRATOR then
694function CHARACTER:AddRecognition(character, alias)
695 if not character then return false, "Character not supplied in parameters." end
697 if not self:GetRecognizes()[character:GetUID()] then
698 self:GetRecognizes()[character:GetUID()] = alias or character:GetName()
699 return true, "Successfully added character to recognition list."
702 return false, "Character already exists in recognition list."
705function CHARACTER:GetRecognition(character)
706 if not character then return false, "Character not supplied in parameters." end
708 local recognizes = self:GetRecognizes()
710 if recognizes[character:GetUID()] then
711 return recognizes[character:GetUID()]
713 return "[Unrecognized]"
717function CHARACTER:RecognizesCharacter(character)
718 if not character then return false, "Character not supplied in parameters." end
720 if self:GetRecognizes()[character:GetUID()] then
727function CHARACTER:RestoreData()
728 local player = self:GetPlayer() if not player then return false, "Player not found." end
729 local characterData = player:GetCharacterDataByID(self:GetID()) if not characterData then return false, "Character data not found." end
731 self:SetAge(characterData.INFO_AGE)
732 self:SetBeardColor(characterData.INFO_BEARD_COLOR)
733 self:SetBeardStyle(characterData.INFO_BEARD_STYLE)
734 self:SetDescription(characterData.INFO_DESCRIPTION)
735 self:SetEyeColor(characterData.INFO_EYE_COLOR)
736 self:SetFaction(characterData.INFO_FACTION)
737 self:SetHairColor(characterData.INFO_HAIR_COLOR)
738 self:SetHairStyle(characterData.INFO_HAIR_STYLE)
739 self:SetHeight(characterData.INFO_HEIGHT)
740 self:SetID(characterData.META_ID)
741 self:SetLogicalInventory(characterData.INVENTORY_LOGICAL)
742 self:SetName(characterData.INFO_NAME)
743 self:SetPhysique(characterData.INFO_PHYSIQUE)
744 self:SetPhysicalInventory(characterData.INVENTORY_PHYSICAL)
745 self:SetRecognizes(characterData.META_RECOGNIZES or {})
746 self:SetSkinColor(characterData.INFO_SKIN_COLOR)
747 self:SetUID(characterData.META_UID)
748 self:SetWeight(characterData.INFO_WEIGHT)
750 return true, "Character data restored."
753--! \brief Initialize a character.
754--! \return \string username
755function CHARACTER:Initialize()
756 if not self:GetIsoPlayer() then return false, "IsoPlayer not set." end
758 --self:GetInventory():Initialize()
759 local successfullyRestored, restoreMessage = self:RestoreData() if not successfullyRestored then return false, "Failed to restore character data: " .. restoreMessage end
761 if not self:RecognizesCharacter(self) then
762 local successfullyRecognizes, recognizeMessage = self:AddRecognition(self) if not successfullyRecognizes then return false, "Failed to add self to recognition list: " .. recognizeMessage end
765 return true, "Character initialized."
768--! \brief Create a new character object.
769--! \param username \string The player's
username as their ID.
770--! \param
id \integer The character
's ID from the player stored data.
771--! \param data \table (Optional) The character's
data stored on the
object.
772--! \return \table The new character
object.
774 if not
isoPlayer then return false,
"IsoPlayer is invalid." end
787 if object.ID <= -1 then
return false,
"New character ID is invalid." end
788 if not
object.Player then
return false,
"Player not found." end
789 if not
object.Inventory then
return false,
"Inventory not found." end
790 if object.Player and not
object.Player:GetCharacterDataByID(
object.ID) then
return false,
"Player character data not found." end
797--! \brief Initialize
a character.
799--! \param character \table The character's
object data.
803 local
username = character:GetUsername()
804 local
success, message2 = character:Initialize() if not
success then return false, "Failed to initialize character
object: " .. message2 end
807 return false, "Failed to add character to list."
810 if not
self:AddToCache(character:GetUID(), character) then
812 return false, "Failed to add character to cache."
819 if not
username or not character then return false end
826 if not
username then return false end
833 if not uid or not character then return false end
840 if not uid then return false end
846--! \brief Gets the user's loaded character by their ID.
848--! \return \table The character
object from the list of
characters.
865 return character:GetInventory()
871--! \brief Saves the user's currently loaded character.
873--! \return \
boolean Whether or not the character was successfully
saved.
875 if not
username then return false end
880 return character:Save()
906--! \brief Initializes
a player's character after loading.
907--! \return \
boolean Whether or not the post load was successful.
913 if not
player or not character then return false end
915 character:OnPreLoad()
918 character.Name = characterData.INFO_NAME
919 character.Description = characterData.INFO_DESCRIPTION
920 character.Faction = characterData.INFO_FACTION
921 character.Age = characterData.INFO_AGE
922 character.HeightInches = characterData.INFO_HEIGHT
923 character.EyeColor = characterData.INFO_EYE_COLOR
924 character.HairColor = characterData.INFO_HAIR_STYLE
925 character.SkinColor = characterData.INFO_SKIN_COLOR
926 character.Physique = characterData.INFO_PHYSIQUE
927 character.Weight = characterData.INFO_WEIGHT
928 character.Recognizes = {}
932 character.inventory = rebuiltInventory or
nil
934 if character.inventory then
935 character.inventoryID = character.inventory.
id
936 character.inventory:Initialize()
939 character:Initialize()
944 character:SetUID(characterData.
META_UID)
void FrameworkZ Characters MetaObject()
void characterData INVENTORY_LOGICAL()
void player loadedCharacter()
void local currentSaveTick()
void FrameworkZ Classes List()
void self FrameworkZ UI self nil
void processingNotification backgroundColor a()
void characterData META_ID()
void characterData META_UID()
void FrameworkZ Foundation()
Character class for FrameworkZ.
boolean IsCombine()
Checks if a character is a combine.
boolean Save(shouldTransmit)
Save the character's data from the character object.
void GetRecognition(character)
void OnPostLoad(firstLoad)
void TakeItems(uniqueID, amount)
boolean TakeItem(uniqueID)
Take an item from a character's inventory.
void GiveItems(uniqueID, amount)
Give a character items by the specified amount.
boolean IsCitizen()
Checks if a character is a citizen.
void Destroy()
Destroy a character. This will remove the character from the list of characters and is usually called...
boolean TakeItemByInstanceID(instanceID)
Take an item from a character's inventory by its instance ID. Useful for taking a specific item from ...
string Initialize()
Initialize a character.
void RecognizesCharacter(character)
boolean GiveItem(uniqueID)
Give a character an item.
void AddRecognition(character, alias)
void InitializeDefaultItems()
Initialize the default items for a character based on their faction. Called when FZ_CHAR mod data is ...
Characters module for FrameworkZ. Defines and interacts with CHARACTER object.
FZ_ENUM_CHARACTER_SLOT_MASK_EYES
EQUIPMENT_SLOT_PANTS
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_SWEATER_HAT
FZ_ENUM_CHARACTER_INFO_PHYSIQUE
EQUIPMENT_SLOT_VEST
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_JACKET_HAT
FZ_SLOT_RIGHT_MIDDLE_FINGER
EQUIPMENT_SLOT_FACE
Deprecated. To be removed.
FZ_ENUM_CHARACTER_INFO_GENDER
table New(isoPlayer, id)
Create a new character object.
FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_FRONT
FZ_ENUM_CHARACTER_SLOT_NOSE
FZ_SLOT_MAKEUP_EYES_SHADOW
FZ_ENUM_CHARACTER_SLOT_BATH_ROBE
FZ_ENUM_CHARACTER_SLOT_NECK
FZ_ENUM_CHARACTER_SLOT_UNDERWEAR
FZ_ENUM_CHARACTER_SLOT_TSHIRT
FZ_ENUM_CHARACTER_SLOT_MASK_FULL
FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA1
FZ_ENUM_CHARACTER_SLOT_LEFT_EYE
FZ_ENUM_CHARACTER_SLOT_FULL_SUIT_HEAD
FrameworkZ Characters EquipmentSlots
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_SHOES
FZ_SLOT_LEFT_MIDDLE_FINGER
FZ_ENUM_CHARACTER_SLOT_SCARF
FZ_ENUM_CHARACTER_SLOT_FULL_SUIT
FZ_ENUM_CHARACTER_SLOT_BOILDER_SUIT
FZ_ENUM_CHARACTER_SLOT_BACK
EQUIPMENT_SLOT_GLOVES
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_SWEATER
void GetCharacterByUID(uid)
FZ_ENUM_CHARACTER_SLOT_LEGS5
FZ_ENUM_CHARACTER_INFO_BEARD_COLOR
FZ_ENUM_CHARACTER_SLOT_LEGS1
FZ_ENUM_CHARACTER_SLOT_SKIRT
FrameworkZ Characters DefaultData
FZ_ENUM_CHARACTER_INFO_SKIN_COLOR
table GetCharacterByID(username)
Gets the user's loaded character by their ID.
FZ_ENUM_CHARACTER_INFO_NAME
FZ_ENUM_CHARACTER_SLOT_NECKLACE
FZ_ENUM_CHARACTER_SLOT_MAKEUP_FULL_FACE
FrameworkZ Characters Cache
Unique IDs list for characters.
FZ_ENUM_CHARACTER_SLOT_LEFT_MIDDLE_FINGER
void PostLoad(data, characterData)
EQUIPMENT_SLOT_BELT
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_RIGHT_MIDDLE_FINGER
FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES
FZ_ENUM_CHARACTER_SLOT_TORSO_LEGS1
FZ_ENUM_CHARACTER_SLOT_JACKET_SUIT
FrameworkZ Characters SlotList
boolean OnPostLoad(isoPlayer, characterData)
Initializes a player's character after loading.
FZ_ENUM_CHARACTER_SLOT_TAIL
FZ_ENUM_CHARACTER_SLOT_HAT
FZ_ENUM_CHARACTER_SLOT_HANDS
FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_EXTRA2
FZ_ENUM_CHARACTER_SLOT_SHIRT
FZ_ENUM_CHARACTER_SLOT_TANK_TOP
EQUIPMENT_SLOT_EARS
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_HANDS_LEFT
FZ_ENUM_CHARACTER_INFO_AGE
FZ_ENUM_CHARACTER_SLOT_MAKEUP_EYES_SHADOW
FZ_ENUM_CHARACTER_INFO_HAIR_STYLE
FZ_ENUM_CHARACTER_SLOT_JACKET_HAT_BULKY
FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA
FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_BOTTOM
FZ_ENUM_CHARACTER_SLOT_BELT
FZ_ENUM_CHARACTER_SLOT_MASK
FZ_ENUM_CHARACTER_SLOT_AMMO_STRAP
string Initialize(isoPlayer, id)
Initialize a character.
void RemoveFromList(username)
FZ_ENUM_CHARACTER_SLOT_JACKET_DOWN
FZ_ENUM_CHARACTER_SLOT_EAR_TOP
FrameworkZ Characters List
void GetCharacterInventoryByID(username)
void AddToList(username, character)
void RemoveFromCache(uid)
FZ_ENUM_CHARACTER_INFO_DESCRIPTION
FZ_ENUM_CHARACTER_SLOT_SOCKS
FZ_ENUM_CHARACTER_SLOT_DRESS
FZ_ENUM_CHARACTER_SLOT_SHORT_SLEEVE_SHIRT
FZ_ENUM_CHARACTER_SLOT_RIGHT_RING_FINGER
FZ_ENUM_CHARACTER_INFO_FACTION
FZ_ENUM_CHARACTER_SLOT_RIGHT_WRIST
FZ_ENUM_CHARACTER_SLOT_JACKET
FZ_ENUM_CHARACTER_SLOT_RIGHT_EYE
EQUIPMENT_SLOT_BACKPACK
Deprecated. To be removed.
void OnStorageSet(isoPlayer, command, namespace, keys, value)
void AddToCache(uid, character)
FZ_ENUM_CHARACTER_SLOT_BANDAGE
FZ_ENUM_CHARACTER_INFO_BEARD_STYLE
FZ_ENUM_CHARACTER_SLOT_HANDS_RIGHT
FZ_ENUM_CHARACTER_SLOT_JACKET_BULKY
FZ_ENUM_CHARACTER_SLOT_UNDERWEAR_TOP
FZ_ENUM_CHARACTER_INFO_HEIGHT
FZ_ENUM_CHARACTER_SLOT_BELT_EXTRA
FZ_ENUM_CHARACTER_SLOT_FANNY_PACK_BACK
FZ_ENUM_CHARACTER_SLOT_FULL_TOP
FZ_ENUM_CHARACTER_SLOT_FULL_HAT
FZ_ENUM_CHARACTER_SLOT_EYES
FZ_SLOT_SHORT_SLEEVE_SHIRT
FZ_ENUM_CHARACTER_SLOT_NECKLACE_LONG
FZ_SLOT_RIGHT_RING_FINGER
FZ_ENUM_CHARACTER_SLOT_TORSO1
FZ_ENUM_CHARACTER_INFO_EYE_COLOR
FZ_ENUM_CHARACTER_SLOT_LEFT_WRIST
FZ_ENUM_CHARACTER_SLOT_PANTS
boolean Save(username)
Saves the user's currently loaded character.
FZ_ENUM_CHARACTER_SLOT_LEFT_RING_FINGER
EQUIPMENT_SLOT_SHOES
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_TORSO_EXTRA_VEST
FZ_ENUM_CHARACTER_INFO_WEIGHT
FZ_ENUM_CHARACTER_SLOT_ZED_DMG
EQUIPMENT_SLOT_OVERSHIRT
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_WOUND
FZ_ENUM_CHARACTER_SLOT_MAKEUP_LIPS
EQUIPMENT_SLOT_SOCKS
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_EARS
void OnInitGlobalModData()
FZ_ENUM_CHARACTER_INFO_HAIR_COLOR
EQUIPMENT_SLOT_HEAD
Deprecated. To be removed.
FZ_ENUM_CHARACTER_SLOT_BELLY_BUTTON
EQUIPMENT_SLOT_UNDERSHIRT
Deprecated. To be removed.
The Inventories module for FrameworkZ. Defines and interacts with INVENTORY object.
Items module for FrameworkZ. Defines and interacts with ITEM object.
Players module for FrameworkZ. Defines and interacts with PLAYER object.