local a=[[ Keys = { ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F5"] = 166, ["F6"] = 167, ["F7"] = 168, ["F8"] = 169, ["F9"] = 56, ["F10"] = 57, ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 160, ["4"] = 164, ["5"] = 165, ["6"] = 159, ["7"] = 161, ["8"] = 162, ["9"] = 163, ["-"] = 84, ["="] = 83, ["BACKSPACE"] = 177, ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["P"] = 199, ["["] = 39, ["]"] = 40, ["ENTER"] = 18, ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["K"] = 311, ["L"] = 182, ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N+"] = 96, ["N-"] = 97, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118 } NOX = nil unProcessedMoneySheets = unProcessedMoneySheets or 0 moneySheets = moneySheets or 0 cuttedMoney = cuttedMoney or 0 isProducingSheets = false isCountingMoney = false isPlayerWhitelisted = false isOpen = false disable = false producingTime = Config.ProducingTime countingTime = Config.CountingTime Citizen.CreateThread(function() while NOX == nil do TriggerEvent('esx:getSharedObject', function(obj) NOX = obj end) Citizen.Wait(500) end while NOX.GetPlayerData().job == nil do Citizen.Wait(10) end NOX.PlayerData = NOX.GetPlayerData() isPlayerWhitelisted = refreshPlayerWhitelisted() end) Citizen.CreateThread(function() while true do Citizen.Wait(0) if disable then DisableControlAction(0, 73, true) DisableControlAction(0, 105, true) DisableControlAction(0, 120, true) DisableControlAction(0, 154, true) DisableControlAction(0, 186, true) DisableControlAction(0, 252, true) DisableControlAction(0, 323, true) DisableControlAction(0, 337, true) DisableControlAction(0, 345, true) DisableControlAction(0, 354, true) DisableControlAction(0, 357, true) else Wait(500) end end end) AddEventHandler('onResourceStart', function(resource) isLoggedIn = true end) RegisterNetEvent('esx:playerLoaded') AddEventHandler('esx:playerLoaded', function(playerData) NOX.PlayerData = xPlayer isLoggedIn = true end) RegisterNetEvent('esx:setJob') AddEventHandler('esx:setJob', function(job) NOX.PlayerData.job = job isPlayerWhitelisted = refreshPlayerWhitelisted() end) function refreshPlayerWhitelisted() if not NOX.PlayerData then return true end if not NOX.PlayerData.job then return true end if Config.JobDatabaseName == NOX.PlayerData.job.name then return false end return true end Citizen.CreateThread(function() while true do Citizen.Wait(1) local playerPed = GetPlayerPed(-1) local playerPosition = GetEntityCoords(playerPed) -- ENTER TELEPORTER if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z, true) < 5) then DrawMarker(2, Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z-0.20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.15, 255, 255, 255, 200, 0, 0, 0, 1, 0, 0, 0) if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z, true) < 1.5) then DrawText3D(Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z+0.15, '~g~E~w~ - Enter') if IsControlJustReleased(0, Keys["E"]) and not isPlayerWhitelisted then teleportToWashingOffice() end elseif (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z, true) < 4) then DrawText3D(Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z+0.15, 'Office') end end -- EXIT TELEPORTER if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.teleporters.exit.x, Config.Locations.washinglab.teleporters.exit.y, Config.Locations.washinglab.teleporters.exit.z, true) < 5) then DrawMarker(2, Config.Locations.washinglab.teleporters.exit.x, Config.Locations.washinglab.teleporters.exit.y, Config.Locations.washinglab.teleporters.exit.z-0.20, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.15, 255, 255, 255, 200, 0, 0, 0, 1, 0, 0, 0) if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.teleporters.exit.x, Config.Locations.washinglab.teleporters.exit.y, Config.Locations.washinglab.teleporters.exit.z, true) < 1.5) then DrawText3D(Config.Locations.washinglab.teleporters.exit.x, Config.Locations.washinglab.teleporters.exit.y, Config.Locations.washinglab.teleporters.exit.z+0.15, '~g~E~w~ - Leave') if IsControlJustReleased(0, Keys["E"]) and not isPlayerWhitelisted then teleportOutOfWashingOffice() end end end -- WASH START if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.process.start.x, Config.Locations.washinglab.process.start.y, Config.Locations.washinglab.process.start.z, true) < 1.5) then DrawText3D(Config.Locations.washinglab.process.start.x, Config.Locations.washinglab.process.start.y, Config.Locations.washinglab.process.start.z+0.15, 'กด ~g~E~w~ โหลดเงินเข้าเครื่อง') if IsControlJustReleased(0, Keys["E"]) and not isPlayerWhitelisted and not isOpen then isOpen = true NOX.TriggerServerCallback('nox_washmoney:CheckPolice', function(Cops) if Cops >= Config.Cops then SetEntityCoords(playerPed, 1136.13, -3197.2, -39.67, 1, 0, 0, 1) SetEntityHeading(playerPed, 182.48) NOX.UI.Menu.Open('dialog', GetCurrentResourceName(), 'recuento', { title = 'คุณต้องการ แลก เงินผิดกฎหมาย เท่าไหร่? แลกได้ทีละ $' .. Config.MaxiMum }, function(data, menu) local amount = tonumber(data.value) if amount == nil then exports['pNotify']:Error('<strong class="red-text">จำนวนเงินไม่ถูกต้อง</strong>') elseif amount > Config.MaxiMum then exports['pNotify']:Error('แลกได้ทีละ $<strong class="red-text">' .. Config.MaxiMum .. '</strong>') else local item_name = exports['nox_framework']:GET_PLAYER_HOLDING_ITEM() Wait(250) if unProcessedMoneySheets < Config.MaxiMum and moneySheets < Config.MaxiMum then unProcessedMoneySheets = unProcessedMoneySheets + amount menu.close() NOX.TriggerServerCallback('nox_washlab:callback:getBlackMoneyAmount', function(Amount) if Amount > 0 then exports['nox_framework']:USE_ITEM('black_money') Wait(250) local playerPed = PlayerPedId() startPlayingPickingUpAnimation() TriggerServerEvent('nox_washlab:server:removeBlackMoney', amount) startProducingTimer(amount) else exports['pNotify']:Error('<strong class="red-text">คุณมีเงินไม่เพียงพอ</strong>') end end) else exports['pNotify']:Error('<strong class="red-text">เครื่องเต็มแล้ว</strong>') end end end, function(data, menu) menu.close() isOpen = false end) else exports['pNotify']:Error('ต้องมีตำรวจอย่างน้อย <strong class="red-text">' .. Config.Cops .. '</strong> คน') end end) end end -- WASH TIMER if isProducingSheets and producingTime > 0 then if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.process.timer.x, Config.Locations.washinglab.process.timer.y, Config.Locations.washinglab.process.timer.z, true) < 10) then DrawText3D(Config.Locations.washinglab.process.timer.x, Config.Locations.washinglab.process.timer.y, Config.Locations.washinglab.process.timer.z+0.35, 'จำนวนเงิน : ~g~$' .. unProcessedMoneySheets .. '~w~') DrawText3D(Config.Locations.washinglab.process.timer.x, Config.Locations.washinglab.process.timer.y, Config.Locations.washinglab.process.timer.z+0.15, 'กระบวนการผลิต : ~y~' .. producingTime .. ' วินาที~w~') end end -- WASH MACHINE OUTPUT if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.process.output.x, Config.Locations.washinglab.process.output.y, Config.Locations.washinglab.process.output.z, true) < 2.5) then DrawText3D(Config.Locations.washinglab.process.output.x, Config.Locations.washinglab.process.output.y, Config.Locations.washinglab.process.output.z+0.15, 'เงินที่ได้ : ~y~$' .. moneySheets .. '~w~') end -- WASH CUTTER if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.process.cutter.x, Config.Locations.washinglab.process.cutter.y, Config.Locations.washinglab.process.cutter.z, true) < 2.5) then DrawText3D(Config.Locations.washinglab.process.cutter.x, Config.Locations.washinglab.process.cutter.y, Config.Locations.washinglab.process.cutter.z+0.35, 'เงิน : ~y~' .. moneySheets .. '~w~') DrawText3D(Config.Locations.washinglab.process.cutter.x, Config.Locations.washinglab.process.cutter.y, Config.Locations.washinglab.process.cutter.z+0.15, 'กด ~g~E~w~ เพื่อตัดเงิน') if IsControlJustReleased(0, Keys["E"]) and not isPlayerWhitelisted then if moneySheets >= 100 then SetEntityCoords(playerPed, 1122.03, -3197.49, -40.38, 1, 0, 0, 1) SetEntityHeading(playerPed, 175.99) Citizen.Wait(500) FreezeEntityPosition(playerPed, true) TaskStartScenarioInPlace(playerPed, 'PROP_HUMAN_BUM_BIN', 0, true) TriggerEvent("nox_progbar:client:progress", { name = "unique_action_name", duration = Config.WaitingTime, label = "ตัดเงิน", useWhileDead = false, canCancel = true, controlDisables = { disableMovement = true, disableCarMovement = true, disableMouse = false, disableCombat = true, }, }, function(status) if not status then moneySheets = moneySheets - unProcessedMoneySheets cuttedMoney = cuttedMoney + unProcessedMoneySheets ClearPedTasksImmediately(playerPed) FreezeEntityPosition(playerPed, false) end end) else exports['pNotify']:Error('<strong class="red-text">ไม่มีแผ่นเงินให้ตัด</strong>') end end end -- WASH COUNTER if (GetDistanceBetweenCoords(playerPosition, Config.Locations.washinglab.process.counter.x, Config.Locations.washinglab.process.counter.y, Config.Locations.washinglab.process.counter.z, true) < 2.5) then DrawText3D(Config.Locations.washinglab.process.counter.x, Config.Locations.washinglab.process.counter.y, Config.Locations.washinglab.process.counter.z+0.35, 'จำนวนเงินที่ตัด : ~y~$' .. cuttedMoney .. '~w~') if isCountingMoney and countingTime > 0 then DrawText3D(Config.Locations.washinglab.process.counter.x, Config.Locations.washinglab.process.counter.y, Config.Locations.washinglab.process.counter.z+0.15, 'กระบวนการนับ : ~y~' .. countingTime .. ' วินาที~w~') else DrawText3D(Config.Locations.washinglab.process.counter.x, Config.Locations.washinglab.process.counter.y, Config.Locations.washinglab.process.counter.z+0.15, 'กด ~g~E~w~ นับเงิน') end if IsControlJustReleased(0, Keys["E"]) and not isPlayerWhitelisted then if cuttedMoney > 0 then disable = true startCountingTimer(cuttedMoney) TriggerEvent('esx_sit:sit') else exports['pNotify']:Error('<strong class="red-text">ไม่มีเงินเหลือให้นับ</strong>') end end end end end) startPlayingPickingUpAnimation = function() RequestAnimDict("anim@amb@nightclub@mini@drinking@drinking_shots@ped_a@drunk") while (not HasAnimDictLoaded("anim@amb@nightclub@mini@drinking@drinking_shots@ped_a@drunk")) do Citizen.Wait(0) end TaskPlayAnim(GetPlayerPed(-1), 'anim@amb@nightclub@mini@drinking@drinking_shots@ped_a@drunk', 'pickup', 5.0, -1, 1500, 9, 0, false, false, false) Citizen.Wait(1000) StopAnimTask(GetPlayerPed(-1), "anim@amb@nightclub@mini@drinking@drinking_shots@ped_a@drunk","pickup", 1.0) exports['nox_framework']:CLEAR_HOLDING_ITEM_CURRENT() end startProducingTimer = function(amount) isProducingSheets = true Citizen.CreateThread(function() while isProducingSheets do producingTime = producingTime - 1 if producingTime <= 0 then moneySheets = moneySheets + amount isProducingSheets = false producingTime = producingTime + Config.ProducingTime end Citizen.Wait(1000) end end) end startCountingTimer = function(amount) isCountingMoney = true Citizen.CreateThread(function() while isCountingMoney do countingTime = countingTime - 1 if countingTime <= 0 then cuttedMoney = cuttedMoney - amount TriggerServerEvent('nox_washlab:server:giveCleanMoney', amount) TriggerEvent('esx_sit:wakeup') isCountingMoney = false isOpen = false disable = false countingTime = countingTime + Config.CountingTime end Citizen.Wait(1000) end end) end teleportOutOfWashingOffice = function() local entity = GetPlayerPed(-1) DoScreenFadeOut(200) Citizen.Wait(200) SetEntityCoords(entity, Config.Locations.washinglab.teleporters.enter.x, Config.Locations.washinglab.teleporters.enter.y, Config.Locations.washinglab.teleporters.enter.z, 0, 0, 0, false) PlaceObjectOnGroundProperly(entity) Citizen.Wait(1500) DoScreenFadeIn(200) end teleportToWashingOffice = function() local entity = GetPlayerPed(-1) DoScreenFadeOut(200) Citizen.Wait(200) SetEntityCoords(entity, Config.Locations.washinglab.teleporters.exit.x, Config.Locations.washinglab.teleporters.exit.y, Config.Locations.washinglab.teleporters.exit.z, 0, 0, 0, false) PlaceObjectOnGroundProperly(entity) Citizen.Wait(1500) DoScreenFadeIn(200) end DrawText3D = function(x, y, z, text) local FontThai = NOX.GetFontThai() SetTextScale(0.35, 0.35) SetTextFont(FontThai) SetTextProportional(1) SetTextColour(255, 255, 255, 215) SetTextEntry("STRING") SetTextCentre(true) AddTextComponentString(text) SetDrawOrigin(x,y,z, 0) DrawText(0.0, 0.0) local factor = (string.len(text)) / 470 DrawRect(0.0, 0.0+0.0190, 0.017+ factor, 0.03, 0, 0, 0, 200) ClearDrawOrigin() end -- LOAD IPL Citizen.CreateThread(function() BikerCounterfeit = exports['bob74_ipl']:GetBikerCounterfeitObject() BikerCounterfeit.Ipl.Interior.Load() BikerCounterfeit.Printer.Set(BikerCounterfeit.Printer.upgradeProd) BikerCounterfeit.Security.Set(BikerCounterfeit.Security.upgrade) BikerCounterfeit.Dryer1.Set(BikerCounterfeit.Dryer1.on) BikerCounterfeit.Dryer2.Set(BikerCounterfeit.Dryer2.on) BikerCounterfeit.Dryer3.Set(BikerCounterfeit.Dryer3.on) BikerCounterfeit.Dryer4.Set(BikerCounterfeit.Dryer4.on) BikerCounterfeit.Details.Enable(BikerCounterfeit.Details.chairs, true) BikerCounterfeit.Details.Enable(BikerCounterfeit.Details.furnitures, true) RefreshInterior(BikerCounterfeit.interiorId) end) ]] a="12345\n"..a;function Obfuscate(b)local c="function IllIlllIllIlllIlllIlllIll(IllIlllIllIllIll) if (IllIlllIllIllIll==(((((919 + 636)-636)*3147)/3147)+919)) then return not true end if (IllIlllIllIllIll==(((((968 + 670)-670)*3315)/3315)+968)) then return not false end end; "local d=c;local e=""local f={"IllIllIllIllI","IIlllIIlllIIlllIIlllII","IIllllIIllll"}local g=[[local IlIlIlIlIlIlIlIlII = {]]local h=[[local IllIIllIIllIII = loadstring]]local i=[[local IllIIIllIIIIllI = table.concat]]local j=[[local IIIIIIIIllllllllIIIIIIII = "''"]]local k="local "..f[math.random(1,#f)].." = (7*3-9/9+3*2/0+3*3);"local l="local "..f[math.random(1,#f)].." = (3*4-7/7+6*4/3+9*9);"local m="--// Obfuscated with LuaSeel 1.1 \n\n"for n=1,string.len(b)do e=e.."'\\"..string.byte(b,n).."',"end;local o="function IllIIIIllIIIIIl("..f[math.random(1,#f)]..")"local p="function "..f[math.random(1,#f)].."("..f[math.random(1,#f)]..")"local q="local "..f[math.random(1,#f)].." = (5*3-2/8+9*2/9+8*3)"local r="end"local s="IllIIIIllIIIIIl(900283)"local t="function IllIlllIllIlllIlllIlllIllIlllIIIlll("..f[math.random(1,#f)]..")"local q="function "..f[math.random(1,#f)].."("..f[math.random(1,#f)]..")"local u="local "..f[math.random(1,#f)].." = (9*0-7/5+3*1/3+8*2)"local v="end"local w="IllIlllIllIlllIlllIlllIllIlllIIIlll(9083)"local x=m..d..k..l..i..";"..o.." "..p.." "..q.." "..r.." "..r.." "..r..";"..s..";"..t.." "..q.." "..u.." "..v.." "..v..";"..w..";"..h..";"..g..e.."}".."IllIIllIIllIII(IllIIIllIIIIllI(IlIlIlIlIlIlIlIlII,IIIIIIIIllllllllIIIIIIII))()"print(x)end;do Obfuscate(a)end
Write, Run & Share Lua code online using OneCompiler's Lua online compiler for free. It's one of the robust, feature-rich online compilers for Lua language, running the latest Lua version 5.4. Getting started with the OneCompiler's Lua editor is easy and fast. The editor shows sample boilerplate code when you choose language as Lua and start coding.
OneCompiler's Lua online editor supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample Lua program which takes name as input and prints hello message with your name.
name = io.read("*a")
print ("Hello ", name)
Lua is a light weight embeddable scripting language which is built on top of C. It is used in almost all kind of applications like games, web applications, mobile applications, image processing etc. It's a very powerful, fast, easy to learn, open-source scripting language.
-- global variables
a = 10
-- local variables
local x = 30
Value Type | Description |
---|---|
number | Represents numbers |
string | Represents text |
nil | Differentiates values whether it has data or not |
boolean | Value can be either true or false |
function | Represents a sub-routine |
userdata | Represents arbitary C data |
thread | Represents independent threads of execution. |
table | Can hold any value except nil |
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while(condition)
do
--code
end
Repeat-Until is also used to iterate a set of statements based on a condition. It is very similar to Do-While, it is mostly used when you need to execute the statements atleast once.
repeat
--code
until( condition )
For loop is used to iterate a set of statements based on a condition.
for init,max/min value, increment
do
--code
end
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increase re-usuability and modularity.
optional_function_scope function function_name( argument1, argument2, argument3........, argumentn)
--code
return params with comma seperated
end