Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set default number of characters per player #78

Merged
merged 2 commits into from Feb 22, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
@@ -1,6 +1,8 @@
# qb-multicharacter
Multi Character Feature for QB-Core Framework :people_holding_hands:

Added support for setting default number of characters per player per Rockstar license

# License

QBCore Framework
Expand Down
17 changes: 10 additions & 7 deletions client/main.lua
Expand Up @@ -36,12 +36,15 @@ local function skyCam(bool)
end

local function openCharMenu(bool)
SetNuiFocus(bool, bool)
SendNUIMessage({
action = "ui",
toggle = bool,
})
skyCam(bool)
QBCore.Functions.TriggerCallback("qb-multicharacter:server:GetNumberOfCharacters", function(result)
SetNuiFocus(bool, bool)
SendNUIMessage({
action = "ui",
toggle = bool,
nChar = result,
})
skyCam(bool)
end)
end

-- Events
Expand Down Expand Up @@ -199,4 +202,4 @@ end)
RegisterNUICallback('removeCharacter', function(data)
TriggerServerEvent('qb-multicharacter:server:deleteCharacter', data.citizenid)
TriggerEvent('qb-multicharacter:client:chooseChar')
end)
end)
5 changes: 5 additions & 0 deletions config.lua
Expand Up @@ -5,3 +5,8 @@ Config.DefaultSpawn = vector3(-1035.71, -2731.87, 12.86) -- Default spawn coords
Config.PedCoords = vector4(-813.97, 176.22, 76.74, -7.5) -- Create preview ped at these coordinates
Config.HiddenCoords = vector4(-812.23, 182.54, 76.74, 156.5) -- Hides your actual ped while you are in selection
Config.CamCoords = vector4(-813.46, 178.95, 76.85, 174.5) -- Camera coordinates for character preview screen

Config.DefaultNumberOfCharacters = 1 -- Define maximum amount of default characters (maximum 5 characters defined by default)
Config.PlayersNumberOfCharacters = { -- Define maximum amount of player characters by rockstar license (you can find this license in your server's database in the player table)
{ license = "license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", numberOfChars = 2 },
}
19 changes: 1 addition & 18 deletions html/index.html
Expand Up @@ -21,24 +21,7 @@
</div>
</div>
<div class="characters-list">
<div class="character-list-header"><p>My Characters</p></div>
<div class="character" id="char-1" data-cid="">
<span id="slot-name">Create New Character<span id="cid"></span></span>
</div>
<div class="character" id="char-2" data-cid="">
<span id="slot-name">Create New Character<span id="cid"></span></span>
</div>
<div class="character" id="char-3" data-cid="">
<span id="slot-name">Create New Character<span id="cid"></span></span>
</div>
<div class="character" id="char-4" data-cid="">
<span id="slot-name">Create New Character<span id="cid"></span></span>
</div>
<div class="character" id="char-5" data-cid="">
<span id="slot-name">Create New Character<span id="cid"></span></span>
</div>
<div class="character-btn" id="play"><p id="play-text">Select a character</p></div>
<div class="character-btn" id="delete"><p id="delete-text">Select a character</p></div>

</div>

<div class="character-info">
Expand Down
23 changes: 21 additions & 2 deletions html/script.js
Expand Up @@ -2,12 +2,14 @@ var selectedChar = null;
var WelcomePercentage = "30vh"
qbMultiCharacters = {}
var Loaded = false;
var NChar = null;

$(document).ready(function (){
window.addEventListener('message', function (event) {
var data = event.data;

if (data.action == "ui") {
NChar = data.nChar;
if (data.toggle) {
$('.container').show();
$(".welcomescreen").fadeIn(150);
Expand Down Expand Up @@ -40,6 +42,7 @@ $(document).ready(function (){
}, 500);

setTimeout(function(){
setCharactersList()
$.post('https://qb-multicharacter/setupCharacters');
setTimeout(function(){
clearInterval(DotsInterval);
Expand Down Expand Up @@ -243,8 +246,24 @@ $(document).on('click', '#cancel-delete', function(e){
$('.character-delete').fadeOut(150);
});

function setCharactersList() {
var htmlResult = '<div class="character-list-header"><p>My Characters</p></div>'
for (let i = 1; i <= NChar; i++) {
htmlResult += '<div class="character" id="char-'+ i +'" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div>'
}
htmlResult += '<div class="character-btn" id="play"><p id="play-text">Select a character</p></div><div class="character-btn" id="delete"><p id="delete-text">Select a character</p></div>'
$('.characters-list').html(htmlResult)
}

function refreshCharacters() {
$('.characters-list').html('<div class="character" id="char-1" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div><div class="character" id="char-2" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div><div class="character" id="char-3" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div><div class="character" id="char-4" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div><div class="character" id="char-5" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div><div class="character-btn" id="play"><p id="play-text">Select a character</p></div><div class="character-btn" id="delete"><p id="delete-text">Select a character</p></div>')
var htmlResult = ''
for (let i = 1; i <= NChar; i++) {
htmlResult += '<div class="character" id="char-'+ i +'" data-cid=""><span id="slot-name">Empty Slot<span id="cid"></span></span></div>'
}

htmlResult += '<div class="character-btn" id="play"><p id="play-text">Select a character</p></div><div class="character-btn" id="delete"><p id="delete-text">Select a character</p></div>'
$('.characters-list').html(htmlResult)

setTimeout(function(){
$(selectedChar).removeClass("char-selected");
selectedChar = null;
Expand Down Expand Up @@ -332,4 +351,4 @@ qbMultiCharacters.resetAll = function() {
$('.welcomescreen').css("top", WelcomePercentage);
$('.server-log').show();
$('.server-log').css("top", "25%");
}
}
19 changes: 19 additions & 0 deletions server/main.lua
Expand Up @@ -134,6 +134,25 @@ QBCore.Functions.CreateCallback("qb-multicharacter:server:GetServerLogs", functi
end)
end)

QBCore.Functions.CreateCallback("qb-multicharacter:server:GetNumberOfCharacters", function(source, cb)
local license = QBCore.Functions.GetIdentifier(source, 'license')
local numOfChars = 0

if next(Config.PlayersNumberOfCharacters) then
for i, v in pairs(Config.PlayersNumberOfCharacters) do
if v.license == license then
numOfChars = v.numberOfChars
break
else
numOfChars = Config.DefaultNumberOfCharacters
end
end
else
numOfChars = Config.DefaultNumberOfCharacters
end
cb(numOfChars)
end)

QBCore.Functions.CreateCallback("qb-multicharacter:server:setupCharacters", function(source, cb)
local license = QBCore.Functions.GetIdentifier(source, 'license')
local plyChars = {}
Expand Down