Casamento v5.0.0 · vRP / EvolutionInc
Evolution · relacionamento completo para FiveM

Do primeiro sim
ao para sempre.

Namoro, pedido de joelhos, noivado, cerimônia conduzida por um jogador e uma jornada de 20 níveis que acompanha o casal a vida inteira. Um resource só, com o servidor decidindo cada regra.

vRP / EvolutionInc Servidor autoritativo NUI sem CDN Lua 5.4
Não é vídeo: é a interface do resource rodando nesta página, no papel de quem está casando. O fundo é a igreja no jogo, e troca de enquadramento como as câmeras da cerimônia; o roteiro, as falas e os botões são os do resource.
  • 20níveis de jornada, cada um com título e recompensa
  • 7lugares da cidade que valem como encontro
  • 8itens na floricultura, todos com uso em jogo
  • 10etapas no roteiro da cerimônia
  • 4câmeras ancoradas no altar
  • 48assentos para convidados no cenário
O caminho inteiro

Seis passos, e nenhum deles prende o casal.

Cada estágio tem saída própria. Recusa, prazo vencido e cerimônia desmarcada devolvem o casal ao passo anterior — nunca a um estado travado que só o admin resolve.

  1. Namoro

    O primeiro sim. A jornada do casal começa a contar aqui.

    Termina pelo painel do casal, em dois cliques.
  2. Pedido

    De joelhos, com a caixinha erguida. Quem recebe responde com uma tecla.

    Recusa impõe espera para pedir de novo. Silêncio, não.
  3. Noivado

    A cidade é avisada. O casal tem 30 dias para marcar o dia.

    Vencido ou desfeito: voltam a namorar, jornada intacta.
  4. Paróquia

    Data, padrinhos e pacote, com o Padre. Um dos dois marca e paga.

    Desmarcou antes do dia: 70% de volta.
  5. Cerimônia

    Votos, alianças e beijo, conduzidos por um padre jogador ou pelo NPC.

    Se a falha for da casa, o estorno é integral.
  6. Casados

    Estado civil gravado, aliança no dedo e a faixa de recém-casados na tela da cidade.

    Só termina no divórcio, com custo e tempo de reflexão.

A jornada do casal corre o tempo todo. Experiência, diário e curtidas ficam numa linha só por casal: não recomeçam quando o namoro vira noivado, nem quando vira casamento.

I Namoro e pedido

Um pedido que espera a resposta.

O que aparece na tela ao longo da história de um casal: o pedido, o selo no canto, a faixa de nível novo, o presente na mão. Tudo sem tomar o foco do jogo.
  • 60 e 90 segundos, não 15

    O pedido tem painel próprio, com prazo folgado e resposta explícita em E ou BACKSPACE. A caixa padrão do vRP fecha em 15 segundos e devolve o silêncio como recusa — quem foi buscar água teria dito não.

  • Recusa e silêncio são coisas diferentes

    Só o "não" deliberado impõe a espera de 45 segundos para pedir de novo. Pedido sem resposta simplesmente expira.

  • A caixinha existe para todo mundo

    Quem pede ajoelha na pose própria do resource, com a caixinha erguida. Ela é um objeto de rede criado pelo servidor: quem recebe o pedido — e quem está passando na rua — vê o anel.

  • Duas joias, dois destinos

    O anel de noivado passa para quem disse sim. A aliança fica com quem pediu, guardada para a cerimônia.

  • Um par por vez

    Quem namora não recebe pedido de mais ninguém, nem de namoro nem de casamento. Quem decide é o banco, não uma checagem no cliente.

  • Nada é cobrado no pedido

    Ele cai sozinho se os dois se afastarem, se alguém sair da cidade ou se quem pediu desistir. Sem valor queimado em pedido que não deu certo.

II A paróquia

O Padre só oferece o que faz sentido agora.

Clique à vontade: marque uma cerimônia, monte o pacote e veja o total mudar. Troque o estado acima e o menu se remonta — botão que não faz sentido naquele momento não é desenhado.
  • Menu contextual

    Noivo vê marcar a cerimônia. Com data marcada, vê desmarcar. Na hora, vê iniciar agora. Casado vê divórcio. Membro do clero vê assumir o altar.

  • O consentimento já foi dado

    Marcar não pede confirmação do parceiro: o "sim" do pedido é o consentimento. Um dos dois escolhe data, padrinhos e pacote, e paga.

  • O servidor refaz a conta

    Data entre 1 hora e 14 dias, padrinhos que existem e não são os noivos, saldo no banco. O total que a tela manda é descartado e recalculado pelo config.

O pacote do grande dia

Estornos

O que aconteceuVolta

A regra: culpa do casal devolve pouco, culpa da casa devolve tudo. Cada desfecho fica gravado no banco com status próprio — são 13, de completed a cancelled_nocelebrant.

III A cerimônia

Um jogador no altar, e a igreja inteira assistindo.

O padre da sua cidade conduz de verdade: diz cada fala, decide o ritmo, improvisa. Se ninguém do clero aparecer, o Padre Mendoza celebra sozinho. Em qualquer dos casos, o estado da cerimônia mora no servidor — o cliente só desenha.

A mesma cerimônia, vista por três pessoas. No papel de celebrante, repare na terceira etapa: ele troca a leitura por uma fala própria, que sai em itálico para a igreja.

Quem conduz

ModoQuemRitmo
ManualJogador do grupo da igreja, no altarCada etapa espera ele
AutomáticoPadre Mendoza (NPC)Corre pelo tempo de cada etapa

O painel do celebrante

ENTERDiz a fala do roteiro, que vai para a legenda de todos na igreja
EAvança a etapa
LImprovisa: digita a própria fala, até 180 caracteres
BACKInterrompe a cerimônia
  • O casamento não se perde porque o padre caiu

    Sem padre jogador, o sistema espera 45 segundos antes de o NPC assumir — a janela para o padre da cidade chegar. Se o celebrante desconectar ou sair do altar no meio, o NPC continua de onde ele parou.

  • O celebrante não decide o voto

    Etapa com resposta do casal só passa depois que o casal responde. E quem conduz recebe $15.000 por cerimônia concluída.

O roteiro, etapa por etapa

    O ritual é uma tabela no config: editar essa lista é a única coisa necessária para mudar a cerimônia.

    Três papéis na mesma igreja

    PapelCâmeraPainelO que faz
    NoivosCinematográfica, por etapaObjetivo pessoal e teclaRespondem aos votos, trocam as alianças, selam com o beijo
    CelebranteLivreCondução, deixas e elencoFala, avança, improvisa, interrompe
    ConvidadosLivreReduzidoG aplaudem · H jogam pétalas
    • O que o casal pagou vira cenário

      Decoração, músicos, fotógrafo, pajem e convidados nos bancos. Nada é sincronizado em rede: cada cliente monta a sua cópia ao entrar na igreja, então um casamento lotado não custa nada para quem está do outro lado do mapa.

    • A plateia participa

      Os aplausos são contados e aparecem para todo mundo — um por pessoa por etapa. É o que faz a igreja parecer cheia de gente, e não de estátuas.

    • Depois do beijo

      Estado civil gravado, aliança presa ao dedo dos dois, faixa de recém-casados na cidade e a pergunta do sobrenome em painel próprio. O nome antigo fica guardado e volta no divórcio.

    IV A vida a dois

    Uma jornada que só sobe, e que ninguém compra.

    O painel do casal abre com /casal ou mirando o próprio par. Nele estão os 20 níveis, o diário escrito a quatro mãos e os encontros da cidade. Nenhum botão dá experiência: o cliente diz o que fez, e o servidor decide quanto isso vale agora.

    Navegue pelas abas, resgate uma recompensa, escreva uma página no diário. Troque o estágio acima: a cor do painel inteiro acompanha o casal.

    O que rende experiência

    AçãoXPIntervalo
    • Teto de 420 por dia

      Cada ação tem intervalo próprio e o dia tem limite. Não adianta repetir abraço: a jornada pede variedade e tempo junto.

    • Marcos valem uma vez por casal

      Namoro (60), noivado (250) e casamento (600) ficam fora do teto. Noivar, desfazer e noivar de novo não rende o marco outra vez.

    • Diário com dois autores

      Os marcos entram sozinhos. As páginas, o casal escreve — e cada um só apaga a própria.

    • Afeto é outra coisa

      Com o evolution_sensacoes instalado, o painel e o selo mostram também o afeto, que sobe e desce. A jornada é a história acumulada; um não substitui o outro, e nenhum depende do outro.

    Os 20 níveis

    Cada um dos dois resgata a sua recompensa. Títulos, valores e itens são uma tabela no config.

    Encontros

    V Gestos, presentes e cartas

    O romance que acontece fora do menu.

    Um buquê que vai na mão até a entrega. Uma carta que se sela e não muda mais. Uma pulseira que deixa os dois se acharem no mapa. São 8 itens, todos com uso de verdade em jogo.

    A floricultura Jardim Secreto. Monte um carrinho: o pagamento é um só, e o que não couber na mochila volta para o banco.
    • Presente que não duplica

      Segurar não consome o item: ele só muda de mochila na entrega, numa operação só, no servidor. Não existe o estado "saiu do inventário e está só na mão", que é onde presente se perde quando alguém cai.

    • O carrinho só diz qual e quantos

      Item, preço e limite são relidos do config no servidor na hora de pagar. Dinheiro primeiro; faltando, sai do banco.

    • A loja não depende do vendedor

      O vendedor nasce no servidor, mas se o ped sumir o E no balcão e o /floricultura continuam abrindo o catálogo.

    Escreva, assine e sele. A carta selada vira um item único, que guarda o texto e pode ser relida ou entregue a quem estiver perto.
    O cartão do casal: qualquer um que mire em quem tem par vê os nomes, o tempo juntos, o nível e as curtidas. Uma por pessoa — e ninguém curte o próprio casal.
    • Abraço e beijo sincronizados

      Um pede pelo target, os dois se viram um para o outro e animam juntos. Dentro de veículo, caído ou algemado, o gesto não acontece: ninguém é arrancado do que está fazendo.

    • Pulseira com consentimento

      Usada perto do par, pede a ele — só depois do sim o item sai da mochila. O servidor nunca manda a posição de quem não aceitou, nem entre mundos diferentes (casa, apartamento).

    • Pensando em você

      Um carinho que chega ao par onde ele estiver na cidade, direto do painel do casal. Vale na jornada, a cada 15 minutos.

    O ícone sobre a cabeça. Um coração no namoro, uma aliança no noivado e no casamento, flutuando sobre a cabeça do seu par — e só você vê. Cada um escolhe a cor do ícone que aparece sobre a própria cabeça. São os sprites do jogo; clique numa cor.

    VI O selo

    Uma peça só no canto da tela. E solteiro não desenha nada.

    O estado civil cabe num sigilo, na única faixa livre da borda esquerda. O anel em volta é um medidor, e o que ele mede muda com o estado. A lâmina com o nome do par abre quando algo muda e fecha sozinha em 8 segundos.

    O selo some junto com a HUD no inventário, no banco e no screenshot, e respira devagar quando o cônjuge está por perto.

    Para quem administra

    Feito para não virar chamado no suporte.

    Dinheiro, experiência e estado civil são decididos no servidor. O que o cliente manda é intenção — nunca valor.

    • Preço refeito no servidor

      O total da cerimônia e o do carrinho da floricultura são recalculados pelo config. Opção inválida é rejeitada, não vira preço zero.

    • Experiência sem botão

      Intervalo por ação, teto por dia e marcos de uma vez só. Encontro é medido pela posição dos dois peds — sair do raio zera a contagem.

    • Entidades do servidor

      A caixinha do anel, o presente na mão e o vendedor nascem no servidor, com um vigia que recria o que sumir.

    • Uma cerimônia por vez, com trava

      Dois casais clicando no mesmo quadro não se sobrepõem: a trava fecha antes da primeira consulta ao banco.

    • Quem decide é o banco

      Um vínculo por pessoa e uma recompensa por nível saem de uma única instrução SQL, não de uma checagem em Lua que cede a thread no meio.

    • Consulta de ID com limite

      O campo de padrinho aceita 20 consultas por minuto por jogador. Sem isso, seria uma varredura livre dos nomes da cidade.

    • Texto de jogador nunca vira HTML

      Nome, página de diário, carta e assinatura entram na tela como texto puro. Nenhum deles passa por innerHTML.

    • NUI escrita para o CEF do FiveM

      Sem color-mix, sem drop-shadow, sem backdrop-filter — as três causas de painel preto ou transparente. Fontes locais, nenhum CDN.

    • Limpeza periódica

      Noivado vencido e cerimônia a que ninguém compareceu são encerrados sozinhos, com o estorno da regra. Ninguém fica travado para sempre.

    Uma igreja em quatro coordenadas

    Só altarPoint, priestPoint, processionStart e churchCenter são coordenadas de mundo. Marcas, assentos, decoração, músicos, fotógrafo e as quatro câmeras são deslocamentos ancorados no altar: mover o altar move a igreja inteira junto, inclusive o enquadramento.

    A nave da igreja vista dos bancos: três vitrais, o púlpito sobre um patamar de quatro degraus e o corredor central. priestPoint altarPoint
    A igreja das demonstrações desta página, com dois dos quatro pontos marcados em posição aproximada e o eixo entre eles. A entrada da nave e o centro da igreja ficam fora do quadro.
    config.lua · um assento, em qualquer igreja
    -- frente (+) em direção ao padre · lado (+) à direita de quem olha o altar
    Config.Locations.Marks = {
        proposer  = Config.Place( 0.70, -0.70),   -- quem agendou
        target    = Config.Place( 0.70,  0.70),   -- o par
        witness1  = Config.Place(-0.60, -1.05),
        witness2  = Config.Place(-0.60,  1.05),
        ringBuddy = Config.Place( 1.65,  0.00)    -- pajem
    }

    Com Config.Debug ligado, /casamentodebug desenha cada ponto com nome e coordenada dentro da igreja, mais a linha do eixo altar → padre.

    config.lua · uma etapa do roteiro (trecho)
    {
        id = "voto_a", kind = "vow", who = "proposer",
        duration = 45, cam = "vow", manual = true,
        objective = "Faça os seus votos",
        line   = "{WHO}, você aceita {OTHER} como seu legítimo esposo(a)...",
        prompt = "[E] Aceito   ·   [BACKSPACE] Não aceito",
        cue    = "Pergunte a {WHO}. A etapa só passa quando ele(a) responder."
    }
    config_bond.lua · quanto vale cada gesto (trecho)
    Config.Journey = {
        maxLevel = 20,
        dailyCap = 420,
        -- { xp, intervalo em segundos }
        gains = {
            hug    = { 12, 90 },
            kiss   = { 15, 90 },
            gift   = { 35, 1800 },   -- presente entregue em mãos
            letter = { 45, 3600 }    -- carta entregue por quem escreveu
        },
        milestones = { dating = 60, engaged = 250, married = 600 }
    }

    Integração com outros resources

    -- Estado civil de qualquer passaporte. nil se não estiver casado.
    local Marital = exports["casamento"]:GetMarital(Passport)
    -- { status, partnerId, partnerName, since }
    
    -- O casal: namoro, noivado ou casamento. nil sem par.
    local Bond = exports["casamento"]:GetBond(Passport)
    -- { id, stage, partnerId, level, xp, since }
    
    -- A cerimônia marcada (ou em andamento) de um passaporte.
    local Wedding = exports["casamento"]:GetWedding(Passport)
    
    -- Sua boate, seu restaurante ou seu evento premiando o casal.
    -- Passa pelo mesmo teto diário e devolve o XP que entrou.
    local Gained = exports["casamento"]:AddBondXp(Passport, 30)
    
    AddEventHandler("casamento:BondChanged", function(Passport, Stage, Partner) end)
    AddEventHandler("casamento:Divorced", function(Passport, When) end)

    No cliente, Player(serverId).state.Casal traz o estágio de quem tem par.

    Comandos

    /casalAbre o painel do casal
    /namorar · /pedirOs pedidos, para quem não usa o target
    /entregarEntrega o que está na mão a quem está perto
    /pulseiraTira a pulseira do casal
    /floriculturaAbre a loja, no balcão
    /convidar [ID]Envia um convite da cota contratada
    /casamentoadmin iniciar [id]Começa uma cerimônia marcada sem esperar o horário
    /casamentoadmin cancelar [id]Cancela com estorno total
    /casamentoadmin encerrarDerruba a cerimônia em andamento
    /casamentoadmin divorciar [passaporte]Desfaz um casamento

    Dependências

    ResourcePrecisa?Para quê
    vrpSimPassaporte, banco, itens, identidade
    chatSimNotificações e anúncios
    inventorySimUso dos itens do relacionamento
    targetNãoOpções em jogador, padre e vendedor. Sem ele, comandos e E
    animsNãoAbraço e beijo passam por ele; sem ele, tocam direto
    xsoundNãoMarcha nupcial e música ambiente
    evolution_sensacoesNãoPreenche o afeto no selo e no painel

    Instalação

    1. Rode o sql/install.sql. As tabelas do relacionamento, o resource cria sozinho ao subir.
    2. Cadastre os sete itens no Item.lua do vRP e o bloco de uso no inventory, como o README descreve.
    3. Aponte os quatro pontos da sua igreja e a posição da floricultura.
    4. Reinicie o servidor: a pose do pedido e os props do anel, do buquê e do balão vêm por stream.

    O que vem no pacote

    • client/ — 8 arquivos: padre, selo, pedido, presentes, cenário, celebrante, cerimônia e a camada do casal
    • server/ — 7 arquivos: estado civil, vínculo, pedido, jornada, presentes, celebrante e a máquina de estados da cerimônia
    • config.lua · config_bond.lua — a igreja, o roteiro, o pacote, a jornada, os encontros e a loja
    • html/ — a NUI em JavaScript puro, sem build, com as fontes locais
    • stream/ — a pose do pedido e os props do anel, do buquê e do balão
    • sql/install.sql — o esquema completo, com a migração de quem vem de versão anterior
    • README.md — instalação, fluxo, tabelas de estorno e os status do banco

    A sua cidade já tem os casais.
    Falta a igreja.

    Namoro, noivado, cerimônia e a vida a dois, num resource só — pronto para vRP / EvolutionInc.