Fórum RPG Maker Brasil  
Voltar   Fórum RPG Maker Brasil Ruby Game Scripting System Palestras e Aulas
Responder
 
Opções do Tópico Exibição
  #1 (permalink)  
Antigo 06-01-2009, 16:21
Avatar de João B
Novato
Pontos: 1,415, Nível: 5 Pontos: 1,415, Nível: 5 Pontos: 1,415, Nível: 5
Atividade: 0% Atividade: 0% Atividade: 0%
 
Data de Entrada: May 2008
Posts: 128
Reputação: 35
João B está se destacando por aqui
Enviar mensagem via MSN para João B
Modificando o Banco de Dados Dinamicamente com RGSS (RMXP) - Aula 7

Modificando o Banco de Dados Dinamicamente com RGSS (RMXP)
Aula 7 - Inimigos e Tropas

Introdução
Os inimigos infernizam a vida do herói, não? Ainda mais quando vêm com hordas de outros inimigos, certo? Nessa aula, lhes ensinarei a criar os inimigos e as tropas.

Os inimigos
Os inimigos são representados pelos RPG::Enemy e RPG::Enemy::Action.

Criando um RPG::Enemy
Para criar um RPG::Enemy:
Código:
enemy = RPG::Enemy.new
Para modificar as propriedades do inimigo, o código:
Código:
enemy.property = value
Vejamos as propriedades dos inimigos:

name
É o nome do inimigo.
Código:
enemy.name = "Flooder"
battler_name e battler_hue
Indicam o nome e a tonalidade do inimigo.
Código:
enemy.battler_name = "009-Lancer01"
enemy.battler_hue = 0
maxhp e maxsp
Indicam o HP e o SP máximos do inimigo.
Código:
enemy.maxhp = 2100
enemy.maxsp = 500
str, dex, agi, int, atk, pdef, mdef e eva
Indicam os parâmetros dio inimigo.
  • str é igual a Força
  • dex é igual a Destreza
  • agi é igual a Agilidade
  • int é igual a Magia
  • atk é igual a Ataque
  • pdef é igual a Defesa Física
  • mdef é igual a Defesa Mágica
  • eva é igual a Fuga
Código:
enemy.str = 97
enemy.dex = 94
enemy.agi = 91
enemy.int = 95
enemy.atk = 132
enemy.pdef = 109
enemy.mdef = 85
enemy.eva = 0
animation1_id e animation2_id
São as animações do inimigo. animation1_id indica a animação de inimigo ao atacar e animation2_id indica a animação do alvo do inimigo.
Código:
enemy.animation1_id = 0
enemy.animation2_id = 4
element_ranks e state_ranks
Indicam a resistência eos elementos e aos status.
Atenção: 1 = A, 2 = B, 3 = C, 4 = D, 5 = E e 6 = F.
Código:
enemy.element_ranks[1] = 2
enemy.state_ranks[2] = 4
Perigo:


actions
Esse array[ indica as ações do inimigo. Elas são representadas pela classe [b]RPG::Enemy::Action[b].
Veja as propriedades da RPG::Enemy::Action:
  • kind: Tipo da ação (0 = Básica, 1 = Habilidade).
  • basic: Ação básica, só tem efeito se kind for 0 (0 = Atacar, 1 = Defender, 2 = Fugir, 3 = Esperar).
  • skill_id: ID da habilidade, só tem efeito se kind for 1.
  • condition_turn_a e condition_turn_b (opcional): Se forem definidos, a ação poderá ocorrer no turno condition_turn_a + condition_turn_bX. Exemplo: Se condition_turn_a é igual a 1 e condition_turn_b é igual a 3, então o ataque irá acontecer nos turnos 1, 4, 7, 10, 13... até o fim da batalha. Se não for usar essa condição, não defina essas propriedades.
  • condition_hp: Se for definido, a ação poderá ocorrer se a porcentagem de HP do inimigo for igual or menor que condition_hp. Se não for usar essa condição, não defina essa propriedade.
  • condition_level: Se for definido, a ação poderá ocorrer se o nível médio da equipe for igual ou maior que condition_level. Se não for usar essa condição, não defina essa propriedade.
  • condition_switch_id: Se for definido, a ação poderá ocorrer se a switch condition_switch_id estiver ativada. Se não for usar essa condição, não defina essa propriedade.
  • rating: Frequência da ação. Isso é explicado no RPG Maker XP (de 1 a 10).
Código:
action = RPG::Enemy::Action.new
action.kind = 0 # Básica
action.basic = 2 # Fugir
action.condition_level = 50 # Nível 50
action.rating = 10 # Freqüência 10
enemy.actions << action
exp e gold
Indicam a experiência e o dinheiro dados pelo inimigo.
Código:
enemy.exp = 280
enemy.gold = 500
item_id, weapon_id, armor_id e treasure_prob
São informações do tesouro dado pelo inimigo. Você pode usar ou item_id, ou weapon_id, ou armor_id. Não pode usar dois ou três desses ao mesmo tempo. treasure_prob indica a chance do herói receber o tesouro (em %). Se o inimigo não deixar tesouro, não defina essas propriedades.
Código:
enemy.item_id = 2 # Super Poção
enemy.treasure_prob = 80 # %
Adicionando o Inimigo ao Banco de Dados
Para fazer isso, é simples:
Código:
enemy.id = $data_enemies.size
$data_enemies << enemy
Para salvar em arquivo:
Código:
save_data($data_enemies, "Data/Enemies.rxdata")
Código Completo de Exemplo
Código:
enemy = RPG::Enemy.new
enemy.name = "Flooder"
enemy.battler_name = "009-Lancer01"
enemy.battler_hue = 0
enemy.maxhp = 2100
enemy.maxsp = 500
enemy.str = 97
enemy.dex = 94
enemy.agi = 91
enemy.int = 95
enemy.atk = 132
enemy.pdef = 109
enemy.mdef = 85
enemy.eva = 0
enemy.animation1_id = 0
enemy.animation2_id = 4
class.element_ranks.resize(load_data("Data/System.rxdata").elements.size)
for i in 1..load_data("Data/System.rxdata").elements.size
  enemy.element_ranks[i] = 3
end
class.state_ranks.resize(load_data("Data/States.rxdata").size)
for i in 1..load_data("Data/States.rxdata").size
  enemy.state_ranks[i] = 3
end
enemy.element_ranks[1] = 2
enemy.state_ranks[2] = 4
action = RPG::Enemy::Action.new
action.kind = 0 # Básica
action.basic = 2 # Fugir
action.condition_level = 50 # Nível 50
action.rating = 10 # Freqüência 10
enemy.actions << action
enemy.exp = 280
enemy.gold = 500
enemy.item_id = 2 # Super Poção
enemy.treasure_prob = 80 # %
enemy.id = $data_enemies.size
$data_enemies << enemy
save_data($data_enemies, "Data/Enemies.rxdata")
As Tropas
As tropas infernizam ainda mais o herói. Afinal, tropas são hordas de inimigos. Elas são representadas pelas classes RPG::Troop, RPG::Troop::Member, RPG::Troop::Page e RPG::Troop::Page::Condition.

Criando uma Classe RPG::Troop
É simples:
Código:
troop = RPG::Troop
A classe RPG::Troop tem apenas três propriedades. São elas:

name
É o nome da tropa.
Código:
troop.name = "Fantasma"
Dica:


members
Esse array indica os membros da tropa, representados pela RPG::Troop::Member.
Veja as propriedades da RPG::Troop::Member:
  • enemy_id: ID do inimigo.
  • x e y: Coordenadas do inimigo.
  • hidden: Indica se o inimigo está escondido.
  • immortal: Indica se o inimigo é imortal.
Código:
member = RPG::Troop::Member.new
member.enemy_id = 1
member.x = 320
member.y = 304
member.hidden = false
member.immortal = false
troop.members << member
pages
Esse array representa as páginas de eventos das tropas. Isto será abordado em outra aula.

Adicionando a Tropa ao Banco de Dados
Use o código abaixo para adicionar a tropa:
Código:
troop.id = $data_troops.size
$data_troops << troop
Para salvar em arquivo:
Código:
save_data($data_troops, "Data/Troops.rxdata")
Código Completo de Exemplo
Código:
troop = RPG::Troop
member = RPG::Troop::Member.new
member.enemy_id = 1
member.x = 320
member.y = 304
member.hidden = false
member.immortal = false
troop.members << member
ids = {}
names = []
for en in troop.members
  if ids.has_key?(en.enemy_id)
    ids[en.enemy_id] += 1
  else
    ids[en.enemy_id] = 1
  end
end
for key in ids.keys
  name = $data_enemies[key].name
  name += "*" + ids[key] if ids[key] > 1
  names << name
end
first_time = true
troop.name = ""
for name in names
  troop.name += ", " unless first_time
  troop.name += name
end
troop.id = $data_troops.size
$data_troops << troop
save_data($data_troops, "Data/Troops.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 outra longa aula, eu lhes apresentei os inimigos e as tropas. Na próxima aula, lhes apresentarei os status! Até lá!

Última edição por João B; 06-02-2009 às 13:14.
Responder com Quote
Responder


Opções do Tópico
Exibição

Ir para...


Horários baseados na GMT -2. Agora são 13:16.

Powered by vBulletin
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.