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

Edit and Test

Iniciado por Geraldo de Rívia, 12/04/2013 às 10:27

12/04/2013 às 10:27 Última edição: 20/01/2017 às 09:31 por King Gerar
Edit and Test
por Tsukihime

Este script permite que você teste e edite seu projeto ao mesmo tempo. Você também pode recarregar as alterações feitas no editor sem ter que fechar e reiniciar o testplay. Isso deve tornar a depuração mais rápida e fácil.

Imagem
Clique na imagem para ver em tamanho normal
[img2 height=416]http://dl.dropbox.com/u/23043573/RPG%20Maker/Screenshot/testEdit1.jpg[/img2]
[close]

Script:
=begin
#===============================================================================
 Title: Test Edit
 Author: Tsukihime
 Date: Mar 9, 2013
--------------------------------------------------------------------------------
 ** Change log
 Mar 9, 2013
   - Initial release
--------------------------------------------------------------------------------   
 ** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Tsukihime in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
 This script allows you to edit your game while testplaying the project.
 You can also reload data by pressing a button.
 
 Currently you can only reload the map.
 
--------------------------------------------------------------------------------
 ** Usage
 
 Press F7 to reload the map.
 Any changes that were made in the editor and saved will be applied.
--------------------------------------------------------------------------------
 ** Credits
 
 Based on FenixFyreX's test & play for VX
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_TestEdit"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Test_Edit
    
    Reload_Map_Button = :F7
    Reload_All_Button = :F8
    
    Excluded_Files = []
#===============================================================================
# ** Rest of script
#===============================================================================    

    #---------------------------------------------------------------------------
    # Reload almost everything. Based on FenixFyre's reload code
    #---------------------------------------------------------------------------
    def self.reload_all
      for file in (Dir.entries("Data") - [".", "..", *Excluded_Files])
        next if (file.include?("Map"))
        basename = File.basename(file, ".*").downcase!
        next if (basename == "scripts")
        eval("$data_#{basename} = load_data('Data/#{file}')")
      end
    end
    
    def self.reload_map
      $game_map.editplay_reload_map if SceneManager.scene_is?(Scene_Map)
    end
  end
end

class Game_Map
  def editplay_reload_map
    setup(@map_id)
    $game_player.center($game_player.x, $game_player.y)
    @need_refresh = true
    SceneManager.scene.editplay_reload_map
  end
end

class Scene_Map < Scene_Base
  
  def editplay_reload_map
    @spriteset.refresh_characters
  end
end

module SceneManager
  class << self
    alias :th_editplay_run :run
  end
  
  #-----------------------------------------------------------------------------
  #-----------------------------------------------------------------------------
  def self.run
    attach_console
    th_editplay_run
  end
  
  #-----------------------------------------------------------------------------
  # You always want a console.
  #-----------------------------------------------------------------------------
  def self.attach_console
    # Get game window text
    console_w = Win32API.new('user32','GetForegroundWindow', 'V', 'L').call
    buf_len = Win32API.new('user32','GetWindowTextLength', 'L', 'I').call(console_w)
    str = ' ' * (buf_len + 1)
    Win32API.new('user32', 'GetWindowText', 'LPI', 'I').call(console_w , str, str.length)
    
    # Initiate console
    Win32API.new('kernel32.dll', 'AllocConsole', '', '').call
    Win32API.new('kernel32.dll', 'SetConsoleTitle', 'P', '').call('RGSS3 Console')
    $stdout.reopen('CONOUT$')
    
    # Sometimes pressing F12 will put the editor in focus first,
    # so we have to remove the program's name
    game_title = str.strip
    game_title.sub! ' - RPG Maker VX Ace', ''
    
    # Set game window to be foreground
    hwnd = Win32API.new('user32.dll', 'FindWindow', 'PP','N').call(0, game_title)
    Win32API.new('user32.dll', 'SetForegroundWindow', 'P', '').call(hwnd)
  end
end

module Input
  class << self
    alias :th_editplay_update :update
  end
  
  def self.update
    TH::Test_Edit.reload_map if press?(TH::Test_Edit::Reload_Map_Button)
    TH::Test_Edit.reload_all if press?(TH::Test_Edit::Reload_All_Button)
    th_editplay_update    
  end
end

#-------------------------------------------------------------------------------
# Dispose original testplay process, make a new one
#-------------------------------------------------------------------------------
if ($TEST || $DEBUG)
  Thread.new {
    system("Game.exe debug")
  }
  sleep(0.01)
  exit
end




Instruções de uso:
  • Coloque este script acima do Main.
  • Pressione F7 para recarregar o mapa. Você pode alterar este botão na configuração.
  • Pressione F8 para recarregar quase tudo.



Créditos:
  • Tsukihime, por criar o script.
  • Baseado no Test and Play de FenixFyreX (para VX).

Putz King, isso sem dúvidas é formidável. Muito bom editar e testar tudo ao mesmo tempo. Bom trabalho man.

Hum...
Realmente incrível...
+ Ouro

Parabéns 


Simplesmente incrível, Gerar. Com certeza usarei. xD

Uma dúvida, aquilo ali é um console de RGSS? Daria para editar os scripts em tempo real?

Obrigado por disponibilizar. ;]

Safety and peace, brother.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Citação de: Dias Anders online 13/04/2013 às 15:44
Simplesmente incrível, Gerar. Com certeza usarei. xD

Uma dúvida, aquilo ali é um console de RGSS? Daria para editar os scripts em tempo real?

Obrigado por disponibilizar. ;]

Safety and peace, brother.
Sim xD, o console vem no Ace já, mas está desativado por padrão, porém ele é meio especifico para scripters usarem :P, e não, não dá para editar os scripts em tempo real, infelizmente D:

Respondendo à galera...
É bem útil mesmo, ainda mais em testes longos ou que você
tem que posicionar algo muito bem, daí milhares de testes
não é lá muito animador.

E Dias, tá aí a resposta do Big R.
  :ok:

Se não serve para editar, pra quê serve? '-'

Safety and peace.
ALGUÉM FALOU EM JAIMES DESING?!

// -> cHEAT .exeKUTIVE OFF-ice ~~//


Não dá para editar os scripts em tempo real xD, os eventos, mapas, e database se não me engano, eles podem ser editados em tempo real :P com o script.

Não estou conseguindo usar o script.
Melhor dizendo, eu colei e na hora de testar, fiz a edição e apertei F7 / F8 mas nenhuma modificação que fiz apareceu no jogo.

Estou fazendo algo errado ?

Citação de: NetinhoMaker online 10/08/2013 às 02:51
Não estou conseguindo usar o script.
Melhor dizendo, eu colei e na hora de testar, fiz a edição e apertei F7 / F8 mas nenhuma modificação que fiz apareceu no jogo.

Estou fazendo algo errado ?

Netinho, você chegou a salvar o projeto antes de apertar F7/F8? Porque além das modificações, você precisa dar ctrl+s antes. Caso contrário, se não me engano, não funciona. xD

Vê se é isso aí. \o

Um grande abraço!

Kazuyashi.

Nossa, que vergonha  :noface:
Valeu Kazuyashi, me ajudou mais uma vez, toma um real :clown:

23/09/2013 às 17:46 #11 Última edição: 23/09/2013 às 17:48 por NetinhoMaker
Mil perdões pelo Double Post, mas é para tirar uma dúvida.
Como faço para usar o sistema de Direção e o de Região IN-GAME que está na Screen ?