Jan 21st, 2024
<@&1043506566176972881>
- Removed use/requirement of PS-UI
- Reworked the UI
- Fixed tons of bugs and broken code
- Changed the way the teleporter works
1 messages · Page 1 of 1 (latest)
This should take some stress of the server, but might impact client performance for potato computers and with many racers.And for ya'll waiting for Racingapp, here's the status on the upcoming update:
Only thing missing is some results from the people who signed up to test the ELO system, and adding a Crew Ranking list 👀
Happy Valentines nerds! 
NOTE: THIS UPDATE REQUIRES SQL STUFF. CHECK THE README AT THE "Racing Crews and Racing Rank update 14th February 2024" PART.
No update video today. I'll let ya'll have a sneaky pre-release.
elo.lua file if you're not happy with it. Go wild.**Added 3 new auth types: **
**New participation payout system: **With the correct auth, players can now set up races with a pot of money that is divided between racers. This is "free money" so it's intended as an admin/dev kinda thing. See config for more information.
Some fixes that came between last update and this one
(new role to grab btw 👀 )
https://github.com/Coffeelot/cw-gearbox
Key Features:
Sidenote: For <@&1211056464001634394>, I've been trying to fix the bug where passengers won't get the updated gear changes. Still haven't found a way
<@&1211056464001634394>

If you haven't grabbed this script now, consider this a small heads up that the price will go up slightly due to the annoying implementation of translations in a couple of hours 
Reworked job check system:
You can set the penalties in the Config in the new option called EloPunishments. You can set the penalty individually for leaving, getting idle-kicked and position cheating at start
Engine swap stats are now affected by vehicle weight. They are normalized around fMass = 1000.0. For example, if you set the value to 0.3, it will be 0.3 for a car that weighs 1000.0. If the car weighs 12000.0 then it will get the value 0.15, if it weighs 500 then it will be 0.34
Also added a debug command getSwapValues that will print out the values you should use if you want to add a swap made from the current vehicles engine, with it's weight taken in mind.
Elimination races means the last to cross the finish line gets eliminated. Amount of laps depends on amount of racers. If you have the auth, Elimination races will be pickable in the Laps dropdown (you might need to scroll up)
Make sure to thank @ancient sluice for todays update if you wanted these features, as it was commissioned 
(you probably don't need to get this patch)
/resetGears that will reset some gearing valuesConfig.DefaultLevels and you can customize these to your liking, but you can also make custom levels for each individual skill. For more info see readme.skillName. waepon_appistol recipe in default config has been updated to showcase this feature. (Commissioned by @cedar nebula )This update requires the latest cw-rep if you do not use the basic skill system☝️
Also cleaned up the readme and config a bit, and added info on creating blueprints
Decided I'll tag updates with emotes from now on:
Also added a role for mechtool if you are a user. Check out id:customize
❗ The following scripts will NOT work with the new cw-performance unless updated. If you update cw-performance you get the latest version you have to update racingapp and mechtool.
❗ The following scripts **WILL **work with older versions of cw-performance. If you do not update cw-performance, you can still update the following scripts.
driftIsOn that checks if drift mode is on. Useful if you want to for example add a TCS icon to your HUDExample use:
local driftModeIsOn = exports['cw-drifttoggle']:driftIsOn()
SkipPedestrians, if left to true this will ignore all players that aren't in vehicles for ghosting.This should optimize the ghosting loop a bit, especially if you skip Pedestrians. Also allows you to have bystanders who don't interfeer with ghosting at the start/finish line
This feature can be toggled on in the config using Config.ShowNotificationOnSkillGain. If you want this, but don't want it for certain skills then you can add skipNotify = true to the skill. Example in Readme ✌️
customSkillGain = xkeepMaterials = { material = true }Both these have examples in config and readme
Some options in the Config were removed as they were not needed. The phasing system is rewritten. Not only will it now actually work better, but it should also have much less of a performance impact.
1 caveat of the new system is that racers won't ever look ghosted/transparent anymore.
Thanks to @wise schooner for testing 🙏
craftingLevelText prop to tables, which will display instead of "Crafting level". Example on gun table/listEmsBlips (only available when debug is on)getAllSkillsAndLevel to cw-repAll new systems and props are explained in the updated readmes.
I tried to expose as much as possible with the crafting logic, so you'll find tons of additions in the Config to set custom material requirements, skills (if you use cw-rep) and functions that calculate the tiered requirements and material uses that you can modify to your hearts content.
name instead of toItems (might wanna verify your recipes for this if you have the really old method of creating em
)addRecipe that lets you add recipes from other scriptsConfig.CraftingRepGainFunction to use recipe instead of recipe nameNo video yet, but I'll let the people in here who uses the script test it before I put out official releases. If you want to see some video of it in use check out #sneak-peaks for a pre-final-fixes look.
Feedback is appreciated, but I'm not looking for ideas to new full-features and I'm not looking for suggestions to make this "like some other script" or "like nopixel"
The next feature for the script will be a short-term IRC style chat
While you wait for the video, for Darkweb 2.1, here's a lil jingle:
https://suno.com/song/6c107882-9d8c-4a57-8cd9-b75d412bc495
jingle, ad, peppy, barbershop, male singers song. Listen and make your own with Suno.
The Ui has been reworked to have a new sleek look, and several Ui parts have also been aligned to have a more cohesive look and feel. See video or updated Readme for pictures.
After many months of ya'll nagging it's here. Translations are in. I've deleted all the old translation files as the setup has been totally reworked to not require QBs language system. The UI is also translatable without having to modify the UI code. Translations can be found in locales. Only English is included right now, feel free to make translation files and make PRs on github, but don't expect them to be updated by CW.
Download and more info here: https://github.com/Coffeelot/cw-racingapp
If you have had issues after creating a track from the latest version you might need to delete the track in your DB ✌️
Super thanks to those who turned up in the Live Showcase yesterday! The suggestions you guys had that were easy fixes have been added ✅
Config.PrimaryUiColorConfig.UseDrawTextWaypoint andConfig.DrawTextSetupdefault_tracks.sql (Can be imported even if you have existing tracks)If you want your tracks included as default please post more on #racingapp-tracks-old and maybe we'll do another live showcase and see which ones are good 🏁
)I HIGHLY recommend a clean install with this one so that you don't break the script
The entire script was also cleaned up of unused variables and optimized in some spots 🧹 (if you're wondering why there was like 200 commits yesterday)
@coarse mantle 
(Make sure to update your fxmanifest with this update
)
ReopenCraftingWhenFinished which lets you decide if the crafting table shold re-open or not when done craftingcontrolAll auth. Shows up under your own tracksHere's a great example of how to report bugs and issues 👉 #1295429478729908254 message
ALTER TABLE `racer_names`
ADD COLUMN `crew` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci',
ADD COLUMN `active` INT(11) NOT NULL DEFAULT '0';
ox_core bridgeThe previous patch will mess your crews up! But since I'm feeling nice today: here's an SQL script to move the selected crew to it's new location in the database. Run this AFTER you've updated the racer_names table with the SQL provided in the last message
(This is for QBOX/QB, not sure if the table names are the same for ESX so make sure to check that)
UPDATE racer_names rn
JOIN players p ON JSON_UNQUOTE(JSON_EXTRACT(p.metadata, '$.selectedRacerName')) = rn.racername
SET rn.crew = JSON_UNQUOTE(JSON_EXTRACT(p.metadata, '$.selectedCrew'))
WHERE JSON_UNQUOTE(JSON_EXTRACT(p.metadata, '$.selectedCrew')) IS NOT NULL;
Config.MarkAmountOfCheckpointsAhead)Config.GpsConfig.UseVehicleModelInsteadOfClassForRecords (Commissioned)Config.PositionCheatBuffer which lets you add some leeway for the position cheat check. Uses meters.I messed some stuff up initial and used charId instead of stateId cause I'm 🥔 fix by running this:
UPDATE racer_names
SET citizenid = (
SELECT stateId
FROM characters
WHERE characters.charId = racer_names.citizenid
);
Test your skills with time trials that give payouts. These are defined in the config in Config.Bounties and Config.BountiesOptiones. The config has most things explained in comments, but a bounty is defined like this example:
{
trackId = 'CW-4267', -- TrackId. Found in your tracks in racingapp or in DB
maxClass = 'B', -- Max Class
reversed = false, -- reversed track or not
timeToBeat = 130000, -- time you have to beat in milliseconds
extraTime = 5000, -- max time (in milliseconds) that can be added ontop of timeToBeat when generated
price = 500, -- Price money
sprint = true, -- require race to be a sprint to claim bounty
rankRequired = 2, -- Rank required to claim
},
Make sure to familiarize yourself with the options here before asking dumb questions 
These are randomized upon server start (~5 seconds after script start/restart). You can modify how many of these are added in the Bounties Options. If your auth type has the handleBounties auth you should be able to re-roll the bounties from the bounties menu.
A new Auth option was added,
handleBounties, so make sure to update your configs correctly
You can now do quick setups on tracks. These will use the settings from Config.QuickSetupDefaults but will be overrided if the track has metadata set (for example if it's a sprint it won't do laps etc).
I'll have a video out sometime soonish, but I figured those of you crazy enough to have @s on in here deserve to get it first ✌️
tuning)cancelAll: Anyone with this auth can cancel any race (that they've joined)startAll: Anyone with this auth can start any race (that they've joined)Config.GhostingDeGhostDistance and Alpha were added. See config file comment for more info.
Example of "Force" buttons
RacingApp now has a built in crypto system. This is tied directly to the racing users so you can have separate accounts for separate users.
The system replaces the use of Renewed Phone crypto, but leaves it open if your core supports crypto payments (should work by setting payment options to crypto for those) since RAC requires you to set it to racingcrypto.
You can buy, sell and transfer the crypto in the app by pressing the RAC in the topbar. Buying, Selling and Transferring can be disabled individually in the config.
You can customize the conversion rate between $ and RAC in the config. Selling has a fee on it, which can also be customized.
The Config has been heavily updated as the entire payment system was revamped so it's easier to control how and what money source is used for different areas so make sure to update this all accordingly
All payment systems are now held in Config.Payments rather than being spread out.
By default the racing Crypto is named "RAC" but you can change it in the config.
RacingApp will never have a store or whatever, but if you want to use RAC to purchase from other scripts, there's instructions here on how to implement it.
To update your Racing Users to use the Crypto you can run this SQL:
ALTER TABLE racer_names
ADD COLUMN crypto INT DEFAULT 0 NOT NULL;
it's in Config.Options)You can now get the latest cw-crafting from the releases tab
Note: I've only tested it on an OX-core server so far, if you do find errors with the bridge implementation, please help out fixing it - especially for QB and ESX since I won't ever set up a server with those
This is an optional feature, which means you can skip cw-performance and use any other class system you have in mind.
You will need to code your own system here, so this option is NOT for you if you can't code.
There will be little-to-no support on this feature. If you want help setting you a custom class system then expect to pay for this as a commission.
You can read more about the feature here
Racing script with more features than most paid scripts - Coffeelot/cw-racingapp
Racing map is here. Here's a quick lil demo video.
If you don't want it, you can disable it in the config with the new config option HideMapInTablet
Enjoy 🗺️ 
UseServerSideStateSet config option (default is true)Note: File structure has changed in this script with this update. I urge you to clean-update it by removing the old one if you are uncertain on what you're doing.
Only tested on Ox Core. Need feedback from QBOX and QB (if it's not working please follow the post guide in #1176825221785849977, and if possible please help find a solution)
Also added new role for notes 📔 Grab it in id:customize if you use the script and want future updates
<@&1043506590663319622> 🆕 🔧 ❗
This is the same game mode as cw-head2head, but rewritten and renewed.
In short, it's a 1v1 quick race. For now it's no money or ELO involved. You send out a challenge to a nearby racer. They can accept the invite and you are both given a coordinate. First there wins.
This can be accessed with the button in the top right corner in the race menu.
This was a huge effort, but now you can host multiple races on the same track. And this should also minimize data being passed server-to-client.
A new menu has been added to the sidebar. Only shows up if user has correct auth. For now, this menu includes:
hiddenThis option will make the race not show in the racinglist. Useful for if you want to host and join races via code from an external script. Not included in the setup from the UI since you need to programatically invite races to it, so only relevant for when using the exports
handleAutoHost: Can handle auto hosthandleHosting: can pause hostingadminMenu: can see admin menucontrolAll auth can now change other users authoritiesshared folder)-# Sidenote: the next big update will most likely be semi-breaking 
Another patch for <@&1043506590663319622>:
You can now use an ox inventory based swapping for parts instead of the menu.
This acts as an stash so you can drag parts to and from the vehicle.
Parts can now take damage which will reduce their performance impact.
The readme has instructions on how to add this to your server. The script does not do damage to parts by default, you'll have to add the export in a script that deals with vehicle degradation or damage.
A new system has been implemented that adds limitations to how much parts you can put in the vehicles.
The script now supports a system utalizing vehicle scores. You can customize the experience in the shared/score.lua file.
The idea is that vehicles have different total scores, each part has a score cost. You can for example set up unique max scores per vehicle, or specific max scores per vehicles class.
You can now customize what max part tiers different vehicles can take. The file is in shared/score.lua.
Lil patch pushed for <@&1208021167806349373> for those that don't use ox_core
if you don't use ox core and you're lazy you can just delete row 3 in server.lua and everything will be fine
local antirollData = exports['cw-tuning']:getPartVariantOfType(vehicle, 'antiroll')
print('Antiroll stats:', json.encode(antiRollData.stats, {indent=true}))
The Racingapp UI has been completely remade from scratch, using a new frontend library.
Sidenote: For now, the theme/colors in the UI can't be modified without modifying the code and doing node-dev. There will be no support on this, but if you want some custom colors etc, you can reach out for a commissioned job.
Sidenote 2: due to the rework needed for track stats, all your old results from racing (times etc) are useless. The column has been removed from the sql, but you can leave it in your DB if you don't wanna delete all tracks
Other changes (that I remember doing)
Grab it here
Lil patch for racingapp:
Another patch:
Config.NotifyTitle to change)There is a known issue with kicking members right now, where the kicked member will still be in the crew. The fix for this is a bit more intricated so applying this to the old version is to much work. This fix will come in the drift update ✌️
Drift racing and casual drifting has been added to the RacingApp.
Currently it offers:
The Drift races will show the score board just like usual, and this is so to minimize the amount of score cheeseing - Instead everyone gets to see each others score afterwards. After one player crosses the finish line, the race counts down for everyone.
A "free-roam VS mode" is planned.
The script offers UI and a racing system for racing, however it does NOT offer the actual drifting calculations.
It's set up in the client/drift.lua file to be used with CW Drifting, and this is the recommended and only supported script for drifting. It should, technically, be possible to hook any drifting script into RacingApp, but there will be no support from us on how to do so.
There are two versions of the drifting script to choose from, one is encrypted and one is open source. If you want to see the mechanics behind the drifting system and/or modify how it works you'll want the Open Source one.
CW Drifting
CW Drifting Open Source
Weekend soundtrack:
https://youtu.be/8WEe-MmC4ag
<@&1043506590663319622> 🔧
Also added a new role for <@&1446897284762701884>. Pick it up in id:customize if you want to be pinged for patches to the paid drifting scripts
<@&1043506590663319622> forgot to mention that the Database updated 
ALTER TABLE racing_races
ADD COLUMN IF NOT EXISTS drift BOOLEAN NOT NULL DEFAULT FALSE;
To update it
sprint rather than sprint_only in their metadata causing default setup to use circuits.If you have drifting enabled you can also do drift challenges. These work like this:
There's currently no buyin/betting for these in the app itself.
This update comes with a change to how Racers table is handled.
If this it to complex for you, remove all Racingapp DB Tables and reinstall, and it will work. Probably the safer option, but you will lose tracks and racers.
-- Add racerid column to race_tracks if it doesn't exist
ALTER TABLE race_tracks
ADD COLUMN IF NOT EXISTS racerid VARCHAR(50) NOT NULL;
-- Add racerid column to track_times if it doesn't exist
ALTER TABLE track_times
ADD COLUMN IF NOT EXISTS racerid VARCHAR(50) NOT NULL;
-- Add founder_racerid column to racing_crews if it doesn't exist
ALTER TABLE racing_crews
ADD COLUMN IF NOT EXISTS founder_racerid VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_general_ci';
ALTER TABLE racer_names
ADD COLUMN IF NOT EXISTS racerid VARCHAR(50) NOT NULL;
Config.EnableCommands = true
Both the following commands need to be run on the server (So in your TXAdmin for example - CAN NOT BE RUN IN GAME)
updateDatabaseWithRacerIds. Wait it to print [Racing] Migration complete!...Tested and working. If it doesn't work for you then you are the issue 
Hol on, a 6.0.1 is coming
You can all thank @quiet crown who commisioned these features 🤑
false
New release here 
||Also please pretend you didn't notice that I accidentally skipped 6.1||
New release here 
Merged PRs from @rare jasper
fix issue from using canManageTrackSource before initiated
clean up debug print
Latest release here 
Side note: the Release notes didnt wanna include the commits in the notes for some reason
Latest release here 
It also seems like the last update fixed the issue with creating users with ESX/QB (?) but we do not know why 
Side note: the Release notes didnt wanna include the commits in the notes for some reason this time either
Latest release here 
It also seems like the last update fixed the issue with creating users with ESX/QB (?) but we do not know why 
Side note: the Release notes didnt wanna include the commits in the notes for some reason this time either
Latest release here 