👾 renzu_multicharacter - Player Multicharacters [ESX/QBCORE]

any luck?

Screenshot 2024-06-21 183158

i have this error

The Script suddenly stopped Workinmg without doing any changes.

I can select my Char but cannot Enter the Game. Stuck at preview of my Character

hey @Renzuzu For some reason, i dont know what appears wrong, but my characters never save using multicharacter, any fixes?

Hi Renzuzu ! I have a problem → First time i create a char, he die…

Its my config file :

Config = {}
Config.Locale = ‘en’
Config.UseDefaultRegister = true – if false you will use other registration resource ex. esx_identite,
Config.RegisterHook = {
event = true,
call = ‘esx_identity:showRegisterIdentity’ – sample esx_identity compatibility. for more compatibilty see bottom.
}

– SPAWN resource
Config.SpawnSelector = false – enable this if you want to use spawn selector
Config.SpawnSelectInNewOnly = false – set this to true if you want to use SpawnSelector on new players only
Config.SpawnSelectorExport = function(coord) – by default it uses my spawn resource
return exports.renzu_spawn:Selector({x = coord.x, y = coord.y, z = coord.z, heading = coord.w})
end
– intro
Config.bgmusic = false – play bg music on intro character select
Config.IntroURL = ‘https://www.youtube.com/watch?v=41cqwo504hA’ – bg music on intro
Config.cam = true – intro camera

Config.CameraIntro = { – camera locations when doing intro
[1] = {coord = vec3(-378.5999755859,504.25170898438,434.6608581543), rot = vec3(0.00, 0.00, 151.00)},
[2] = {coord = vec3(169.95536804199,-964.54614257813,64.203475952148), rot = vec3(360.00, 0.00, -30.00)},
[3] = {coord = vec3(-407.0290222168,1312.7703857422,390.61987304), rot = vec3(360.00, 0.00, 180.00)},
[4] = {coord = vec3(-1040.8935546875,-937.53588867188,114.1599731445), rot = vec3(360.00, 0.00, 169.00)},
[5] = {coord = vec3(907.22625732422,108.29551696777,137.6200256347), rot = vec3(320.00, 5.00, 180.00)},
}
– Allows players to delete their characters
Config.CanDelete = true
– This is the default number of slots for EVERY player
Config.Slots = 4
Config.commandslot = ‘updatecharslots’ – /updatecharslots 7

– Text to prepend to each character (char#:identifier) - keep it short
Config.Prefix = ‘char’
– DEFAULT SPAWN
Config.Spawn = vector3(-1037.59,-2736.90,20.16)

– Do not use unless you are prepared to adjust your resources to correctly reset data
Config.Relog = true

Config.ESXStarterItem = {
[1] = {item = ‘bandage’, amount = 10},
[2] = {item = ‘phone’, amount = 1},
[3] = {item = ‘medikit’, amount = 3},
[4] = {item = ‘money’, amount = 50000},
[5] = {item = ‘radio’, amount = 1},

}

Config.Animations = {
[‘choose’] = {
[1] = {dict = ‘anim@mp_player_intcelebrationfemale@blow_kiss’, anim = ‘blow_kiss’},
[2] = {dict = ‘anim@arena@celeb@podium@no_prop@’, anim = ‘regal_c_1st’},

	[3] = {dict = 'anim@mp_player_intcelebrationfemale@shadow_boxing', anim = 'shadow_boxing'},

	[4] = {dict = 'mini@triathlon', anim = 'want_some_of_this'},

	[5] = {dict = 'random@street_race', anim = 'grid_girl_race_start'},

	[6] = {dict = 'amb@world_human_hang_out_street@male_c@idle_a', anim = 'idle_b'},

	[7] = {dict = 'anim@arena@celeb@flat@solo@no_props@', anim = 'flip_a_player_a'},
	[8] = {dict = 'timetable@reunited@ig_2', anim = 'jimmy_getknocked'},
	[9] = {dict = 'anim@mp_player_intcelebrationmale@karate_chops', anim = 'karate_chops'},

	[10] = {dict = 'anim@mp_player_intupperpeace', anim = 'idle_a_fp'},

},
['delete'] = {
	[1] = {dict = 'anim@mp_player_intcelebrationmale@cut_throat', anim = 'cut_throat'},
	[2] = {dict = 'gestures@m@standing@casual', anim = 'gesture_damn'},
	[3] = {dict = 'anim@mp_player_intupperface_palm', anim = 'idle_a'},
	[4] = {dict = 'anim@mp_player_intupperfinger', anim = 'idle_a_fp'},

}

}

– skin menus
– set use to true if you want to use the skin menus
– do not set multiple trues on the same resource eg. skinchanger
– you can add more skin menu or creator events
Config.SkinMenus = {
[‘skinchanger’] = {
[‘esx_skin’] = {event = ‘esx_skin:openSaveableMenu’, use = true},
[‘VexCreator’] = {event = ‘VexCreator:loadCreator’, use = false},
[‘cui_character’] = {event = ‘cui_character:open’, use = false},
[‘example_resource’] = {exports = ‘exports.example:Creator’, event = nil, use = false}, – example support exports
},
[‘illeniumappearance’] = {}, – is there any creator uses fivemappearance? i will leave this todo for now
[‘fivemappearance’] = {}, – is there any creator uses fivemappearance? i will leave this todo for now
[‘qb-clothing’] = {
[‘qb-clothing’] = { event = ‘qb-clothing:client:openMenu’, use = true},
},
}
– compatibility with IlleniumStudios version of fivemappearance for qbcore
Config.fivemappearanceConfig = {
ped = true, headBlend = true, faceFeatures = true, headOverlays = true, components = true, componentConfig = { masks = true, upperBody = true, lowerBody = true, bags = true, shoes = true, scarfAndChains = true, bodyArmor = true, shirts = true, decals = true, jackets = true }, props = true, propConfig = { hats = true, glasses = true, ear = true, watches = true, bracelets = true }, tattoos = true, enableExit = true,
}

– Choose Skin Resource
Config.skinsupport = {
[‘fivem-appearance’] = false,
[‘skinchanger’] = true,
[‘qb-clothing’] = false,
[‘illenium-appearance’] = true
}

Config.skin = ‘none’ – do not replace this. this resource automatically detect your skin resourc if its supported.
local skincount = {}
local lowpriority = ‘skinchanger’ – for people who started 2 skin resource :facepalm
for skin,_ in pairs(Config.skinsupport) do
if GetResourceState(skin) == ‘started’ or GetResourceState(skin) == ‘starting’ then – autodetect skin resource
Config.skin = skin
table.insert(skincount,skin)
end
end
if Config.skin == ‘none’ then
warn(‘YOU DONT HAVE ANY SUPPORTED SKIN RESOURCE’)
end
if #skincount > 1 then
warn(‘you have multiple skin resource started. start only 1 supported skin resource. ex. fivem-appearance, skinchanger cannot be started at the same time!’)
for k,skin in pairs(skincount) do
if lowpriority ~= skin then
Config.skin = skin
end
end
warn(‘USING ‘…Config.skin…’ Anyway’)
end

— do not edit
Config.SkinMenu = {}
for resource,v in pairs(Config.SkinMenus) do
if resource == Config.skin then
for k,v in pairs(v) do
if v.use then
Config.SkinMenu[resource] = {event = v.event or false, exports = v.exports or false}
end
end
end
end

– skin resource

– FRAMEWORK AUTO DETECT 2 supported framework
Config.framework = GetResourceState(‘es_extended’) == ‘started’ and ‘ESX’ or GetResourceState(‘qb-core’) == ‘started’ and ‘QBCORE’
if not Config.framework then warn(“NO FRAMEWORK DETECTED”) end
– extra ui info ex. LocalPlayer.state:set(‘invehicle’,true,true)
– take note this utilise state bag. so the state value should be sent by client or server manualy.
Config.Status = {
[‘invehicle’] = ‘’,
[‘isdead’] = ‘’,
[‘premium’] = ‘’,
[‘injail’] = ‘’,
[‘iscuffed’] = ‘’,
[‘incommunityservice’] = ‘’,
[‘isbanned’] = ‘’,
[‘inbed’] = ‘’,
[‘inhouse’] = ‘’,
[‘inapartment’] = ‘’,
[‘inmlo’] = ‘’,
[‘admin’] = ‘’,
}

– Custom identity / register resource
– exports.renzu_multicharacter:RegisterComplete(source, {
– firstname = ‘Firstname’, lastname = ‘Lastname’, sex = ‘m’, height = 100,
– })

It works fine for ESX thanks for sharing! :slight_smile:

need to intsall the renzu.mp3