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):
[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.steam → creativev5, characters.License → creativeext, vrp_users → vrpex.
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:
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
- 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). - Abra a pasta
config/frameworks/do script. - Já existe um arquivo com o nome da sua framework? Então já está adaptado, não precisa mexer em nada.
- Não existe? Crie
config/frameworks/<nome>.lua— com o mesmo nome que apareceu no cmd. - Dentro dele, retorne a tabela
Frameworkimplementando cada função com a API da sua base. - 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):
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 FrameworkAs 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.