Usar cupom WELCOME para salvar 20%

$ USD
  • $ USD
  • € EUR
  • £ GBP
  • $ AUD
  • R$ BRL
  • Franco suíço Franco suíço
  • ¥ ienes
Moeda
$ USD
  • $ USD
  • € EUR
  • £ GBP
  • $ AUD
  • R$ BRL
  • Franco suíço Franco suíço
  • ¥ ienes
Como ativar a neve no FiveM

Como ativar a neve no FiveM

Ative a neve no FiveM com um pequeno recurso: o servidor detém o estado, o ACE protege o comando e os clientes aplicam as natives de clima documentadas.

A configuração e os exemplos de código aqui são voltados ao FiveM para GTA V Legacy. O Enhanced tem regras diferentes de runtime e de compatibilidade; verifique as alterações de Legacy para Enhanced do Cfx.re antes de aplicá-las a um servidor Enhanced.

Crie o recurso

Crie uma pasta de recurso como resources/[local]/fmx-snow e adicione o seguinte fxmanifest.lua. O manifesto usa a versão FXv2 cerulean atual, declara GTA V e carrega um script cliente e um script servidor.

fx_version 'cerulean'
game 'gta5'

client_script 'client.lua'
server_script 'server.lua'

Mantenha o controle no servidor

Coloque isto em server.lua. O comando aceita apenas on ou off e mantém o estado inalterado após qualquer outro argumento. Seu RegisterCommand restrito delega o acesso ao ACE; atribua o principal fmxsnow-admin apenas ao pequeno grupo de operadores que precisa dele. GlobalState fornece aos clientes o valor atual de propriedade do servidor.

local snowEnabled = false
GlobalState.fmxSnowEnabled = false

RegisterCommand('fmxsnow', function(source, args)
    local mode = args[1]
    if mode ~= 'on' and mode ~= 'off' then
        print(('fmxsnow: usage fmxsnow on|off (source %s)'):format(source))
        return
    end

    snowEnabled = mode == 'on'
    GlobalState.fmxSnowEnabled = snowEnabled
end, true)
add_ace group.fmxsnow-admin command.fmxsnow allow
ensure fmx-snow

Aplique o estado em cada cliente

Coloque isto em client.lua. O cliente lê o valor replicado de GlobalState na inicialização, escuta atualizações posteriores do state-bag e usa as natives de clima documentadas. Nenhum evento do cliente pode alterar o estado de propriedade do servidor.

local function applySnow(enabled)
    if enabled then
        SetWeatherTypeNowPersist('XMAS')
        SetOverrideWeather('XMAS')
    else
        ClearOverrideWeather()
        ClearWeatherTypePersist()
    end
end

AddStateBagChangeHandler('fmxSnowEnabled', nil, function(_, _, value)
    applySnow(value == true)
end)

applySnow(GlobalState.fmxSnowEnabled == true)

AddEventHandler('onClientResourceStop', function(name)
    if name == GetCurrentResourceName() then
        ClearOverrideWeather()
        ClearWeatherTypePersist()
    end
end)

Adicione ensure fmx-snow ao server.cfg depois de salvar os arquivos e reinicie o recurso ou servidor. Teste fmxsnow on e off com uma conta autorizada, verifique se argumentos inválidos exibem o uso sem alterar o estado e confirme que uma conta sem privilégios não tem acesso ao comando.

Fontes primárias: documentação Cfx sobre manifesto de recurso, comando de servidor, referência de natives e segurança de servidor.

Verifique quem controla o estado e como recuperá-lo

Use apenas um controlador de clima. Desative a sincronização de clima concorrente na instância de teste antes de executar este exemplo. Ele muda para XMAS imediatamente; não persiste a escolha após um reinício do recurso/servidor.

GlobalState requer o suporte de reconhecimento de estado do servidor. Atribua o grupo ACE mostrado ao seu administrador autorizado real usando seu fluxo de trabalho de permissão existente. Teste ligar/desligar, reconectar e parar o recurso. Após removê-lo, deixe seu controlador de clima normal restaurar o clima pretendido.

Documentação de referência

Cfx.re — manifesto de recurso · Cfx.re — state bags

Deixe um comentário