cw-rep

  • Um sistema de habilidade/XP para qb (otimizado a partir de mz-skills)
  • Compatibilidade total com versões anteriores de exports do mz-skills (não há necessidade de atualizar todos os seus scripts usando mz skills)
  • Suporta menu QB e menu OX

Todo o crédito a MrZainRP por mz-skills (opens in a new tab) no qual isso é baseado. Ótimo script.

Algo que cw-rep NÃO tem: habilidades de personagem padrão do GTA

O menu QB é suportado... mas provavelmente não receberá muitas atualizações ou correções a menos que sejam críticas, e pode ter funcionalidade limitada em comparação com OX

Instalação

  • Baixe o recurso e coloque-o na pasta de recursos. Certifique-se de que a pasta se chama cw-rep
  • Se você estiver instalando do zero: Importe o arquivo SQL para o banco de dados do seu servidor (ou seja, execute o arquivo sql e certifique-se de que o banco de dados está funcionando)
  • Se você estiver mudando de mz-skills:
    • Certifique-se de atualizar as habilidades cw-rep na Configuração para corresponder a mz-skills se você quiser manter os nomes que você tem
    • Remova a pasta mz-skills
  • Adicione start cw-rep ao seu server.cfg (ou simplesmente certifique-se de que cw-rep está na sua pasta [qb])

CW-rep tem um novo formato de banco de dados (otimizado) em comparação com mz-skills, mas esta conversão é feita enquanto o script está sendo usado. Isso pode fazer com que alguns personagens antigos não utilizados ainda tenham o formato antigo até serem usados

Configuração

Você provavelmente vai querer fazer alguma configuração para este script, então certifique-se de se familiarizar com a configuração. Existem algumas pequenas diferenças entre este e mz, mas o script deve ser capaz de reescrever seus dados do banco de dados mz-skills para cw-rep em tempo real, desde que os nomes em Config.Skills correspondam.

Você pode definir habilidades assim:

    lockpicking = { -- se você quiser usar nomes com espaços, você precisará digitá-lo como "['Habilidade de Arrombamento'] = {" por exemplo
        icon = 'fas fa-unlock', -- ícone que aparece no menu
        label = 'Arrombamento' -- Rótulo que é exibido no menu (o padrão é o nome da habilidade, assim como mz skills se isso não estiver definido)
    },

Encontre os nomes dos ícones aqui (opens in a new tab)

Nota: cw-rep não vem com as mesmas habilidades/rep padrão que mz-skills, então você precisará atualizar a configuração

Se você quiser uma habilidade que também envie notificações ao jogador em certos níveis, você pode defini-las assim:

    lockpicking = { -- se você quiser usar nomes com espaços, você precisará digitá-lo como "['Habilidade de Arrombamento'] = {" por exemplo
        icon = 'fas fa-unlock', -- ícone que aparece no menu
        label = 'Arrombamento' -- Rótulo que é exibido no menu (o padrão é o nome da habilidade, assim como mz skills se isso não estiver definido)
        messages = {
            { notify = true, level = 50, message = "Você não é mais horrível com essa gazua" },
            { notify = true, level = 100, message = "Você começa a se sentir melhor com essa gazua na sua mão" },
            { notify = true, level = 200, message = "Você está ficando bom com uma gazua" },
            { notify = true, level = 300, message = "Você sente que está arrasando no arrombamento agora" },
            { notify = true, level = 350, message = "Nenhum tambor ficará intocado. Você é como o Advogado do Arrombamento!" },
        }
    },

O importante aqui é o notify = true porque sem isso você estará enviando e-mails! Notificações por e-mail são ótimas para reputação de trabalho ou reputação de área, por exemplo. Aqui está como definir uma com e-mails:

    foodelivery = {
        icon = 'fas fa-star',
        label = 'Reputação do trabalho de entrega de comida',
        messages = {
            { level = 50, message = "Você está fazendo um ótimo trabalho", sender = "RH da FeedStars", subject = "FeedStars" },
            { level = 100, message = "Nós só queríamos dizer que amamos você! ❤", sender = "RH da FeedStars", subject = "FeedStars" },
            { level = 220, message = "Continue entregando! ❤", sender = "RH da FeedStars", subject = "FeedStars" },
            { level = 300, message = "Você é uma verdadeira ESTRELA da Comida! ⭐", sender = "RH da FeedStars", subject = "FeedStars" },
            { level = 500, message = "Você sequer tem uma vida?? Funcionário do ano!", sender = "RH da FeedStars", subject = "FeedStars" },
        }
    },

Níveis de Habilidade

Os níveis de habilidade padrão são definidos em Config.DefaultLevels e você pode personalizá-los ao seu gosto, mas você também pode criar níveis personalizados para cada habilidade individual, por exemplo, a reputação de rua:

    streetreputation = {
        icon = 'fas fa-mask',
        skillLevels = {
            { title = "Desconhecido", from = 00, to = 1000 },
            { title = "Novato", from = 1000, to = 2000 },
            { title = "Malandro", from = 2000, to = 3000 },
            { title = "Criminoso", from = 3000, to = 4000 },
            { title = "Executor Urbano", from = 5000, to = 6000 },
            { title = "Renegado", from = 6000, to = 7000 },
            { title = "Subchefe", from = 8000, to = 9000 },
            { title = "Chefe", from = 9000, to = 10000 },
        }
    },

título é opcional

Como você pode ver, você também deve incluir um remetente e um assunto aqui.

Você também pode encontrar esses exemplos na Configuração.

Usando cw-rep

Clientside

Para atualizar uma habilidade, use o seguinte export:

    exports["cw-rep"]:updateSkill(skillName, amount)

Por exemplo, para atualizar "Searching" de bin-diving (como usado com mz-bins)

    exports["cw-rep"]:updateSkill("Searching", 1)

Você pode randomizar a quantidade de habilidade ganha, por exemplo:

   local searchgain = math.random(1, 3)
   exports["cw-rep"]:updateSkill("Searching", searchgain)

O export para verificar se uma habilidade é igual ou maior que um valor específico é o seguinte:

    exports["cw-rep"]:checkSkill(skill, val)

Você pode usar isso para bloquear conteúdo atrás de um nível específico, por exemplo:

exports["cw-rep"]:checkSkill("Searching", 100, function(hasskill)
    if hasskill then
        TriggerEvent('mz-bins:client:Reward')
    else
        QBCore.Functions.Notify('You need at least 100XP in Searching to do this.', "error", 3500)
    end
end)

Ou como uma alternativa isso:

    local hasSkill = exports["cw-rep"]:playerHasEnoughSkill("Searching", 100)
    if hasSkill then
        -- do thing
    end

Os dois acima funcionam mais ou menos da mesma forma, apenas maneiras diferentes de obter o mesmo resultado

O export para obter a habilidade atual de um jogador para interagir com outros scripts é o seguinte:

    exports["cw-rep"]:getCurrentSkill(skill)

Este difere de mz-skills em que retorna diretamente o valor. Em Mz-skills você teria que fazer .Current para obter o valor. Se você usar GetCurrentSkill (G maiúsculo) ele retorna da mesma forma que mz-skills costumava fazer

Para obter o nível, em vez da quantidade de habilidade/xp:

    exports["cw-rep"]:getCurrentLevel(skill)

Exemplo:

    local xp = exports["cw-rep"]:getCurrentSkill('crafting')
    local level = exports["cw-rep"]:getCurrentLevel('crafting')
    print('You are level ', level, ' in crafting. Your XP is', xp)

Se você quiser informações de uma habilidade (o que está definido na configuração: rótulo, por exemplo)

    exports["cw-rep"]:getSkillInfo(skill)

Exemplo de uso:

    local skillInfo = exports["cw-rep"]:getSkillInfo('gun_crafting')
    print('Label of gun_crafting is', skillInfo.label)
    print('Icon of gun_crafting is', skillInfo.icon)

Serverside

Para atualizar uma habilidade, use o seguinte export:

    exports["cw-rep"]:updateSkill(source, skillName, amount)

source deve ser obviamente a fonte do jogador

Um exemplo de como usar isso seria:

    exports["cw-rep"]:updateSkill(source, 'lockpicking', 10)

O export para verificar para obter as habilidades do jogador:

    exports["cw-rep"]:fetchSkills(source)

Um exemplo de como usar isso seria:

    local playerSkills = exports["cw-rep"]:fetchSkills(source)
    print('Jogador com fonte',source, ' habilidades de lockpicking:',playerSkills.lockpicking)

source deve ser obviamente a fonte do jogador

Menu Radial

Para acesso ao menu radial ao comando "skills", adicione isso a qb-radialmenu/config.lua em algum lugar que pareça adequado:

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

Preview

Ox

Links úteis

⭐ Confira nossa Tebex store (opens in a new tab) para alguns scripts baratos ⭐

Mais scripts gratuitos (opens in a new tab) 👈

Suporte, atualizações e previews de scripts: Entre no discord! (opens in a new tab)

Se você quiser apoiar o que fazemos, pode nos comprar um café aqui:

Nos compre um café (opens in a new tab)