O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Como importar determinados valores do banco de Dados - VX ACE

Iniciado por Lhu!, 02/02/2021 às 17:49

 Olá, Cidadãos do Centrão,

Eu queria importar certos valores do banco de dados em um projeto do VX Ace para uma variável. Importar um valor de um item ou uma habilidade para uma variável. O nome dela, precisão da habilidade, custo de MP... Deu pra entender...

Outra coisa muito útil pra mim também é gerenciar os itens que o Herói/Grupo possui, via script. Remoção e adição de itens, e principalmente armazenar quais itens o grupo tem em variáveis.

Precisa ser via script, obrigado.




Resolvido

Achei tudo na aba "Ajuda" da Engine. ' - '  Se não fecharem o tópico eu já já disponibilizo aqui.



Isto ajuda. Quanto aos valores específicos, olhe na documentação do programa (aperte F1) quais são os nomes e a estrutura. Não tenho como abrir pra olhar no momento, mas tem tudo explicadinho lá.

@Corvo

  Obrigado pela ajuda, Corvo.
  Essa lista vai me ajudar muito.  :ok:




Fiz uma lista rápida aqui em um bloco de notas pra mim e pra quem quiser ter acesso aos valores dos Itens e Habilidades. Não fiz a listagem do restante pois o conteúdo é extenso. Qualquer coisa consultem a "Ajuda" assim como o Corvo me sugeriu, acho que com isso, o pessoal mais novo vão entender o padrão da estrutura do valor.


Código: Lista
=================================================================
                             ITENS
=================================================================
    >>>> id = ID do item ou habilidade no Banco de Dados.
==================== Configurações Básicas ======================
 - Nome:
$data_items[id].name

- Descrição:
$data_items[id].description

- Tipo do Item:
$data_items[id].itype_id  # (Normal/ Coisas Importantes)

- Preço:
$data_items[id].price 

- Consumível
$data_items[id].consumable # O item é consumivel? (True/False)

- Área de Efeito
# 0: Nenhum
# 1: Um Inimigo
# 2: Todos os Inimigos
# 3: 1 Inimigo Aleatório
# 4: 2 Inimigos Aleatórios
# 5: 3 Inimigos Aleatórios
# 6: 4 Inimigos Aleatórios
# 7: Um Único Aliado
# 8: Todos os Aliados
# 9: Aliado Único Nocauteado
# 10: Todos os Aliados nocauteados
# 11: Usuário

$data_items[id].scope 

- Usável em:

# 0: sempre
# 1: Apenas batalha
# 2: Menu apenas
# 3: Não disponível

$data_items[id].occasion 

==================== Operação ======================

- Velocidade
$data_items[id].speed

- Precisão
$data_items[id].success_rate 

- Acertos
$data_items[id].repeats 

- Ganhos de TP
$data_items[id].tp_gain 

- Tipo de Ataque
# 0 : Normal
# 1 : Físico
# 2 : Mágico
$data_items[id].hit_type

- Animação
$data_items[id].animation_id # ID da Habilidade

==================== Dano ======================

- Típo
$data_items[id].damage.type 

- Elementos
# ID do elemento
# -1: Ataque Normal
# 0: Nenhum
# 
$data_items[id].damage.element_id 


- Fórmula de Cálculo do Dano
$data_items[id].damage.formula 

- Variação
$data_items[id].damage.variance 

- Crítico
$data_items[id].damage.critical      # True/False

    ---

# none? - Determina se o tipo de dano é Nenhum. Retorna "True" 
quando o valor do tipo de dano  é 0.
$data_items[id].damage.none? 


# to_hp? - Determine se isso afeta a HP. Retorna "True" 
quando o Valor do tipo de dano é 1, 3 ou 5.
$data_items[id].damage.to_hp? 


# to_mp? - Determina se isso afeta o MP. Retorna "True" 
quando o valor do tipo de dano é 2, 4 ou 6.
$data_items[id].damage.to_mp? 


# recover? - Verifica se o item recupera/regenera ou não. Retorna 
"True" quando o valor do tipo de dano  é 3 ou 4.
$data_items[id].damage.recover?


# drain? - Verifica se tem o efeito absorção ou não. Retorna "True" 
quando o valor do tipo de dano é 5 ou 6.
$data_items[id].damage.drain?

# sign - Sinal de dano. Retorna -1 para recuperação/regeneração e 1 caso contrário.
$data_items[id].damage.sing


# eval(a,b,v) - # Não sei o que faz.
$data_items[id].damage.eval(a,b,v)


==================== Efeitos ao Usar ======================

$data_items[id].effects 

==================== Notas ======================

$data_items[id].note

=================================================================
                             Habilidades
=================================================================

==================== Configurações Básicas ======================

 - Nome:
$data_skills[id].name

- Descrição:
$data_skills[id].description

- Tipo de Habilidade:
$data_skills[id].stype_id  # Id do Tipo de Habilidade (0 = Nenhum)

- Custo de MP
$data_skills[id].mp_cost 

- Custo de TP
$data_skills[id].tp_cost 


- Área de Efeito
# 0: Nenhum
# 1: Um Inimigo
# 2: Todos os Inimigos
# 3: 1 Inimigo Aleatório
# 4: 2 Inimigos Aleatórios
# 5: 3 Inimigos Aleatórios
# 6: 4 Inimigos Aleatórios
# 7: Um Único Aliado
# 8: Todos os Aliados
# 9: Aliado Único Nocauteado
# 10: Todos os Aliados nocauteados
# 11: Usuário

$data_skills[id].scope 

- Usável em:

# 0: sempre
# 1: Apenas batalha
# 2: Menu apenas
# 3: Não disponível

$data_skills[id].occasion 

==================== Operação ======================

- Velocidade
$data_skills[id].speed

- Precisão
$data_skills[id].success_rate 

- Acertos
$data_skills[id].repeats 

- Ganhos de TP
$data_skills[id].tp_gain 

- Tipo de Ataque
# 0 : Normal
# 1 : Físico
# 2 : Mágico

$data_skills[id].hit_type 

- Animação
$data_skills[id].animation_id     # ID da Habilidade

==================== Mensagem de Ação ======================

- Parte 1 da mensagem:
$data_skills[id].message1

- Parte 2 da mensagem:
$data_skills[id].message2

==================== Requerimentos de Arma ======================

- Arma Tipo 1:
$data_skills[id].required_wtype_id1    # ID do Tipo de Arma

- Arma Tipo 2:
$data_skills[id].required_wtype_id2   # ID do Tipo de Arma


==================== Dano ======================

- Típo
$data_skills[id].damage.type 

- Elementos
# ID do elemento
# -1: Ataque Normal
# 0: Nenhum
# 
$data_skills[id].damage.element_id 


- Fórmula de Cálculo do Dano
$data_skills[id].damage.formula 

- Variação
$data_skills[id].damage.variance 

- Crítico
$data_skills[id].damage.critical      # True/False

    ---

# none? - Determina se o tipo de dano é Nenhum. Retorna "True" 
quando o valor do tipo de dano  é 0.
$data_skills[id].damage.none? 


# to_hp? - Determine se isso afeta a HP. Retorna "True" 
quando o Valor do tipo de dano é 1, 3 ou 5.
$data_skills[id].damage.to_hp? 


# to_mp? - Determina se isso afeta o MP. Retorna "True" 
quando o valor do tipo de dano é 2, 4 ou 6.
$data_skills[id].damage.to_mp? 


# recover? - Verifica se o item recupera/regenera ou não. Retorna 
"True" quando o valor do tipo de dano  é 3 ou 4.
$data_skills[id].damage.recover?


# drain? - Verifica se tem o efeito absorção ou não. Retorna "True" 
quando o valor do tipo de dano é 5 ou 6.
$data_skills[id].damage.drain?

# sign - Sinal de dano. Retorna -1 para recuperação/regeneração e 1 caso contrário.
$data_skills[id].damage.sing


# eval(a,b,v) - # Não sei o que faz.
$data_skills[id].damage.eval(a,b,v)


==================== Efeitos ao Usar ======================

$data_skills[id].effects 

==================== Notas ======================

$data_skills[id].note


Infelizmente eu não achei nada sobre o que o herói/equipe carrega(m) no momento do jogo. Eu posso resolver isso armazenando ou removendo variáveis que representam a ID do item ou habilidade em uma Array.

Edit:
Mais abaixo, no "capitulo" Player Equipment vi algo se referindo à isto.

Por causa deste pedaço:
0 = weapon, 1 = shield, 2 = headgear, 3 = body-gear (armor), 4 = accessory
(...)
right_hand = $game_actors[actor_id].equips[0]
left_hand = $game_actors[actor_id].equips[1]


Eu só tenho até o RmXP, depois deste só o MV, mas no XP me lembro que seria assim:

Arma:
$game_actors[actor_id].weapon_id


Escudo:
$game_actors[actor_id].armor1_id


Armadura:
$game_actors[actor_id].armor2_id


Elmo:
$game_actors[actor_id].armor3_id


Acessório
$game_actors[actor_id].armor4_id


Mas provavelmente estou errando algum ponto da questão das peças da armadura.

Então seguindo a mesma lógica, deve estar correto pra VX/ACE.

@Crixus

Eae, men! É bom te ver por aqui.

Acho que pode ser:

$data_actors[id].equips[id]





Já na questão do armazenamento do inventário da equipe, ela basicamente fica em $game_party e eu procurando no lugar errado. --'
Dando uma analisada eu consigo fazer o que quero.

Obrigado pela ajuda, pessoal.  :ok:

Eu achei que $data_actors[id] puxava do banco de dados e não do tempo real do jogo, sendo os equipamentos iniciais do personagem ao entrar no grupo.

Agora estou fora de casa longe do Rpg Maker, eu fiz o teste com o Rpg Maker XP hoje cedo:
print("Arma:",$game_actors[1].weapon_id,
" - Escudo:",$game_actors[1].armor1_id,
" - Armadura:",$game_actors[1].armor2_id,
" - Elmo:",$game_actors[1].armor3_id,
" - Acessório:",$game_actors[1].armor4_id)


Resultado:
Arma:1 - Escudo:1 - Armadura:1 - Elmo:25 - Acessório:13

Removi alguns equipamentos durante o jogo e os mesmos retornaram o valor 0, confirmando que não está equipado.

Então por teoria no VXAce seria está, invertendo apenas o elmo com a armadura, eu acho:
print("Arma:",$game_actors[1].equip[0],
" - Escudo:",$game_actors[1].equip[1],
" - Elmo:",$game_actors[1].equip[2],
" - Armadura:",$game_actors[1].equip[3],
" - Acessório:",$game_actors[1].equip[4])


Ou seria $game_party.actors[id]?

Observação: Não sei se print é igual no VX/Ace, imagino que tenha um console semelhante ao F12 de Navegadores.

@Crixus

Sim, sim! Verdade. Na hora não saquei que os comandos de " $data_xxx " importam os dados iniciais do jogo. Obrigado por deixar isso claro aqui.

Tentei montar o comando consultando os scripts, mas eu estava imprimindo o alvo errado, pois estava montando assim:
$game_actors[id].equips[0]

Depois de um tempo assando a cuca, percebi que o depurador tava imprimindo aparentemente o código inteiro da arma do banco de dados, então decidi completar com a def "id" no final do comando e deu certo.

Então a estrutura correta do comando seria:

" $game_actors[id].equips[0].id"


Fico muito feliz por eu ter percebido isso, isso me ajudou a resolver uma questão com um sistema do meu projeto.

Então agradeço muito pela força, Crixus.

Eu quem agradeço pelo feedback, eu estava bem curioso pra saber se tinha funcionado.