Colocar/Remover Heróis no Grupo
Autor: Dr.XGB
Plataforma: RPG Maker 2000 e RPG Maker 2003
Dificuldade: Intermediário
E aí, pessoal?
Neste tópico você vai aprender como manipular o grupo de heróis no seu jogo de uma forma bem básica e objetiva, podendo recolocar a ordem dos heróis e acrescentar heróis quando o grupo está cheio.
Acredito que este tutorial ajude aqueles membros que desejam programar em seu projeto uma equipe com mais de quatro heróis, sendo que o programa permite até 4, tendo um outro grupo com os demais heróis que no caso não lutariam, ao menos que fossem colocados naquele grupo mais tarde.
Espero que você possam usar este tutorial para fins de estudos e que possa ampliar mais ainda o conhecimento na programação de eventos neste motor.
Etapa 1: Formando os grupos
Ao iniciar o jogo, devemos desenvolver um pequeno sistema onde vamos colocar as Id's dos heróis em variáveis para facilitar a nossa organização. A primeira Variável chamada Party Size será onde vamos indexar todos os heróis mostrando quantos heróis possuem no seu grupo. No momento em que o jogo é iniciado, você vai colocar esta variável para 1, indicando que o jogo começará com apenas um herói. Em seguida, use a terceira variável [0007: Hero1] e coloque o valor de acordo com a Id do herói no Database que vai começar o jogo. Por exemplo: de acordo com o Database padrão, Alex possui a Id 1 por ser o primeiro da lista, Brian seria o 2, Carol o 3, etc.
Caso o seu jogo comece com 2 heróis, a variável [0001: Party Size] deve ser mudada para 2, ou caso tenha 3, o valor será 3; ou até mesmo selecionando Others e Party Size na janela de determinar a variável que já vai retornar o número de herói contidos no grupo, porém desta maneira ele irá determinar apenas de 1 até 4. Mesmo que o grupo tenha 5 heróis de acordo com o nosso sistema de slots, ele terá o valor 4, que é o limite de heróis num grupo padrão do RPG Maker 2000/2003. Por isso devemos determinar estes valores manualmente.
Não podemos esquecer de atribuir os valores para as variáveis que representariam os slots dos heróis. Por exemplo, se você tem 3 heróis no grupo, você vai determinar as variáveis [0007: Hero1], [0008: Hero2] e [0009: Hero3] de acordo com a Id de cada um deles.
Agora quando entrar mais heróis no grupo, teremos que usar um esquema diferente do que usar apenas o Change Party..., primeiro vamos ver quantos herói tem no grupo, aumentamos este limite e colocaremos o valor do novo herói em algum slot disponível usando ponteiros referentes à mesma variável [0001: Party Size]. Depois de encontrar o slot disponível e dar o valor ao mesmo, vamos colocar o mesmo valor para [0002: Temp Hero] que é a variável que vai acrescentar o herói ao grupo com a função Change Party... caso tenha menos que 4 heróis no grupo, senão ele apenas ocupará o Slot dado pela variável.
A lógica funciona da seguinte maneira:
Consideramos que cada slot vazio nas variáveis tenham o valor de 0, já que a Id do primeiro herói é 1. Um grupo com 3 herói significa que temos 3 slots com valores maiores que 0. Grupo de 2 heróis tem 2 slots disponíveis; 4 heróis temos 4 slots; 6 heróis temos 6 slots ocupados por heróis e assim vai.
Para deixar a programação mais organizada, preferi deixar esta ação para um Evento Comum para não ter que colocar esta lógica em todos os eventos sempre que algum personagem entra no seu grupo. Também vou usar mais uma variável [0003: Party Pointer] para poder levar o ponteiro para os slots. Então teremos a lógica no evento comum:
<> Variable Ch. [0003: Party Pointer] Set, 7 <> Variable Ch. [0003: Party Pointer] +, Var. V[0001]val. <> Variable Ch. [V[0003]] Set, v[0002] // Próximo slot disponível <> Variable Ch. [0001: Party Size] +, 1 // Aumentou o grupo de heróis <> FORK Optn: [0001: Part Size] - 4less <> Change Hero's Party: V[0002] -> Add <> : END Case <>
Para quem não entendeu porque eu determinei o valor de [0003: Party Pointer] para 7 e depois somei pelo valor de [0001: Party Size], é o seguinte: atribuí aquele valor porque o 7, como você pode ver na lista de variáveis no início do tópico, representa a Id da variável que representa o primeiro slot do grupo [0007: Hero1]. Daí então a soma pelo tamanho do grupo é para indicar o slot que está vazio (com o valor 0 neste caso). Se o grupo tem 2 heróis, ele vai calcular 7+2 = 9. Logo teremos [0009: Hero3] como slot vazio. Com 4 heróis, 7+4 = 11, então o próximo slot é [0011: Hero5]. Seguido então da soma de [0001: Party Size] para +1 indicando que o grupo aumentou.
Agora vou usar, como exemplo, a maneira que vamos utilizar para acrescentar o Brian no grupo (no caso o segundo herói da lista padrão). Usaremos a variável [0002: Temp Hero] para determinar a Id do novo herói ao grupo e chamar o evento comum que nós criamos logo acima:
<> Variable Ch. [0002: Temp Hero] Set, 2 // Id do Brian = 2 <> Call Event: Add Hero // Chamar o Evento comum que criamos <>
Etapa 2: Removendo herói do grupo
Esta etapa serve para lembrar que na hora de retirar o herói do gupo não é o reveso de quando você adiciona. Até porque se você simplesmente tirar o herói, ou seja, mudando o valor do slot para 0, vai fica um buraco no grupo, deixando o seu grupo muito bagunçado. Vamos aprende também a não apenas tirar o herói, mas também a organizar o grupo preenchendo o slot vazio.
Usando as duas últimas variáveis da lista [0020: Temp Party] e [0021: Temp Pointer], podemos utilizar para buscar nos slots a Id do herói que você deseja remover. Para isso usamos um ciclo onde v[20] vai buscar o slot e v[21] retornará o valor deste slot. Daí quando este slot coincide com a Id que você procura, você simplesmente, usando ponteiros, colocará o valor 0 naquele slot encontrado. Além disso, podemos aproveitar [0003: Party Pointer] para determinar a quantidade máxima de slots ou colocar o valor que você quer. Por exemplo na minha demo, o grupo tem 8 slots. Então o ciclo será realizado 8 vezes, mas você pode alterar este limite de acordo com o máximo de slots que você vai usar em seu projeto.
Este também pode ser criado em um outro Evento comum. Antes dele ser chamado, declaramos a variável [0002: Temp Hero] para selecionar o herói que você deseja remover.
<> [0020:Temp Party] Set 7 <> CYCLE <> Variable Ch.: [0021: Temp Pointer] Set, Var. [V[0020]]val. <> FORK Optn: Varbl[0021: Temp Pointer] - V[0002] Equivl. <> Variable Ch.: [V[0020]] Set, 0 <> Change Hero's Party: V[0002] -> Remove <> BREAK Cycle <> :END Case <> FORK Optn: Varbl[0020: Temp Party] - 8 <> BREAK Cycle <> :END Case <> Variable Ch.: [0020: Temp Party] +, 1 <> : END Cycle <> Call Event: Line Up Party <> Variable Ch.: [0001: Party Size] -, 1 <>
Lembrando mais uma vez que começamos o ciclo com 7 devido à Id do primeiro Slot do grupo. Agora vamos aplicar este código removendo o Brian do grupo:
<> Variable Ch.: [0002: Temp Hero] Set, 2 <> Call Event: Remove Hero <>
No final do código, podemos notar que tem um Call Event chamado Line Up Party. Este evento é o que vai organizar os slots não permitindo que tenha um espaço vazio entre os outros heróis. A lógica é quase a mesma para remover, porém vamos precisar de uma switch que será acionado quando encontrar um slot com o valor 0, recolocando os valores que estão no próximo slot fazendo com que eles pulem para o slot que foi encontrado vazio.
<> [0020:Temp Party] Set 7 <> CYCLE <> Variable Ch.: [0021: Temp Pointer] Set, Var. [V[0020]]val. <> FORK Optn: Switch [0001: Replace Party] - ON <> Variable Ch.: [0020: Temp Party] -, 1 <> Variable Ch.: [V[0020]] Set, Var. [0017]val. <> Variable Ch.: [0020: Temp Party] +, 1 <> :END Case <> FORK Optn: Varbl[0021: Temp Pointer] - 0 <> Change Switch: [0001: Replace Party] - On Set <> :END Case <> FORK Optn: Varbl[0020: Temp Party] - 8 <> BREAK Cycle <> :END Case <> Variable Ch.: [0020: Temp Party] +, 1 <> : END Cycle <> Change Switch: [0001: Replace Party] - OFF Set <>
Extra: Organizando o Grupo
Agora é o momento que vamos organizar o grupo, definir quem vai lutar ou não, quem será o líder do grupo. Baseando-se na adição e remoção do herói no grupo, vamos criar um menu básico para realizar esta forma de organização. Podemos fazer isso de duas maneiras válidas: usando pictures ou criando um menu num outro mapa feito justamente para organizar a equipe. Se você usar o menu em outro mapa, você pode usar as variáveis [0004: Menu Map], [0005: Menu X] e [0006: Menu Y] para guardar as coordenadas do herói antes de passar para o outro mapa com o comando Memorize Place.... Concluindo o menu, chame o comando Go to Memorized Place.... Caso tenha dúvidas em como fazer um menu, veja na demonstração, onde eu usei o menu em outro mapa.
Clique aqui para baixar a Demonstração
Então é isso. Se estiver com alguma dúvida é só postar aqui, ou então para comentar alguma coisa aqui.
Espero que você possam aproveitar bastante deste material que preparei aqui pra vocês.
Até mais!
hello!,I like your writing so much! share we communicate extra approximately your post on AOL? I need an expert in this space to solve my problem. Maybe that is you! Looking ahead to see you. 안전토토사이트
I'm writing on this topic these days, safetoto , but I have stopped writing because there is no reference material. Then I accidentally found your article. I can refer to a variety of materials, so I think the work I was preparing will work! Thank you for your efforts.
If you're ready to take your cue sports skills to the next level, then this comprehensive guide is for you!!! Want to know more about site? visit here --->> 8 ball pool bets
Thanks so much regarding giving me an update on this subject matter on your blog. Please understand that if a brand new post appears or in the event any adjustments occur with the current article, I would want to consider reading more and knowing how to make good use of those tactics you write about. Thanks for your efforts and consideration of other individuals by making this website available. Israel news
I like your writing style really loving this web site . salingsilang
I was on a very basic level studying along and lurched over your blog. Just expected to give a nice blog and this article really empowered me.
Call Girl in Bani Park
Durgapura Call Girl Number
Jagatpura Call Girls
Call Girls in Gopalpura
Civil Lines Call Girls Number
I can't think about focusing enough lengthy to assess; staggeringly less makes such an article. You've accomplished something phenomenal for yourself with this material emphatically. It is perhaps the best substance.
Sanganer Call Girl Number
Bhankrota Call Girls
Call Girls in Chitrakoot
Adarsh Nagar Call Girls Number
Pratap Nagar Call Girl Number
I for the most part need to uncover to you that I am new to weblog and completely favored this blog website page. I'm presumably going to bookmark your blog. You unquestionably have thrilling stories. Pulls for proposing to us your blog.
Shyam Nagar Call Girls
Call Girls in Malviya Nagar
Vaishali Nagar Call Girls Number
Sindhi Camp Call Girl
Call Girl in Narayan Vihar
You made an especially stunning part of survey, giving each subject light for us to get data.
Call Girls in Bais Godam
Vivek Vihar Call Girls Number
Khatipura Call Girl
Call Girl in Jaisalmer
Jodhpur Call Girl Number
Subsequent to investigating a few the weblog posts on your page now, and I really like your system for adding to a blog.
Pushkar Call Girls Number
Beawar Call Girl
Call Girl in Kishangarh
Ajmer Call Girl Number
Udaipur Call Girls
I bookmarked it to my bookmark site record and will apparently ask soon. Pls see at my site as enough and uncovered to me your evaluation.
Raja Park Call Girl
Call Girl in Tonk Road
Mansarovar Call Girl Number
Jhotwara Call Girls
Call Girls in Bajaj Nagar
Your web log isn't simply gigantic yet it is really inventive as well, never saw an especially solid post. I'm thankful to you and expect more posts like these.
Call Girl in Mahesh Nagar
Sodala Call Girl Number
Ajmer Road Call Girls
We also have top Lahore Escorts who will please those who want exceptional Service during the evening. Get a hot night at the restaurant and in bed for an unforgettable night in a luxurious hotel. Our well-trained ladies know their jobs and duties and are committed to 100% customer satisfaction. This is why our Service for the VIPs in Lahore has earned the respect and trust of our clients. Everyone wants to be part of our royal escorts for an unforgettable time in Lahore, the city of capitals.