Destiny Script
Aula 1:
Estrutura dos Códigos
Tipos de Variáveis
E aí, galera?
Depois de mais de um mês devido à manutenção programada do fórum, estamos de volta com as nossas aulas de Destiny Script. Nesta aula será um pouco mais prática em relação à aula 0, que foi uma breve introdução explicando como se utiliza este patch ao RPG Maker 2000, e tivemos pouco movimento no sentido de trabalhar com a ferramenta.
Vamos aprender um pouco mais sobre as estruturas dos códigos, ou seja, saber a diferença entre operações e comandos e como fazê-los. Também vamos começar a falar sobre os tipos de variáveis que são utilizadas nesta linguagem: Integer, que são as variáveis de número inteiros; Float, que aceitam números decimais; Strings, que são variáveis que aceitam letras e símbolos além dos números, apresentados em forma de texto; e outros como Byte, Word e Dword, que geralmente são usados em manipulação de arquivos.
Vamos então ao início da aula!
Estrutura dos Códigos
É muito importante você saber como usar os comandos e associá-los ao script. No DestinyScript nós temos duas maneiras de aplicações ao código no qual o interpretador vai ler e executá-lo no seu jogo. Queria deixar bem clara a diferença entre operação e comando para que vocês possam ter uma concepção lógica em torno disso tudo.
Operação: quando você deseja acionar um cálculo ou então para atribuir valores.
$
Podemos perceber que as variáveis no Destiny Script são objetos e ainda são trabalhadas como Array, que possuem vários valores num mesmo objeto. Dentro destes colchetes também podemos colocar variáveis e equações. Veja:
$
Comandos: chama uma determinada ação do Destiny para executar o código. Os comandos costumam ser divididos da seguinte forma.
$
Podemos perceber que não há um comando sem um objeto. Neste caso, o objeto representa algum dado no qual receberá um comando, e nesses comandos nós usamos métodos e propriedades, ou seja, o método ele vai causar uma ação a esse objeto e a propriedade é para representar um valor armazenado nesse objeto. Há também objetos que possuem arrays, onde nós envolvemos a ID desse tal objeto, representado como "Index" no exemplo acima.
Quando acionamos um método, nós precisamos de parâmetros para que possamos realizar esta ação. Também temos métodos que não cobram parâmetros, mas mesmo assim ainda precisam dos parênteses, mesmo vazios, para que possa ser compreendido como um método. Lembre-se que cada objeto tem seus métodos e propriedades e cada método tem seus parâmetros, e não se esqueça de separá-los com um ponto (.) de acordo com o exemplo.
Objeto Actor
Para que você possa entender melhor essa estrutura, vamos conhecer o nosso primeiro objeto não só da lista da biblioteca do Destiny, mas o primeiro a ser compreendido: o objeto Actor.
Este objeto é nada mais do que todos os heróis que têm na lista do Database do seu jogo. No Destiny podemos realizar ações com os dados dos heróis ou utilizá-los em alguma operação. Portanto este objeto é um array, ou seja, nós temos vários heróis no Database, e o Destiny precisa armazenar um de cada vez.
Todos os objetos que possuem arrays (dizendo de grosso modo, no qual envolvem colchetes []), possui uma propriedade chamada "Count", que serve para mostrar o valor máximo da array. No caso do objeto Actor, represente o número de heróis na lista do Database de seu projeto. Veja ao lado como aplicar o comando de acordo com o exemplo acima.
Muito bem, vamos à nossa primeira e pequena atividade.
Com a propriedade que aprendemos agora, eu quero que vocês façam uma string onde apareça os nomes de todos os heróis que tem no Database do seu jogo. Por enquanto, não se preocupe com o objeto Destiny. O loop "for" você pode ler a revisão que escrevi no fórum sobre o Destiny Patcher onde explica tudo isso e muito mais.
No entanto aí está o código para fazer isso, se for possível, não apenas copie e cole, tente entender como tudo funciona:
Não se esqueça de realizar os procedimentos explanados na aula 0 para ativar o Destiny no seu projeto.
Você pode colocar esse comando num NPC, Auto Start ou Processo Paralelo; escolha da maneira que você desejar.
Vamos conhecer mais algumas das propriedades utilizadas ao objeto "Actor". Este objeto não possui métodos pois este é um objeto que serve para utilizar e/ou manipular dados do herói. Há outros objetos que terão outra função e outras formas de serem trabalhadas.
As demais propriedades apresentadas você terá que especificar qual herói você deseja manipular, portanto, precisaremos colocar colchetes e dentro o número da Id do herói de acordo com a lista que está no Database. Todas essas que vou colocar agora são strings e podem ser alteradas, e depois colocarei as propriedades que são lidas como Dwords, no caso são armazenadas em variáveis.
Strings
Name: Aparece o nome do herói selecionado na array do objeto;
Degree: Cargo do herói;
Charset: Mostra o nome do gráfico atual do herói;
Faceset: Nome do gráfico atual do Faceset;
Dwords
HP: HP atual do herói;
MP: MP atual do herói;
HPDiff: Subtrai o HP máximo pelo HP atual do herói;
MPDiff: Subtrai MP máximo pelo atual;
Level: Nível atual do herói;
EXP: Pontos de experiência atual do herói.
Se você ativou o MessageLink no Destiny Patcher do seu projeto, você pode colocar estes objetos direto na mensagem do jogo. Da mesma forma que você altera a cor da letra, a velocidade da rolagem, o tempo de espera... você pode fazer o mesmo com as propriedades dos objetos. Para fazer isso, coloque a contrabarra (\) para indicar que você está fazendo um comando de mensagem e, em seguida, você vai escrever o objeto seguido de sua propriedade entre parênteses:
Por enquanto teremos apenas esses. Para finalizar esta etapa da aula, gostaria que vocês procurassem no arquivo de ajuda do Destiny (mesmo que esteja em alemão) os seguintes objetos, analisarem e falar um pouco deles aqui no tópico. Também queria que olhasse as demais propriedades que tem no objeto "Actor" e observassem o que cada um faz. São todos atributos do herói, inclusive os mesmos que você encontra no Database do seu projeto.
Depois disso procure estes objetos na lista abaixo:
a
d
f
Faceset
Game
Panorama
String
Time
v
Tipos de Variáveis
Bom, resolvi falar sobre duas coisas em uma aula porque eu acredito que certas operações neste tópico pode ter deixado um pouco de dúvidas, até porque eu falei bastante sobre comandos, objetos e prioridades... acho que é bom deixar um pouco mais claro sobre os tipos de variáveis e seus tipos de dados antes de seguirmos a próxima aula.
Vamos começar lembrando que variáveis são dados alocados na memória para ser utilizada em alguma função do programa. No RPG Maker 2000 não é diferente, sem o Destiny, tem 2 tipos de dados: Switches e Variáveis, sendo que a switch possui apenas dois valores: Off e On, respectivamente, 0 e 1. As variáveis no RPG Maker 2000 são do tipo Integer (números inteiros) e possuem um limite de -999999 até 999999.
Já o DestinyScript lhe permite trabalhar, além de Switches e Variáveis, podemos usar Dwords, Floats (no Destiny 1.0 eram Doubles) e Strings. Sem falar que em Variáveis e Dwords, podemos usar mais alguns tipos de dados usados na programação que possuem suas diferenças, funções e seus limites:
Tipo
Tamanho
Limite
Descrição
Dword
4 Bytes (32 bits)
-2147483648 ... 2147483647
Como você pode perceber, Dwords têm mais espaço do que as variáveis do RPG Maker. Podem ser usados da mesma forma, apenas números inteiros.
Word
2 Bytes (16 bits)
-32768 ... 32767
Também com números inteiros porém com um limite até menor que as próprias variáveis. Geralmente eles são utilizados em alguns métodos, sem falar que consome metade memória do que os Dwords. Na programação, inclusive C++/C#, são variáveis do tipo short.
Byte
1 Byte (8 bits)
0 ... 255
Também com apenas números inteiros, porém com um intervalo menor ainda e com um consumo de memória ainda menor. Normalmente ele é usado para os pixels das imagens usadas no RPG Maker e, também pode ser facilmente trabalhado com paleta de cores.
Float
8 Bytes (64 bits)
Float: -1.7E+308 ... +1.7E+308;
Double: -5.0E-324 ... 5.0E-324
Este tipo de variável já aceita números quebrados. No Destiny 1.0 ele foi chamado de Double, mas pelo visto apenas mudou o nome no 2.0 pois ele ainda continua como Double. Na programação, Floats são números quebrados que têm um intervalo menor e consomem 32 bits, diferente dos Doubles. Portanto são Doubles, mas no Destiny 2.0 estão sendo chamados de Floats.
Bool
1 Byte (8 bits)
0 e 1
É um tipo que possui apenas dois valores, estes têm uma constante: false (0) ou true (1). Em outras palavras, switches são variáveis do tipo bool no RPG Maker.
String
4 Bytes por caractere
0 até 2147483647 caracteres
Este já é um caso especial. Strings são usadas para textos, onde você pode armazenar nomes, frases e outros tipos de dados em forma de texto para uma variável.
Handle
N/A
N/A
É um meio que o Destiny encontrou de armazenar uma imagem para uma variável. Muito útil para armazenar gráficos de pictures, charsets, chipsets, facesets, e panoramas com a ajuda da propriedade "AuroraSheet".
Essa tabela é muito importante saber o que voce vai trabalhar em cada método até porque sempre que eu apresentar um propriedade nova nas aulas eu vou dizer também qual é o tipo que ela recebe, como por exemplo, "Actor[1].Name" é uma String e "Actor[1].HP" é um Dword. Mais tarde vamos conhecer propriedades que mexem com Floats, Words e até mesmo Bytes.
Enquanto isso, podemos armazenar estes tipos de dados em variáveis ou Dwords. No Destiny nós temos objetos que representam Dwords, Floats, Strings, Variáveis e Switches:
a - Strings (ANSI-String, por isso a letra "a");
d - Dwords;
f - Floats (no Destiny 1.0, era o mesmo nome porém era chamado de Double);
s - Switches;
v - Variáveis.
Todos estes objetos são arrays, se a gente lembrar do que eu falei anteriormente, objetos arrays têm a propriedade "Count", que serve para retornar a quantidade de uma delas. O mais interessante é que pelo Destiny você pode alterar o limite desses 5 objetos dentro do jogo com um Método chamado "ReAlloc".
Com os métodos, a interpretação é diferente da propriedade, que retorna determinado valor; aqui já é uma ação que vai alterar alguma coisa, mas para alterar precisamos apresentar algum parâmetro para que o método possa ser realizado. Veja a estrutura deste método:
O local que está destacado de roxo é o parâmetro. Já que o método "ReAlloc" serve para alterar o valor de variáveis, segundo o código, então o parâmetro servirá para determinar o valor que este método vai usar para alterar a quantidade de variáveis no jogo.
Muito cuidado ao alterar esse valor para um número menor que o limite anterior, pois ele irá apagar tudo, correndo riscos de causar um erro. Por exemplo, você tinha 50 variáveis, sendo que a variável 24 e 49 estão em uso, você usou o "ReAlloc" e mudou a quantidade de variáveis para 25. A variável 24 continuará operando normalmente, mas quando operar a variável 49, o jogo causará um erro fechando seu projeto.
Agora o bicho vai pegar!
Muito bem! Finalmente chegou a hora de colocarmos em prática tudo aquilo que aprendemos neste tópico. Vocês farão uma atividade que eu vou explicar logo e terão uma semana para me entregar. Não há necessidade de enviar o link do projeto via MP, pode postar aqui mesmo, é bom até que ajuda a me organizar, sabendo de qual aula é aquele projeto. Combinado?
A proposta é a seguinte: vocês vão montar um mini-jogo, onde vocês terão que usar todas propriedades do objeto Actor que estudamos aqui neste tópico. Assim, eu não quero que vocês coloquem tudo assim numa vez em apenas um NPC, gostaria que esses valores aparecessem no decorrer do jogo, espalhados a ponto de me dar trabalho de achar todos. Não tem problema se fizer um jogo sem história, se tiver melhor ainda. Vamos lá, sejam criativos! Esse é o objetivo dessas aulas, porque só ficar programando o tempo todo é chato, a gente tem que tentar aprender de uma forma diferente e dinâmica.
Então eu vou repetir o que vocês precisam me entregar para semana que vem:
Então é isso!
Vimos que nesta aula foi um pouco mais puxada, mas falamos do básico e tudo que é necessário para entender a linguagem do DestinyScript. Acredito que na próxima aula seja um pouco mais profundo em relação a esse assunto e vamos mexer com alguns gráficos do jogo através do DestinyScript.
Qualquer dúvida é só me perguntar aqui no tópico mesmo.
Até a próxima aula. Aguardem e estudem!
I would like to thnkx for the efforts you have put in writing this blog. I’m hoping the same high-grade website post from you in the upcoming also. Actually your creative writing skills has inspired me to get my own site now. Actually the blogging is spreading its wings rapidly. Your write up is a good example of it. 사설토토사이트
Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you could do with some pics to drive the message home a little bit, but other than that, this is fantastic blog. An excellent read. I will definitely be back. đăng ký v7sb
What would many of us do devoid of the brilliant suggestions you share on this web site? Who else has got the perseverance to cope with important topics in the interest of ordinary subscribers like me? My spouse and i and my guys are really lucky to have your website among the ones we typically visit. We hope you know how a great deal we take pleasure in your efforts! Much luck coming from us all.
fantastic issues altogether, you simply won a logo reader. What would you suggest about your put up that you just made a few days ago? Any positive?
HITCLUB đối với những người hâm mộ cá cược thì chắc chắn không còn xa lạ. Bởi HITCLUB được biết là một trong những địa chỉ cá cược có nhiều ưu điểm hàng đầu. Cùng với đó là những tính năng, những chất lượng và dịch vụ hàng đầu. Mang đến cho người chơi một sân chơi cá cược đỉnh cao. Hãy cùng tìm hiểu về hệ thống nhà cái cá cược hàng đầu thị trường này.
#hitclubgame #hitclub #hitclubgamesite
Thông Tin Liên Hệ:
Phone: 39567992
Location: nhà số 20, ngách49, ngõ 32 Đỗ Đức Dục, Nam Từ Liêm, Hà Nội
Gmail: [email protected]
Web: https://hitclubgame.site/
FB9 là một trong những nhà cái hàng đầu trong lĩnh vực cá cược trực tuyến. Tự hào với danh tiếng và độ uy tín lớn nhất thế giới. FB9 luôn đứng đầu trong việc cung cấp các dịch vụ cá cược chất lượng . Với kho game của FB9 gồm nhiều trò chơi hấp dẫn và đa dạng. Từ xổ số online, casino trực tuyến đến cá cược thể thao. Hay đá gà, nổ hũ và đánh bài trực tuyến….. Tất cả đều được thiết kế với mục đích mang đến cho người chơi cảm giác hứng khởi.
#fb9 #fb9space #nhacaifb9
Thông Tin Liên Hệ:
Phone: 39567992
Location: nhà số 42, ngách49, ngõ 32 Đỗ Đức Dục, Nam Từ Liêm, Hà Nội
Gmail: [email protected]
Web: https://fb9.space/
Its like you read my mind! You seem to know a lot about this, like you wrote the book in it or something. I think that you could do with some pics to drive the message home a little bit, but other than that, this is fantastic blog. An excellent read. I will definitely be back.
I really appreciate this post. I have been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thanks again
I favor an entire couple of merchandise, Dreamed about seriously experienced, I require specifics. during this, taking into account that must be to some extent really good., With thanks considerably with regards to expressing.
Easily this page will probably irrefutably possibly be well known involving many blogs persons, car without any conscientious articles or blog posts or maybe opinions.
I have been absent for some time, but now I remember why I used to love this website. Thanks , I’ll try and check back more often. How frequently you update your web site?
Hello There. I found your blog the use of msn. This is an extremely smartly written article. I’ll be sure to bookmark it and return to read more of your useful info. Thanks for the post. I will definitely comeback.
Thanks for your blog post and discussing your own results together with us. Very well completed! I think a lot of people find it hard to understand paying attention to many controversial things associated with this topic, and your own results speak for themselves. I think several additional takeaways are the significance of following each of the ideas you presented above and being willing to be ultra unique about which one
could really work for you best. Nice job.