1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-04 20:19:07 +02:00
parent 9f8d0cf336
commit baf4c9b0a2
571 changed files with 2982 additions and 2480 deletions

Binary file not shown.

View file

@ -1,83 +1,78 @@
Thank you for purchasing rtx_themepark we're grateful for your support. If you'd ever have a question and / or need our help, please reach out to us by sending an email or go ahead and create a ticket on our discord: https://discord.gg/P6KdaDpgAk
Install instructions (Standalone):
1. Put rtx_themepark and rtx_themepark_objects folder to your resources
2. Open config.lua file
3. Configure your config.lua to your preferences
4. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
5. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/LWaYxz7.png) remove -- from line 11, or replace line 11 with '@oxmysql/lib/MySQL.lua',
6. Put rtx_themepark and rtx_themepark_objects to the server.cfg
7. If you want custom ped routes in the park, also put rtx_scenarios to your resources and also put rtx_scenarios to the server.cfg
8. If you have any maps around Del Perro Pier, please check our [Compatibility with other maps] folder to see if any files need to be replaced.
Install instructions (QBCore):
1. Put rtx_themepark and rtx_themepark_objects folder to your resources
2. Open config.lua file
3. Replace Config.Framework = "standalone" with Config.Framework = "qbcore"
4. Configure your config.lua to your preferences
5. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
6. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/LWaYxz7.png) remove -- from line 11, or replace line 11 with '@oxmysql/lib/MySQL.lua',
7. Put rtx_themepark and rtx_themepark_objects to the server.cfg
8. If you want custom ped routes in the park, also put rtx_scenarios to your resources and also put rtx_scenarios to the server.cfg
9. If you have any maps around Del Perro Pier, please check our [Compatibility with other maps] folder to see if any files need to be replaced.
Install instructions (ESX):
1. Put rtx_themepark and rtx_themepark_objects folder to your resources.
2. Open config.lua file
3. Replace Config.Framework = "standalone" with Config.Framework = "esx"
4. Configure your config.lua to your preferences
5. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
6. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/yoULcX4.png) remove -- from line 10, or replace line 10 with '@mysql-async/lib/MySQL.lua',
7. Put rtx_themepark and rtx_themepark_objects to the server.cfg
8. If you want custom ped routes in the park, also put rtx_scenarios to your resources and also put rtx_scenarios to the server.cfg
9. If you have any maps around Del Perro Pier, please check our [Compatibility with other maps] folder to see if any files need to be replaced.
Common issues:
-----------------------------
2 Ferris wheels in Theme Park:
If you see 2 Ferris Wheel, it is because you have some IPL loader on the server that loads the old wheel, you need to disable this IPL, here is an example how to disable the old Ferris Wheel in bob74_ipl
In bob74_ipl/gtav/base.lua at bottom remove RequestIpl("ferris_finale_anim")
From:
https://i.imgur.com/G8EGoYd.png
To:
https://i.imgur.com/yM7uJbW.png
-----------------------------
Need a key to start bumper cars:
You need to add to your script with vehicle keys, the whitelist for our vehicle, the vehicle name is: rtxbumper
-----------------------------
Object names for whitelist to anticheat:
prop_cs_hotdog_02
prop_cs_burger_01
sempre_delperropier_popcorn_box
sempre_delperropier_candycotton_prop
sempre_delperropier_balloon_b
sempre_delperropier_balloon_g
sempre_delperropier_balloon_p
sempre_delperropier_balloon_r
sempre_delperropier_bus_blue_screen
sempre_delperropier_bus_red_screen
sempre_delperropier_bus_target
You can to stream just one scenarios resource on the server which means if you have any other scenarios resource then just take pier.ymt from our scenarios resource and replace it in scenarios resource that you currently have.
-----------------------------
1) if you want to edit the logo of top of the Detonator, just replace our big logo in sempre_delperropier.ytd
-----------------------------
Open signs floating in the air - this problem is because NVE and sadly we cannot do anything about it. Open signs are obviously deleted but NVE somehow adds them on its own.
License agreement / Terms of Service
1. Any purchase is non-refundable.
2. Each product is to be used on a singular server, with the exception of a test server.
3. Any form of redistribution of our content is considered copyright infringement.
4. If any of these rules are broken, legal actions can be taken.
Thank you for purchasing rtx_themepark_dlc we're grateful for your support. If you'd ever have a question and / or need our help, please reach out to us by sending an email or go ahead and create a ticket on our discord: https://discord.gg/P6KdaDpgAk
Install instructions (Standalone):
!!If you have base Theme Park installed, remove rtx_themepark and rtx_themepark_objects
1. Put rtx_themepark_dlc and rtx_themepark_dlc_objects folder to your resources
2. Open config.lua file
3. Configure your config.lua to your preferences
4. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
5. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/LWaYxz7.png) remove -- from line 11, or replace line 11 with '@oxmysql/lib/MySQL.lua',
6. Put rtx_themepark_dlc and rtx_themepark_dlc_objects to the server.cfg
Install instructions (QBCore):
!!If you have base Theme Park installed, remove rtx_themepark and rtx_themepark_objects
1. Put rtx_themepark_dlc and rtx_themepark_dlc_objects folder to your resources
2. Open config.lua file
3. Replace Config.Framework = "standalone" with Config.Framework = "qbcore"
4. Configure your config.lua to your preferences
5. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
6. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/LWaYxz7.png) remove -- from line 11, or replace line 11 with '@oxmysql/lib/MySQL.lua',
7. Put rtx_themepark_dlc and rtx_themepark_dlc_objects to the server.cfg
Install instructions (ESX):
!!If you have base Theme Park installed, remove rtx_themepark and rtx_themepark_objects
1. Put rtx_themepark_dlc and rtx_themepark_dlc_objects folder to your resources.
2. Open config.lua file
3. Replace Config.Framework = "standalone" with Config.Framework = "esx"
4. Configure your config.lua to your preferences
5. Upload sql sql.sql file to your mysql database. (if you want to use theme park management)
6. Open fxmanifest.lua and edit it same like on this screenshot (https://i.imgur.com/yoULcX4.png) remove -- from line 10, or replace line 10 with '@mysql-async/lib/MySQL.lua',
7. Put rtx_themepark_dlc and rtx_themepark_dlc_objects to the server.cfg
Common issues:
-----------------------------
2 Ferris wheels in Theme Park:
If you see 2 Ferris Wheel, it is because you have some IPL loader on the server that loads the old wheel, you need to disable this IPL, here is an example how to disable the old Ferris Wheel in bob74_ipl
In bob74_ipl/gtav/base.lua at bottom remove RequestIpl("ferris_finale_anim")
From:
https://i.imgur.com/G8EGoYd.png
To:
https://i.imgur.com/yM7uJbW.png
-----------------------------
Need a key to start bumper cars:
You need to add to your script with vehicle keys, the whitelist for our vehicle, the vehicle name is: rtxbumper
-----------------------------
Object names for whitelist to anticheat:
prop_cs_hotdog_02
prop_cs_burger_01
prop_plastic_cup_02
sempre_delperropier_popcorn_box
sempre_delperropier_candycotton_prop
sempre_delperropier_balloon_b
sempre_delperropier_balloon_g
sempre_delperropier_balloon_p
sempre_delperropier_balloon_r
sempre_delperropier_bus_blue_screen
sempre_delperropier_bus_red_screen
sempre_delperropier_bus_target
License agreement / Terms of Service
1. Any purchase is non-refundable.
2. Each product is to be used on a singular server, with the exception of a test server.
3. Any form of redistribution of our content is considered copyright infringement.
4. If any of these rules are broken, legal actions can be taken.
© 2025 RTX Development, all rights reserved.

View file

@ -1,69 +1,90 @@
fx_version 'cerulean'
game 'gta5'
description 'RTX THEME PARK'
version '60.0'
server_scripts {
--'@mysql-async/lib/MySQL.lua', -- enable this and remove oxmysql line (line 11) if you use mysql-async (only enable this for qbcore/esx framework)
--'@oxmysql/lib/MySQL.lua', -- enable this and remove mysql async line (line 10) if you use oxmysql (only enable this for qbcore/esx framework)
'config.lua',
'language/main.lua',
'server/main.lua',
'server/attr1.lua',
'server/attr2.lua',
'server/attr3.lua',
'server/attr4.lua',
'server/attr5.lua',
'server/attr6.lua',
'server/attr7.lua',
'server/attr8.lua',
'server/attr9.lua',
'server/other.lua'
}
client_scripts {
'config.lua',
'language/main.lua',
'client/main.lua',
'client/sound.lua',
'client/paths.lua',
'client/attr1.lua',
'client/attr2.lua',
'client/attr3.lua',
'client/attr4.lua',
'client/attr5.lua',
'client/attr6.lua',
'client/attr7.lua',
'client/attr8.lua',
'client/attr9.lua'
fx_version 'cerulean'
game 'gta5'
description 'RTX THEME PARK DLC'
version '50.0'
server_scripts {
--'@mysql-async/lib/MySQL.lua', -- enable this and remove oxmysql line (line 11) if you use mysql-async (only enable this for qbcore/esx framework)
--'@oxmysql/lib/MySQL.lua', -- enable this and remove mysql async line (line 10) if you use oxmysql (only enable this for qbcore/esx framework)
'config.lua',
'language/main.lua',
'server/main.lua',
'server/attr1.lua',
'server/attr2.lua',
'server/attr3.lua',
'server/attr4.lua',
'server/attr5.lua',
'server/attr6.lua',
'server/attr7.lua',
'server/attr8.lua',
'server/attr9.lua',
'server/dlc/attr10.lua',
'server/dlc/attr11.lua',
'server/dlc/attr12.lua',
'server/dlc/attr13.lua',
'server/dlc/attr14.lua',
'server/dlc/attr15.lua',
'server/dlc/attr16.lua',
'server/dlc/attr17.lua',
'server/dlc/attr18.lua',
'server/other.lua'
}
files {
'html/ui.html',
'html/styles.css',
'html/scripts.js',
'html/sound.js',
'html/debounce.min.js',
'html/jquery.connections.js',
'html/BebasNeueBold.ttf',
'html/NakaraRegular.ttf',
'html/img/*.png'
}
exports {
'IsPlayerOnRide', -- exports["rtx_themepark"]:IsPlayerOnRide() -- it will return if player is on some theme park ride
}
ui_page 'html/ui.html'
lua54 'yes'
escrow_ignore {
'config.lua',
'language/main.lua',
'server/other.lua'
client_scripts {
'config.lua',
'language/main.lua',
'client/main.lua',
'client/sound.lua',
'client/paths1.lua',
'client/paths2.lua',
'client/paths3.lua',
'client/attr1.lua',
'client/attr2.lua',
'client/attr3.lua',
'client/attr4.lua',
'client/attr5.lua',
'client/attr6.lua',
'client/attr7.lua',
'client/attr8.lua',
'client/attr9.lua',
'client/dlc/attr10.lua',
'client/dlc/attr11.lua',
'client/dlc/attr12.lua',
'client/dlc/attr13.lua',
'client/dlc/attr14.lua',
'client/dlc/attr15.lua',
'client/dlc/attr16.lua',
'client/dlc/attr17.lua',
'client/dlc/attr18.lua',
}
files {
'html/ui.html',
'html/styles.css',
'html/scripts.js',
'html/sound.js',
'html/debounce.min.js',
'html/jquery.connections.js',
'html/BebasNeueBold.ttf',
'html/NakaraRegular.ttf',
'html/img/*.png',
'html/sounds/*.mp3'
}
exports {
'IsPlayerOnRide', -- exports["rtx_themepark_dlc"]:IsPlayerOnRide() -- it will return if player is on some theme park ride
}
ui_page 'html/ui.html'
lua54 'yes'
escrow_ignore {
'config.lua',
'language/main.lua',
'server/other.lua'
}
dependency '/assetpacks'

View file

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 757 B

After

Width:  |  Height:  |  Size: 757 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

@ -1,6 +1,16 @@
var volumeslider = document.getElementById("volumesliderdata");
var themeparkresourcename = "rtx_themepark";
var themeparkresourcename = "rtx_themepark_dlc";
var soundhandlerhaunted = new Howl({
src: "sounds/sound1.mp3",
volume: 0.2,
});
var soundhandler2haunted = new Howl({
src: "sounds/sound1.mp3",
volume: 0.2,
});
function closeMain() {
$("body").css("display", "none");
@ -40,6 +50,8 @@ $(".closemusicurl").click(function(){
$("#attractionurlshow").hide();
});
window.addEventListener('message', function (event) {
var item = event.data;
@ -231,56 +243,7 @@ window.addEventListener('message', function (event) {
$("#attractionshow").hide();
$("#parkattractionshow").hide();
$("#attractionurlshow").hide();
$("#parkmanagmentshow").fadeIn("slow");
$('#parkmanagmentattraction1').connections({
to: '#parkattractionconnector1',
'class': 'related'
});
$('#parkmanagmentattraction2').connections({
to: '#parkattractionconnector2',
'class': 'related'
});
$('#parkmanagmentattraction3').connections({
to: '#parkattractionconnector3',
'class': 'related'
});
$('#parkmanagmentattraction4').connections({
to: '#parkattractionconnector4',
'class': 'related'
});
$('#parkmanagmentattraction5').connections({
to: '#parkattractionconnector5',
'class': 'related'
});
$('#parkmanagmentattraction6').connections({
to: '#parkattractionconnector6',
'class': 'related'
});
$('#parkmanagmentattraction7').connections({
to: '#parkattractionconnector7',
'class': 'related'
});
$('#parkmanagmentattraction8').connections({
to: '#parkattractionconnector8',
'class': 'related'
});
$('#parkmanagmentattraction9').connections({
to: '#parkattractionconnector9',
'class': 'related'
});
$('#parkmanagmentattraction10').connections({
to: '#parkattractionconnector10',
'class': 'related'
});
$("#parkmanagmentshow").fadeIn("slow");
}
if (item.message == "updateparkbalance") {
@ -339,6 +302,16 @@ window.addEventListener('message', function (event) {
$("#attractionanimtextshow").show();
} else {
$("#attractionanimtextshow").hide();
}
if (item.attractionbumperchange == true) {
$("#attractioncamtextshow").show();
} else {
$("#attractioncamtextshow").hide();
}
if (item.rollercoastercamchange == true) {
$("#attractioncamtextshow2").show();
} else {
$("#attractioncamtextshow2").hide();
}
$("#attractionshow").show();
}
@ -414,16 +387,6 @@ window.addEventListener('message', function (event) {
if (item.message == "hidemanagmentmenu") {
$("#parkmanagmentmainshow").hide();
$("#parkmanagmentshow").hide();
$('#parkmanagmentattraction1').connections('remove');
$('#parkmanagmentattraction2').connections('remove');
$('#parkmanagmentattraction3').connections('remove');
$('#parkmanagmentattraction4').connections('remove');
$('#parkmanagmentattraction5').connections('remove');
$('#parkmanagmentattraction6').connections('remove');
$('#parkmanagmentattraction7').connections('remove');
$('#parkmanagmentattraction8').connections('remove');
$('#parkmanagmentattraction9').connections('remove');
$('#parkmanagmentattraction10').connections('remove');
}
if (item.message == "hideshooter") {
@ -448,6 +411,26 @@ window.addEventListener('message', function (event) {
let root = document.documentElement;
root.style.setProperty('--color', item.interfacecolordata);
}
if (item.message == "playsoundhaunted") {
soundhandlerhaunted.stop()
soundhandlerhaunted.volume(item.soundvolume);
soundhandlerhaunted._src = item.soundsrc;
soundhandlerhaunted.load();
soundhandlerhaunted.play();
}
if (item.message == "playsound2haunted") {
soundhandler2haunted.stop()
soundhandler2haunted.volume(item.soundvolume);
soundhandler2haunted._src = item.soundsrc;
soundhandler2haunted.load();
soundhandler2haunted.play();
}
if (item.message == "stopsoundhaunted") {
soundhandlerhaunted.stop()
}
if (item.message == "updateattractionmusiclabel") {
document.getElementsByClassName("parkattractioncontrolmusictextdata")[0].innerHTML = item.musiclabel;
@ -493,7 +476,7 @@ $(".parkmanagmentsettingsbutton").click(function () {
$.post('https://'+themeparkresourcename+'/parkmanagmentsattractions', JSON.stringify({}));
});
for (let int1data = 1; int1data < 11; int1data++) {
for (let int1data = 1; int1data < 20; int1data++) {
$("#parkattractionopendata" + int1data + "").click(function () {
if (document.getElementById("parkattractionopendata" + int1data + "").checked == false){
document.getElementById("parkattractionopendata" + int1data + "").checked = false;

View file

@ -1,236 +1,236 @@
var themeparkresourcename = "rtx_themepark";
var soundhandler = {}
var soundcheckerhandler = {}
window.addEventListener('message', function (event) {
var item = event.data;
if (item.message == "playsoundattraction") {
if (soundhandler[item.soundid] == undefined) {
$("body").append("<div id='"+ item.soundid +"'></div>");
soundhandler[item.soundid] = new YT.Player(""+ item.soundid +"", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.unMute();
event.target.setVolume(item.soundvolume);
event.target.playVideo();
},
'onError': function(event){
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
}
if (event.data == YT.PlayerState.ENDED) {
}
if (event.data == YT.PlayerState.ENDED) {
soundhandler[item.soundid].seekTo(0);
soundhandler[item.soundid].playVideo();
}
}
}
});
} else {
if (typeof soundhandler[item.soundid].setVolume === 'function') {
soundhandler[item.soundid].setVolume(item.soundvolume);
}
}
}
if (item.message == "playsound") {
if (item.soundcategory == "youtube") {
if (soundhandler[item.soundid] == undefined) {
$("body").append("<div id='"+ item.soundid +"'></div>");
soundhandler[item.soundid] = new YT.Player(""+ item.soundid +"", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.unMute();
event.target.setVolume(item.soundvolume);
event.target.playVideo();
},
'onError': function(event){
$.post('https://'+themeparkresourcename+'/sounderror', JSON.stringify({
soundid: item.soundid
}));
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: soundhandler[item.soundid].getVideoData().title,
soundtime: soundhandler[item.soundid].getCurrentTime(),
soundtimemax: soundhandler[item.soundid].getDuration()
}));
}
if (event.data == YT.PlayerState.ENDED) {
$.post('https://'+themeparkresourcename+'/soundend', JSON.stringify({
soundid: item.soundid
}));
}
}
}
});
} else {
if (typeof soundhandler[item.soundid].setVolume === 'function') {
soundhandler[item.soundid].setVolume(item.soundvolume);
}
}
} else {
if (soundhandler[item.soundid] == undefined) {
soundhandler[item.soundid] = new Howl({
src: item.soundsrc,
volume: item.soundvolume,
loop: false,
html5: true,
onplay: function(){
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: "MP3",
soundtime: soundhandler[item.soundid].seek(),
soundtimemax: soundhandler[item.soundid].duration()
}));
},
onend: function() {
$.post('https://'+themeparkresourcename+'/soundend', JSON.stringify({
soundid: item.soundid
}));
}
});
soundhandler[item.soundid].play();
} else {
if (typeof soundhandler[item.soundid].volume === 'function') {
soundhandler[item.soundid].volume(item.soundvolume);
}
if (soundhandler[item.soundid].playing() == false) {
soundhandler[item.soundid].play();
}
}
}
}
if (item.message == "checkmusicurl") {
$("body").append("<div id='videourlcheckyoutube'></div>");
soundcheckerhandler["videourlcheckyoutube"] = new YT.Player("videourlcheckyoutube", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.setVolume(0);
event.target.playVideo();
},
'onError': function(event){
$.post('https://'+themeparkresourcename+'/checkdone', JSON.stringify({
soundallowed: false,
}));
soundcheckerhandler["videourlcheckyoutube"].stopVideo();
soundcheckerhandler["videourlcheckyoutube"].destroy();
soundcheckerhandler["videourlcheckyoutube"] = null;
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
$.post('https://'+themeparkresourcename+'/checkdone', JSON.stringify({
soundallowed: true,
}));
soundcheckerhandler["videourlcheckyoutube"].stopVideo();
soundcheckerhandler["videourlcheckyoutube"].destroy();
soundcheckerhandler["videourlcheckyoutube"] = null;
}
}
}
});
}
if (item.message == "updatesounddata") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
if (soundhandler[item.soundid].getPlayerState() == 1) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: soundhandler[item.soundid].getVideoData().title,
soundtime: soundhandler[item.soundid].getCurrentTime(),
soundtimemax: soundhandler[item.soundid].getDuration()
}));
}
} else {
if (soundhandler[item.soundid].playing() == true) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: "MP3",
soundtime: soundhandler[item.soundid].seek(),
soundtimemax: soundhandler[item.soundid].duration()
}));
}
}
}
}
if (item.message == "setsoundtime") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
soundhandler[item.soundid].seekTo(item.timedata);
} else {
soundhandler[item.soundid].seek(item.timedata);
}
}
}
if (item.message == "stopsound") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
soundhandler[item.soundid].stopVideo();
soundhandler[item.soundid].destroy();
soundhandler[item.soundid] = null;
$("#'"+ item.soundid +"'").remove();
} else {
soundhandler[item.soundid].stop()
soundhandler[item.soundid] = null;
}
}
}
if (item.message == "stopsoundattraction") {
if (soundhandler[item.soundid] == undefined) {
} else {
soundhandler[item.soundid].stopVideo();
soundhandler[item.soundid].destroy();
soundhandler[item.soundid] = null;
}
}
if (item.message == "updateinterfacedata") {
themeparkresourcename = item.themeparkresourcenamedata;
let root = document.documentElement;
root.style.setProperty('--color', item.interfacecolordata);
}
var themeparkresourcename = "rtx_themepark";
var soundhandler = {}
var soundcheckerhandler = {}
window.addEventListener('message', function (event) {
var item = event.data;
if (item.message == "playsoundattraction") {
if (soundhandler[item.soundid] == undefined) {
$("body").append("<div id='"+ item.soundid +"'></div>");
soundhandler[item.soundid] = new YT.Player(""+ item.soundid +"", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.unMute();
event.target.setVolume(item.soundvolume);
event.target.playVideo();
},
'onError': function(event){
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
}
if (event.data == YT.PlayerState.ENDED) {
}
if (event.data == YT.PlayerState.ENDED) {
soundhandler[item.soundid].seekTo(0);
soundhandler[item.soundid].playVideo();
}
}
}
});
} else {
if (typeof soundhandler[item.soundid].setVolume === 'function') {
soundhandler[item.soundid].setVolume(item.soundvolume);
}
}
}
if (item.message == "playsound") {
if (item.soundcategory == "youtube") {
if (soundhandler[item.soundid] == undefined) {
$("body").append("<div id='"+ item.soundid +"'></div>");
soundhandler[item.soundid] = new YT.Player(""+ item.soundid +"", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.unMute();
event.target.setVolume(item.soundvolume);
event.target.playVideo();
},
'onError': function(event){
$.post('https://'+themeparkresourcename+'/sounderror', JSON.stringify({
soundid: item.soundid
}));
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: soundhandler[item.soundid].getVideoData().title,
soundtime: soundhandler[item.soundid].getCurrentTime(),
soundtimemax: soundhandler[item.soundid].getDuration()
}));
}
if (event.data == YT.PlayerState.ENDED) {
$.post('https://'+themeparkresourcename+'/soundend', JSON.stringify({
soundid: item.soundid
}));
}
}
}
});
} else {
if (typeof soundhandler[item.soundid].setVolume === 'function') {
soundhandler[item.soundid].setVolume(item.soundvolume);
}
}
} else {
if (soundhandler[item.soundid] == undefined) {
soundhandler[item.soundid] = new Howl({
src: item.soundsrc,
volume: item.soundvolume,
loop: false,
html5: true,
onplay: function(){
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: "MP3",
soundtime: soundhandler[item.soundid].seek(),
soundtimemax: soundhandler[item.soundid].duration()
}));
},
onend: function() {
$.post('https://'+themeparkresourcename+'/soundend', JSON.stringify({
soundid: item.soundid
}));
}
});
soundhandler[item.soundid].play();
} else {
if (typeof soundhandler[item.soundid].volume === 'function') {
soundhandler[item.soundid].volume(item.soundvolume);
}
if (soundhandler[item.soundid].playing() == false) {
soundhandler[item.soundid].play();
}
}
}
}
if (item.message == "checkmusicurl") {
$("body").append("<div id='videourlcheckyoutube'></div>");
soundcheckerhandler["videourlcheckyoutube"] = new YT.Player("videourlcheckyoutube", {
startSeconds:Number,
videoId: item.soundsrc,
origin: window.location.href,
enablejsapi: 1,
width: "0",
height: "0",
playerVars: {
playsinline: 1,
controls: 0,
},
events: {
'onReady': function(event){
event.target.setVolume(0);
event.target.playVideo();
},
'onError': function(event){
$.post('https://'+themeparkresourcename+'/checkdone', JSON.stringify({
soundallowed: false,
}));
soundcheckerhandler["videourlcheckyoutube"].stopVideo();
soundcheckerhandler["videourlcheckyoutube"].destroy();
soundcheckerhandler["videourlcheckyoutube"] = null;
},
'onStateChange': function(event){
if (event.data == YT.PlayerState.PLAYING) {
$.post('https://'+themeparkresourcename+'/checkdone', JSON.stringify({
soundallowed: true,
}));
soundcheckerhandler["videourlcheckyoutube"].stopVideo();
soundcheckerhandler["videourlcheckyoutube"].destroy();
soundcheckerhandler["videourlcheckyoutube"] = null;
}
}
}
});
}
if (item.message == "updatesounddata") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
if (soundhandler[item.soundid].getPlayerState() == 1) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: soundhandler[item.soundid].getVideoData().title,
soundtime: soundhandler[item.soundid].getCurrentTime(),
soundtimemax: soundhandler[item.soundid].getDuration()
}));
}
} else {
if (soundhandler[item.soundid].playing() == true) {
$.post('https://'+themeparkresourcename+'/updatesounddata', JSON.stringify({
soundid: item.soundid,
soundname: "MP3",
soundtime: soundhandler[item.soundid].seek(),
soundtimemax: soundhandler[item.soundid].duration()
}));
}
}
}
}
if (item.message == "setsoundtime") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
soundhandler[item.soundid].seekTo(item.timedata);
} else {
soundhandler[item.soundid].seek(item.timedata);
}
}
}
if (item.message == "stopsound") {
if (soundhandler[item.soundid] == undefined) {
} else {
if (item.soundcategorytype == "youtube") {
soundhandler[item.soundid].stopVideo();
soundhandler[item.soundid].destroy();
soundhandler[item.soundid] = null;
$("#'"+ item.soundid +"'").remove();
} else {
soundhandler[item.soundid].stop()
soundhandler[item.soundid] = null;
}
}
}
if (item.message == "stopsoundattraction") {
if (soundhandler[item.soundid] == undefined) {
} else {
soundhandler[item.soundid].stopVideo();
soundhandler[item.soundid].destroy();
soundhandler[item.soundid] = null;
}
}
if (item.message == "updateinterfacedata") {
themeparkresourcename = item.themeparkresourcenamedata;
let root = document.documentElement;
root.style.setProperty('--color', item.interfacecolordata);
}
});

View file

@ -979,21 +979,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector1 {
width: 1%;
height: 1.0%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 44%;
left: 38%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction2 {
position: absolute;
margin: 0;
@ -1015,21 +1000,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector2 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 37%;
left: 37%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction3 {
position: absolute;
margin: 0;
@ -1051,21 +1021,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector3 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 30.5%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction4 {
position: absolute;
margin: 0;
@ -1087,21 +1042,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector4 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 37%;
left: 43%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction5 {
position: absolute;
margin: 0;
@ -1123,21 +1063,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector5 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 38.5%;
left: 58%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction6 {
position: absolute;
margin: 0;
@ -1159,21 +1084,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector6 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 58%;
left: 37%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction7 {
position: absolute;
margin: 0;
@ -1195,21 +1105,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector7 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 60%;
left: 60%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction8 {
position: absolute;
margin: 0;
@ -1231,21 +1126,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector8 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 68%;
left: 49.8%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction9 {
position: absolute;
margin: 0;
@ -1267,21 +1147,6 @@ input[type=range]:focus {
font-family: BebasNeueBold;
}
#parkattractionconnector9 {
width: 1%;
height: 1%;
background-color: rgba(255, 255, 255, 1.0);
margin: 0;
position: absolute;
top: 47%;
left: 58%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
border-radius: 5px;
}
#parkmanagmentattraction10 {
position: absolute;
margin: 0;
@ -1318,6 +1183,196 @@ input[type=range]:focus {
border-radius: 5px;
}
#parkmanagmentattraction11 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 30%;
left: 10%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction12 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 30%;
left: 30%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction13 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 30%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction14 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 30%;
left: 70%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction15 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 30%;
left: 90%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction16 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 70%;
left: 20%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction17 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 70%;
left: 40%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction18 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 70%;
left: 60%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
#parkmanagmentattraction19 {
position: absolute;
margin: 0;
background-color: rgba(0, 0, 0, 0.8);
border-bottom: 3px solid var(--color);
color: #ffffff;
font-size: 35px;
text-decoration: none;
text-align: center;
top: 70%;
left: 80%;
margin-right: -50%;
transform: translate(-50%, -50%);
overflow: hidden;
z-index: 9999999;
width: 12%;
height: 10%;
border-radius: 5px;
font-family: BebasNeueBold;
}
.parkattractionname {
position: absolute;
margin: 0;
@ -1663,6 +1718,52 @@ connection {
font-family: BebasNeueBold;
}
.attractioncamtext {
position: absolute;
margin: 0;
text-decoration: none;
text-align: center;
top: 95%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
font-size: 22px;
color: #ffffff;
text-align:center;
font-family: BebasNeueBold;
display: none;
}
#attractioncamtextkey {
font-size: 22px;
color: var(--color);
text-align:center;
font-family: BebasNeueBold;
}
.attractioncamtext2 {
position: absolute;
margin: 0;
text-decoration: none;
text-align: center;
top: 92%;
left: 50%;
margin-right: -50%;
transform: translate(-50%, -50%);
font-size: 22px;
color: #ffffff;
text-align:center;
font-family: BebasNeueBold;
display: none;
}
#attractioncamtextkey2 {
font-size: 22px;
color: var(--color);
text-align:center;
font-family: BebasNeueBold;
}
.attractionleavetext {
position: absolute;
margin: 0;

View file

@ -86,9 +86,7 @@
<input type="checkbox" id="parkattractionopendata1">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector1">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction2">
<div class="parkattractionname">Top Scan</div>
<div class="parkattractiontextclose">Close</div>
@ -97,9 +95,7 @@
<input type="checkbox" id="parkattractionopendata2">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector2">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction3">
<div class="parkattractionname">Roller coaster</div>
<div class="parkattractiontextclose">Close</div>
@ -108,9 +104,7 @@
<input type="checkbox" id="parkattractionopendata3">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector3">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction4">
<div class="parkattractionname">Shooting Range</div>
<div class="parkattractiontextclose">Close</div>
@ -119,9 +113,7 @@
<input type="checkbox" id="parkattractionopendata4">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector4">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction5">
<div class="parkattractionname">Shooting Range</div>
<div class="parkattractiontextclose">Close</div>
@ -131,8 +123,6 @@
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector5">
</div>
<div class="parkattraction" id="parkmanagmentattraction6">
<div class="parkattractionname">Bumper Cars</div>
<div class="parkattractiontextclose">Close</div>
@ -141,8 +131,6 @@
<input type="checkbox" id="parkattractionopendata6">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector6">
</div>
<div class="parkattraction" id="parkmanagmentattraction7">
<div class="parkattractionname">Vortex</div>
@ -152,8 +140,6 @@
<input type="checkbox" id="parkattractionopendata7">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector7">
</div>
<div class="parkattraction" id="parkmanagmentattraction8">
<div class="parkattractionname">Ferris wheel</div>
@ -163,9 +149,7 @@
<input type="checkbox" id="parkattractionopendata8">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector8">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction9">
<div class="parkattractionname">Detonator</div>
<div class="parkattractiontextclose">Close</div>
@ -174,9 +158,7 @@
<input type="checkbox" id="parkattractionopendata9">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector9">
</div>
</div>
<div class="parkattraction" id="parkmanagmentattraction10">
<div class="parkattractionname">Boat</div>
<div class="parkattractiontextclose">Close</div>
@ -186,8 +168,87 @@
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattractionconnector" id="parkattractionconnector10">
<div class="parkattraction" id="parkmanagmentattraction11">
<div class="parkattractionname">Prater</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata11">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction12">
<div class="parkattractionname">Break Dance</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata12">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction13">
<div class="parkattractionname">Slingshot</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata13">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction14">
<div class="parkattractionname">Carousel</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata14">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction15">
<div class="parkattractionname">Extasy</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata15">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction16">
<div class="parkattractionname">Spinride</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata16">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction17">
<div class="parkattractionname">Hauntedhouse</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata17">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction18">
<div class="parkattractionname">Rollercoaster 2</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata18">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
<div class="parkattraction" id="parkmanagmentattraction19">
<div class="parkattractionname">Cannon</div>
<div class="parkattractiontextclose">Close</div>
<div class="parkattractiontextopen">Open</div>
<label class="parkattractionopeninput">
<input type="checkbox" id="parkattractionopendata19">
<span class="parkattractionopeninputslider"></span>
</label>
</div>
</div>
<div class="attractionbuyticket-container" id="attractionbuyticketshow">
<img class="closeattractionbuyticket" src="img/close2.png" style="width:25px;height:25px" alt="attractionbuyticket"/>
@ -205,6 +266,8 @@
<div class="iteminhandtextthrow">Press <span id="iteminhandtextthrowkey">G</span> to pass the item to the player</div>
</div>
<div class="attraction-container" id="attractionshow">
<div class="attractioncamtext2" id="attractioncamtextshow2">Press <span id="attractioncamtextkey">B</span> to change the camera</div>
<div class="attractioncamtext" id="attractioncamtextshow">Press <span id="attractioncamtextkey">B</span> to change the camera</div>
<div class="attractionanimtext" id="attractionanimtextshow">Press <span id="attractionanimtextkey">E</span> to change the animation</div>
<div class="attractionleavetext">Press <span id="attractionleavetextkey">F</span> to exit the attraction</div>
</div>

View file

@ -1,346 +1,346 @@
function AddMoneyRTX(playersource, moneydata)
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.addMoney(moneydata)
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
xPlayer.Functions.AddMoney('cash', moneydata)
end
elseif Config.Framework == "standalone" then
-- add here money add funciton
end
end
function RemoveMoneyRTX(playersource, moneydata)
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.removeMoney(moneydata)
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
xPlayer.Functions.RemoveMoney('cash', moneydata)
end
elseif Config.Framework == "standalone" then
-- add here money remove funciton
end
end
function GetMoneyRTX(playersource)
local moneydata = 0
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
moneydata = xPlayer.getMoney()
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
moneydata = xPlayer.Functions.GetMoney('cash')
end
elseif Config.Framework == "standalone" then
moneydata = 99999999999
-- add here money get funciton
end
return moneydata
end
function GiveShootingRangeRewardToPlayer(playersource, prizeiddata)
local prizegamehandler = Config.ShootingRangePrizes[prizeiddata]
if prizegamehandler.prizetype == "money" then
AddMoneyRTX(playersource, prizegamehandler.prizedata)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("prizerewardmoney", prizegamehandler.prizedata))
end
end
function GetPlayerIdentifierRTX(playersource)
local playeridentifierdata = ""
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
playeridentifierdata = xPlayer.identifier
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
playeridentifierdata = xPlayer.PlayerData.citizenid
end
elseif Config.Framework == "standalone" then
playeridentifierdata = GetPlayerIdentifiers(playersource)[1]
end
return playeridentifierdata
end
function GetPlayerPermissionsManagment(playersource)
local playerallowed = false
if Config.ThemeParkOwnedSettings.acepermissionsforusemanagmentmenu.enable == true then
if IsPlayerAceAllowed(playersource, Config.ThemeParkOwnedSettings.acepermissionsforusemanagmentmenu.permission) then
playerallowed = true
end
end
if Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.enable == true then
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
if xPlayer.job.name == Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
if xPlayer.PlayerData.job.name == Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "standalone" then
-- add here your job check function
end
end
if Config.ThemeParkOwnedSettings.identifierspermissionsforusemanagmentmenu == true then
local licensedata = "unknown"
local steamdata = "unknown"
local xboxdata = "unknown"
local livedata = "unknown"
local discorddata = "unknown"
local ipdata = "unknown"
for i, licensehandler in ipairs(GetPlayerIdentifiers(playersource)) do
if string.sub(licensehandler, 1,string.len("steam:")) == "steam:" then
steamdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("license:")) == "license:" then
licensedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("live:")) == "live:" then
livedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("xbl:")) == "xbl:" then
xboxdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("discord:")) == "discord:" then
discorddata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("ip:")) == "ip:" then
ipdata = tostring(licensehandler)
end
end
for i, permissionhandler in ipairs(Config.ThemeParkOwnedSettings.permissionsviaidentifiers) do
if permissionhandler.permissiontype == "license" then
if permissionhandler.permisisondata == licensedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "steam" then
if permissionhandler.permisisondata == steamdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "xbox" then
if permissionhandler.permisisondata == xboxdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "live" then
if permissionhandler.permisisondata == livedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "discord" then
if permissionhandler.permisisondata == discorddata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "ip" then
if permissionhandler.permisisondata == ipdata then
playerallowed = true
break
end
end
end
end
return playerallowed
end
function GetPlayerPermissionsControlAttraction(playersource)
local playerallowed = false
if Config.ThemeParkControlMachineSettings.acepermissionsforusecontrolmenu.enable == true then
if IsPlayerAceAllowed(playersource, Config.ThemeParkControlMachineSettings.acepermissionsforusecontrolmenu.permission) then
playerallowed = true
end
end
if Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.enable == true then
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
if xPlayer.job.name == Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
if xPlayer.PlayerData.job.name == Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "standalone" then
-- add here your job check function
end
end
if Config.ThemeParkControlMachineSettings.identifierspermissionsforcontrolmenu == true then
local licensedata = "unknown"
local steamdata = "unknown"
local xboxdata = "unknown"
local livedata = "unknown"
local discorddata = "unknown"
local ipdata = "unknown"
for i, licensehandler in ipairs(GetPlayerIdentifiers(playersource)) do
if string.sub(licensehandler, 1,string.len("steam:")) == "steam:" then
steamdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("license:")) == "license:" then
licensedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("live:")) == "live:" then
livedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("xbl:")) == "xbl:" then
xboxdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("discord:")) == "discord:" then
discorddata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("ip:")) == "ip:" then
ipdata = tostring(licensehandler)
end
end
for i, permissionhandler in ipairs(Config.ThemeParkControlMachineSettings.permissionsviaidentifiers) do
if permissionhandler.permissiontype == "license" then
if permissionhandler.permisisondata == licensedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "steam" then
if permissionhandler.permisisondata == steamdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "xbox" then
if permissionhandler.permisisondata == xboxdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "live" then
if permissionhandler.permisisondata == livedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "discord" then
if permissionhandler.permisisondata == discorddata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "ip" then
if permissionhandler.permisisondata == ipdata then
playerallowed = true
break
end
end
end
end
return playerallowed
end
if Config.ThemeParkPass then
if Config.Framework == "esx" then
ESX.RegisterUsableItem("themeparkpass", function(source)
local playersource = source
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.removeInventoryItem("themeparkpass", 1)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("themeparkpassactivated", Config.ThemeParkPassTime))
TriggerClientEvent("rtx_themepark:Global:ThemeParkPassActivate", playersource)
end
end)
elseif Config.Framework == "qbcore" then
QBCore.Functions.CreateUseableItem("themeparkpass", function(source, item)
local playersource = source
local Player = QBCore.Functions.GetPlayer(playersource)
if Player then
Player.Functions.RemoveItem("themeparkpass", 1)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("themeparkpassactivated", Config.ThemeParkPassTime))
TriggerClientEvent("rtx_themepark:Global:ThemeParkPassActivate", playersource)
end
end)
elseif Config.Framework == "standalone" then
-- add here your usable item funciton
end
end
if Config.Framework == "esx" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
local xPlayer = ESX.GetPlayerFromId(playersource)
local playergroup = xPlayer.getGroup()
if playergroup == "admin" or playergroup == "superadmin" then
if themeparkdisabled == true then
themeparkdisabled = false
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkblocked"])
end
end
end
end)
elseif Config.Framework == "qbcore" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
if QBCore.Functions.HasPermission(playersource, 'admin') or QBCore.Functions.HasPermission(playersource, 'god') then
if themeparkdisabled == true then
themeparkdisabled = false
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkblocked"])
end
end
end
end)
elseif Config.Framework == "standalone" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
end
end)
function AddMoneyRTX(playersource, moneydata)
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.addMoney(moneydata)
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
xPlayer.Functions.AddMoney('cash', moneydata)
end
elseif Config.Framework == "standalone" then
-- add here money add funciton
end
end
function RemoveMoneyRTX(playersource, moneydata)
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.removeMoney(moneydata)
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
xPlayer.Functions.RemoveMoney('cash', moneydata)
end
elseif Config.Framework == "standalone" then
-- add here money remove funciton
end
end
function GetMoneyRTX(playersource)
local moneydata = 0
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
moneydata = xPlayer.getMoney()
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
moneydata = xPlayer.Functions.GetMoney('cash')
end
elseif Config.Framework == "standalone" then
moneydata = 99999999999
-- add here money get funciton
end
return moneydata
end
function GiveShootingRangeRewardToPlayer(playersource, prizeiddata)
local prizegamehandler = Config.ShootingRangePrizes[prizeiddata]
if prizegamehandler.prizetype == "money" then
AddMoneyRTX(playersource, prizegamehandler.prizedata)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("prizerewardmoney", prizegamehandler.prizedata))
end
end
function GetPlayerIdentifierRTX(playersource)
local playeridentifierdata = ""
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
playeridentifierdata = xPlayer.identifier
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
playeridentifierdata = xPlayer.PlayerData.citizenid
end
elseif Config.Framework == "standalone" then
playeridentifierdata = GetPlayerIdentifiers(playersource)[1]
end
return playeridentifierdata
end
function GetPlayerPermissionsManagment(playersource)
local playerallowed = false
if Config.ThemeParkOwnedSettings.acepermissionsforusemanagmentmenu.enable == true then
if IsPlayerAceAllowed(playersource, Config.ThemeParkOwnedSettings.acepermissionsforusemanagmentmenu.permission) then
playerallowed = true
end
end
if Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.enable == true then
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
if xPlayer.job.name == Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
if xPlayer.PlayerData.job.name == Config.ThemeParkOwnedSettings.jobpermissionsforusemanagmentmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "standalone" then
-- add here your job check function
end
end
if Config.ThemeParkOwnedSettings.identifierspermissionsforusemanagmentmenu == true then
local licensedata = "unknown"
local steamdata = "unknown"
local xboxdata = "unknown"
local livedata = "unknown"
local discorddata = "unknown"
local ipdata = "unknown"
for i, licensehandler in ipairs(GetPlayerIdentifiers(playersource)) do
if string.sub(licensehandler, 1,string.len("steam:")) == "steam:" then
steamdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("license:")) == "license:" then
licensedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("live:")) == "live:" then
livedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("xbl:")) == "xbl:" then
xboxdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("discord:")) == "discord:" then
discorddata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("ip:")) == "ip:" then
ipdata = tostring(licensehandler)
end
end
for i, permissionhandler in ipairs(Config.ThemeParkOwnedSettings.permissionsviaidentifiers) do
if permissionhandler.permissiontype == "license" then
if permissionhandler.permisisondata == licensedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "steam" then
if permissionhandler.permisisondata == steamdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "xbox" then
if permissionhandler.permisisondata == xboxdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "live" then
if permissionhandler.permisisondata == livedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "discord" then
if permissionhandler.permisisondata == discorddata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "ip" then
if permissionhandler.permisisondata == ipdata then
playerallowed = true
break
end
end
end
end
return playerallowed
end
function GetPlayerPermissionsControlAttraction(playersource)
local playerallowed = false
if Config.ThemeParkControlMachineSettings.acepermissionsforusecontrolmenu.enable == true then
if IsPlayerAceAllowed(playersource, Config.ThemeParkControlMachineSettings.acepermissionsforusecontrolmenu.permission) then
playerallowed = true
end
end
if Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.enable == true then
if Config.Framework == "esx" then
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
if xPlayer.job.name == Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "qbcore" then
local xPlayer = QBCore.Functions.GetPlayer(playersource)
if xPlayer then
if xPlayer.PlayerData.job.name == Config.ThemeParkControlMachineSettings.jobpermissionsforusecontrolmenu.jobname then
playerallowed = true
end
end
elseif Config.Framework == "standalone" then
-- add here your job check function
end
end
if Config.ThemeParkControlMachineSettings.identifierspermissionsforcontrolmenu == true then
local licensedata = "unknown"
local steamdata = "unknown"
local xboxdata = "unknown"
local livedata = "unknown"
local discorddata = "unknown"
local ipdata = "unknown"
for i, licensehandler in ipairs(GetPlayerIdentifiers(playersource)) do
if string.sub(licensehandler, 1,string.len("steam:")) == "steam:" then
steamdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("license:")) == "license:" then
licensedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("live:")) == "live:" then
livedata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("xbl:")) == "xbl:" then
xboxdata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("discord:")) == "discord:" then
discorddata = tostring(licensehandler)
elseif string.sub(licensehandler, 1,string.len("ip:")) == "ip:" then
ipdata = tostring(licensehandler)
end
end
for i, permissionhandler in ipairs(Config.ThemeParkControlMachineSettings.permissionsviaidentifiers) do
if permissionhandler.permissiontype == "license" then
if permissionhandler.permisisondata == licensedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "steam" then
if permissionhandler.permisisondata == steamdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "xbox" then
if permissionhandler.permisisondata == xboxdata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "live" then
if permissionhandler.permisisondata == livedata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "discord" then
if permissionhandler.permisisondata == discorddata then
playerallowed = true
break
end
end
if permissionhandler.permissiontype == "ip" then
if permissionhandler.permisisondata == ipdata then
playerallowed = true
break
end
end
end
end
return playerallowed
end
if Config.ThemeParkPass then
if Config.Framework == "esx" then
ESX.RegisterUsableItem("themeparkpass", function(source)
local playersource = source
local xPlayer = ESX.GetPlayerFromId(playersource)
if xPlayer then
xPlayer.removeInventoryItem("themeparkpass", 1)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("themeparkpassactivated", Config.ThemeParkPassTime))
TriggerClientEvent("rtx_themepark:Global:ThemeParkPassActivate", playersource)
end
end)
elseif Config.Framework == "qbcore" then
QBCore.Functions.CreateUseableItem("themeparkpass", function(source, item)
local playersource = source
local Player = QBCore.Functions.GetPlayer(playersource)
if Player then
Player.Functions.RemoveItem("themeparkpass", 1)
TriggerClientEvent("rtx_themepark:Notify", playersource, LanguageFile("themeparkpassactivated", Config.ThemeParkPassTime))
TriggerClientEvent("rtx_themepark:Global:ThemeParkPassActivate", playersource)
end
end)
elseif Config.Framework == "standalone" then
-- add here your usable item funciton
end
end
if Config.Framework == "esx" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
local xPlayer = ESX.GetPlayerFromId(playersource)
local playergroup = xPlayer.getGroup()
if playergroup == "admin" or playergroup == "superadmin" then
if themeparkdisabled == true then
themeparkdisabled = false
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkblocked"])
end
end
end
end)
elseif Config.Framework == "qbcore" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
if QBCore.Functions.HasPermission(playersource, 'admin') or QBCore.Functions.HasPermission(playersource, 'god') then
if themeparkdisabled == true then
themeparkdisabled = false
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
TriggerClientEvent("rtx_themepark:Notify", playersource, Language[Config.Language]["themeparkblocked"])
end
end
end
end)
elseif Config.Framework == "standalone" then
RegisterCommand("enablethemepark", function(source, args, raw)
local playersource = source
if playersource == 0 then
if themeparkdisabled == true then
themeparkdisabled = false
print(Language[Config.Language]["themeparkallowed"])
else
themeparkdisabled = true
print(Language[Config.Language]["themeparkblocked"])
end
else
end
end)
end

View file

@ -1,61 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVariation>
<variationData>
<Item>
<modelName>rtxbumper</modelName>
<colors>
<Item>
<indices content="char_array">
22
22
21
22
0
35
</indices>
<liveries>
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
</liveries>
</Item>
</colors>
<kits>
</kits>
<windowsWithExposedEdges />
<plateProbabilities>
<Probabilities>
<Item>
<Name>Standard White</Name>
<Value value="100" />
</Item>
</Probabilities>
</plateProbabilities>
<lightSettings value="1" />
<sirenSettings value="0" />
</Item>
</variationData>
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVariation>
<variationData>
<Item>
<modelName>rtxbumper</modelName>
<colors>
<Item>
<indices content="char_array">
22
22
21
22
0
35
</indices>
<liveries>
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
<Item value="false" />
</liveries>
</Item>
</colors>
<kits>
</kits>
<windowsWithExposedEdges />
<plateProbabilities>
<Probabilities>
<Item>
<Name>Standard White</Name>
<Value value="100" />
</Item>
</Probabilities>
</plateProbabilities>
<lightSettings value="1" />
<sirenSettings value="0" />
</Item>
</variationData>
</CVehicleModelInfoVariation>

View file

@ -1,59 +1,79 @@
fx_version 'adamant'
game 'gta5'
description 'RTX THEME PARK OBJECTS'
version '20.0'
files {
'vehicles.meta',
'carvariations.meta',
'handling.meta',
}
this_is_a_map 'yes'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_blue_screen.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_red_screen.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_target.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_boat_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_b.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_g.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_p.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_r.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_candycotton_prop.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_sedacka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_zavirani.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_rameno_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_sedacka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_zakladna_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_popcorn_box.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_topscan_rameno_2_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_topscan_zakladna_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_anim_sedacka.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_zavirani.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_g.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_b.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_p.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_control.ytyp'
data_file 'HANDLING_FILE' 'handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
client_script 'vehicle_names.lua'
escrow_ignore {
'stream/sempre_delperropier.ytd'
}
fx_version 'adamant'
game 'gta5'
description 'RTX THEME PARK DLC OBJECTS'
version '10.0'
files {
'vehicles.meta',
'carvariations.meta',
'handling.meta',
}
this_is_a_map 'yes'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_blue_screen.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_red_screen.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_bus_target.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_boat_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_b.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_g.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_p.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_balloon_r.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_candycotton_prop.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_sedacka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_detonator_zavirani.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_rameno_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_sedacka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_gbooster_zakladna_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_popcorn_box.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_topscan_rameno_2_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_topscan_zakladna_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_anim_sedacka.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_vortex_zavirani.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_g.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_b.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_autodrom_auticko_p.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_control.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_auticko_01_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_auticko_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_svetylka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_svetylka_anim_2.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_tocici_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_tocici_anim_2.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_breakdance_tocici_auticka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_cannon_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_dlc_attractions.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_extasy_base_anim_1.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_extasy_base_anim_2.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_extasy_base_tocici_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_prater_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_prater_kolotoc_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_slingshot_sedacka_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_slingshot_zakladna_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_spinride_arm_anim.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_spinride_base_anim_2.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_hauntedhouse_vozik.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_hauntedhouse_annabelle.ytyp'
data_file 'DLC_ITYP_REQUEST' 'stream/sempre_delperropier_rollercoaster_vozik.ytyp'
data_file 'HANDLING_FILE' 'handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
client_script 'vehicle_names.lua'
escrow_ignore {
'stream/sempre_delperropier.ytd'
}
lua54 'yes'
dependency '/assetpacks'

View file

@ -1,65 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<CHandlingDataMgr>
<HandlingData>
<Item type="CHandlingData">
<handlingName>RTXBUMPER</handlingName>
<fMass value="500.000000" />
<fInitialDragCoeff value="9.750000" />
<fPercentSubmerged value="85.000000" />
<vecCentreOfMassOffset x="0.000000" y="0.000000" z="0.3050000" />
<vecInertiaMultiplier x="1.000000" y="1.000000" z="1.000000" />
<fDriveBiasFront value="0.000000" />
<nInitialDriveGears value="1" />
<fInitialDriveForce value="0.50000" />
<fDriveInertia value="1.000000" />
<fClutchChangeRateScaleUpShift value="2.000000" />
<fClutchChangeRateScaleDownShift value="2.000000" />
<fInitialDriveMaxFlatVel value="60.000000" />
<fBrakeForce value="0.350000" />
<fBrakeBiasFront value="0.400000" />
<fHandBrakeForce value="0.680000" />
<fSteeringLock value="45.00000" />
<fTractionCurveMax value="2.850000" />
<fTractionCurveMin value="2.750000" />
<fTractionCurveLateral value="15.5000000" />
<fTractionSpringDeltaMax value="0.00000" />
<fLowSpeedTractionLossMult value="1.00000" />
<fCamberStiffnesss value="3.000000" />
<fTractionBiasFront value="0.495000" />
<fTractionLossMult value="0.000000" />
<fSuspensionForce value="1.10000" />
<fSuspensionCompDamp value="1.500000" />
<fSuspensionReboundDamp value="2.200000" />
<fSuspensionUpperLimit value="0.0350000" />
<fSuspensionLowerLimit value="-0.300000" />
<fSuspensionRaise value="-0.0401200" />
<fSuspensionBiasFront value="0.500000" />
<fAntiRollBarForce value="0.600000" />
<fAntiRollBarBiasFront value="0.400000" />
<fRollCentreHeightFront value="0.420000" />
<fRollCentreHeightRear value="0.420000" />
<fCollisionDamageMult value="0.000000" />
<fWeaponDamageMult value="0.000000" />
<fDeformationDamageMult value="0.500000" />
<fEngineDamageMult value="0.00000" />
<fPetrolTankVolume value="80.000000" />
<fOilVolume value="8.000000" />
<fSeatOffsetDistX value="0.000000" />
<fSeatOffsetDistY value="0.000000" />
<fSeatOffsetDistZ value="-0.050000" />
<nMonetaryValue value="50000" />
<strModelFlags>2010104</strModelFlags>
<strHandlingFlags>0</strHandlingFlags>
<strDamageFlags>0</strDamageFlags>
<AIHandling>AVERAGE</AIHandling>
<SubHandlingData>
<Item type="CCarHandlingData">
<strAdvancedFlags>14000000</strAdvancedFlags>
</Item>
<Item type="NULL" />
<Item type="NULL" />
</SubHandlingData>
</Item>
</HandlingData>
<?xml version="1.0" encoding="UTF-8"?>
<CHandlingDataMgr>
<HandlingData>
<Item type="CHandlingData">
<handlingName>RTXBUMPER</handlingName>
<fMass value="500.000000" />
<fInitialDragCoeff value="9.750000" />
<fPercentSubmerged value="85.000000" />
<vecCentreOfMassOffset x="0.000000" y="0.000000" z="0.3050000" />
<vecInertiaMultiplier x="1.000000" y="1.000000" z="1.000000" />
<fDriveBiasFront value="0.000000" />
<nInitialDriveGears value="1" />
<fInitialDriveForce value="0.50000" />
<fDriveInertia value="1.000000" />
<fClutchChangeRateScaleUpShift value="2.000000" />
<fClutchChangeRateScaleDownShift value="2.000000" />
<fInitialDriveMaxFlatVel value="60.000000" />
<fBrakeForce value="0.350000" />
<fBrakeBiasFront value="0.400000" />
<fHandBrakeForce value="0.680000" />
<fSteeringLock value="45.00000" />
<fTractionCurveMax value="2.850000" />
<fTractionCurveMin value="2.750000" />
<fTractionCurveLateral value="15.5000000" />
<fTractionSpringDeltaMax value="0.00000" />
<fLowSpeedTractionLossMult value="1.00000" />
<fCamberStiffnesss value="3.000000" />
<fTractionBiasFront value="0.495000" />
<fTractionLossMult value="0.000000" />
<fSuspensionForce value="1.10000" />
<fSuspensionCompDamp value="1.500000" />
<fSuspensionReboundDamp value="2.200000" />
<fSuspensionUpperLimit value="0.0350000" />
<fSuspensionLowerLimit value="-0.300000" />
<fSuspensionRaise value="-0.0401200" />
<fSuspensionBiasFront value="0.500000" />
<fAntiRollBarForce value="0.600000" />
<fAntiRollBarBiasFront value="0.400000" />
<fRollCentreHeightFront value="0.420000" />
<fRollCentreHeightRear value="0.420000" />
<fCollisionDamageMult value="0.000000" />
<fWeaponDamageMult value="0.000000" />
<fDeformationDamageMult value="0.500000" />
<fEngineDamageMult value="0.00000" />
<fPetrolTankVolume value="80.000000" />
<fOilVolume value="8.000000" />
<fSeatOffsetDistX value="0.000000" />
<fSeatOffsetDistY value="0.000000" />
<fSeatOffsetDistZ value="-0.050000" />
<nMonetaryValue value="50000" />
<strModelFlags>2010104</strModelFlags>
<strHandlingFlags>0</strHandlingFlags>
<strDamageFlags>0</strDamageFlags>
<AIHandling>AVERAGE</AIHandling>
<SubHandlingData>
<Item type="CCarHandlingData">
<strAdvancedFlags>14000000</strAdvancedFlags>
</Item>
<Item type="NULL" />
<Item type="NULL" />
</SubHandlingData>
</Item>
</HandlingData>
</CHandlingDataMgr>

Some files were not shown because too many files have changed in this diff Show more