Add CS skin select script
This commit is contained in:
124
scripts/client/skin-select.js
Normal file
124
scripts/client/skin-select.js
Normal file
@@ -0,0 +1,124 @@
|
||||
// ===========================================================================
|
||||
// Asshat-Gaming Roleplay
|
||||
// https://github.com/VortrexFTW/gtac_asshat_rp
|
||||
// Copyright (c) 2021 Asshat-Gaming (https://asshatgaming.com)
|
||||
// ===========================================================================
|
||||
// FILE: skin-select.js
|
||||
// DESC: Provides skin-selector functions and usage
|
||||
// TYPE: Client (JavaScript)
|
||||
// ===========================================================================
|
||||
|
||||
let skinSelectMessageFontTop = null;
|
||||
let skinSelectMessageFontBottom = null;
|
||||
let skinSelectMessageTextTop = "Skin Name";
|
||||
let skinSelectMessageTextBottom = "Choose a skin using LEFT and RIGHT arrows. Use ENTER to finish or BACKSPACE to cancel.";
|
||||
let skinSelectMessageColourTop = COLOUR_YELLOW;
|
||||
let skinSelectMessageColourBottom = COLOUR_WHITE;
|
||||
|
||||
let usingSkinSelector = false;
|
||||
let skinSelectorIndex = 0;
|
||||
|
||||
let newCharacterSkinSelectPedPosition = [
|
||||
[],
|
||||
[139.54, -903.00, 26.16],
|
||||
[-379.16, -535.27, 17.28],
|
||||
[2495.03, -1685.66, 13.51],
|
||||
[904.27, -498.00, 14.522],
|
||||
];
|
||||
|
||||
let newCharacterSkinSelectPedHeading = [
|
||||
[],
|
||||
[15.0],
|
||||
[0.0],
|
||||
[0.01],
|
||||
[3.127],
|
||||
];
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function initSkinSelectScript() {
|
||||
logToConsole(LOG_DEBUG, "[Asshat.SkinSelect]: Initializing skin selector script ...");
|
||||
skinSelectMessageFontTop = loadSkinSelectMessageFontTop();
|
||||
skinSelectMessageFontBottom = loadSkinSelectMessageFontBottom();
|
||||
logToConsole(LOG_DEBUG, "[Asshat.SkinSelect]: Skin selector script initialized!");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function loadSkinSelectMessageFontTop() {
|
||||
return lucasFont.createFont(fontStream, 20.0);
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function loadSkinSelectMessageFontBottom() {
|
||||
return lucasFont.createDefaultFont(12.0, "Roboto", "Light");
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function processSkinSelectKeyPress(keyCode) {
|
||||
if(usingSkinSelector) {
|
||||
if(keyCode == SDLK_RIGHT) {
|
||||
if(getGameData().allowedSkins.length-1 == skinSelectorIndex) {
|
||||
skinSelectorIndex = 0;
|
||||
} else {
|
||||
skinSelectorIndex++;
|
||||
}
|
||||
localPlayer.skin = getGameData().allowedSkins[getGame()][skinSelectorIndex][0];
|
||||
skinSelectMessageTextTop = getGameData().allowedSkins[getGame()][skinSelectorIndex][1];
|
||||
} else if(keyCode == SDLK_LEFT) {
|
||||
if(getGameData().allowedSkins.length-1 == 0) {
|
||||
skinSelectorIndex = getGameData().allowedSkins[getGame()].length-1;
|
||||
} else {
|
||||
skinSelectorIndex--;
|
||||
}
|
||||
localPlayer.skin = getGameData().allowedSkins[getGame()][skinSelectorIndex][0];
|
||||
skinSelectMessageTextTop = getGameData().allowedSkins[getGame()][skinSelectorIndex][1];
|
||||
} else if(keyCode == SDLK_RETURN) {
|
||||
triggerNetworkEvent("ag.skinSelected", skinSelectorIndex);
|
||||
usingSkinSelector = false;
|
||||
} else if(keyCode == SDLK_BACKSPACE) {
|
||||
triggerNetworkEvent("ag.skinSelected", -1);
|
||||
usingSkinSelector = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function processSkinSelectRendering() {
|
||||
if(usingSkinSelector) {
|
||||
if(skinSelectMessageFontTop != null && skinSelectMessageFontBottom != null) {
|
||||
skinSelectMessageFontTop.render(skinSelectMessageTextTop, [0, gta.height-100], gta.width, 0.5, 0.0, skinSelectMessageFontTop.size, skinSelectMessageColourTop, true, true, false, true);
|
||||
skinSelectMessageFontBottom.render(skinSelectMessageTextBottom, [0, gta.height-65], gta.width, 0.5, 0.0, skinSelectMessageFontBottom.size, skinSelectMessageColourBottom, true, true, false, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
|
||||
function toggleSkinSelect(state) {
|
||||
if(state) {
|
||||
skinSelectorIndex = getAllowedSkinDataBySkinId(localPlayer.skin);
|
||||
if(localPlayer.skin != getGameData().allowedSkins[getGame()][skinSelectorIndex][0]) {
|
||||
localPlayer.skin = getGameData().allowedSkins[getGame()][skinSelectorIndex][0];
|
||||
}
|
||||
usingSkinSelector = true;
|
||||
let frontCameraPosition = getPosInFrontOfPos(localPlayer.position, localPlayer.heading, 5);
|
||||
gta.setCameraLookAt(frontCameraPosition, localPlayer.position, true);
|
||||
gui.showCursor(true, false);
|
||||
localPlayer.invincible = true;
|
||||
localPlayer.setProofs(true, true, true, true, true);
|
||||
localPlayer.collisionsEnabled = false;
|
||||
} else {
|
||||
usingSkinSelector = false;
|
||||
gta.restoreCamera(true);
|
||||
gui.showCursor(false, true);
|
||||
localPlayer.invincible = false;
|
||||
localPlayer.setProofs(false, false, false, false, false);
|
||||
localPlayer.collisionsEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
Reference in New Issue
Block a user