Animais
Animais de estimação que o jogador tem como item. Usar o item chama o animal, que segue o dono. Fome, sede, felicidade e vida caem com o tempo e ficam salvas por personagem. Cães podem brincar e, com policial em serviço, farejar outro jogador.
Precisa de: oxmysql, ox_lib, krs_helper
Instalação
ensure animalsColoque depois do krs_helper. A tabela é criada sozinha. Veja a ordem no server.cfg.
Sem framework o script inicia, mas o item do animal não tem como ser usado.
Itens
Cada animal é um item com o nome da chave em Config.Models. Os itens precisam existir no inventário do framework, e os de animal precisam ser usáveis. Comida, água, curativo e kit médico são os itens de Food, Drink, Heal e Revive.
| Framework | Uso do item |
|---|---|
| krs | O inventory dispara animals:Use. Animal novo precisa dessa ligação no inventário |
| QBCore | Registrado sozinho. Troque water por water_bottle e medkit por firstaid no config.lua |
| Creative, vRP | Usar o item não faz nada até ligar o item usável no inventário |
O script não tem comando de staff para dar animal. O item vem do petshop ou de outra fonte do servidor.
Pacote opcional de modelos
O config.lua procura o resource animals_modelos. Inicie o pacote antes do animals:
ensure animals_modelos
ensure animals| Sem o pacote | Com o pacote | |
|---|---|---|
| Animais | Os 14 modelos da lista de Config.Models, todos do jogo | Mais 13: chowchow, doberman, a_c_dalmatian, robot_dog, dog_bichon, dog_dalpup, dog_shepup, dog_pup, cat_amer, cat_turk, cat_sphynx, cat_coon, cat_wolf |
| Guarda-roupa | Só pelagem. As peças de clothes.lua não servem nos modelos do jogo | Mostra as peças que o modelo do animal aceita |
| Item de um animal do pacote | Aviso Este animal não está disponível. | Funciona como os outros |
Os animais do pacote entram depois da lista do config.lua. Apagar a linha no config.lua não tira esses animais.
Como usar
O jogador usa o item e o animal aparece. Só um animal fica fora por vez: guarde o atual antes de chamar outro. Se o item sair do inventário ou o personagem mudar, o animal é guardado na próxima verificação, a cada Tick.
| Comando | O que faz |
|---|---|
/pet | Abre o painel do animal. Sem animal fora, avisa |
O jogador pode definir uma tecla em Configurações > Teclas > FiveM > "Abrir menu do animal".
No painel:
| Parte | O que tem |
|---|---|
| Status | Vida, alimentação, hidratação e felicidade |
| Cuidar | Os itens que o jogador tem e quanto cada um recupera. Gasta 1 item. Com o animal desmaiado, aparece só Reanimar |
| Ações | Seguir ou ficar, sentar, deitar, carinho, brincar, farejar, veículo e guarda-roupa |
| Nome | De 2 a 24 letras, sem custo |
| Guardar | Salva e tira o animal do mundo |
Regras com os valores padrão:
- Fome cai 1, sede cai 2 e felicidade cai 1 por minuto. Abaixo de 20, o jogador recebe um aviso.
- Com fome ou sede em 0, o animal perde 4 de vida por minuto. Felicidade em 0 não tira vida.
- Com vida 0 o animal desmaia e continua desmaiado depois de guardar. Volta com o kit médico, com 50 de vida, ou pelo veterinário do petshop.
- Carinho dá 10 de felicidade, a cada 120 s.
- Brincar só existe para cães. Dá 15 de felicidade, gasta 2 de fome e 3 de sede, a cada 30 s.
- Veículo só aparece com o dono num carro, não em moto. O animal usa o banco do passageiro, se estiver livre.
- Farejar marca drogas, dinheiro e armas nos itens do jogador mais perto do cão, até 4 m, a cada 10 s.
O guarda-roupa mostra a peça no animal ao passar o mouse e veste ao clicar. A coleção de roupas é do personagem e só o petshop a preenche.
Permissão
Farejar exige cão e o grupo de Config.Sniff.Group, em serviço. O padrão é Policia.
| Framework | Em serviço |
|---|---|
| krs, Creative | Serviço do próprio framework |
| QBCore | Job com serviço ligado, com Policia em Config.Groups do krs_helper |
| vRP | Basta ter o grupo |
Configuração
Tudo fica em config.lua. Opção simples que faltar volta ao padrão. Nas listas Models, Food, Drink, Heal, Revive, Sniff.Drugs, Sniff.Money e Sniff.Weapons, o que você apagar sai de verdade. Sem Models no arquivo, nenhum animal funciona.
| Opção | Padrão | O que muda |
|---|---|---|
Funcoes | todos true | Liga Brincar, Farejar, Roupas, Veiculo e Renomear |
Food | meatfillet = 30, hotdog = 20, sandwich = 20 | Item e quanto recupera de fome |
Drink | water = 35 | Item e quanto recupera de sede |
Heal | bandage = 25 | Item e quanto recupera de vida |
Revive | medkit = 50 | Item e vida com que o animal volta |
Tick | 60 | Segundos entre cada perda |
Save | 5 | Grava no banco a cada N ticks |
Decay | Hunger = 1, Thirst = 2, Happiness = 1 | Perda por tick |
Starve | 4 | Vida perdida por tick com fome ou sede em 0 |
Warn | 20 | Avisa quando o valor chega nisso ou abaixo |
Distance | 4.0 | Distância máxima do animal para as ações, em metros |
Cuddle | Happiness = 10, Cooldown = 120 | Carinho |
Play | Happiness = 15, Hunger = 2, Thirst = 3, Cooldown = 30 | Brincar |
Sniff.Group | "Policia" | Grupo que fareja |
Sniff.Cooldown | 10 | Espera entre farejadas, em segundos |
Sniff.Drugs, Sniff.Money, Sniff.Weapons | itens do krs | Itens que o cão marca. No QBCore, troque pelos seus |
Aviso.Tempo | 5000 | Duração dos avisos, em ms |
Target | "target" | "target", "qb-target", "ox_target" ou "". Com o resource ligado, mirar no animal abre o painel |
Menu | Comando = "pet", Tecla = "" | Comando e tecla padrão do painel. Comando "" desliga |
Roda | "roda" | "roda" ou "". Com o resource roda ligado, o painel aparece nele |
Interface.Icones | "" | Ícones das peças. Vazio usa o inventário do krs. Modelo com {item}, como "nui://qb-inventory/html/images/{item}.png" |
Interface.Cores.Destaque | "#b3c0ff" | Cor de destaque |
Models | 14 animais do jogo | Animais disponíveis |
Exemplo de animal, com Ped só se o modelo tiver outro nome:
a_c_husky = { Name = "Husky", Kind = "Big" },| Campo | O que é |
|---|---|
Name | Nome usado se model.<item> não existir em locales/*.json |
Kind | Big, Small, Cat, Coyote, Hen, Cougar ou Rabbit. Brincar e farejar só valem para Big e Small |
Ped | Modelo do ped, se for diferente do item |
Coats | Máximo de pelagens no guarda-roupa |
Roupas ficam em clothes.lua, com Slot, Drawable, Texture e Name. A peça só serve no animal cujo modelo tem essa variação.
O animals não carrega peds.meta. Modelo próprio precisa vir de um resource seu, com stream/ e data_file "PED_METADATA_FILE".
Para programadores
Servidor:
exports.animals:Closet(charId) -- { [peça] = true }
exports.animals:Collect(charId, { "petwear_suit" }) -- soma peças à coleção; true/false
exports.animals:Pets(charId) -- lista de modelos do personagem
exports.animals:Nearby(coords, raio) -- CharId, Source, Name, Model, Health, Hunger, Thirst, Happiness
exports.animals:Treat(charId) -- vida 100, fome e sede no mínimo 50; true/falseEventos só de servidor, usados pelo inventário do krs: animals:Use(source, charId, modelo) e animals:Delete(source, charId).
Cliente:
exports.animals:IsMine(ped)
exports.animals:Kind()
exports.animals:Options()
exports.animals:Emote(dict, clip, loop, props)
exports.animals:StopEmote()
exports.animals:Current() -- { Model, Look } ou false
exports.animals:Fits(ped) -- peças, pelagens
exports.animals:Dress(ped, look, item, pelagem)O evento local animals:Menu abre o painel. client-side/ganchos.lua tem os adaptadores de target, de roda e da HUD.
Problemas comuns
| Mensagem | Causa |
|---|---|
Este animal não está disponível. | O item não está em Config.Models |
Não foi possível chamar o animal: o modelo X não existe no jogo. | O modelo não está no servidor |
Guarde o animal atual antes de chamar outro. | Já existe um animal fora |
