Saltar al contenido

Password Cracker

Password Cracker funciona en el cliente. Tu script lo lanza con una palabra de cinco letras y el jugador tiene que volver a ordenar las letras antes de quedarse sin intentos o sin tiempo. Mientras el hackeo está en pantalla, el jugador no se puede mover.

Instalación

  1. Consigue los archivos. Owner: en Granted Assets de tu Cfx.re Portal. Developer: el enlace de descarga del correo de Tebex.
  2. Pon la carpeta passwordcracker en los recursos de tu servidor.
  3. Añade esta línea a tu server.cfg y reinicia:
ensure passwordcracker

No tiene dependencias.

Lánzalo

Password Cracker se lanza con un evento, desde un script de cliente. No tiene export.

TriggerEvent('passwordhack:robbery_computer', 'major', 120000, 5, function(result, reason)
    -- tu código
end)

El resultado vuelve por esa función, y una función no puede viajar del servidor al cliente. Para lanzarlo desde el servidor, manda tu propio evento al jugador y lanza allí este. Es lo que hace el ejemplo del final.

Opciones

Opción Qué es Por defecto
word La contraseña, de 5 letras exactas. Obligatoria —
time Tiempo para todo el hackeo, en milisegundos 120000 (2 minutos)
attempts Intentos que tiene el jugador, de 1 a 5 5

Resultados

result Cuándo
1 El jugador sacó la palabra
2 Se acabó el tiempo
0 El hackeo falló
-1 Error, por ejemplo una palabra que no tiene 5 letras

Da la recompensa en el servidor

Cualquiera con un menú de trucos puede lanzar miatraco:hackeoTerminado sin jugar, así que el servidor solo paga un hackeo que ha empezado él, que ha durado un tiempo posible, y una sola vez:

-- client.lua
RegisterNetEvent('miatraco:empezarHackeo', function(token)
    TriggerEvent('passwordhack:robbery_computer', 'major', 120000, 5, function(result)
        TriggerServerEvent('miatraco:hackeoTerminado', token, result == 1)
    end)
end)
-- server.lua
local MAX_TIME = 120 + 10 -- segundos: tu límite de tiempo más margen para la carga y la red
local MIN_TIME = 5 -- segundos: cronometra una partida rápida en tu servidor y súbelo
local hacks = {}

-- Llámala desde tu atraco cuando el jugador pueda hackear (en el terminal y sin cooldown).
local function startHack(src)
    local token = ('%08x%08x'):format(math.random(0, 0x7fffffff), math.random(0, 0x7fffffff))
    hacks[src] = { token = token, startedAt = os.time() }
    TriggerClientEvent('miatraco:empezarHackeo', src, token)
end

RegisterNetEvent('miatraco:hackeoTerminado', function(token, success)
    local src = source
    local hack = hacks[src]
    hacks[src] = nil -- un solo uso: un segundo aviso ya no encuentra nada
    if not hack or hack.token ~= token or not success then return end
    local took = os.time() - hack.startedAt
    if took < MIN_TIME or took > MAX_TIME then return end
    -- Da aquí la recompensa.
end)

AddEventHandler('playerDropped', function()
    hacks[source] = nil
end)