mri-QboxResourcesCW Rep

Manual do cw-rep (Sistema CW de Reputação e Habilidades)

Introdução

O cw-rep é um sistema leve de reputação e habilidades para FiveM baseado no QBCore, com total compatibilidade retroativa com os exports do mz-skills. Ele gerencia habilidades pessoais (skill) e reputação baseada em emprego (rep) com níveis XP exponenciais.

Funcionalidades Principais

  • Dois tipos de progressão: skill (pessoal) e rep (baseada em emprego)
  • Níveis XP exponenciais (padrão 30 níveis)
  • Compatibilidade retroativa total com mz-skills
  • UI moderna via ox_lib (padrão) ou suporte a qb-menu
  • Envio de e-mails via qb-phone ao alcançar níveis específicos
  • Integração com verificações de habilidade do ox_lib
  • Armazenamento MySQL otimizado com migração automática do mz-skills
  • Totalmente configurável (habilidades, ícones, mensagens, intervalos de nível)

Dependências

DependênciaObrigatórioNotas
qb-coreSimFramework
ox_libSimUI, notificações
qb-phoneNãoPara notificações por e-mail
cw-skillsNãoSistema de habilidades alternativo

Configuração

Definição de Habilidades (config.lua)

Config.Skills = {
    fishing = {
        label = 'Pescador',
        icon = 'fas fa-fish-fins',
        type = 'rep'              -- 'rep' ou 'skill'
    },
    lockpicking = {
        label = 'Lockpicking',
        icon = 'fas fa-unlock',
        maxLevel = 350,
        type = 'skill',
        messages = {
            { notify = true, level = 50, message = "Você não é mais horrível com essa lockpick" },
            { notify = true, level = 100, message = "Você começa a se sentir melhor..." },
        }
    },
    cooking = { label = 'Cozinhar', icon = 'fa-solid fa-drumstick-bite', type = 'skill' },
    crafting = { label = 'Fabricação', icon = 'gear', type = 'skill' },
}

Configuração de Níveis

-- Sistema de níveis exponencial (padrão)
Config.DefaultLevels = generateExponentialLevels(10, 1.5, 30)
Config.GenericMaxAmount = 1000000000
Config.XPBarColour = "green"

Configurações de UI

Config.UseOxMenu = true            -- true = ox_lib, false = qb-menu
Config.SkillsTitle = "Habilidades"
Config.RepTitle = "Reputação"
Config.Skillmenu = "skill"         -- comando para abrir menu de habilidades
Config.Repmenu = "rep"             -- comando para abrir menu de reputação

Comandos

ComandoDescriçãoPermissão
/skillAbrir menu de habilidadesTodos
/repAbrir menu de reputaçãoTodos
/giveskill [id] [skill] [amount]Dar/remover XP do jogadorAdmin
/fetchSkills [source]Imprimir habilidades do jogador no consoleAdmin

Eventos

Servidor

EventoParâmetrosDescrição
cw-rep:server:updatedata (JSON de habilidades)Atualizar habilidades no DB
cw-rep:server:triggerEmailcitizenid, sender, subject, messageEnviar e-mail de level-up

Cliente

EventoParâmetrosDescrição
cw-rep:client:updateSkillsskill, amountAtualizar XP local
cw-rep:client:CheckSkillsAbrir menu de habilidades

Exports

Servidor

ExportDescriçãoExemplo
updateSkill(source, skillName, amount)Atualizar habilidade do jogadorexports["cw-rep"]:updateSkill(source, 'lockpicking', 10)
fetchSkills(source)Obter todas as habilidadeslocal skills = exports["cw-rep"]:fetchSkills(source)
getCurrentSkill(skill)Obter XP atuallocal xp = exports["cw-rep"]:getCurrentSkill('fishing')
getCurrentLevel(skill)Obter nível atuallocal lvl = exports["cw-rep"]:getCurrentLevel('fishing')
getSkillInfo(skill)Obter config da habilidadelocal info = exports["cw-rep"]:getSkillInfo('lockpicking')

Cliente

ExportDescriçãoExemplo
updateSkill(skill, amount)Atualizar habilidade localexports["cw-rep"]:updateSkill('searching', 1)
checkSkill(skill, val)Verificar se habilidade >= valor (callback)exports["cw-rep"]:checkSkill('lockpicking', 100, function(has) ... end)
playerHasEnoughSkill(skill, val)Verificar se habilidade >= valor (direto)if exports["cw-rep"]:playerHasEnoughSkill('crafting', 200) then ...
getCurrentSkill(skill)Obter XP atuallocal xp = exports["cw-rep"]:getCurrentSkill('cooking')
getCurrentLevel(skill)Obter nível atuallocal lvl = exports["cw-rep"]:getCurrentLevel('hunting')
getSkillInfo(skill)Obter info da habilidadelocal label = exports["cw-rep"]:getSkillInfo('mining').label

Integração com Menu Radial

Adicione ao qb-radialmenu/config.lua:

[3] = {
    id = 'skills',
    title = 'Ver Habilidades',
    icon = 'triangle-exclamation',
    type = 'client',
    event = 'cw-rep:client:CheckSkills',
    shouldClose = true,
}

Notificações por E-mail

Habilite em config.lua:

Config.SendUpdateEmails = true
Config.EmailWaitTimes = { min = 4500, max = 7000 }

Adicione mensagens às habilidades:

foodelivery = {
    icon = 'fas fa-star',
    messages = {
        { level = 50, message = "Você está indo muito bem!", sender = "FeedStars RH", subject = "FeedStars" },
        { level = 300, message = "Você é uma verdadeira ESTRELA do Food! ⭐", sender = "FeedStars RH", subject = "FeedStars" },
    }
}

Solução de Problemas

  • Habilidades não carregam: Verifique se o SQL foi importado corretamente para o banco de dados.
  • Compatibilidade com mz-skills: Mantenha os mesmos nomes de habilidades que eram usados no mz-skills.
  • E-mails não enviam: Certifique-se de que o qb-phone está instalado e o Config.SendUpdateEmails está habilitado.