Missões
Missões pela cidade, exploração do mapa, sequência de dias, loja da semana e marcos. O jogador usa tudo pelo app Missões do tablet. Outros scripts podem registrar as próprias missões.
Precisa de: krs, phone
Só funciona no framework krs. Sem o phone, o app não abre: /missoes só mostra o aviso "Abra o app Missões pelo tablet."
Instalação
ensure kay_missoesColoque depois do krs e do phone. As tabelas são criadas sozinhas. Veja a ordem completa.
Como usar
/missoes abre o app.
| Parte | O que faz |
|---|---|
| Missões | Até Missao.Ofertas ofertas por vez, dos tipos visita, entrega e ronda. O destino fica marcado no mapa. No ponto, o jogador aperta E |
| Exploração | O mapa é dividido em células. Andar descobre células, pontos de interesse e regiões |
| Sequência | Conta um dia a cada dia com missão concluída. Ao chegar em Streak.Maximo, dá pontos e o marco de sequência, e a contagem recomeça |
| Baú | Um por dia, sorteado, depois de Missao.Cheias missões concluídas no dia |
| Loja | Ofertas da semana por raridade, pagas em dinheiro ou diamantes: skins, carros, peças, toques e animações |
| Marcos | Prêmios únicos por metas, como concluir 50 missões ou descobrir 50% do mapa |
Tudo isso dá pontos no passe de batalha do krs, com os limites de Teto. Pontos de marco não entram no limite.
Permissão
Quem tem o grupo Admin vê o painel de admin no app. Nele é possível ligar e desligar missões, mudar peso e recompensa, forçar uma missão, reiniciar o próprio mapa e ver a posição atual.
Configuração
Tudo fica em shared-side/config.lua. Regiões e pontos de interesse ficam em shared-side/regioes.lua, e a loja fixa em shared-side/loja.lua. Os textos são só em português, sem suporte a ox:locale. O idioma não muda com ox:locale.
| Opção | Padrão | O que muda |
|---|---|---|
Comando | "missoes" | Nome do comando |
Grade | 200.0 | Tamanho de cada célula do mapa, em metros |
Largura, Altura | 48, 64 | Número de células |
Origem | -4400.0, -4000.0 | Canto da grade |
RegiaoCompleta | 0.8 | Parte da região para contar como descoberta |
Intervalo | 3000 | Tempo entre leituras de posição, em ms |
DistanciaMaxima | 320.0 | Maior distância aceita entre duas leituras, em metros |
PodeConceder | pause = true | Resources que podem chamar Grant |
Raridades | comum, raro, epico, lendario | Raridades da loja |
Dificuldades | Fácil, Média, Difícil | Nomes das dificuldades |
Pontos (Passe e Teto):
| Opção | Padrão | O que muda |
|---|---|---|
Passe.Celula | 1 | Pontos por célula |
Passe.Achado | 30 | Pontos por ponto de interesse |
Passe.Regiao | 120 | Pontos por região |
Passe.Mapa | 500 | Pontos por completar o mapa |
Passe.Streak | 40 | Pontos por sequência |
Passe.Necessario | 500 | Pontos mostrados como meta do passe |
Teto.Dia | 300 | Limite diário de pontos |
Teto.Explorar | 150 | Limite diário de pontos por exploração |
Missões (Missao):
| Opção | Padrão | O que muda |
|---|---|---|
Ofertas | 3 | Ofertas por vez |
Minimo | 10 | Segundos mínimos antes de poder concluir |
Raio | 4.0 | Raio do ponto, em metros |
Duracao | 3600 | Duração padrão, em segundos |
Cheias, Metade | 3, 8 | Até a 3ª missão do dia o prêmio é cheio, até a 8ª é a metade. Depois, sem prêmio |
Recompensas | ver abaixo | Prêmio por dificuldade |
Distancias | 1800.0, 4200.0 | Distâncias que separam as dificuldades, em metros |
Maximo | 6000, 100, 60 | Maior dinheiro, pontos e XP aceitos numa missão registrada |
| Dificuldade | Dinheiro | Pontos | XP |
|---|---|---|---|
| 1 | 600 | 15 | 5 |
| 2 | 1400 | 30 | 10 |
| 3 | 2800 | 55 | 20 |
Sequência e loja:
| Opção | Padrão | O que muda |
|---|---|---|
Streak.Maximo | 7 | Dias para fechar a sequência |
Streak.Perde | 2 | Dias perdidos por dia sem jogar |
Streak.Bau | 5 prêmios | Chance e prêmio do baú diário |
Loja.Slots | 3, 3, 2, 1 | Ofertas por raridade |
Marcos, no mesmo arquivo, define nome, descrição e prêmio de cada marco.
Para programadores
-- servidor
exports.kay_missoes:RegisterMission({
Id = "minha_missao",
Tipo = "evento",
Titulo = "Minha missão",
Descricao = "Fale com o vendedor.",
Dificuldade = 1,
Duracao = 3600,
Privada = true,
Recompensa = { Dinheiro = 1000, Pontos = 10, XP = 10 },
Tarefas = { { Id = "falar", Descricao = "Fale com o vendedor", Total = 1 } }
})
exports.kay_missoes:Start(charId, "minha_missao") -- só o resource que registrou
exports.kay_missoes:Progress(charId, "minha_missao", "falar", 1)
exports.kay_missoes:Cancel(charId, "minha_missao")
exports.kay_missoes:Active(charId) -- id da missão ativa, ou false
exports.kay_missoes:Owns(charId, tipo, ref)
exports.kay_missoes:Grant(charId, tipo, ref) -- só resources de Config.PodeConceder| Campo | Regra |
|---|---|
Tipo | evento, ponto, entrega ou ronda |
Dificuldade | 1, 2 ou 3 |
Duracao | De 300 a 14400 segundos |
Tarefas | De 1 a 8, só em evento |
Pontos | Em ponto e ronda, até 40 pontos com X, Y e Z |
Origens, Destinos | Em entrega, até 20 pontos com X, Y e Z |
Ao iniciar, o script dispara o evento local de servidor kay_missoes:Pronto. Registre as missões nesse evento e também no início do seu script.
As missões saem da lista quando o resource que registrou para.
Problemas comuns
[kay_missoes] missão recusada de <resource>: <motivo>: a definição da missão está fora das regras. O motivo diz o campo, como Dificuldade deve ser 1, 2 ou 3.
[kay_missoes] missão <id> já pertence a <resource>: outro resource já registrou esse Id.
