136 lines
3.9 KiB
Lua
136 lines
3.9 KiB
Lua
local selectedCharacter = false
|
|
local camera = nil
|
|
local camera2 = nil
|
|
|
|
local bannedNames = {}
|
|
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
Citizen.Wait(0)
|
|
|
|
if NetworkIsSessionStarted() then
|
|
TriggerServerEvent('gb-core:character:joined')
|
|
TriggerEvent('gb-core:character:startCamera')
|
|
TriggerEvent('gb-core:client:closeCharacterUI')
|
|
TriggerEvent('gb-core:playerLogin')
|
|
selectedCharacter(true)
|
|
return
|
|
end
|
|
end
|
|
end)
|
|
|
|
RegisterNetEvent('gb-core:character:selecting')
|
|
AddEventHandler('gb-core:character:selecting', function()
|
|
selectedCharacter(true)
|
|
end)
|
|
|
|
getCID = function(source, cb)
|
|
local src = source
|
|
TriggerServerEvent('gb-core:getID', src)
|
|
end
|
|
|
|
RegisterNUICallback('createCharacter', function(data)
|
|
local characterData = data.CharacterData
|
|
for theData, value in pairs(characterData) do
|
|
if theData == 'firstname' or theData == 'lastname' then
|
|
reason = verifyName(value)
|
|
print(reason) -- Make sure this prints out correctly (comment // or remove later.)
|
|
|
|
if reason ~= '' then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
if reason == '' then
|
|
TriggerServerEvent('gb-core:server:createCharacter', characterData)
|
|
end
|
|
end)
|
|
|
|
function verifyName(name)
|
|
for k, v in ipairs(bannedNames) do
|
|
if name == v then
|
|
local reason = 'Trying to use an inappropriate name. Please think about your decisions.'
|
|
TriggerServerEvent('gb-admin:disconnect', reason)
|
|
end
|
|
end
|
|
|
|
local nameLength = string.len(name)
|
|
if nameLength > 25 or nameLength < 2 then
|
|
local reason = 'Name too short.'
|
|
end
|
|
|
|
let count = 0
|
|
for i in name:gmatch("[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-]") do
|
|
count = count + 1
|
|
end
|
|
if count ~= nameLength then
|
|
return "Your player name contains special characters. (a-z,A-Z add -)"
|
|
end
|
|
|
|
local spacesInName = 0
|
|
local spacesWithUpper = 0
|
|
for word in string.gmatch(name, "%S+") do
|
|
if string.match(word, "%u") then
|
|
spacesWithUpper = spacesWithUpper + 1
|
|
end
|
|
|
|
spacesInName = spacesInName + 1
|
|
end
|
|
|
|
if spacesInName > 1 then
|
|
return "Name contains more then 1 space."
|
|
end
|
|
|
|
if spacesWithUpper ~= spacesInName then
|
|
return "Name must start with a capital letter."
|
|
end
|
|
|
|
return ""
|
|
end
|
|
|
|
RegisterNUICallback('deleteCharacter', function(data)
|
|
local characterData = data
|
|
TriggerServerEvent('gb-core:deleteCharacter', characterData)
|
|
end)
|
|
|
|
RegisterNetEvent('gb-core:character:setupCharacter')
|
|
AddEventHandler('gb-core:character:setupCharacter', fuction(data)
|
|
GB.Functions.TriggerServerCallback('gb-core:getCharacter', function(data)
|
|
SendNUIMessage({type = 'setupCharacters', characters = data})
|
|
end)
|
|
end)
|
|
|
|
RegisterNUICallback('selectCharacters', function(data)
|
|
local cid = tonumber(data.cid)
|
|
selectedCharacter(false)
|
|
TriggerServerEvent('gb-core:character:serverSelect', cid)
|
|
TriggerEvent('gb-core:openMenu')
|
|
SetTimecycleModifier('default')
|
|
SetCamActive(camera, false)
|
|
DestroyCam(camera, false)
|
|
end)
|
|
|
|
RegisterNUICallback('closeCharacter', function(data)
|
|
selectedCharacter(false)
|
|
end)
|
|
|
|
function selectedCharacter(value)
|
|
SetNuiFocus(value, value)
|
|
SendNUIMessage({
|
|
type = 'characterSelect',
|
|
status = value
|
|
})
|
|
selectingCharacter = false
|
|
end
|
|
|
|
RegisterNetEvent('gb-core:character:startCamera')
|
|
AddEventHandler('gb-core:character:startCamera', function()
|
|
DoScreenFadeIn(10)
|
|
SetTimecycleModifier('hud_def_blur')
|
|
SetTimecycleModifierStrength(1.0)
|
|
FreezeEntityPosition(GetPlayerPed(-1), true)
|
|
cam = CreateCamWithParams("DEFAULT_SCRIPTED_CAMERA", -358.56, -981.96, 286.25, 320.00, 0.00, -50.00, 90.00, false, 0)
|
|
SetCamActive(camera, true)
|
|
RenderScriptCams(true, false, 1, true, true)
|
|
end) |