Warn NuisWarn Nuis
Discord
Documentação

Central de ajuda

Todo script da Warn é agnóstico de framework: por dentro ele nunca chama a API da sua base direto. Ele chama funções genéricas — Framework.getUserId(source), Framework.hasGroup(...), Framework.query(...), Framework.userIdentity(...) — e um único arquivo traduz essas funções pra API da sua base.

Esse arquivo fica sempre em config/frameworks/.

Todo script Warn (wnMdt, wnInventoryC5, wnGroupsV4, wnAnimDupla…) tem a pasta config/frameworks/. É sempre o mesmo esquema — aprendeu num, sabe em todos.

1. O script identifica o framework sozinho

No arquivo server_framework.lua, o script olha o schema do seu banco de dados (quais tabelas e colunas existem) e deduz qual framework você usa. Depois imprime no console do servidor (cmd):

Console do servidor
[wnMdt] Framework Carregada: [ creativev5 ]

O nome que aparece entre colchetes é a sua framework. É esse nome que importa — guarde ele.

Frameworks reconhecidos automaticamente: vrpex, creativev5, creativenw, creativeext, snt. A identificação é pela tabela do banco — por exemplo: accounts.steamcreativev5, characters.Licensecreativeext, vrp_usersvrpex.

2. O nome no cmd É o nome do arquivo

Quando o script sobe, o server.lua carrega automaticamente o arquivo com o nome exato do framework identificado:

server-side/server.lua
Framework = module(GetCurrentResourceName(), "config/frameworks/"..currentFramework())

Ou seja: se o cmd mostrou creativev5, ele carrega config/frameworks/creativev5.lua. Se esse arquivo não existir, o script não adapta e a framework fica como none.

O nome do arquivo tem que ser idêntico ao que aparece no cmd — tudo minúsculo, sem espaço e sem .lua duplicado. creativev5.lua CreativeV5.lua.

3. Adaptando um script pra sua base

  1. Suba o servidor e veja no cmd qual framework foi identificado. Se aparecer none, o script não reconheceu seu banco — aí você escolhe um nome (ex.: minhabase).
  2. Abra a pasta config/frameworks/ do script.
  3. Já existe um arquivo com o nome da sua framework? Então já está adaptado, não precisa mexer em nada.
  4. Não existe? Crie config/frameworks/<nome>.lua — com o mesmo nome que apareceu no cmd.
  5. Dentro dele, retorne a tabela Framework implementando cada função com a API da sua base.
  6. Reinicie o script. O cmd deve mostrar a framework carregada e tudo passa a funcionar.

Exemplo de arquivo de adaptação

Cada função recebe os mesmos parâmetros e devolve o mesmo tipo de retorno — só muda o "miolo" pra sua base. Exemplo real (base vRP / creativev5):

config/frameworks/creativev5.lua
Framework = {
    ['query'] = function(sql, params)
        return vRP.query(sql, params)
    end,

    ['execute'] = function(sql, params)
        return vRP.execute(sql, params)
    end,

    ['getSource'] = function(source)
        return vRP.userSource(source)
    end,

    ['getUserId'] = function(source)
        return vRP.getUserId(source)
    end,

    ['hasGroup'] = function(user_id, permissao)
        return vRP.hasGroup(user_id, permissao)
    end,

    ['userIdentity'] = function(user_id)
        local identity = vRP.userIdentity(user_id)
        return {
            name  = identity.name  or 'None',
            name2 = identity.name2 or 'None',
        }
    end,
}

return Framework

As funções que você precisa implementar variam de script pra script. O caminho mais fácil: abra o config/frameworks/creativev5.lua que já vem no script e reescreva as mesmas chaves usando a API da sua base. Se uma chave existe lá, é porque o script usa ela.

Resumindo

O código do script nunca muda. Você só escreve o "tradutor" da sua base uma vez dentro de config/frameworks/, com o nome que o próprio script identifica no cmd. Feito isso, o mesmo script roda em qualquer framework.