O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Criar um evento com aleatoriedade...

Iniciado por RajaNaga, 10/09/2021 às 21:00

10/09/2021 às 21:00 Última edição: 16/11/2021 às 06:50 por Gabriel
Olá a todos, desde já peço desculpa por estar criando alguns posts com alguma frequência mas eu preciso aprender a usar o RPG Maker MV pois tem muita coisa que ainda não conheço a sua logica. Neste momento estou tentando fazer um evento que tenha algum tipo de aleatoriedade, mas não sei se é possível fazer ou se vai se tornar muito complexo. O que eu queria é um evento paralelo verificando o X e o Y do jogador e, de vez em quando (digamos 30 segundos) algumas pedras caem sobre o jogador em um local aleatório mostrando uma sombra primeiro no chão para que ele possa se esquivar, caso o jogador seja atingido, o dano ocorre, mas não sei por onde começar. Consigo fazer as variáveis ​​X e Y para o jogador mas, o meu problema é que não sei que tipo de valor tenho de adicionar ao criar as variáveis das pedra e como adicionar o elemento aleatório.
Será que o sistema de regiões é outra possibilidade de criar este evento?
Espero que alguém possa me ajudar a configurar isso, ou será que existe algum tipo de script que eu poderia usar para este sistema?

Desde já, o meu obrigado.

A base do que você precisa está aqui:


11/09/2021 às 16:09 #2 Última edição: 11/09/2021 às 16:15 por RajaNaga
Ok, obrigado Gabriel, vou experimentar e ver se consigo fazer e depois dou o feedback.
No entanto essas 2 caixas de valor representam o quê?? A quantidade de tiles?

Ali são o valor mínimo e máximo pra gerar um valor aleatório. Por exemplo, você pode definir que a variável receba um valor entre 1 e 10, 20 e 40, etc. É o que você precisa pra definir posições aleatórias para as pedras caírem.

Como era de se esperar não estou conseguindo construir este evento. Um dos meus problemas (no geral) é não saber qual as bases para criar este tipo de eventos. Já tentei criar 1 evento sendo ele uma das pedras e o colocar em um canto no mapa juntamente com um evento paralelo com X e Y do jogador mais as o X e Y da pedra e o valor aleatório mas, não está resultando. Já tentei também com regiões mas também não obtive o resultado que queria. Então peço por favor, se alguém souber as bases para construir este tipo de evento poderia me dizer por onde começar?
Obrigado.

Talvez seja melhor você pegar alguns tutoriais mais básicos no geral antes de ir pras mecânicas específicas. O Ludo fez uma excelente série com 104 vídeos, partindo do zero ao avançado. Tem muita coisa que você já sabe, claro, mas é bom ver desde o começo pra não se perder lá na frente. Te garanto que, terminando os vídeos, você vai conseguir fazer praticamente qualquer coisa. o/

Fiz um exemplo bem simples aqui, só para você tomar como base. Idealmente você deverá separar cada etapa do sistema e gerenciá-lo através de eventos comuns, em vez de deixar tudo em um único evento (como fiz nesse exemplo).



[box2 class=calendar_today]
Set Movement Route:Falling Stone
Set Movement Route:◇Opacity:0
Set Movement Route:◇Image:!Other1(0)
Set Movement Route:Stone Shadow (Wait)
Set Movement Route:◇Opacity:0
Set Movement Route:◇Image:!$FallingStoneShadow(0)
Set Event Location:Stone Shadow, (0,0)
Set Event Location:Falling Stone, (0,0)
Control Variables:#0027 Stone Shadow X = Player X
Control Variables:#0027 Stone Shadow X += Random -1..1
Control Variables:#0028 Stone Shadow Y = Player Y
Control Variables:#0028 Stone Shadow Y += Random -1..1
Control Variables:#0029 Falling Stone Y = Stone Shadow Y
Control Variables:#0029 Falling Stone Y -= 4
If:Script:$gameMap.regionId($gameVariables.value(27), $gameVariables.value(28)) == 1
Set Event Location:Stone Shadow, ({Stone Shadow X},{Stone Shadow Y})
Set Movement Route:Stone Shadow (Wait)
Set Movement Route:◇Opacity:50
Set Movement Route:◇Wait:3 frames
Set Movement Route:◇Opacity:100
Set Movement Route:◇Wait:3 frames
Set Movement Route:◇Opacity:175
Set Movement Route:◇Wait:3 frames
Set Movement Route:◇Opacity:255
Wait:10 frames
Set Event Location:Falling Stone, ({Stone Shadow X},{Falling Stone Y})
Set Movement Route:Falling Stone (Wait)
Set Movement Route:◇SE:Earth3 (40, 130, 0)
Set Movement Route:◇Opacity:50
Set Movement Route:◇Move Down
Set Movement Route:◇Opacity:100
Set Movement Route:◇Move Down
Set Movement Route:◇Opacity:175
Set Movement Route:◇Move Down
Set Movement Route:◇Opacity:255
Set Movement Route:◇Move Down
Set Event Location:Animation Target, ({Stone Shadow X},{Stone Shadow Y})
Show Animation:Animation Target, Stone
Play SE:Earth4 (40, 100, 0)
If:Player X = Stone Shadow X
If:Player Y = Stone Shadow Y
Change HP:Entire Party, - 50
Play SE:Damage3 (55, 100, 0)
Flash Screen:(255,51,34,153), 15 frames
Set Movement Route:Player (Skip)
Set Movement Route:◇1 Step Backward

End

End

End
[/box2]


Estou sem palavras para descrever a vossa ajuda não só neste post mas em todos os outros em que eu postei. Corvo, irei com certeza ver esses tutoriais até porque já tenho visto alguns e me identifico bastante com o método de ensinar do Ludo, obrigado por referir.
Quanto ao Gabriel, só tenho a dizer que fiquei de boca aberta, acertou em cheio de como eu imaginava esse evento.
Quero agradecer e pedir desculpas pelo trabalho que teve só para me ajudar. Espero um dia ser eu a ajudar outros membros do fórum assim como vocês me estão ajudando.
Vou construir esse evento agora e mais logo eu deixo o feedback se ficou funcionando.
Mais uma vez, muito obrigado e tudo de bom pra vocês.

Pois bem, estive até agora tentando construir esse evento, não sei o que estou fazendo de errado mas não está funcionando. Já tentei fazer por eventos comuns como o Gabriel falou mas sem efeito, agora estou fazendo igual ao que ele postou (tudo no mesmo evento) e mesmo assim algo tá dando errado. Para além desse evento eu criei mais 3 eventos em paralelo, um para a imagem da pedra outro para a imagem da sombra e outro para a animação da pedra ao colidir com o chão. A pedra e a sombra só mudei a velocidade na caixa de movimento para ser mais rápido e na animação tem um "mostrar animação". Será que tá certo?
Já agora, qual a lógica por de trás da condição com script? Vejo que tem um RegionID mas não tem nenhum valor especificado em uma variável. Ou não é preciso usar variável neste caso? Por ter notado esse RegionID eu coloquei todo o mapa com a região 1 e mesmo assim nada mudou.
Desculpem a pergunta mas, como coloco os comandos do RPG Maker aqui, como o Gabriel fez, para mostrar todo o evento? Já tentei com "copiar e colar" mas não funciona.
Obrigado por tudo.

A scriptcall na condição é para verificar qual o id da região nas coordenadas geradas, para que as pedras possam cair somente na qual tiver sido especificada, que no caso ali é a região de id 1. Isso poderia ter sido feito usando só comandos de eventos, mas iria gastar mais algumas variáveis e comandos e fiquei com preguiça de dar toda essa volta só pra realizar essa verificação. O intuito dessa condição é poder estipular onde as pedras podem ou não cair, evitando que ela caia em lugares estranho, como em cima de uma parede, por exemplo.

$gameMap.regionId($gameVariables.value(id1), $gameVariables.value(id2)) == id3

Sendo que id1 é o id da variável que armazena a coordenada X e id2 o id da variável que armazena a coordenada Y de onde a pedra irá cair, id3 é o id da região que deseja usar.


Ahh, entendi, pensei que fosse algo a ver com as regiões do mapa, aquelas que tem nos tiles com cores para definir o mapa, contudo, os eventos que criei estão certos Gabriel, ou preciso de fazer algo mais? Se quiser posso deixar o link das imagens dos eventos. Só preciso saber se tenho que fazer mais algum evento, ou excluir caso eu tenha algum já feito que não seja necessário.

Pelo contrário, está sim relacionado com as regiões do mapa. Se preciso, releia a mensagem anterior.



Todo o sistema foi feito usando só as linhas que já mostrei duas mensagens atrás, não há mais nada para mostrar. Se não estiver conseguindo executar o sistema com as informações que recebeu, talvez seja uma boa seguir o conselho do Corvo e tirar um tempo para rever os conceitos básicos da engine.


Ok, vou fazer isso então, muito obrigado pelo tempo disponibilizado, agradeço do fundo do coração a ajuda que me têm dado.