BMX e patinetes (bdx-radical)
BMX e patinetes com manobras, vendidos por um app no tablet e retirados na garagem. O script traz a lógica, a loja e os sons. Os veículos, props e animações vêm de um pacote separado.
Precisa de: krs, target, garages
A compra chama o resource bank. A loja é um app do phone, que só é registrado com o phone iniciado. Sem ele não há como comprar.
Instalação
ensure bdx_assets
ensure bdx-radicalColoque depois do krs, do target e do garages. Veja a ordem completa.
As fotos da loja usam a convar krs_imagens. O pacote monta o endereço como <krs_imagens>/bdx-radical/bmx_1.png e <krs_imagens>/bdx-radical/patinete_1.png.
setr krs_imagens "https://seu-endereco/imagens"Com e sem o pacote
O script procura o arquivo config/bdx-radical.lua no resource bdx_assets ao iniciar. Esse arquivo preenche Config.Vehicles.
Com bdx_assets | Sem bdx_assets | |
|---|---|---|
| Veículos na loja | bmx_1 a bmx_10 e patinete_1 a patinete_10 | Nenhum. O app mostra "Nada à venda por aqui no momento." |
| Manobras | Funcionam | Não há veículo para usar |
| Subir no patinete | Opção no target | Nenhum modelo registrado |
| O script inicia | Sim | Sim |
Cada modelo também precisa estar no cadastro de veículos do krs. Nome e preço vêm de lá, e o modelo que não está no cadastro não aparece na loja.
A aba Skate da loja só lista produtos quando um resource externo de skate compatível está iniciado. O script não traz skates.
Como comprar
- Abra o app Radical Shop no tablet.
- Escolha a aba BMX ou Patinetes.
- Confirme a compra.
- Retire o veículo na garagem.
A compra é recusada se o jogador já tem o modelo, tem impostos ou multas em aberto no banco, ou não tem dinheiro. O primeiro IPVA vence em 7 dias.
Patinete
Chegue a até 2 m e use a opção Subir no patinete do target, ou aperte o controle 23 ou o de Mount.
| Tecla | O que faz |
|---|---|
| W A S D | Andar |
| Espaço | Pular |
| Shift | Impulso |
| H | Descer |
O jogador desce sozinho se ficar a LoseDistance do patinete. Patinete trancado ou com alguém em cima não aceita subir.
Manobras
As manobras saem no ar, acima de MinimumSpeed. A altura mínima é 1,0 m na BMX e 0,9 m no patinete. As teclas ficam em config.lua como IDs de controle do jogo.
| BMX | Controle | Patinete | Controle |
|---|---|---|---|
BarSpin | 24 | BarSpin | 24 |
BikeFlip | 113 | Forward | 252 |
BriFlip | 51 | BriFlip | 51 |
HDFlip | 80 | Knock | 80 |
Invert | 52 | Inward | 52 |
Superman | 131 | Superman | 23 |
Tailwhip | 79 | Tailwhip | 79 |
TuckNoHander | 76 | NoHander | 20 |
TurnDown | 252 |
Na BMX, Wheelie (controle 36) empina a roda acima de 3,5 km/h.
Configuração
Tudo fica em config.lua.
App
| Opção | Padrão | O que muda |
|---|---|---|
App.Identifier | "bdx_radical" | Identificador do app |
App.Name | "Radical Shop" | Nome do app e da loja nos registros |
App.Description | texto da loja | Descrição do app |
App.Developer | "Radical Shop" | Desenvolvedor mostrado no app |
App.DefaultApp | false | Marca o app como padrão do tablet |
App.Permission | false | Regra de permissão repassada ao phone. false não define nenhuma |
Veículos
Vehicles começa vazio e é preenchido pelo pacote. Cada entrada usa a chave do modelo:
Config.Vehicles["bmx_1"] = { Type = "bmx", Prop = "m_bmx_1", Image = "https://seu-endereco/bmx_1.png", Order = 1 }| Campo | O que é |
|---|---|
Type | "bmx" ou "scooter" |
Prop | Modelo usado nas manobras |
Image | Foto na loja |
Order | Ordem na loja |
| Opção | Padrão | O que muda |
|---|---|---|
Debug | false | Sem uso no código atual |
PropOffset.bmx | posição e rotação zeradas | Encaixe do prop na BMX |
PropOffset.scooter | altura -0.52, rotação 180.0 | Encaixe do prop no patinete |
BMX
| Opção | Padrão | O que muda |
|---|---|---|
BMX.MinimumSpeed | 1.0 | Velocidade mínima para manobrar, em km/h |
BMX.MaxFallSurvival | 150.0 | Acima dessa altura, o jogador cai da BMX |
BMX.Wheelie | 36 | Controle do empinar |
BMX.Keys | tabela acima | Controle de cada manobra |
Patinete
| Opção | Padrão | O que muda |
|---|---|---|
Scooter.Mount | 74 | Controle de subir e descer |
Scooter.MaxSpeedKmh | 40 | Velocidade máxima, em km/h |
Scooter.MaxJumpHeight | 5.0 | Força máxima do pulo |
Scooter.MaxFallSurvival | 155.0 | Acima dessa altura, o jogador cai do patinete |
Scooter.LoseDistance | 2.0 | Distância em que o jogador é derrubado, em metros |
Scooter.MinGroundHeight | 1.0 | Altura máxima do chão para usar o impulso |
Scooter.MinimumSpeed | 1.0 | Velocidade mínima para manobrar, em km/h |
Scooter.DriverModel | "a_m_y_skater_01" | Ped invisível que conduz o patinete |
Scooter.Keys | tabela acima | Controle de cada manobra |
Language | textos em português | Avisos do patinete |
Para programadores
Eventos: bdx-radical:Mount (cliente, usado pelo target), bdx-radical:Trick (servidor) e bdx-radical:TrickSync (cliente).
Callbacks pelo krs: bdx-radical:Catalog, bdx-radical:Buy, bdx-radical:ScooterDriver e bdx-radical:ScooterStop.
