Modificando o Banco de Dados Dinamicamente com RGSS (RMXP)
Aula 3 - Heróis e Classes
Introdução
Finalmente vamos à prática! Mas primeiro o que vem primeiro. Nessa aula, vamos aprender a criar nossos heróis e nossas classes.
Observação:
Os Heróis
Os heróis, como eu disse na aula passada, são representados pela classe RPG::Actor. Vamos aprender a criar uma dessas e a modificá-la.
Criando uma Classe RPG::Actor
Isso é simples de fazer, basta colocar isto:
actor = RPG::Actor.new
A essa altura isso não é novidade para os mais experientes no RGSS.
Modificando as Propriedades
Não é difícil modificá-las. É só saber quais são e qual o seu valor. Para modificar uma, use isso:
actor.property = value
Onde actor é a variável onde você criou o RPG::Actor, property é a propriedade e value é o valor. Vamos conhecê-las:
name
A propriedade name equivale ao nome do herói. Seu tipo é uma string.
actor.name ="João B"
class_id
A propriedade class_id é um inteiro que indica o id da classe do herói:
actor.class_id =2# Lanceiro
initial_level e final_level
São inteiros que indicam o nível inicial e final do herói:
# Modificando o nível inicial e final respectivamente para 5 e 90 actor.initial_level =5 actor.final_level =90
exp_basis e exp_inflation
Esses inteiros controlam o crescimento da experiência do herói. exp_basis equivale ao Valor Inicial da experiência, e exp_inflation equivale ao Grau de Técnica:
# Modificando a experiência actor.exp_basis =15 actor.exp_inflation =40
character_name, character_hue, battler_name e battler_hue
character_name e battler_name são strings que definem a imagem do char e do battler do herói. character_hue e battler_hue indicam a tonalidade do char e do battler (de 0 a 360).
actor.character_name ="001-Fighter01" actor.character_hue =0 actor.battler_name ="001-Fighter-1" actor.battler_hue =0
parameters
É meio confuso de explicar. A propriedade parameters é uma tabela bidimensional que guarda os parâmetros das de força, destreza, agilidade e magia do jogador, além do HP máximo e do MP máximo.
Para acessar, use o seguinte código:
actor.parameters[param, level]= value
Onde parameters é:
E level é um nível de 1 a 99.
Dica:
hp_max_1 =500 # HP Máximo de nível 1 hp_max_99 =5000# HP Máximo de nível 99 sp_max_1 =500 # SP Máximo de nível 1 sp_max_99 =5000# SP Máximo de nível 99 str_1 =50 # Força de nível 1 str_99 =500 # Força de nível 99 dex_1 =50 # Destreza de nível 1 dex_99 =500 # Destreza de nível 99 agi_1 =50 # Agilidade de nível 1 agi_99 =500 # Agilidade de nível 99 int_1 =50 # Magia de nível 1 int_99 =500 # Magia de nível 99 hp_max_increase =(hp_max_99 - hp_max_1)/99 sp_max_increase =(sp_max_99 - sp_max_1)/99 str_increase =(str_99 - str_1)/99 dex_increase =(dex_99 - dex_1)/99 agi_increase =(agi_99 - agi_1)/99 int_increase =(int_99 - int_1)/99 actor.parameters[0,1]= hp_max_1 actor.parameters[1,1]= sp_max_1 actor.parameters[2,1]= str_1 actor.parameters[3,1]= dex_1 actor.parameters[4,1]= agi_1 actor.parameters[5,1]= int_1 for i in2..99 actor.parameters[0, i]= hp_max_1 + hp_max_increase *(i -1) actor.parameters[1, i]= sp_max_1 + sp_max_increase *(i -1) actor.parameters[2, i]= str_1 + str_increase *(i -1) actor.parameters[3, i]= dex_1 + dex_increase *(i -1) actor.parameters[4, i]= agi_1 + agi_increase *(i -1) actor.parameters[5, i]= int_1 + int_increase *(i -1)endSe usar, terá que me dar os créditos.
weapon_id, armor1_id, armor2_id, armor3_id e armor4_id
São inteiros que definem o equipamento usado. O weapon_id indica a arma que será inicialmente usada, e os armor*_id indicam as armaduras que serão inicialmente usadas.
actor.weapon_id =1 actor.armor1_id =1 actor.armor2_id =5 actor.armor3_id =13 actor.armor4_id =0# Para não ter armadura 4
weapon_fix, armor1_fix, armor2_fix, armor3_fix e armor4_fix
São valores booleanos (true ou false) que indicam se a arma e/ou armaduras deverão ser irremovíveis (não podem ser tiradas pelo jogador).
actor.weapon_fix =true actor.armor1_fix =false actor.armor2_fix =false actor.armor3_fix =false actor.armor4_fix =true
Adicionando o Herói ao Banco de Dados
Finalmente concluímos o nosso herói! Mas precisamos adicioná-lo ao banco de dados. Siga o código:
actor.id = $data_actors.size $data_actors << actor
Para salvar as alterações no arquivo, utilizamos ainda esse código:
save_data($data_actors,"Data/Actors.rxdata")
Código completo de Exemplo
Aqui está o loooongo código para criarmos nosso herói:
actor = RPG::Actor.new actor.name ="João B" actor.class_id =2# Lanceiro actor.initial_level =5 actor.final_level =90 actor.exp_basis =15 actor.exp_inflation =40 actor.character_name ="001-Fighter01" actor.character_hue =0 actor.battler_name ="001-Fighter-1" actor.battler_hue =0 hp_max_1 =500 # HP Máximo de nível 1 hp_max_99 =5000# HP Máximo de nível 99 sp_max_1 =500 # SP Máximo de nível 1 sp_max_99 =5000# SP Máximo de nível 99 str_1 =50 # Força de nível 1 str_99 =500 # Força de nível 99 dex_1 =50 # Destreza de nível 1 dex_99 =500 # Destreza de nível 99 agi_1 =50 # Agilidade de nível 1 agi_99 =500 # Agilidade de nível 99 int_1 =50 # Magia de nível 1 int_99 =500 # Magia de nível 99 hp_max_increase =(hp_max_99 - hp_max_1)/99 sp_max_increase =(sp_max_99 - sp_max_1)/99 str_increase =(str_99 - str_1)/99 dex_increase =(dex_99 - dex_1)/99 agi_increase =(agi_99 - agi_1)/99 int_increase =(int_99 - int_1)/99 actor.parameters[0,1]= hp_max_1 actor.parameters[1,1]= sp_max_1 actor.parameters[2,1]= str_1 actor.parameters[3,1]= dex_1 actor.parameters[4,1]= agi_1 actor.parameters[5,1]= int_1 for i in2..99 actor.parameters[0, i]= hp_max_1 + hp_max_increase *(i -1) actor.parameters[1, i]= sp_max_1 + sp_max_increase *(i -1) actor.parameters[2, i]= str_1 + str_increase *(i -1) actor.parameters[3, i]= dex_1 + dex_increase *(i -1) actor.parameters[4, i]= agi_1 + agi_increase *(i -1) actor.parameters[5, i]= int_1 + int_increase *(i -1)end actor.weapon_id =1 actor.armor1_id =1 actor.armor2_id =5 actor.armor3_id =13 actor.armor4_id =0# Para não ter armadura 4 actor.weapon_fix =true actor.armor1_fix =false actor.armor2_fix =false actor.armor3_fix =false actor.armor4_fix =true actor.id = $data_actors.size $data_actors << actor save_data($data_actors,"Data/Actors.rxdata")
As Classes
As classes não são muito difícil de fazer, é só ter paciência. Elas são representadas pelo RPG::Class.
Criando uma Classe
É a mesma coisa que criar o herói, só que com o RPG::Class.
class= RPG::Class.new
Propriedades
Para modificá-las, é o mesmo que no herói.
class.property = value
name
O nome da classe:
class.name ="Membro"
position
Um inteiro que indica em que posição está o herói com a classe.
class.position =1# Meio
weapon_set e armor_set
São arrays que indicam as armas e armaduras usáveis pela classe.
class.weapon_set =[1,2,3]# Espada de Treino, Espada Longa e Espada Drowclass.armor_set =[1,2,3,4]# As primeiras 4 armaduras
element_ranks e state_ranks
Tabelas unidimensionais que indicam a resistência aos elementos e aos status.
Atenção: 1 = A, 2 = B, 3 = C, 4 = D, 5 = E e 6 = F.
class.element_ranks[1]=6class.element_ranks[2]=1class.state_ranks[2]=6class.state_ranks[4]=4
Perigo:
class.element_ranks.resize(load_data("Data/System.rxdata").elements.size)for i in1..load_data("Data/System.rxdata").elements.size class.element_ranks[i]=3endclass.state_ranks.resize(load_data("Data/States.rxdata").size)for i in1..load_data("Data/States.rxdata").size class.state_ranks[i]=3end
learnings
É um array de classes RPG::Class::Learning e que guarda informações sobre os aprendizados de habilidades.
Será abordado na próxima seção.
Aprendendo habilidades
Algumas classes permitiriam que você aprendesse habilidades, não? É fácil fazer isso pelo RGSS. Para isso, use o código:
learning = RPG::Class::Learning.new learning.level =16# Nível para aprender a habilidade learning.skill_id =1# Habilidade aprendida no nívelclass.learnings << learning
Adicionando a Classe ao Banco de Dados
Para adicionar a classe ao banco de dados, siga o código:
class.id = $data_classes.size $data_classes <<class
Para salvar, use:
save_data($data_classes,"Data/Classes.rxdata")
Código Completo de Exemplo
class= RPG::Class.new class.name ="Membro"class.position =1# Meioclass.weapon_set =[1,2,3]# Espada de Treino, Espada Longa e Espada Drowclass.armor_set =[1,2,3,4]# As primeiras 4 armadurasclass.element_ranks.resize(load_data("Data/System.rxdata").elements.size)for i in1..load_data("Data/System.rxdata").elements.size class.element_ranks[i]=3endclass.state_ranks.resize(load_data("Data/States.rxdata").size)for i in1..load_data("Data/States.rxdata").size class.state_ranks[i]=3endclass.element_ranks[1]=6class.element_ranks[2]=1class.state_ranks[2]=6class.state_ranks[4]=4 learning = RPG::Class::Learning.new learning.level =16# Nível para aprender a habilidade learning.skill_id =1# Habilidade aprendida no nívelclass.learnings << learning class.id = $data_classes.size $data_classes <<class save_data($data_classes,"Data/Classes.rxdata")
Observação
Quando for testar o jogo e fizer modificações direto no arquivo de dados, para ver as modificações, feche o jogo sem salvar e reabra-o.
Conclusão
Nessa longa aula, lhes ensinei a criar heróis e classes. Na próxima, veremos algo que torna o nosso jogo mágico... as habilidades!
In het huidige digitale tijdperk is het succes van elk bedrijf sterk afhankelijk van zijn online aanwezigheid. Als webdesignbureau is het uw verantwoordelijkheid om niet alleen visueel verbluffende websites te maken, maar er ook voor te zorgen dat ze optimaal presteren. Dit is waar website optimalisatie om de hoek komt kijken. Websiteoptimalisatie is een ingewikkeld proces waarbij een holistische benadering wordt gevolgd om de prestaties van een website, de gebruikerservaring en de positie in zoekmachines te verbeteren. Door effectieve optimalisatiestrategieën te implementeren, kunt u garanderen dat de websites van uw klanten niet alleen meer bezoekers zullen aantrekken, maar hen ook zullen converteren in loyale klanten. In deze blogpost duiken we in de wereld van websiteoptimalisatie, waarbij we de belangrijkste technieken en tools onderzoeken die je moet gebruiken om uitzonderlijke resultaten te leveren. Dus als je klaar bent om je webdesignbureau naar een hoger niveau te tillen en je klanten gegarandeerde websiteoptimalisatie te bieden, lees dan verder. Website optimalisatie met garantie