🤔 Para Refletir :
"Nunca desista se tiver uma ideia em mente, se tiver inicie-a."
- Samuel Augusto

Scripts úteis para GameMaker Studio

Kaw

The Righteous
Membro
Membro
Lord, if the day comes when I fly through the heavens. I shall approach thee!
Juntou-se
09 de Janeiro de 2017
Postagens
620
Bravecoins
193
[greenalert]Tava rondando a net estudando sobre o GMS e acabei me deparando com uns scripts muito úteis pra qualquer projeto em geral. Como acabei reescrevendo neles(alguns até refazendo ._.) decidi aproveitar a pausa das pesquisas pra criar um tópico aqui e compartilhar com vocês.

Fiz questão de deixar cada script documentado(em inglês) com exemplos da funcionalidade mas também farei um resumo aqui(em português).[/greenalert]

1- Approach(a, b, amount);
Esse script basicamente muda uma variável(A) em relação a outra variável(B) por uma quantidade(Amount) determinada por você. Esse script é útil porque, além de tornar mais fácil a digitação do processo, ele funciona para ambos os lados. Caso queira mudar a variável A a em relação à variável B ou vice-versa, é da mesma forma que se passa os parâmetros, o próprio script faz a checagem e o ajuste.
Ele também se certifica de não deixar o valor passar da segunda variável. Finalmente, ela retorna o novo valor da variável alterada(pra futura consulta, por que não?)

[yellowalert]Exemplo: Approach(hp, max_hp, heal(20));
Fará com que o HP do jogador aumente em 20 em relação ao HP máximo. Caso esse valor passe do HP máximo(digamos, HP 85 | HP Máx. 100. Curou 20 = 105) o valor excedente é ignorado e o script retorna 100(HP Máximo).[/yellowalert]



2- Chance(chance);
Esse provavelmente é o mais simples da lista(a ponto de não precisar do script), porém extremamente útil.
Ele irá, aleatóriamente, decidir se um código vai ou não ser executado, de acordo com o valor que você passar pra ele (de 0 à 1 = 0% à 100%, mais que 1 é >100%);

[yellowalert]Exemplo: Chance(0.7);
O script irá determinar, com 70% de chance a favor e 30% contra, se retornará verdadeiro ou falso. Dá pra simplificar muito um sistema de ataque crítico, por exemplo. Só colocando:

if(Chance(0.5)){
    nextPlayerDmg *= critDMG;
}


Assim, teria 50% de chance dele causar o dano crítico.[/yellowalert]



3- Wave(from, to, duration, offset);
Ele define um movimento de "onda" pro valor de uma variável.
Quando eu digo "onda", quero dizer um movimento de vai e volta, como na gif a seguir.
No caso dela, eu modifiquei o valor de X pelo retorno do script Wave com os seguintes parâmetros:

[yellowalert]Exemplo: x = Wave(45, 200, 5, 0)
giphy.gif

(Não zoem meu maguinho)
[/yellowalert]


4- Print(*args);
Segunda versão por que a primeira tava porca(really, o que diabos eu fiz ali????)
Diferente do show_debug_message(), com esse print(que é a mesma coisa) você pode passar quantos argumentos quiser.
É basicamente isso, um time saver ;V

Pode passar quantos argumentos quiser, do tipo que quiser. Isso inclui desde string até array.

[yellowalert]Exemplo:
UqWiqWk.png

Resultado:
0q6YwIH.png
[/yellowalert]



5- Wrap(value, min, max)[Versão slim]
5- Wrap(value, min, max)[Versão completa(não funcional)]
PS: Existem 2 versões desse script, a maior eu não consegui fazer funcionar então recomendo que usem o mais simples mesmo(até por quê, está mais organizado), ou tentem arrumar a maior, eu posso ter feito besteira aqui kkk.
Mas recomendo que pelo menos leiam o maior pra entender mais ou menos como funciona.

Esse é, pra mim, o mais difícil de explicar kkk'
Ele basicamente pega 2 pontos(que você passa pelo min e pelo max) e quando o valor foi maior ou menor que eles, ele teleporta o objeto para o outro ponto.
Suponhamos que seu jogo tenha um portal no canto esquerdo do mapa e um no direito e você quer que quando o jogador entre em um ele saia em outro. É basicamente isso. Você definiria o valor do portal da direita no max e o da esquerda no min.

[yellowalert]Exemplo:

x += 5;
x = Wrap(x, 10, room_width-10);


giphy.gif
[/yellowalert]

6- Array(*args);
Outro time saver. Ao invés de adicionar item por item na array(ou ficar fazendo loops) você pode usar esse script pra criar a array pra você.

[yellowalert]Exemplo: myArray = Array("index 0", "index 1", index_2);
Vai criar uma array chamada myArray com 3 entries com os valores que você passou nos argumentos. Nesse caso: "index 0", "index 1" e index_2.[/yellowalert]

[greenalert]Espero que seja útil pra alguém por ai xD
Qualquer pergunta só comentar ai ou me mandar uma MP.[/greenalert]​
 
Hey, Kawthar!
Eu vejo você mandando uns códigos no chat, discutindo. Mas caramba, esse ficou muito completão!
Eu não entendo praticamente nada de programação e muito menos de Game Maker, mas me senti na curiosidade de dar uma fuçada na engine.

Quais as chances de você fazer uns tutoriais aqui no fórum pros noobinhos que nem eu, iniciantes no Game Maker?  :Hm:
 
Bruce Azkan comentou:
Quais as chances de você fazer uns tutoriais aqui no fórum pros noobinhos que nem eu, iniciantes no Game Maker?  :Hm:

Até ler esse comentário, 0. Agora, já to terminando de formatar o tópico  :awesome:
Além da minha mania de procrastinar e nunca terminar as coisas que eu começo(To olhando pra você tutoriais de LOVE2D) eu não tenho experiência o suficiente pra ensinar nada de mais, também faço parte do grupo dos noobs hehe
Mas posso fazer sim alguns tutoriais básicos aqui, talvez transcrever alguns vídeos gringos...
 
AEEEEEEEEEEEEE! <3

Que nada, se conseguirmos passar alguma coisinha pra frente já é muito bom.
Eu estou estando a engine Unreal atualmente. Penso em ir fazendo alguns tópicos sequenciais de dicas e tutoriais com o que eu for aprendendo.
 
Voltar
Topo Inferior