UNPKG

fivem-script-converter

Version:

a fivem script converter

205 lines (187 loc) 12.1 kB
const fs = require('fs'); const colors = require('colors'); var requestify = require('requestify'); var pjson = require('./package.json'); console.log(" __ ___ __ ___ ___ __ ".brightCyan) console.log(" / |/ /__ ____/ /__ / _ )__ __ / _ | __ _ ___ ___ ___/ / ".brightCyan) console.log(" / /|_/ / _ `/ _ / -_) / _ / // / / __ |/ ' \\/ _ \\/ -_) _ / ".brightCyan) console.log("/_/ /_/\\_,_/\\_,_/\\__/ /____/\\_, / /_/ |_/_/_/_/ .__/\\__/\\_,_/ ".brightCyan) console.log(" /___/ /_/ ".brightCyan) console.log("\n [+] Fivem Qbus to Esx / Esx to Qbus Converter [+] ".brightCyan) requestify.get('https://ampedscripts.nl/version.txt') .then(function(response) { // Get the response body (JSON parsed or jQuery object for XMLs) var responselmae = response.getBody(); var version = pjson.version; if (response.getBody() === `${version}\n`) { } else { console.log(`\n\nThis version is outdated make sure to npm i fivem-script-converter\n\nCurrent Version: ${version}\nNewest Version: ${responselmae}`); process.exit(); } }); var esxtoqbus = function esxtoqbus(file){ var code = fs.readFileSync(file,'utf8') code = code.replaceAll(`TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)`, `TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end)`); code = code.replaceAll(`while ESX == nil do`, `while QBCore == nil do`); code = code.replaceAll(`ESX.TriggerServerCallback`, `QBCore.Functions.TriggerCallback`); code = code.replaceAll(`ESX.Game.GetVehicleProperties`, `QBCore.Functions.GetVehicleProperties`); code = code.replaceAll(`ESX.Game.DeleteVehicle`, `QBCore.Functions.DeleteVehicle`); code = code.replaceAll(`ESX.Game.SpawnVehicle`, `QBCore.Functions.SpawnVehicle`); code = code.replaceAll(`ESX.Game.GetClosestVehicle`, `QBCore.Functions.GetClosestVehicle`); code = code.replaceAll(`ESX = nil`, `QBCore = nil `); code = code.replaceAll(`ESX = nil`, `QBCore = nil `); code = code.replaceAll(`RegisterNetEvent('esx:playerLoaded'`, `RegisterNetEvent('QBCore:Client:OnPlayerLoaded'`); code = code.replaceAll(`AddEventHandler('esx:playerLoaded',`, `AddEventHandler('QBCore:Client:OnPlayerLoaded',`); code = code.replaceAll(`RegisterNetEvent('esx:setJob'`, `RegisterNetEvent('QBCore:Client:OnJobUptade'`); code = code.replaceAll(`AddEventHandler('esx:setJob',`, `AddEventHandler('QBCore:Client:OnJobUptade', `); code = code.replaceAll(`RegisterNetEvent('esx:onPlayerDeath'`, `RegisterNetEvent('QBCore:Client:OnPlayerUnload'`); code = code.replaceAll(`AddEventHandler('esx:onPlayerDeath',`, `AddEventHandler('QBCore:Client:OnPlayerUnload',`); code = code.replaceAll(`ESX.Game.GetClosestPlayer()`, `QBCore.Functions.GetClosestPlayer()`); code = code.replaceAll(`ESX.UI.Menu.Open`, `QBCore.UI.Menu.Open`); code = code.replaceAll(`ESX.UI.Menu.CloseAll()`, `QBCore.UI.Menu.CloseAll()`); code = code.replaceAll(`xPlayer.getInventoryItem`, `xPlayer.Functions.GetItemByName `); code = code.replaceAll(`RegisterNetEvent('esx:setJob'`, `RegisterNetEvent('QBCore:Client:OnJobUpdate'`); code = code.replaceAll(`AddEventHandler('esx:setJob', function(job)`, `AddEventHandler('QBCore:Client:OnJobUpdate', function(job)`); code = code.replaceAll(`xPlayer.removeAccountMoney('bank', amount)`, `ply.Functions.AddMoney('bank', amount, "Bank depost")`); code = code.replaceAll(`xPlayer.addMoney(amount)`, `ply.Functions.RemoveMoney('cash', amount, "Bank depost")`); code = code.replaceAll(`xPlayer.getAccount('bank').money`, `ply.PlayerData.money["bank"]`); code = code.replaceAll(`xPlayer.removeInventoryItem `, `xPlayer.Functions.RemoveItem `); code = code.replaceAll(`xPlayer.addInventoryItem`, `xPlayer.Functions.AddItem`); code = code.replaceAll(`ESX.GetPlayerFromId`, `QBCore.Functions.GetPlayer`); code = code.replaceAll(`ESX.GetPlayerFromIdentifier`, `QBCore.Functions.GetPlayerByCitizenId`); code = code.replaceAll(`ESX.Math.Trim(value)`, `QBCore.Functions.MathTrim`); code = code.replaceAll(`ESX.GetPlayerData()`, `QBCore.Functions.GetPlayerData()`); code = code.replaceAll(`ESX.RegisterUsableItem()`, `QBCore.Functions.CreateUseableItem()`); code = code.replaceAll(`xPlayer.removeMoney(money)`, `Player.Functions.RemoveMoney()`); code = code.replaceAll(`ESX.RegisterServerCallback()`, `QBCore.Functions.CreateCallback()`); code = code.replaceAll(`ESX.TriggerServerCallback()`, `QBCore.Functions.TriggerCallback()`); code = code.replaceAll(`ESX.Game.SetVehicleProperties`, `QBCore.Functions.SetVehicleProperties`); code = code.replaceAll(`LoadModel`, `QBCore.Functions.LoadModel`); code = code.replaceAll(`ESX.RegisterServerCallback("system:fetchStatus", function(source, cb) local src = source local user = ESX.GetPlayerFromId(src) local fetch = [[ SELECT skills FROM users WHERE identifier = @identifier ]] MySQL.Async.fetchScalar(fetch, { ["@identifier"] = user.identifier }, function(status) if status ~= nil then cb(json.decode(status)) else cb(nil) end end) end)`, `QBCore.Functions.CreateCallback('system:fetchStatus', function(source, cb) local Player = QBCore.Functions.GetPlayer(source) if Player then exports['ghmattimysql']:execute('SELECT skills FROM players WHERE citizenid = @citizenid', { ['@citizenid'] = Player.PlayerData.citizenid }, function(status) if status ~= nil then cb(json.decode(status)) else cb(nil) end end) else cb() end end)`); code = code.replaceAll(`RegisterCommand `, `QBCore.Commands.Add()`); code = code.replaceAll(`local user = ESX.GetPlayerFromId(src)`, `local Player = QBCore.Functions.GetPlayer(source)`); code = code.replaceAll(`["@identifier"] = user.identifier`, `['@citizenid'] = Player.PlayerData.citizenid`); fs.writeFileSync('output.lua', code, function (err) { if (err) return console.log(err); }); console.log(`Succesfully converted the ${file} from ESX to Qbus!`) }; var qbustoesx = function qbustoesx(file){ var code = fs.readFileSync(file,'utf8') code = code.replaceAll(`TriggerEvent('QBCore:GetObject', function(obj) QBCore = obj end)`, `TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)`); code = code.replaceAll(`QBCore = exports['qb-core']:GetCoreObject()`, `TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)`); code = code.replaceAll(`local QBCore = exports['qb-core']:GetCoreObject()`,`ESX = nil\nTriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)`); code = code.replaceAll(`while QBCore == nil do`, `while ESX == nil do`); code = code.replaceAll(`QBCore.Functions.TriggerCallback`, `ESX.TriggerServerCallback`); code = code.replaceAll(`QBCore.Functions.GetVehicleProperties`, `ESX.Game.GetVehicleProperties`); code = code.replaceAll(`QBCore.Functions.DeleteVehicle`, `ESX.Game.DeleteVehicle`); code = code.replaceAll(`QBCore.Functions.SpawnVehicle`, `ESX.Game.SpawnVehicle`); code = code.replaceAll(`QBCore.Functions.GetClosestVehicle`, `ESX.Game.GetClosestVehicle`); code = code.replaceAll(`QBCore = nil`, `ESX = nil`); code = code.replaceAll(`QBCore == nil`, `ESX == nil`); code = code.replaceAll(`RegisterNetEvent('QBCore:Client:OnPlayerLoaded'`, `RegisterNetEvent('esx:playerLoaded'`); code = code.replaceAll(`AddEventHandler('QBCore:Client:OnPlayerLoaded',`, `AddEventHandler('esx:playerLoaded',`); code = code.replaceAll(`RegisterNetEvent('QBCore:Client:OnJobUptade'`, `RegisterNetEvent('esx:setJob'`); code = code.replaceAll(`AddEventHandler('QBCore:Client:OnJobUptade', `, `AddEventHandler('esx:setJob',`); code = code.replaceAll(`RegisterNetEvent('QBCore:Client:OnPlayerUnload'`, `RegisterNetEvent('esx:onPlayerDeath'`); code = code.replaceAll(`AddEventHandler('QBCore:Client:OnPlayerUnload',`, `AddEventHandler('esx:onPlayerDeath',`); code = code.replaceAll(`QBCore.Functions.GetClosestPlayer()`, `ESX.Game.GetClosestPlayer()`); code = code.replaceAll(`QBCore.UI.Menu.Open`, `ESX.UI.Menu.Open`); code = code.replaceAll(`QBCore.UI.Menu.CloseAll()`, `ESX.UI.Menu.CloseAll()`); code = code.replaceAll(`xPlayer.Functions.GetItemByName `, `xPlayer.getInventoryItem`); code = code.replaceAll(`RegisterNetEvent('QBCore:Client:OnJobUpdate'`, `RegisterNetEvent('esx:setJob'`); code = code.replaceAll(`AddEventHandler('QBCore:Client:OnJobUpdate', function(job`, `AddEventHandler('esx:setJob', function(job)`); code = code.replaceAll(`ply.Functions.AddMoney`, `xPlayer.removeAccountMoney`); code = code.replaceAll(`ply.Functions.RemoveMoney`, `xPlayer.addMoney`); code = code.replaceAll(`ply.PlayerData.money["bank"]`, `xPlayer.getAccount('bank').money`); code = code.replaceAll(`xPlayer.Functions.RemoveItem `, `xPlayer.removeInventoryItem`); code = code.replaceAll(`xPlayer.Functions.AddItem`, `xPlayer.addInventoryItem`); code = code.replaceAll(`QBCore.Functions.GetPlayer`, `ESX.GetPlayerFromId`); code = code.replaceAll(`QBCore.Functions.GetPlayerByCitizenId`, `ESX.GetPlayerFromIdentifier`); code = code.replaceAll(`QBCore.Functions.MathTrim`, `ESX.Math.Trim(value)`); code = code.replaceAll(`QBCore.Functions.GetPlayerData`, `ESX.GetPlayerData`); code = code.replaceAll(`QBCore.Functions.CreateUseableItem`, `ESX.RegisterUsableItem`); code = code.replaceAll(`Player.Functions.RemoveMoney`, `xPlayer.removeMoney`); code = code.replaceAll(`QBCore.Functions.CreateCallback`, `ESX.RegisterServerCallback`); code = code.replaceAll(`QBCore.Functions.TriggerCallback`, `ESX.TriggerServerCallback`); code = code.replaceAll(`QBCore.Functions.CreateCallback('system:fetchStatus', function(source, cb) local Player = QBCore.Functions.GetPlayer(source) if Player then exports['ghmattimysql']:execute('SELECT skills FROM players WHERE citizenid = @citizenid', { ['@citizenid'] = Player.PlayerData.citizenid }, function(status) if status ~= nil then cb(json.decode(status)) else cb(nil) end end) else cb() end end)`, `ESX.RegisterServerCallback("system:fetchStatus", function(source, cb) local src = source local user = ESX.GetPlayerFromId(src) local fetch = [[ SELECT skills FROM users WHERE identifier = @identifier ]] MySQL.Async.fetchScalar(fetch, { ["@identifier"] = user.identifier }, function(status) if status ~= nil then cb(json.decode(status)) else cb(nil) end end) end)`); code = code.replaceAll(`QBCore.Commands.Add`, `RegisterCommand`); code = code.replaceAll(`local Player = QBCore.Functions.GetPlayer(source)`, `local user = ESX.GetPlayerFromId(src)`); code = code.replaceAll(`['@citizenid'] = Player.PlayerData.citizenid`, `["@identifier"] = user.identifier`); fs.writeFileSync('output.lua', code, function (err) { if (err) return console.log(err); }); console.log(`Succesfully converted the ${file} from Qbus to ESX!`) }; module.exports.qbustoesx = qbustoesx; module.exports.esxtoqbus = esxtoqbus;