Lord, if the day comes when I fly through the heavens. I shall approach thee!
[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)
(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:
Resultado:
[/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);
[/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]
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)
(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:
Resultado:
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);
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]