<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5363999679499377237</id><updated>2011-11-27T22:46:47.112-02:00</updated><category term='TutorialRGSS12'/><category term='ScriptRGSS'/><category term='ProjetosRMXP'/><category term='ScriptRGSS2'/><category term='TutorialEventos'/><category term='ScriptRGSS12'/><category term='Novidades'/><title type='text'>Colméia do Zé</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-1261693973559564619</id><published>2011-06-12T19:43:00.000-03:00</published><updated>2011-06-12T19:43:29.165-03:00</updated><title type='text'>BLOG OFICIALMENTE FECHADO</title><content type='html'>É isso aí pessoal, o blog está oficialmente fechandoa as portas. Espero que o conteúdo tenha ajudado bastante gente e que continue ajudando, pois o blog continuará no ar, só não terá mais novidades: nada de posts, novo layout, etc, etc, etc. XD&lt;br /&gt;&lt;br /&gt;Abraços do "falecido" ZC. XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-1261693973559564619?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/1261693973559564619/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/06/blog-oficialmente-fechado.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1261693973559564619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1261693973559564619'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/06/blog-oficialmente-fechado.html' title='BLOG OFICIALMENTE FECHADO'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-5138295302149787405</id><published>2011-03-27T17:37:00.006-03:00</published><updated>2011-03-27T17:56:55.608-03:00</updated><title type='text'>Blog Aranha de Programa</title><content type='html'>Hoje o blog Aranha de Programa está abrindo as portas para os estudantes e entusiastas do mundo da eletrônica e da informática. Acessem:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aranhadeprograma.blogspot.com" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" width="80%" src="http://1.bp.blogspot.com/-z4r4S8sYWXE/TYWAOp_P42I/AAAAAAAAADU/wQY_MxiffuY/s1600/zcbanner2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://aranhadeprograma.blogspot.com/" &gt;http://aranhadeprograma.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Trata-se de um blog de dois estudantes formados em eletrônica e que resolveram compartilhar o conhecimento, divulgar suas capacidades profissionais e se aprimorarem nessas áreas enquanto escrevem.&lt;br /&gt;&lt;br /&gt;Os escritores são:&lt;br /&gt;&lt;br /&gt;Sidnei Pereira, formado como Técnico em Eletroeletrônica na escola ITB Brasílio Flores de azevedo, e estudante de Análise de Sistemas e Tecnologia da Informação na FATEC Carapicuíba.&lt;br /&gt;&lt;br /&gt;Marcus Vinicius, também formado como Técnico em Eletroeletrônica na escola ITB Brasílio Flores de azevedo.&lt;br /&gt;&lt;br /&gt;Ajude a divulgá-los:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aranhadeprograma.blogspot.com" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" src="http://i55.tinypic.com/qs15rk.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;textarea cols="30" rows="3"&gt;&lt;a href="http://www.aranhadeprograma.blogspot.com" target="_blank"&gt;&lt;br /&gt;&lt;img border="0" src="http://i55.tinypic.com/qs15rk.jpg" /&gt;&lt;/a&gt;&lt;/textarea&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-5138295302149787405?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/5138295302149787405/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/03/blog-aranha-de-programa.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/5138295302149787405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/5138295302149787405'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/03/blog-aranha-de-programa.html' title='Blog Aranha de Programa'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-z4r4S8sYWXE/TYWAOp_P42I/AAAAAAAAADU/wQY_MxiffuY/s72-c/zcbanner2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-121435867901174526</id><published>2011-02-04T15:28:00.009-02:00</published><updated>2011-02-08T15:07:13.166-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>RTP Extractor</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;RTP Extractor&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Extrai para o seu projeto os arquivos do RTP que estão em uso no projeto. Isso evita ter que copiar o RTP inteiro para o seu projeto na hora da criação do disco de jogo, ou que o jogador precise ter o RTP instalado para poder jogar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;Não sobre escreve arquivo de mesmo nome que exista na pasta do projeto.&lt;/li&gt;&lt;li type="disc"&gt;O processo é rápido e pode ser acompanhado por uma barra de progresso.&lt;/li&gt;&lt;li type="disc"&gt;Um arquivo(extract_log.txt) listando todos os arquivos copiados e seus respectivos tamanhos é gerado na pasta raiz do projeto.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong class="bbc"&gt;Histórico&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong class="bbc"&gt;04/02/2011 v1.0.0&lt;/strong&gt;&lt;br /&gt;- Lançado o script&lt;br /&gt;&lt;br /&gt;&lt;strong class="bbc"&gt;05/02/2011 v1.0.1&lt;/strong&gt;&lt;br /&gt;- Leitura do nome da DLL do projeto consertado&lt;br /&gt;- Bug quando há mais de dois comandos "mover evento" na mesma página consertado&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como Usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;cole acima de Main&lt;/li&gt;&lt;li type="disc"&gt;salve e execute o projeto&lt;/li&gt;&lt;li type="disc"&gt;espere o processo de extração terminar&lt;/li&gt;&lt;li type="disc"&gt;agora você já pode retirar o script do projeto&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;*O ideal é usá-lo antes de criar o disco de jogo, ou seja, quando o projeto estiver pronto para jogar, porque daí, teoricamente, nesse ponto o projeto não precisa mais ser alterado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#======================================================&lt;br /&gt;# RTP Extractor&lt;br /&gt;#------------------------------------------------------&lt;br /&gt;#version: 1.0.1&lt;br /&gt;#by:      zecomeia&lt;br /&gt;#date:    05/01/2011&lt;br /&gt;#for:     RGSS&lt;br /&gt;#credits and thanks:&lt;br /&gt;#- vgvgf (get path function from Aleworks Library)&lt;br /&gt;#- Farenheight (justname and extension File methods&lt;br /&gt;#[modified by me])&lt;br /&gt;#- Rafidelis (get RGSS dll name funcion)&lt;br /&gt;#- PLM (reported a bug)&lt;br /&gt;#------------------------------------------------------&lt;br /&gt;#more infos: http://colmeia-do-ze.co.cc&lt;br /&gt;#tags: RTP, Extractor, RGSS&lt;br /&gt;#------------------------------------------------------&lt;br /&gt;#how to use:&lt;br /&gt;#- paste above of Main script&lt;br /&gt;#- save and play the project&lt;br /&gt;#- wait exctraction end&lt;br /&gt;#- now you can remove the script from your project&lt;br /&gt;#&lt;br /&gt;#*in project root folder will be generated an extract&lt;br /&gt;#log(extract_log.txt) listing all files copied to the&lt;br /&gt;#project&lt;br /&gt;#==============http://colmeia-do-ze.co.cc==============&lt;br /&gt;&lt;br /&gt;class File&lt;br /&gt; &lt;br /&gt;  def self.ext(fname)&lt;br /&gt;    fname = basename(fname)&lt;br /&gt;    parts = fname.sub(/[^\.]*\./,'')&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def self.justname(fname)&lt;br /&gt;    basename(fname, "." + ext(fname))&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def self.fcopy(src, dest)&lt;br /&gt;    src = File.open(src, "rb")&lt;br /&gt;    dest = File.new(dest,"wb")&lt;br /&gt;    src.each_byte do |x|&lt;br /&gt;      dest.putc(x)&lt;br /&gt;    end&lt;br /&gt;    dest.close&lt;br /&gt;    src.close&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;fini = File.open('Game.ini', 'r')&lt;br /&gt;for line in fini.readlines&lt;br /&gt;  if line =~ /Library=/&lt;br /&gt;    GameDLL = File.justname($')&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;fini.close&lt;br /&gt;&lt;br /&gt;####vgvgf&lt;br /&gt;RGSSGetRTPPath = Win32API.new(GameDLL, 'RGSSGetRTPPath', 'L', 'L')&lt;br /&gt;RGSSGetPathWithRTP = Win32API.new(GameDLL, 'RGSSGetPathWithRTP', 'L', 'P')&lt;br /&gt;def get_rtp_path(rtp = 0)&lt;br /&gt;  RGSSGetPathWithRTP.call(RGSSGetRTPPath.call(rtp))&lt;br /&gt;end&lt;br /&gt;RGSSRTP_PATH = get_rtp_path(1)&lt;br /&gt;####&lt;br /&gt;&lt;br /&gt;module RTP_EXTRACTOR&lt;br /&gt;  Data_actors        = load_data("Data/Actors.rxdata")&lt;br /&gt;  Data_classes       = load_data("Data/Classes.rxdata")&lt;br /&gt;  Data_skills        = load_data("Data/Skills.rxdata")&lt;br /&gt;  Data_items         = load_data("Data/Items.rxdata")&lt;br /&gt;  Data_weapons       = load_data("Data/Weapons.rxdata")&lt;br /&gt;  Data_armors        = load_data("Data/Armors.rxdata")&lt;br /&gt;  Data_enemies       = load_data("Data/Enemies.rxdata")&lt;br /&gt;  Data_troops        = load_data("Data/Troops.rxdata")&lt;br /&gt;  Data_states        = load_data("Data/States.rxdata")&lt;br /&gt;  Data_animations    = load_data("Data/Animations.rxdata")&lt;br /&gt;  Data_tilesets      = load_data("Data/Tilesets.rxdata")&lt;br /&gt;  Data_common_events = load_data("Data/CommonEvents.rxdata")&lt;br /&gt;  Data_system        = load_data("Data/System.rxdata")&lt;br /&gt;  Data_mapinfos      = load_data("Data/MapInfos.rxdata")&lt;br /&gt;&lt;br /&gt;  #Coisa de Preguiçoso XD&lt;br /&gt;  ls = []&lt;br /&gt;  Dir.foreach(RGSSRTP_PATH + "\\Graphics") { |x| ls.push(x) }&lt;br /&gt;  ls.delete('.')&lt;br /&gt;  ls.delete('..')&lt;br /&gt;  ls.each do |x|&lt;br /&gt;    str_eval = "#{x} = RGSSRTP_PATH + \"\\\\Graphics\\\\#{x}\""&lt;br /&gt;    eval(str_eval)&lt;br /&gt;  end&lt;br /&gt;  ls = []&lt;br /&gt;  Dir.foreach(RGSSRTP_PATH + "\\Audio") { |x| ls.push(x) }&lt;br /&gt;  ls.delete('.')&lt;br /&gt;  ls.delete('..')&lt;br /&gt;  ls.each do |x|&lt;br /&gt;    str_eval = "#{x} = RGSSRTP_PATH + \"\\\\Audio\\\\#{x}\""&lt;br /&gt;    eval(str_eval)&lt;br /&gt;  end&lt;br /&gt;  #Coisa de preguiçoso END&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class RTP_Extractor&lt;br /&gt; &lt;br /&gt;  include RTP_EXTRACTOR&lt;br /&gt; &lt;br /&gt;  attr_reader :files_size&lt;br /&gt;  attr_reader :list&lt;br /&gt; &lt;br /&gt;  def initialize()&lt;br /&gt;    @files_size = 0&lt;br /&gt;    @list = []&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #list files in a folder&lt;br /&gt;  #if ext = true the file extension print together&lt;br /&gt;  def list_files(dir,ext=true)&lt;br /&gt;    ls = []&lt;br /&gt;    Dir.foreach(dir) {|x| ls.push(x) }&lt;br /&gt;    ls.delete('.')&lt;br /&gt;    ls.delete('..')&lt;br /&gt;    if ext&lt;br /&gt;      return(ls)&lt;br /&gt;    else&lt;br /&gt;      ls_noext = []&lt;br /&gt;      ls.each { |x| ls_noext.push(File.justname(x)) }&lt;br /&gt;      return(ls_noext)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def map_events(map, file_list, command, move_command=[], parameter_204_0=false)&lt;br /&gt;    code = command[0]&lt;br /&gt;    parameter = command[1]&lt;br /&gt;    misc_name = command[2]&lt;br /&gt;    str_eval = "command.parameters\[#{parameter}\]#{misc_name}"&lt;br /&gt;    unless move_command.empty?&lt;br /&gt;      move_code = move_command[0]&lt;br /&gt;      move_parameter = move_command[1]&lt;br /&gt;      move_misc_name = move_command[2]&lt;br /&gt;      move_str_eval = "mv_command.parameters\[#{move_parameter}\]#{move_misc_name}"&lt;br /&gt;    end&lt;br /&gt;    for event in map.events&lt;br /&gt;      for page in event[1].pages&lt;br /&gt;        if page.move_type == 3&lt;br /&gt;          for pre_mv_command in page.move_route.list&lt;br /&gt;            if pre_mv_command.code == move_code and !move_command.empty?&lt;br /&gt;              fname = eval("pre_"+move_str_eval)&lt;br /&gt;              unless file_list.include?(fname)&lt;br /&gt;                file_list.push(fname)&lt;br /&gt;              end&lt;br /&gt;            end&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;        for command in page.list&lt;br /&gt;          if command.code == 204&lt;br /&gt;            if command.parameters[0] == parameter_204_0&lt;br /&gt;              fname = eval(str_eval)&lt;br /&gt;              unless file_list.include?(fname)&lt;br /&gt;                file_list.push(fname)&lt;br /&gt;              end&lt;br /&gt;            end&lt;br /&gt;          elsif command.code == 209 and !move_command.empty?&lt;br /&gt;            for mv_command in command.parameters[1].list&lt;br /&gt;              if mv_command.code == move_code&lt;br /&gt;                fname = eval(move_str_eval)&lt;br /&gt;                unless file_list.include?(fname)&lt;br /&gt;                  file_list.push(fname)&lt;br /&gt;                end&lt;br /&gt;              end&lt;br /&gt;            end&lt;br /&gt;          elsif command.code == code&lt;br /&gt;            fname = eval(str_eval)&lt;br /&gt;            unless file_list.include?(fname)&lt;br /&gt;              file_list.push(fname)&lt;br /&gt;            end&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def commons_events(file_list, command, move_command=[], parameter_204_0=false)&lt;br /&gt;    code = command[0]&lt;br /&gt;    parameter = command[1]&lt;br /&gt;    misc_name = command[2]&lt;br /&gt;    str_eval = "command.parameters\[#{parameter}\]#{misc_name}"&lt;br /&gt;    unless move_command.empty?&lt;br /&gt;      move_code = move_command[0]&lt;br /&gt;      move_parameter = move_command[1]&lt;br /&gt;      move_misc_name = move_command[2]&lt;br /&gt;      move_str_eval = "mv_command.parameters\[#{move_parameter}\]#{move_misc_name}"&lt;br /&gt;    end&lt;br /&gt;    for command in Data_common_events[1].list     &lt;br /&gt;      if command.code == 204&lt;br /&gt;        if command.parameters[0] == parameter_204_0&lt;br /&gt;          fname = eval(str_eval)&lt;br /&gt;          unless file_list.include?(fname)&lt;br /&gt;            file_list.push(fname)&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      elsif command.code == 209 and !move_command.empty?&lt;br /&gt;        for mv_command in command.parameters[1].list&lt;br /&gt;          if mv_command.code == move_code&lt;br /&gt;            fname = eval(move_str_eval)&lt;br /&gt;            unless file_list.include?(fname)&lt;br /&gt;              file_list.push(fname)&lt;br /&gt;            end&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      elsif command.code == code&lt;br /&gt;        fname = eval(str_eval)&lt;br /&gt;        unless file_list.include?(fname)&lt;br /&gt;          file_list.push(fname)&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def troops_events(file_list, command, move_command=[], parameter_204_0=false)&lt;br /&gt;    code = command[0]&lt;br /&gt;    parameter = command[1]&lt;br /&gt;    misc_name = command[2]&lt;br /&gt;    str_eval = "command.parameters\[#{parameter}\]#{misc_name}"&lt;br /&gt;    unless move_command.empty?&lt;br /&gt;      move_code = move_command[0]&lt;br /&gt;      move_parameter = move_command[1]&lt;br /&gt;      move_misc_name = move_command[2]&lt;br /&gt;      move_str_eval = "mv_command.parameters\[#{move_parameter}\]#{move_misc_name}"&lt;br /&gt;    end&lt;br /&gt;    for troop in Data_troops&lt;br /&gt;      next if troop.nil?&lt;br /&gt;      for page in troop.pages&lt;br /&gt;        for command in page.list&lt;br /&gt;          if command.code == 204&lt;br /&gt;            if command.parameters[0] == parameter_204_0&lt;br /&gt;              fname = eval(str_eval)&lt;br /&gt;              unless file_list.include?(fname)&lt;br /&gt;                file_list.push(fname)&lt;br /&gt;              end&lt;br /&gt;            end&lt;br /&gt;          elsif command.code == 209 and !move_command.empty?&lt;br /&gt;            for mv_command in command.parameters[1].list&lt;br /&gt;              if mv_command.code == move_code&lt;br /&gt;                fname = eval(move_str_eval)&lt;br /&gt;                unless file_list.include?(fname)&lt;br /&gt;                  file_list.push(fname)&lt;br /&gt;                end&lt;br /&gt;              end&lt;br /&gt;            end&lt;br /&gt;          elsif command.code == code&lt;br /&gt;            fname = eval(str_eval)&lt;br /&gt;            unless file_list.include?(fname)&lt;br /&gt;              file_list.push(fname)&lt;br /&gt;            end&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def push_in(file_list, data, misc_name)&lt;br /&gt;    for d in data&lt;br /&gt;      next if d.nil?&lt;br /&gt;      fname = eval("d#{misc_name}")&lt;br /&gt;      unless file_list.include?(fname)&lt;br /&gt;        file_list.push(fname)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #add to general file list&lt;br /&gt;  def add2list(file_list, folder_in_path)&lt;br /&gt;    ls = list_files(folder_in_path)&lt;br /&gt;    ls_noext = list_files(folder_in_path, false)&lt;br /&gt;    for name in file_list&lt;br /&gt;      if ls_noext.include?(name)&lt;br /&gt;        file_name = ls[ls_noext.index(name)]&lt;br /&gt;        file = folder_in_path + "\\#{file_name}"&lt;br /&gt;        @list.push(file)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;   &lt;br /&gt;  #prepare the list os files to extract&lt;br /&gt;  def extract_list()&lt;br /&gt;     #######&lt;br /&gt;    # AUDIO #&lt;br /&gt;     #######&lt;br /&gt;     &lt;br /&gt;    #############################################&lt;br /&gt;    #BGMs&lt;br /&gt;   &lt;br /&gt;    bgms = []   &lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      bgms.push(map.bgm.name)&lt;br /&gt;      map_events(map, bgms, [132, 0, '.name'])&lt;br /&gt;      map_events(map, bgms, [241, 0, '.name'])&lt;br /&gt;    end&lt;br /&gt;    commons_events(bgms, [132, 0, '.name'])&lt;br /&gt;    commons_events(bgms, [241, 0, '.name'])&lt;br /&gt;    troops_events(bgms, [132, 0, '.name'])&lt;br /&gt;    troops_events(bgms, [241, 0, '.name'])&lt;br /&gt;    bgms.push(Data_system.title_bgm.name)&lt;br /&gt;    bgms.push(Data_system.battle_bgm.name)&lt;br /&gt;    add2list(bgms, BGM)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #BGSs&lt;br /&gt;   &lt;br /&gt;    bgss = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      bgss.push(map.bgs.name)&lt;br /&gt;      map_events(map, bgss, [245, 0, '.name'])&lt;br /&gt;    end&lt;br /&gt;    commons_events(bgss, [245, 0, '.name'])&lt;br /&gt;    troops_events(bgss, [245, 0, '.name'])   &lt;br /&gt;    add2list(bgss, BGS)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #MEs&lt;br /&gt;   &lt;br /&gt;    mes = []   &lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      map_events(map, mes, [133, 0, '.name'])&lt;br /&gt;      map_events(map, mes, [249, 0, '.name'])&lt;br /&gt;    end&lt;br /&gt;    commons_events(mes, [133, 0, '.name'])&lt;br /&gt;    commons_events(mes, [249, 0, '.name'])&lt;br /&gt;    troops_events(mes, [133, 0, '.name'])&lt;br /&gt;    troops_events(mes, [249, 0, '.name'])&lt;br /&gt;    mes.push(Data_system.battle_end_me.name)&lt;br /&gt;    mes.push(Data_system.gameover_me.name)&lt;br /&gt;    add2list(mes, ME)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #SEs&lt;br /&gt;   &lt;br /&gt;    ses = []&lt;br /&gt;    push_in(ses, Data_items, ".menu_se.name")&lt;br /&gt;    push_in(ses, Data_skills, ".menu_se.name")&lt;br /&gt;    animations = Data_animations&lt;br /&gt;    for i in 1...animations.size     &lt;br /&gt;      for j in 0...animations[i].timings.size&lt;br /&gt;        unless ses.include?(animations[i].timings[j].se.name)&lt;br /&gt;          ses.push(animations[i].timings[j].se.name)&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end   &lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      map_events(map, ses, [250, 0, '.name'], [44, 0, '.name'])&lt;br /&gt;    end&lt;br /&gt;    commons_events(ses, [250, 0, '.name'], [44, 0, '.name'])&lt;br /&gt;    troops_events(ses, [250, 0, '.name'], [44, 0, '.name'])&lt;br /&gt;    ses.push(Data_system.cursor_se.name)&lt;br /&gt;    ses.push(Data_system.decision_se.name)&lt;br /&gt;    ses.push(Data_system.cancel_se.name)&lt;br /&gt;    ses.push(Data_system.buzzer_se.name)&lt;br /&gt;    ses.push(Data_system.equip_se.name)&lt;br /&gt;    ses.push(Data_system.shop_se.name)&lt;br /&gt;    ses.push(Data_system.save_se.name)&lt;br /&gt;    ses.push(Data_system.load_se.name)&lt;br /&gt;    ses.push(Data_system.battle_start_se.name)&lt;br /&gt;    ses.push(Data_system.escape_se.name)&lt;br /&gt;    ses.push(Data_system.actor_collapse_se.name)&lt;br /&gt;    ses.push(Data_system.enemy_collapse_se.name)&lt;br /&gt;    add2list(ses, SE)&lt;br /&gt;&lt;br /&gt;     ##########&lt;br /&gt;    # GRAPHICS #&lt;br /&gt;     ##########&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Animations&lt;br /&gt;   &lt;br /&gt;    animations_names = []&lt;br /&gt;    push_in(animations_names, Data_animations, ".animation_name")&lt;br /&gt;    add2list(animations_names, Animations)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Autotiles&lt;br /&gt;   &lt;br /&gt;    autotiles_names = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      tileset = Data_tilesets[map.tileset_id]&lt;br /&gt;      push_in(autotiles_names, tileset.autotile_names , "")&lt;br /&gt;    end&lt;br /&gt;    add2list(autotiles_names, Autotiles)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Battlebacks&lt;br /&gt;   &lt;br /&gt;    battlebacks_names = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      tileset = Data_tilesets[map.tileset_id]&lt;br /&gt;      unless battlebacks_names.include?(tileset.battleback_name)&lt;br /&gt;        battlebacks_names.push(tileset.battleback_name)&lt;br /&gt;      end&lt;br /&gt;      map_events(map, battlebacks_names, [204, 1, ''], [], 2)&lt;br /&gt;    end&lt;br /&gt;    commons_events(battlebacks_names, [204, 1, ''], [], 2)&lt;br /&gt;    troops_events(battlebacks_names, [204, 1, ''], [], 2)&lt;br /&gt;    add2list(battlebacks_names, Battlebacks)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Battlers&lt;br /&gt;   &lt;br /&gt;    battlers = []   &lt;br /&gt;    push_in(battlers, Data_actors, ".battler_name")&lt;br /&gt;    push_in(battlers, Data_enemies, ".battler_name")&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      map_events(map, battlers, [322, 3, ''])&lt;br /&gt;    end&lt;br /&gt;    commons_events(battlers, [322, 3, ''])&lt;br /&gt;    troops_events(battlers, [322, 3, ''])&lt;br /&gt;    add2list(battlers, Battlers)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Characters&lt;br /&gt;   &lt;br /&gt;    characters = []&lt;br /&gt;    push_in(characters, Data_actors, ".character_name")&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      for event in map.events&lt;br /&gt;        for page in event[1].pages&lt;br /&gt;          unless characters.include?(page.graphic.character_name)&lt;br /&gt;            characters.push(page.graphic.character_name)&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      map_events(map, characters, [322, 1, ''], [41, 0, ''])&lt;br /&gt;    end&lt;br /&gt;    commons_events(characters, [322, 1, ''], [41, 0, ''])&lt;br /&gt;    troops_events(characters, [322, 1, ''], [41, 0, ''])&lt;br /&gt;    add2list(characters, Characters)&lt;br /&gt;&lt;br /&gt;    #############################################&lt;br /&gt;    #Fogs&lt;br /&gt;   &lt;br /&gt;    fogs_names = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      tileset = Data_tilesets[map.tileset_id]&lt;br /&gt;      unless fogs_names.include?(tileset.fog_name)&lt;br /&gt;        fogs_names.push(tileset.fog_name)&lt;br /&gt;      end&lt;br /&gt;      map_events(map, fogs_names, [204, 1, ''], [], 1)&lt;br /&gt;    end&lt;br /&gt;    commons_events(fogs_names, [204, 1, ''], [], 1)&lt;br /&gt;    troops_events(fogs_names, [204, 1, ''], [], 1)&lt;br /&gt;    add2list(fogs_names, Fogs)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Gameovers&lt;br /&gt;   &lt;br /&gt;    gameover = [Data_system.gameover_name]&lt;br /&gt;    add2list(gameover, Gameovers)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Icons&lt;br /&gt;   &lt;br /&gt;    icons = []&lt;br /&gt;    push_in(icons, Data_skills, ".icon_name")&lt;br /&gt;    push_in(icons, Data_items, ".icon_name")&lt;br /&gt;    push_in(icons, Data_weapons, ".icon_name")&lt;br /&gt;    push_in(icons, Data_armors, ".icon_name")&lt;br /&gt;    add2list(icons, Icons)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Panoramas&lt;br /&gt;   &lt;br /&gt;    panoramas_names = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      tileset = Data_tilesets[map.tileset_id]&lt;br /&gt;      unless panoramas_names.include?(tileset.panorama_name)&lt;br /&gt;        panoramas_names.push(tileset.panorama_name)&lt;br /&gt;      end&lt;br /&gt;      map_events(map, panoramas_names, [204, 1, ''], [], 0)&lt;br /&gt;    end&lt;br /&gt;    commons_events(panoramas_names, [204, 1, ''], [], 0)&lt;br /&gt;    troops_events(panoramas_names, [204, 1, ''], [], 0)&lt;br /&gt;    add2list(panoramas_names, Panoramas)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Tilesets&lt;br /&gt;   &lt;br /&gt;    tilesets_names = []&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      tileset = Data_tilesets[map.tileset_id]&lt;br /&gt;      unless tilesets_names.include?(tileset.tileset_name)&lt;br /&gt;        tilesets_names.push(tileset.tileset_name)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    add2list(tilesets_names, Tilesets)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Titles&lt;br /&gt;   &lt;br /&gt;    title = [Data_system.title_name]&lt;br /&gt;    add2list(title, Titles)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Transitions&lt;br /&gt;   &lt;br /&gt;    transitions = []&lt;br /&gt;    transitions.push(Data_system.battle_transition)&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      map_events(map, transitions, [222, 0, ''])&lt;br /&gt;    end&lt;br /&gt;    commons_events(transitions, [222, 0, ''])&lt;br /&gt;    troops_events(transitions, [222, 0, ''])&lt;br /&gt;    add2list(transitions, Transitions)&lt;br /&gt;   &lt;br /&gt;    #############################################&lt;br /&gt;    #Windowskins&lt;br /&gt;   &lt;br /&gt;    windowskins = []&lt;br /&gt;    windowskins.push(Data_system.windowskin_name)&lt;br /&gt;    for i in 1..Data_mapinfos.size&lt;br /&gt;      map = load_data(sprintf("Data/Map%03d.rxdata", i))&lt;br /&gt;      map_events(map, windowskins, [131, 0, ''])&lt;br /&gt;    end&lt;br /&gt;    commons_events(windowskins, [131, 0, ''])&lt;br /&gt;    troops_events(windowskins, [131, 0, ''])&lt;br /&gt;    add2list(windowskins, Windowskins)&lt;br /&gt;   &lt;br /&gt;    #delete match file between RTP and project&lt;br /&gt;    #calculate the list data size&lt;br /&gt;    for i in 0...@list.size&lt;br /&gt;      dest = @list[i].dup&lt;br /&gt;      dest.sub!("#{RGSSRTP_PATH}",'')&lt;br /&gt;      if FileTest.exist?( ".#{dest}" )&lt;br /&gt;        @list[i] = nil&lt;br /&gt;      else       &lt;br /&gt;        @files_size += FileTest.size(@list[i])&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    #delete nil, empty and repeated from list&lt;br /&gt;    @list.delete('')&lt;br /&gt;    @list.compact!&lt;br /&gt;    @list.uniq!&lt;br /&gt;   &lt;br /&gt;    return @list&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class Window_Progress &lt; Window_Base&lt;br /&gt; &lt;br /&gt;  def initialize(total_files_size)&lt;br /&gt;    super(320-125, 240-60, 250, 110)&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;        self.contents.font.name = 'Arial'&lt;br /&gt;    self.contents.font.size = 20&lt;br /&gt;    self.opacity = 0&lt;br /&gt;    @total_files_size = total_files_size&lt;br /&gt;    refresh()&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def refresh(progress_string='', progress_files_size=0)&lt;br /&gt;    return if @total_files_size == 0&lt;br /&gt;    self.contents.clear&lt;br /&gt;    self.contents.draw_text(4, 15, 220, 24, progress_string)&lt;br /&gt;    self.contents.fill_rect(5,0,202,10,Color.new(200,200,200,200))&lt;br /&gt;    self.contents.fill_rect(6,1,progress_files_size*200/@total_files_size,8,Color.new(0,0,200,200))&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;rtp_extract = RTP_Extractor.new&lt;br /&gt;print 'start'&lt;br /&gt;flist = rtp_extract.extract_list()&lt;br /&gt;total_files_size = rtp_extract.files_size&lt;br /&gt;progress_files_size = 0&lt;br /&gt;$game_system = load_data("Data/System.rxdata")&lt;br /&gt;window_progress = Window_Progress.new(total_files_size)&lt;br /&gt;$game_system = nil&lt;br /&gt;n_files = 0&lt;br /&gt;flog = File.new('extract_log.txt', 'a')&lt;br /&gt;flog.puts('start...')&lt;br /&gt;for src in flist&lt;br /&gt;  dest = src.dup&lt;br /&gt;  progress_string = 'copying ' + File.basename(dest)&lt;br /&gt;  file_size = FileTest.size(dest)&lt;br /&gt;  dest.sub!("#{RGSSRTP_PATH}",'')&lt;br /&gt;  next if FileTest.exist?( ".#{dest}" )&lt;br /&gt;  progress_files_size += file_size&lt;br /&gt;  n_files += 1 &lt;br /&gt;  window_progress.refresh(progress_string, progress_files_size)&lt;br /&gt;  Graphics.update()&lt;br /&gt;  File.fcopy(src, ".#{dest}" )&lt;br /&gt;  str_log = ".#{dest} #{progress_files_size/1000} KB"&lt;br /&gt;  flog.puts(str_log)&lt;br /&gt;end&lt;br /&gt;str_log = n_files.to_s+" files\n"+(progress_files_size/1000000).to_s+' MB('+(progress_files_size/1000).to_s+" KB)"&lt;br /&gt;flog.puts(str_log)&lt;br /&gt;flog.close&lt;br /&gt;window_progress.dispose&lt;br /&gt;print str_log&lt;br /&gt;exit(0)&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;Feito por zecomeia&lt;/i&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;vgvgf pela função para obter o path do RTP(retirado de seu script Aleworks Library)&lt;/i&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;Farenheight pelos métodos #justname e #extension(editei) da classe File&lt;/i&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;aos criadores do RMTool(programa que faz algo do tipo no RM2k) pela ideia&lt;/i&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;Rafidelis pelo código melhorado para obter o nome da dll do jogo&lt;/i&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;PLM por repotar bugs.&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-121435867901174526?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/121435867901174526/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/02/rtp-extractor.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/121435867901174526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/121435867901174526'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/02/rtp-extractor.html' title='RTP Extractor'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-2306717188517140408</id><published>2011-01-11T13:27:00.002-02:00</published><updated>2011-02-04T14:52:28.192-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialRGSS12'/><title type='text'>Usando o BMP writer num processor paralelo</title><content type='html'>BMP writer é um script que criei com a função de escrever imagens do tipo BMP true color de 24 bits a partir do objeto Bitmap do RGSS. Mais detalhes visite:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.colmeia-do-ze.co.cc/2010/11/bmp-writer-por-zecomeia-introducao.html" target="blank"&gt;BMP writer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O script não utliza bibliotecas externas. Foi escrito totalmente em Ruby baseando-se no objeto Bitmap usado em RGSS/2. Mesmo sendo feito para ter um bom desempenho com relação ao tempo de escrita de arquivo, para empregá-lo em jogos o tempo de escrita pode acabar sendo longo. Por exemplo, em uma máquina com Core 2 Duo o script levou 2 segundos para gravar um bitmap de 640x480, o que parece rápidos, mas pode ser um incmodo no meio de um jogo.&lt;br /&gt;&lt;br /&gt;Então resolvi usar o metodo de escrita em um processo paralelo para não ocorrer aquela pausa no jogo enquanto a gravação do arquivo está em andamento. O problema é que leva mais tempo para o arquivo ser salvo(seguindo mesmo exemplo anterior, levou 1 minuto e meio para a gravação), isso significa que não é possível visualizar/utilizar o arquivo gerao enquanto não terminar essa gravação, e também caso o jogo seja fechado antes do término o arquivo fica corrompido.&lt;br /&gt;&lt;br /&gt;Para criar nosso processo paralelo usaremos uma Thread. Basicamente uma thread é um bloco de código que é executado em paralelo com o programa principal. A técnica não é muito complicada nem ocupa muito espaço. Primeiro vamos carregar um Bitmap para usar na gravação:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;data_system        = load_data("Data/System.rxdata")&lt;br /&gt;aBitmap_obj = RPG::Cache.title(data_system.title_name)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As linhas acima irão carregar a imagem de título na variável aBitmap_obj.&lt;br /&gt;&lt;br /&gt;Agora vamos à Thread:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;thread_bmp = Thread.new(aBitmap_obj) do&lt;br /&gt;begin&lt;br /&gt;file = File.new('image.bmp','wb')&lt;br /&gt;file.bmp_write(aBitmap_obj)&lt;br /&gt;file.close&lt;br /&gt;rescue&lt;br /&gt;print 'Erro ao gravar um bitmap'&lt;br /&gt;end&lt;br /&gt;end&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;a linha:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;thread_bmp = Thread.new(aBitmap_obj) do&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Cria nossa Thread. Observe que já passamos como argumentoda Thread o Bitmap que criamos antes. O "do" define o nosso bloco de código que termina no último "end".&lt;br /&gt;&lt;br /&gt;O "begin" é um outro bloco que criei dentro da threadsó para poder usar o tratamentos de exceções(erros) da clausula "rescue". Isso porque quando ocorre um erro dentro da Thread o Game.exe fecha sem nem um aviso. Então se acontecer algum erro na Thread o que está entre o recue e o end será executado. No exemplo só cooquei uma mensagem, o que não é muito correto, porque se aconteceu algum erro a thread para mas o programa continua sem tratar do problema.&lt;br /&gt;&lt;br /&gt;Entre o begin e o rescue deve entrar aquelas três linhas que já usavamos para gravar o arquivo antes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;file = File.new('image.bmp','wb')&lt;br /&gt;file.bmp_write(aBitmap_obj)&lt;br /&gt;file.close&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Abre o arquivo para leitura, escreve o BMP no arquivo e fecha o arquivo quando terminar a escrita.&lt;br /&gt;&lt;br /&gt;Basicamente é isso. Teste a técnica e qualquer dúvida fique a vontade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-2306717188517140408?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/2306717188517140408/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/usando-o-bmp-writer-num-processor.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2306717188517140408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2306717188517140408'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/usando-o-bmp-writer-num-processor.html' title='Usando o BMP writer num processor paralelo'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4942192606779505596</id><published>2011-01-07T09:11:00.001-02:00</published><updated>2011-01-07T09:15:11.903-02:00</updated><title type='text'>Rubular - Editor de expresões regulares para Ruby</title><content type='html'>O &lt;b&gt;Rubular&lt;/b&gt; é um editor de expressões regulares para ruby. Simples e prático, com ele fica muito mais fácil e rápido na hora de estudar e trabalhar as RegExp.&lt;br /&gt;O programa funciona na própria página do site, então não precisa baixar nada. Basta escrever a RegExp no campo reservado, adicionar alguma opção à ela caso necessite e então escrever alguma coisa no campo chamado "test string". Esse campo último campo servirá para testar sua RegExp, o programa irá procurar ocorrências do padrão e se encontrar irá destacar as partes do texto que batem.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/%20http://rubular.com/"&gt;&lt;br /&gt;http://rubular.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4942192606779505596?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4942192606779505596/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/rubular-editor-de-expresoes-regulares.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4942192606779505596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4942192606779505596'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/rubular-editor-de-expresoes-regulares.html' title='Rubular - Editor de expresões regulares para Ruby'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-3249404042266617465</id><published>2011-01-06T09:51:00.001-02:00</published><updated>2011-01-07T09:06:21.459-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Forjada Pelo Dragão - Atualização</title><content type='html'>Depois de um tempo trabalhando no projeto, estamos trazendo um pouco do nosso trabalho para atualizar que nos acompanha. O Forjada deu uma turbinada com a equipe toda trabalhando com mais empolgação. Esperamos que gostem das atualizações e que se preparem porque Fevereiro já vem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a class="bbc_link new_win" href="http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao.html" &gt;&lt;img alt="" border="0" class="bbc_img" src="http://img843.imageshack.us/img843/1240/logoforjada.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao.html" &gt;Forjada Pelo Dragão&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-3249404042266617465?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/3249404042266617465/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao-atualizacao.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3249404042266617465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3249404042266617465'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao-atualizacao.html' title='Forjada Pelo Dragão - Atualização'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-7878869653225566965</id><published>2011-01-02T20:58:00.001-02:00</published><updated>2011-01-03T16:09:59.098-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Selo Kreativ blogger</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_V3iYFJvJmvE/S61cbT_joHI/AAAAAAAAAtk/xenwKMxkOQ4/s1600/premio1.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_V3iYFJvJmvE/S61cbT_joHI/AAAAAAAAAtk/xenwKMxkOQ4/s320/premio1.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Isso já é notícia antiga mas não divulgada, então antes tarde do que nunca. Fui indicado ao Selo Kreativ blogger pelo querido amigo Crazy Nero do blog &lt;a href="http://crazynerostudio.blogspot.com/" target='blank'&gt;Crazy Nero Studio&lt;/a&gt;.&lt;br /&gt;Existem algumas regrinhas para os ganhadores do selo, e elas são:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Trebuchet MS',Trebuchet,Verdana,sans-serif; font-size: 13px; line-height: 14px;"&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;*Copiar o logo do premio em seu blog.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;*Por o link da pessoa que indicou o premio.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;*Dizer 7 coisas interessantes sobre ti.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;*Dar a outros 7 bloggers criativos, por o link de seus blogs.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #666666;"&gt;*Avisar ao indicados sobre o premio no seus blogs.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Então...&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;/span&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="apple-style-span"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;b&gt;Sete coisas interessantes sobre mim:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #cccccc; font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1- Minha área é eletrônica;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2- Pretendo iniciar em um curso de jogos digiais na faculdade;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;3- Eu não gosto do personagem Zé Colméia;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;4- Eu não gosto de mel;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;5- Adoro judô;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;6- Pretendo montar um SNES portátil ainda esse ano;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'lucida grande';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;7- "Nunca julgue um livro pela capa"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;Indico:&lt;br /&gt;&lt;br /&gt;Blog sensacional de um policial nerd e "photoshopeiro" do BOPE:&lt;br /&gt;&lt;a href="http://www.mataleonebr.blogspot.com/"&gt;Mataleone&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Humor criativo e non-sense. Adoro perder meu tempo lendo as crônicas desses excêntricos escritores:&lt;br /&gt;&lt;a href="http://www.contosdebar.com/"&gt;Contos de Bar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Skate, bike, música e tudo mais que curto sempre encontrei com esse cara:&lt;br /&gt;&lt;a href="http://magrelusblog.blogspot.com/"&gt;Magrelus&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nerds ou não, esses "pecadores" expoem coisas interessantes e as vezes engraçadas em seu blog:&lt;br /&gt;&lt;a href="http://os-setes.blogspot.com/"&gt;The Seven&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Blog de uma grande professora e mestra em história que sabe cativar seus alunos e não se limita a sala de aula:&lt;br /&gt;&lt;a href="http://documentoshistoricosnasaladeaula.blogspot.com/"&gt;Documentos Históricos na Sala de Aula&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Blog do amigão akime que vem se empenhando muito com os scripts e fazendo a alegria dos makers:&lt;br /&gt;&lt;a href="http://ateliercross.6te.net/"&gt;Atelier Cross&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Apesar de não curtir muito o gênero do blog adimito que tem tudo pra dar certo, simples, bonito, bem cuidado e amplo em suas "futícias":&lt;br /&gt;&lt;a href="http://thisisreallyfail.blogspot.com/"&gt;This is #Fail&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No começo achei que nã conseguiria completar a lista de 7 blogs, mas agora vejo que falto espaço pra minha lista(vagabundo que só vive em blogs XD).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-7878869653225566965?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/7878869653225566965/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/selo-kreativ-blogger.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7878869653225566965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7878869653225566965'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/selo-kreativ-blogger.html' title='Selo Kreativ blogger'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_V3iYFJvJmvE/S61cbT_joHI/AAAAAAAAAtk/xenwKMxkOQ4/s72-c/premio1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-2233151404288451337</id><published>2011-01-02T17:53:00.017-02:00</published><updated>2011-01-06T09:54:57.809-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ProjetosRMXP'/><title type='text'>Forjada Pelo Dragão</title><content type='html'>&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/9338/equipeq.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div align="center"&gt;&lt;img alt="Projeto do mês de junho - SRM" border="0" class="bbc_img" src="http://img718.imageshack.us/img718/1773/2010junho.png" /&gt;&lt;img alt="Projeto do mês de dezembro - Dungeons maker" border="0" class="bbc_img" src="http://img135.imageshack.us/img135/5686/2010dezembro.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Ficha Técnica&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Nome do Projeto:&lt;/b&gt; Forjada Pelo Dragão&lt;br /&gt;&lt;b&gt;Engine:&lt;/b&gt; RPG Maker XP&lt;br /&gt;&lt;b&gt;Criador:&lt;/b&gt; Equipe MasterBee Games&lt;br /&gt;&lt;b&gt;Versão:&lt;/b&gt; 0.1&lt;br /&gt;&lt;b&gt;Data de Ínicio:&lt;/b&gt; Início de 2009&lt;br /&gt;&lt;b&gt;Data de Término Demo:&lt;/b&gt; Previsão para Fevereiro de 2011&lt;br /&gt;&lt;b&gt;Data de Término Full Version:&lt;/b&gt; Sem previsão&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Ultimas Atualizações&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;i&gt;05/01/2011&lt;/i&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Projeto do mês Dungeons Maker.&lt;/li&gt;&lt;li&gt;Reforma no design do tópico.&lt;/li&gt;&lt;li&gt;Reforma nos textos do tópico.&lt;/li&gt;&lt;li&gt;Novas screens.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Outras Matérias&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://pt-br.makerpedia.wikia.com/wiki/Forjada_Pelo_Drag%C3%A3o" target="_blank"&gt;Matéria na RPG Maker Wiki&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.reinorpg.com/forum/index.php?topic=16197.msg151021#msg151021" target="_blank"&gt;Tópico na Reino RPG&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.mundorpgmaker.com/forum/index.php?topic=20199.msg169350#msg169350" target="_blank"&gt;Tópico na Mundo RPG Maker&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.acavernadodragao.com.br/forum/index.php/topic,2348.msg29237/topicseen.html#msg29237" target="_blank"&gt;Tópico na Caverna do Dragão&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.dungeonmakers.com.br/forum/index.php?topic=5140.msg50731;topicseen#msg50731" target="_blank"&gt;Tópico na Dungeons Makers&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://rapidshare.com/#%21download%7C949l36%7C439567989%7CLivro_Maker_-_Cap._2_-_Forjada_Pelo_Drag__o.doc%7C169" target="_blank"&gt;Livro Maker: Cap. 02 - Forjada pelo Dragão&lt;/a&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;b&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Introdução&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img843.imageshack.us/img843/1240/logoforjada.png" /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Um  jovem bastante incomum, viveu excluído pelos habitantes de sua aldeia.  Contudo, ao descobrir uma espada, sua vida mudaria para sempre.&lt;br /&gt;&amp;nbsp;Tales estava destinado a se tornar um Coletor de Almas.&lt;br /&gt;&amp;nbsp;Novos amigos surgirão em sua vida, uma incrível jornada surtirá em grandes rivais.&lt;br /&gt;&amp;nbsp;Desvende os mistérios da espada forjada pelo dragão e escute seu nome ser cantado atrávez dos tempos no mundo de Mirounir.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img827.imageshack.us/img827/4504/aequipe.png" /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;A equipe sofreu várias mudanças, muitas desfraguimentações, mas alguns de nós ainda &lt;br /&gt;estamos únidos para terminar o projeto:&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Jeff MasterBee -&lt;/b&gt; Game Level Design;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Vifibi -&lt;/b&gt; Roteirista;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Sakami -&lt;/b&gt; Ilustrador;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Requiem -&lt;/b&gt; Ilustrador;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Zé Coméia -&lt;/b&gt; Scripter;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Nader -&lt;/b&gt; Pixel Art; &lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Luko -&lt;/b&gt; Pixel Art;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;b&gt;Alangato -&lt;/b&gt; Sonoplasta.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://i64.servimg.com/u/f64/12/54/07/30/mapa_m10.jpg" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img135.imageshack.us/img135/8286/aguerra.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Em toda Era, existe um evento que a define para sempre nos anais da  história, marcando-a de tal forma que a Era seguinte se molda em sua  experiência passada até que atinja seu próprio evento. Tal é o caminho  da humanidade, tal é o caminho da vida.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Há muitas eras passadas,  uma raça anciã de Dragões reinava suprema sobre todas as outras  espécies. Em seus primórdios, os reinados eram marcados por justiça,  bondade, ternura. Mas como tudo que é mortal, aquilo havia de acabar.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img339.imageshack.us/img339/8066/dragofoda.png" /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Os  Reis-Dragões tornaram-se cruéis e mesquinhos, escravizando a raça  humana, outrora seus valorosos aliados. Durante incontáveis éons,&amp;nbsp; todas  as raças não passavam de servos, sem direito à fala, ou à própria vida.  Mas como tudo que é mortal, aquilo também havia de acabar.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Uma  rebelião, tão cheia com o inflamado ódio e desejo por liberdade humano  que seu poder abalou os próprios alicerces do mundo. Um entre todos, um  capitão escravo chamado Luthel Kir, liderou os exércitos improvisados  contra seus antigos opressores, atingindo vitória com um esplendor  jamais visto novamente após seu tempo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Os Dragões Mestres,  deixados sem escolha, renunciaram seu trono esculpido em ouro, um  símbolo até hoje abolido pelos humanos. Porém, antes de partir, membros  mais luminosos da raça Draconiana forjaram um pacto com o novo rei,  Luthel. Forjá-lo-iam uma arma capaz dos poderes dracônicos, em troca de  um lugar para viverem em paz no Novo Reino.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;A espada, capaz de  ganhar força com cada inimigo derrotado, fora denominada “Kirin Loren”  por Luthel, que a brandiu em batalha até sua morte. O nome significava  na língua recém-criada para o novo reino “Protetor do Povo”.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img830.imageshack.us/img830/9907/espada.png" /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Éons  se passaram, e a espada, outrora abençoada e regida pela família real,  fora perdida ao tempo e ao esquecimento. Os dragões luminosos tomaram  formas humanas, e passaram a viver entre humanos, sem nunca revelar sua  verdadeira identidade — muitos recém-nascidos nem sabiam que eram  dragões. A paz, que foi instituída pelo sangue e pela espada, perdurou  durante muito tempo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;No entanto, tudo que é mortal, há de  acabar. Os reis humanos seguiram os antigos mestres Dragões, tornando-se  tiranos em sua hipócrita canção de liberdade. Matavam quando queriam,  mudavam as leis como desejavam, e aquele que ousasse levantar a voz era  imediatamente punido. O mesmo sangue que trouxe à raça sabedoria e  liberdade, trouxe-lhe o fim de tudo pelo que haviam lutado.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Mas  longe do punho tirânico de reis tolos e hedonistas, outras comunidades  floresciam com suas próprias instituições, suas próprias leis e  liberdades. Uma raça em particular, os Tílios, moravam em harmonia com a  terra, cultivando e plantando com toda a felicidade que um poderia ter  de uma vida bucólica.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img692.imageshack.us/img692/3566/70128098.png" /&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Mas  um garoto, no entanto, era diferente. Um garoto sofria. Um garoto que  não podia levantar a voz, não podia argumentar por liberdade, ou mesmo  chorar sem punição. Seu nome é Tales. Esse garoto, não é um Tílio  qualquer.&lt;/div&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img710.imageshack.us/img710/6838/omundo.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img192.imageshack.us/img192/1434/mapamirounir.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img402.imageshack.us/img402/2002/mapaminiatura.png" /&gt;&lt;/a&gt;&lt;a class="bbc_link new_win" href="http://i64.servimg.com/u/f64/12/54/07/30/mapa_m10.jpg" target="_blank"&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;&lt;b&gt;Montanhas Onagard -&lt;/b&gt; Lar dos extintos dragões, raramente alguém sobe as &lt;br /&gt;montanhas, já que em tempos atuais sem os dragões o local virou morada &lt;br /&gt;de monstros terríveis.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pântano Runnes -&lt;/b&gt; Neste local a terra é podre e cheira a morte, habitada &lt;br /&gt;por criaturas nojentas e extremamente venenosas, este é um local que &lt;br /&gt;muitos evitam, e os poucos que o encara geralmente não conseguem sair.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Vila dos Tilios -&lt;/b&gt; Seu paradeiro para todos os humanos é desconhecido, &lt;br /&gt;quando os tilios foram expulsos de Kirin Zhun, arrumaram um lar nas &lt;br /&gt;florestas, este local é muito bem camuflado, e sempre passado por &lt;br /&gt;despercebido a qualquer explorador.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Floresta Agnil -&lt;/b&gt; Lar dos animais e um local onde muitos se perdem com &lt;br /&gt;facilidade, A Floresta Agnil sempre foi a maior fonte de madeira para &lt;br /&gt;Mirounir, sendo explorada pela vila de Agnil.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Agnil -&lt;/b&gt; Em Agnil vivem os melhores construtores de pontes e grandes &lt;br /&gt;construções em madeira, também é o local onde mais se encontra caçadores.&lt;br /&gt;&amp;nbsp;Agnil é uma vila que gosta de manter tradição a seus costumes, e raramente &lt;br /&gt;fazem acordos com Kirin Zhun.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ponte Agnil -&lt;/b&gt; Local protegido pelos grandes protetores de Agnil, eles possuem &lt;br /&gt;permição para não deixar ninguém passar pela ponte, sem autorização dos &lt;br /&gt;superiores de Agnil.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ollding -&lt;/b&gt; Morada dos tritões, seres aquáticos que possuem grandes habilidades &lt;br /&gt;na arte da transformação e magia, sendo o reino mais belo e predominado pela &lt;br /&gt;magia.&lt;br /&gt;&amp;nbsp;O rei deste local é o Tritão Enzo, fundador do palácio, e criador de centenas &lt;br /&gt;de magias.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Templo Taliod - &lt;/b&gt;Taliod foi um dos grandes reis de Mirounir, era o grande &lt;br /&gt;senhor das feras, quando morreu construiram um templo a qual seu corpo foi &lt;br /&gt;guardado e permanece até os tempos atuais.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Kirin Zhun -&lt;/b&gt; O reino mais poderoso de Mirounir, é comandado pelo rei Kriziun, &lt;br /&gt;lar dos humanos, e local de grande poder ofensivo, onde existe centenas de &lt;br /&gt;tropas prontas para proteger Kriziundor e seu rei, neste lugar a presença de &lt;br /&gt;feras foi proibida, é um local de grandes torneios que são realizados de &lt;br /&gt;ano em ano, única oportunidade de feras e outras criaturas do mundo de conhecer &lt;br /&gt;a grande cidade.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cavera Onagard -&lt;/b&gt;&amp;nbsp; Uma caverna que da acesso direto ao centro das montanhas, não &lt;br /&gt;se sabê muito deste local, mas se sabê que habita várias criaturas perigosas.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Torre Agna -&lt;/b&gt; Esta torre esta no meio de um deserto, é a maior defesa de Agna, &lt;br /&gt;sendo que dá visão de todas terras de mirounir, sendo perfeita para ver grandes &lt;br /&gt;batalhões e futuros problemas a Agna.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Agna -&lt;/b&gt; Agna é a líder deste local, irmã gemea de Agnil, ela conseguiu &lt;br /&gt;todo o poder da grande cidade quando traiu sua familia e expulsou seu irmão do &lt;br /&gt;titulo de rei.&lt;br /&gt;&amp;nbsp;Agna é um local de grande poder e que sempre apoia os feitos de Kirin Zhun, &lt;br /&gt;em Agna, vivem os sábios, humanos que foram capazes de dominar a magia e &lt;br /&gt;aprenderam a arte da vida eterna.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ruggvar -&lt;/b&gt; Lar dos Anões, existe um grande palácio e grandes contruções neste &lt;br /&gt;local, mas a maior parte da habitação deste local, esta no subterraneo. Todas as &lt;br /&gt;grandes contruções em pedra, ferro ou barro, são feitas pelos Anões de Ruggvar.&lt;br /&gt;&amp;nbsp;O rei deste local é desconhecido por todos, embora seja de conhecimento de todos &lt;br /&gt;que Ruggvar possui um grande lider.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ilha Perdida -&lt;/b&gt; No meio mar de Mirounir, existe uma ilha, a qual poucos chegaram a vê-la, &lt;br /&gt;dizem que nas proximidades deste local, mora um monstro que impede que qualquer chegue &lt;br /&gt;perto o bastante da ilha. Os bardos cantam a existência de grandes tesouros, por isto muitos &lt;br /&gt;naviões partem até este destino, uma pena nunca ninguém conseguir a encontrar.&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img89.imageshack.us/img89/7492/asraas.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;No mundo de Mirounir, existem diversas raças de seres que trazem a estas terras &lt;br /&gt;um grande ciclo de vida, sendo cada espécie importante para um equilíbrio natural, dentre tantos &lt;br /&gt;seres, alguns são de extrema importância no decorrer desta aventura, dentre as clássicas raças estão &lt;br /&gt;presentes os:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Humanos –&lt;/b&gt; Possuem corpos frágeis, e necessitam de auxilio de armas para combater inimigos; &lt;br /&gt;Os humanos vivem em grandes colônias, a quais são chamadas de Comunidades, estas comunidades de &lt;br /&gt;humanos concentram-se em 3 grandes cidades Agna, Agnil e grande fortaleza de Kirin Zhun.&lt;br /&gt;&amp;nbsp;Os humanos possuem grande habilidade em manuseio de ferramentas, e são responsáveis pelas grandes &lt;br /&gt;construções no mundo de Mirounir.&lt;br /&gt;&amp;nbsp;O grande senhor dos humanos esta sempre atrás da grande fortaleza do reino Kirin Zhun, seu nome é &lt;br /&gt;Krizium herdeiro do trono de Lhutel fundador da grande Fortaleza.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Anões –&lt;/b&gt; Os anões são pequenos e não muito ágeis, porém são seres de incrível força em seus &lt;br /&gt;braços; Os anos são mineradores desde pequenos, quase todos anões crescem e viram mineradores; Embora &lt;br /&gt;sejam tão habilidosos quanto os humanos em relação as ferramentas, eles também &lt;br /&gt;construíram grandes monumentos, porém todos estes monumentos são construídos dentro de Ruggvar &lt;br /&gt;reino dos anões e nunca fora dele.&lt;br /&gt;&amp;nbsp;Existe uma lei no reino de Ruggvar, nenhum anão pode sair de dentro do reino, e nenhum ser que &lt;br /&gt;pertence a outra raça pode entrar em Ruggvar sem ser convidado pelo Senhor Anão.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dragões –&lt;/b&gt; Dragões no mundo Mirounir, são vulgarmente chamados pelos humanos de Serpentes do &lt;br /&gt;Vulcão, estas poderosas criaturas sempre foram respeitadas e tratadas como Deuses, até Lhutel assumir &lt;br /&gt;o posto de &lt;br /&gt;rei dos homens e banir os dragões do trono escupido em ouro.&lt;br /&gt;&amp;nbsp;Com uma guerra que durou décadas, esta poderosa raça foi extinta de Mirounir, e isto trouxe grandes &lt;br /&gt;conseqüências ao ciclo natural.&lt;br /&gt;&amp;nbsp;Os dragões sempre foram devotos a um único líder, o mestre dragão Onagard, este dragão representou &lt;br /&gt;o início da espécie em Mirounir, e sua morte representou o fim dos dragões no mundo.&lt;br /&gt;&amp;nbsp;Uma  grande lenda conta que um dragão filho de Onagard, nasceu com maldade  em seu coração, plantando &lt;br /&gt;o mal em sua espécie e aprisionando seu  próprio pai, colocando os humanos a escravidão.&lt;br /&gt;&amp;nbsp;Antes do fim dessa espécie, as Montanhas eram dominadas por eles, e até hoje as montanhas são &lt;br /&gt;conhecidas como o lar dos dragões, foram denominadas então de Montanhas Onagard.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tritões –&lt;/b&gt; seres submarinos, são especialistas na arte da alquimia, porém são seres &lt;br /&gt;extremamente pacíficos e raramente são vistos longe de Ollding o templo do oceano, Existem rumores &lt;br /&gt;de que nos mares de Mirounir exista uma ilha fantasma, onde os humanos e tritões compartilham os &lt;br /&gt;segredos da magia, com isto se prova a existência dos humanos habilidosos em magias, também &lt;br /&gt;conhecidos como Magos.&lt;br /&gt;&amp;nbsp;Os tritões possuem um rei, mas não são seres de regras, porém os Tritões são capazes de prever as&lt;br /&gt;conseqüências de seus atos, portanto um tritão nunca faz uma escolha não sábia e estão sempre&lt;br /&gt;ajudando uns aos outros, para que o ciclo natural dos mares seja sempre preservado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mortos-vivos –&lt;/b&gt; Existe um local em Mirounir chamado de Pântano Runnes, seu nome se deve a&lt;br /&gt;maldição lançada nesta parte do mundo por um antigo sábio, conhecido como Runnes, graças a maldição&lt;br /&gt;de Runnes, a terra neste local apodreceu, e toda vida que neste local se perder terá seu espírito&lt;br /&gt;mantido preso nestas terras e se tornará um morto-vivo.&lt;br /&gt;&amp;nbsp;Os mortos-vivos variam em sua aparência, porém todos possuem o mesmo extinto, todos são seres&lt;br /&gt;violentos e carentes de amigos, porém a única maneira de se tornar amigo de um morto-vivo e ser&lt;br /&gt;um morto-vivo, isto explica o porque dos mortos-vivos atacarem visitantes no pântano, tudo que eles&lt;br /&gt;desejam é dividir seu lar com novos companheiros.&lt;br /&gt;&lt;br /&gt;Porém no mundo de Mirounir, existe uma raça bem diferente das que já estamos acostumados, uma raça&lt;br /&gt;que desapareu dos olhos dos outros seres de Mirounir, uma raça chamada Tílios.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tílios -&lt;/b&gt; Uma raça de humanos não muito comum foi julgada e rejeitada pelos homens pela&lt;br /&gt;aparência esquisita e por seus atos insuportáveis, expulsa do reino de Kirin Zhun há muito tempo, esta&lt;br /&gt;raça foi viver escondida em meio às florestas.&lt;br /&gt;&amp;nbsp;Tilios foram denominados, pois lembravam os Tilitios, pequenos gnomos de cabelos vermelhos.&lt;br /&gt;&amp;nbsp;Os tílios são criaturas curiosas para os outros seres no mundo de Mironir, vivem a fazer travessuras,&lt;br /&gt;é da natureza de todo Tilio ser travesso, e mesmos velhos e pais de família continuam a fazer suas&lt;br /&gt;travessuras, embora sejam travessos são medrosos e pacíficos. Os Tílios tem uma aparência engraçada,&lt;br /&gt;são pequenos e nascem com os cabelos avermelhados, grossas sobrancelhas escuras, pele branca e olhos&lt;br /&gt;cor de ameixa.&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img153.imageshack.us/img153/911/osherois.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img alt="" border="0" class="bbc_img" src="http://i64.servimg.com/u/f64/12/54/07/30/tales10.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Nome:&lt;/b&gt; Tales;&lt;br /&gt;&lt;b&gt;Idade:&lt;/b&gt; 14 anos;&lt;br /&gt;&lt;b&gt;Classe:&lt;/b&gt; Mestre das Feras;&lt;br /&gt;&lt;b&gt;Habilidades Principais:&lt;/b&gt; Coletar a alma do monstro a qual derrotar;&lt;br /&gt;&lt;b&gt;Características:&lt;/b&gt; Cabelos Verdes, Olhos Negros, na cabeça um chifre;&lt;br /&gt;&lt;b&gt;Raça:&lt;/b&gt; Tílio;&lt;br /&gt;&lt;b&gt;Relatório do Personagem: &lt;/b&gt; Tales é um pequeno e diferente tílio será o protagonista do projeto, &lt;br /&gt;portador  da espada forjada pelo dragão, sempre foi rejeitado pela sua vila, e  com a espada em suas mãos, deseja se tornar um grande guerreiro e poder  levar sua raça de volta ao mundo, sem precisarem se esconder, com isto,  Tales pretende ser respeitado por todos em sua vila, conseguindo o afeto  que nunca teve por ninguém.&lt;br /&gt;&lt;b&gt;O Protagonista sempre precisa de algo mais...&amp;nbsp; &amp;nbsp;&lt;img alt=":SRM 75:" border="0" class="smiley" src="http://www.santuariorpgmaker.com/forum/Smileys/santuario/Armina-%2875%29.gif" title="la" /&gt;&lt;/b&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img19.imageshack.us/img19/7083/15545278.png" target="_blank"&gt;Clique aqui!!!&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://rekkiem.deviantart.com/art/Tales-Forjada-pelo-Dragao-186645576" target="_blank"&gt;Clique aqui!!!&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img alt="" border="0" class="bbc_img" src="http://i64.servimg.com/u/f64/12/54/07/30/dragan10.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Nome:&lt;/b&gt; Dragano;&lt;br /&gt;&lt;b&gt;Idade:&lt;/b&gt; Aparentemente um menino de 14 anos;&lt;br /&gt;&lt;b&gt;Classe:&lt;/b&gt; Discípulo do Dragão;&lt;br /&gt;&lt;b&gt;Habilidades Principais:&lt;/b&gt; Baforar fogo;&lt;br /&gt;&lt;b&gt;Características:&lt;/b&gt; Aparência de menino, mas com o tempo vai ganhando forma de dragão.&lt;br /&gt;&lt;b&gt;Raça:&lt;/b&gt; Dragão.&lt;br /&gt;&lt;b&gt;Relatório do Personagem:&lt;/b&gt; De um ovo nasce uma criança que parece humana, mas quanto mais ganha &lt;br /&gt;nível de batalha, mais se torna um dragão. Vai ganhando garras, escamas, asas, baforada até se tornar um &lt;br /&gt;dragão que pode virar humanóide e vice versa.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img alt="" border="0" class="bbc_img" src="http://i64.servimg.com/u/f64/12/54/07/30/melani10.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Nome:&lt;/b&gt; Melani;&lt;br /&gt;&lt;b&gt;Idade:&lt;/b&gt; 13 anos;&lt;br /&gt;&lt;b&gt;Classe:&lt;/b&gt; Alquimista;&lt;br /&gt;&lt;b&gt;Habilidades Principais:&lt;/b&gt; Recuperar o HP e SP de Tales e Dragano;&lt;br /&gt;&lt;b&gt;Características:&lt;/b&gt; Corpo pequeno, Cabeleos vermelhos, Olhos Roxos;&lt;br /&gt;&lt;b&gt;Raça:&lt;/b&gt; Tília;&lt;br /&gt;&lt;b&gt;Relatório do Personagem:&lt;/b&gt; Melani é uma jovem Tília que segue Tales em busca de aventuras, esta &lt;br /&gt;sempre causando confusão por não se conter e sempre fazer travessuras com tudo e com todos, sua principal &lt;br /&gt;característica é cuidar dos Itens nas batalhas, e por distrair os inimigos causando explosões e tumultos &lt;br /&gt;sendo assim é a responsável pela vantagem dos guerreiros em batalha.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img alt="" border="0" class="bbc_img" src="http://i64.servimg.com/u/f64/12/54/07/30/rutez10.png" /&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Nome:&lt;/b&gt; Rutes;&lt;br /&gt;&lt;b&gt;Idade:&lt;/b&gt; 17 anos;&lt;br /&gt;&lt;b&gt;Classe:&lt;/b&gt; Mago Branco;&lt;br /&gt;&lt;b&gt;Habilidades Principais:&lt;/b&gt; Baixar os Status dos Inimigos;&lt;br /&gt;&lt;b&gt;Características:&lt;/b&gt; Pele azulada, Longos cabelos loiros, em sua pele existem escamas e barbatanas.&lt;br /&gt;&lt;b&gt;Raça:&lt;/b&gt; Tritão;&lt;br /&gt;&lt;b&gt;Relatório do Personagem: &lt;/b&gt; Rutes é um tritão um pouco convencido de mais, se acha o bonitão e se &lt;br /&gt;aproveita de suas habilidades de transformação, para sempre conquistar garotas, porém sua aparência real, &lt;br /&gt;mostra que ele não passa de um tritão magro e feio. Segue Tales e seus companheiros, com o pensamento de &lt;br /&gt;conhecer garotas no mundo, e encontrar um grande amor.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;b&gt;Na versão Beta 0.1 só haverá três personagens jogáveis, serão eles:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img813.imageshack.us/img813/6163/demoz.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img263.imageshack.us/img263/4835/miniaturam10.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Screenshots&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O projeto ainda esta em crescimento, por isto nenhuma das imagens estão em suas formas finais.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a class="bbc_link new_win" href="http://img834.imageshack.us/img834/9748/18721180.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img521.imageshack.us/img521/7092/03miniatura.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="bbc_link new_win" href="http://img192.imageshack.us/img192/6558/91107165.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img641.imageshack.us/img641/7445/04miniatura.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="bbc_link new_win" href="http://img210.imageshack.us/img210/6862/74976402.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img403.imageshack.us/img403/1227/05miniatura.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a class="bbc_link new_win" href="http://img813.imageshack.us/img813/461/55864873.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img407.imageshack.us/img407/7231/06miniatura.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a class="bbc_link new_win" href="http://img816.imageshack.us/img816/9827/80428104.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img26.imageshack.us/img26/6281/07miniatura.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Videos&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Música 01 - Lendas de Miorunir - by Alangato.&lt;br /&gt;Música 02 - Aventuras e Desafios - by Alangato.&lt;/b&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gVze9Ve5ZwQ?fs=1&amp;amp;hl=en_US&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gVze9Ve5ZwQ?fs=1&amp;amp;hl=en_US&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Concept Arts.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img833.imageshack.us/img833/824/forjadapelodragoartwork.png" /&gt;&lt;/div&gt;&lt;br /&gt;Fizemos  vários esboços até encontrar o desing ideal dos heróis do projeto,  Sakami e eu tivemos muitos problemas para alcançar o ponto desejado,  segue abaixo algumas das ilustrações que fizemos, e a transformação dos  personagens até o ponto que temos hoje, coisa que só irei revelar mais  tarde.&lt;br /&gt;&lt;br /&gt;&lt;div align="center" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;&lt;div class="alt2" style="border: 1px inset; margin: 0px; padding: 6px;"&gt;&lt;div&gt;&lt;div align="center"&gt;&lt;a class="bbc_link new_win" href="http://img42.imageshack.us/img42/8341/esboo001.png" target="_blank"&gt;http://img42.imageshack.us/img42/8341/esboo001.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img530.imageshack.us/img530/9398/esboo002.png" target="_blank"&gt;http://img530.imageshack.us/img530/9398/esboo002.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img136.imageshack.us/img136/2088/esboo003.png" target="_blank"&gt;http://img136.imageshack.us/img136/2088/esboo003.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img42.imageshack.us/img42/7100/esboos004.png" target="_blank"&gt;http://img42.imageshack.us/img42/7100/esboos004.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img42.imageshack.us/img42/5012/esboos005.png" target="_blank"&gt;http://img42.imageshack.us/img42/5012/esboos005.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img136.imageshack.us/img136/5673/esboos006.png" target="_blank"&gt;http://img136.imageshack.us/img136/5673/esboos006.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img136.imageshack.us/img136/1438/esboos007.png" target="_blank"&gt;http://img136.imageshack.us/img136/1438/esboos007.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img530.imageshack.us/img530/2152/esboos008.png" target="_blank"&gt;http://img530.imageshack.us/img530/2152/esboos008.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img689.imageshack.us/img689/5293/esboos009.png" target="_blank"&gt;http://img689.imageshack.us/img689/5293/esboos009.png&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://img145.imageshack.us/img145/6138/esboos010.png" target="_blank"&gt;http://img145.imageshack.us/img145/6138/esboos010.png&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img412.imageshack.us/img412/685/sistemasl.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;۞ Finalizado&lt;/span&gt;&lt;br /&gt;۞ Sendo Desenvolvido&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;-Menu FPD - by Zé Coméia&lt;/span&gt;;&lt;br /&gt;&lt;div align="left" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;&lt;a class="bbc_link new_win" href="http://img524.imageshack.us/img524/120/41077034.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img51.imageshack.us/img51/1476/01miniatura.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;-ACBS - by Atoa;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;-Sistema de coletar almas dos inimigos para utilizar em batalhas;&lt;br /&gt;-Introdução animada;&lt;br /&gt;-Tela de títulos FPD por eventos;&lt;/span&gt;&lt;br /&gt;&lt;div align="left" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;&lt;a class="bbc_link new_win" href="http://img809.imageshack.us/img809/1104/26502072.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img535.imageshack.us/img535/9933/00miniatura.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;-Alquimia para bombas;&lt;br /&gt;-Item Mapa (evento que possibilita ver a localização do herói no mundo);&lt;br /&gt;-Bestiário FPD por eventos;&lt;/span&gt;&lt;br /&gt;&lt;div align="left" class="spoiler"&gt;Spoiler: &lt;input onclick="showSpoiler(this);" type="button" value="Mostrar/Esconder" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;pre&gt;&lt;div align="left"&gt;&lt;a class="bbc_link new_win" href="http://img26.imageshack.us/img26/3669/40591924.png" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img31.imageshack.us/img31/664/02miniatura.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;-Key Itens - by Zé Coméia;&lt;br /&gt;-Tempo real;&lt;/span&gt;&lt;br /&gt;-Dia e noite;&lt;br /&gt;-Monstros por horário;&lt;br /&gt;&lt;span class="bbc_color" style="color: teal;"&gt;-3 tipos de moedas (Moedas FPD) - by Akimenerus / Jeff MasterBee / Zé Coméia;&lt;br /&gt;-Limitação de volume de moedas- by Akimenerus / Jeff MasterBee;&lt;br /&gt;-Show Item - Zé Coméia;&lt;/span&gt;&lt;br /&gt;-Dentre outros sistemas e recursos exclusivos do projeto, que estamos criando ou que ainda iremos criar.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Scripts Adicionais.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;fieldset class="box_bbcode"&gt;&lt;legend&gt;Scripts&lt;/legend&gt;&lt;b&gt;ACBS -&lt;/b&gt; Atoa&lt;br /&gt;&lt;b&gt;Icones na batalha -&lt;/b&gt; by Momo&lt;br /&gt;&lt;b&gt;New Particle Engine -&lt;/b&gt; by Everulopapo&lt;br /&gt;&lt;b&gt;UMS -&lt;/b&gt; by CCoa&lt;br /&gt;&lt;b&gt;Cura ao passar de LV -&lt;/b&gt; by Slipknot&lt;br /&gt;&lt;b&gt;Cure for Time -&lt;/b&gt; by Dodoop&lt;br /&gt;&lt;b&gt;Clima Avançado -&lt;/b&gt; by CCOA&lt;br /&gt;&lt;b&gt;Audio Cript Demo -&lt;/b&gt; by Renan Tsuneo Hangai Junior&lt;br /&gt;&lt;b&gt;MOG Scene Story V1.0 -&lt;/b&gt; by Moghunter&lt;br /&gt;&lt;b&gt;Anti Event Lag System -&lt;/b&gt; by Zeriab&lt;br /&gt;&lt;b&gt;MOG_Location_Name V1.4 -&lt;/b&gt; by Moghunter&lt;br /&gt;&lt;b&gt;Menu de Opções Ver. 1.0 -&lt;/b&gt; by Serial Killer&lt;br /&gt;&lt;b&gt;HL-Auto Equip -&lt;/b&gt; by Lennon / HugoLinux&lt;br /&gt;&lt;b&gt;SHIFT para Correr -&lt;/b&gt; by Marlos Gama&lt;br /&gt;&lt;b&gt;Level UP XRXS -&lt;/b&gt; by XRXS&lt;/fieldset&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img716.imageshack.us/img716/1618/almas.png" /&gt;&lt;/div&gt;&lt;br /&gt;O principal sistema do projeto, é a absorção de almas dos monstros derrotados.&lt;br /&gt;&amp;nbsp;Quanto  mais almas o jogador conseguir coletar, mais variedade de ataques Tales  terá, com&amp;nbsp; isso o jogador sempre teria vantagens contra os fortes  inimigos, utilizando almas a qual o monstro possui fraquesas.&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img815.imageshack.us/img815/8104/almavermelha.gif" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Existem &lt;b&gt;4 tipos de almas&lt;/b&gt; cada uma com sua habilidade especial, segue abaixo uma breve explicação:&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img151.imageshack.us/img151/8158/ballblue.png" /&gt;&lt;span class="bbc_color" style="color: red;"&gt;&lt;b&gt;Almas Vermelhas:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;As  almas vermelhas são ataques diretamente com uso da espada, ao desferir  um ataque com&amp;nbsp; a arma, a energia da alma é colocada para fora lançando  um ataque especial de curto alcance.&lt;br /&gt;Geralmente as almas vermelhas  dão diferentes atributos elementais a espada, sendo que ela podera  desferir ataques de chamas, raio, gelo e etc...E aumentando danos contra  inimigos que possuem desvantagem, o gasto de energia destas almas, são  baixos e o dano causado só perde para as almas de invocação, porém a  resistência e esquiva do jogador é colocada em risco, por estar muito  próximo aos inimigos.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img812.imageshack.us/img812/7915/almapreta.png" /&gt;&lt;b&gt;Almas Pretas:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;Almas  poderosas e de grande consumo de energia, com as almas pretas Tales  pode invocar o monstro na batalha, onde grandes danos afetam diretamente  o inimigo atacado.&lt;br /&gt;Almas de invocação são extremamente dificeis de  conseguir, mas são habilidades importantes para quem gosta de ataques de  grande dano para esmagar os inimigos.&lt;br /&gt;É necessario no mínimo 2 rodadas para atacar com uma invocação, pois Tales precisa consentrar grande energia.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img545.imageshack.us/img545/248/almaverde.png" /&gt;&lt;span class="bbc_color" style="color: green;"&gt;&lt;b&gt;Almas Verdes:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Estas  são almas de habilidades especiais, geramelte são ataques de longa  distância, onde ataques são lançados sem a precisão do heróis estar  perto do inimigo.&lt;br /&gt;Estes ataques dão ligeira vantagem em defesa, porém  não causam danos tão extensos quanto os danos das almas vermelhas e  pretas e seu gasto de energia só perde para o das almas pretas.&lt;br /&gt;Quanto mais utilizadas em batalha, mais fraco o dano de seus golpes fica na batalha e menas vantagem de defesa é adquirida.&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img145.imageshack.us/img145/5618/almaazul.png" /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&lt;b&gt;Almas Azuis:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Almas utilizadas para dar vantagens, geralmente seus ataques afetam diretamente o campo causando baixas nos status dos monstros.&lt;br /&gt;Estas são almas que podem ser utilizadas fora de batalha, e que ajudariam os heróis a passar por caminhos de dificil acesso.&lt;br /&gt;Almas  azuis possuem gastos de energia medianos, porém o jogador tem de ser  esperto ao usalas, pois com isto pode se perder um turno e tomar um  ataque direto sem chances de defesa.&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img441.imageshack.us/img441/9017/trilhasonora.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;A  Trilha Sonora do game se destaca, com músicas produzidas pela equipe,  visando sempre a importância da melodia ao ambiente proposto. Esta é uma  area esquecida em muitos projetos, mas em Forjada pelo Dragão, este é  um fator fundamental para um bom jogo.&lt;br /&gt;&lt;br /&gt;A area sonoplasta do projeto esta sendo conduzida por Jeff MasterBee e Alangato.&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: red;"&gt;&lt;b&gt;IMPORTANTE!!!&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Nenhuma  destas músicas que estão em download podem ser utilizadas, são  trabalhos exclusivos da equipe MasterBee Games para Forjada pelo dragão.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MP3&amp;nbsp; -&lt;/b&gt; Power Of The Imp - &lt;b&gt;compositor:&lt;/b&gt; Jeff MasterBee, &lt;b&gt;Mix:&lt;/b&gt; Erick Paladium;&lt;br /&gt;download aqui: &lt;a class="bbc_link new_win" href="http://www.4shared.com/file/0v8cd8c_/Power_Of_The_Imp.html" target="_blank"&gt;http://www.4shared.com/file/0v8cd8c_/Power_Of_The_Imp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MIDI -&lt;/b&gt; O filho de Onagard - &lt;b&gt;compositor:&lt;/b&gt; Jeff MasterBee.&lt;br /&gt;download aqui: &lt;a class="bbc_link new_win" href="http://www.4shared.com/audio/srlfdsJC/03-O_filho_de_Onagard.html" target="_blank"&gt;http://www.4shared.com/audio/srlfdsJC/03-O_filho_de_Onagard.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MIDI -&lt;/b&gt; A Marcha - &lt;b&gt;compositor:&lt;/b&gt; Alangato.&lt;br /&gt;download aqui: &lt;a class="bbc_link new_win" href="http://www.4shared.com/audio/0_od9YcR/07-_A_Marcha.html" target="_blank"&gt;http://www.4shared.com/audio/0_od9YcR/07-_A_Marcha.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Os softwares utilizados para a composição são:&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_u"&gt;Guitar Pro 5.2 -&lt;/span&gt;&lt;/b&gt; Sequênciador sonoro;&lt;br /&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;Fruit Loops 8 -&lt;/span&gt;&lt;/b&gt; Mixagem das músicas dando maior qualidade sonora.&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/8721/barrr.png" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Download.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Infelizmente  ainda não possuimos uma versão para download, estamos trabalhando nisto  para trazer uma ótima beta aos curiosos de plantão.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Barras.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img713.imageshack.us/img713/9926/basica.png" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;form name="bn1"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="80" name="code" readonly="readonly" rows="2"&gt;[url=http://www.santuariorpgmaker.com/forum/galeria-de-projetos/forjada-pelo-dragao/][img]http://i64.servimg.com/u/f64/12/54/07/30/basica10.png[/img][/url]&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img138.imageshack.us/img138/3600/tales.png" /&gt;&lt;/div&gt;&lt;form name="bn2"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="80" name="code" readonly="readonly" rows="2"&gt;[url=http://www.santuariorpgmaker.com/forum/galeria-de-projetos/forjada-pelo-dragao/][img]http://i64.servimg.com/u/f64/12/54/07/30/tales11.png[/img][/url]&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img22.imageshack.us/img22/8755/dragano.png" /&gt;&lt;/div&gt;&lt;form name="bn3"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="80" name="code" readonly="readonly" rows="2"&gt;[url=http://www.santuariorpgmaker.com/forum/galeria-de-projetos/forjada-pelo-dragao/][img]http://i64.servimg.com/u/f64/12/54/07/30/dragan11.png[/img][/url]&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img138.imageshack.us/img138/6519/melani.png" /&gt;&lt;/div&gt;&lt;form name="bn4"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="80" name="code" readonly="readonly" rows="2"&gt;[url=http://www.santuariorpgmaker.com/forum/galeria-de-projetos/forjada-pelo-dragao/][img]http://i64.servimg.com/u/f64/12/54/07/30/melani11.png[/img][/url]&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img22.imageshack.us/img22/427/rutes.png" /&gt;&lt;/div&gt;&lt;form name="bn5"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="80" name="code" readonly="readonly" rows="2"&gt;[url=http://www.santuariorpgmaker.com/forum/galeria-de-projetos/forjada-pelo-dragao/][img]http://i64.servimg.com/u/f64/12/54/07/30/rutes10.png[/img][/url]&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img143.imageshack.us/img143/7347/menusozai05.png" /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;Créditos &amp;amp; Agradecimentos.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;A todos que participaram da equipe &lt;b&gt;MasterBee Games&lt;/b&gt; e que deixaram suas idéias e trabalhos, como &lt;b&gt;TAXD, Dark Luar, Poiugo, Dark Paladium, Feu [Kaname]&lt;/b&gt; e &lt;b&gt;Shepher&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;Agradeço tbm à &lt;b&gt;Kiin&lt;/b&gt;,  uma grande amiga que fez o maravilhoso logo da equipe... Também ao  Megalukes que nos apoia e nos apresentou o ACBS e toda sua grandiosidade  e principalmente ao Atoa que criou o ACBS.&lt;br /&gt;&amp;nbsp;Também agradeço ao &lt;b&gt;Akimenerus&lt;/b&gt; pelas ajudas nos sistemas, ao &lt;b&gt;Crazy Nero&lt;/b&gt; e ao &lt;b&gt;Tunico&lt;/b&gt; por sempre estarem nos apoiando, sempre sendo os maiores companheiros em relação as críticas construtívas.&lt;br /&gt;&amp;nbsp;Ao &lt;b&gt;CristianoForce&lt;/b&gt; da comunidade MRM, por ser um grande colaborador em relação aos novos sistemas por eventos.&lt;br /&gt;&amp;nbsp;A &lt;b&gt;Erick Paladium&lt;/b&gt; pelo ótimo &lt;b&gt;Mix&lt;/b&gt; da faixa &lt;b&gt;Power Of The Imp&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;Ao &lt;b&gt;Gitz&lt;/b&gt; por ser um amigo que esta sempre apoiando a idéia do projeto e conferindo de perto as novidades.&lt;br /&gt;&amp;nbsp;E a todos que ainda estão me ajudando um agradecimento em especial, se esqueci de alguém por favor mil perdões.&lt;br /&gt;&amp;nbsp;A &lt;b&gt;Santuário RPG Maker&lt;/b&gt; pelo espaço que oferece a nós criadores de games amadores, e a &lt;b&gt;você&lt;/b&gt;, futuro jogador.&lt;br /&gt;&amp;nbsp;Em especial &lt;b&gt;nós da equipe&lt;/b&gt; gostariamos de agradecer &lt;b&gt;aos nossos pais&lt;/b&gt;, que em resultado de uma boa noite de sexo, deu origem a estes moribundos.&lt;br /&gt;&amp;nbsp;Obrigado .&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div align="center"&gt;&lt;b&gt;PS:&lt;/b&gt; Estamos em busca de um eventer experiente e um scripter em RMXP.&lt;br /&gt;&amp;nbsp;Aqueles que se interessarem pelas vagas, por favor me comunicar via MP.&lt;/div&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a class="bbc_link new_win" href="http://creativecommons.org/licenses/by-nc-nd/3.0/br/" target="_blank"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Forjada Pelo Dragão de &lt;a class="bbc_link new_win" href="http://www.santuariorpgmaker.com/forum/index.php?action=profile;u=208" target="_blank"&gt;MasterBee Games&lt;/a&gt; é licenciado sob uma &lt;a class="bbc_link new_win" href="http://creativecommons.org/licenses/by-nc-nd/3.0/br/" target="_blank"&gt;Licença Creative Commons Atribuição-Uso não-comercial-Vedada a criação de obras derivadas 3.0 Brasil.&lt;/a&gt;&lt;br /&gt;Based on a work at &lt;a class="bbc_link new_win" href="http://www.santuariorpgmaker.com/forum/index.php?topic=1414.msg9192#msg9192" target="_blank"&gt;www.santuariorpgmaker.com.&lt;/a&gt;&lt;br /&gt;Permissions beyond the scope of this license may be available at &lt;a class="bbc_link new_win" href="http://www.mundorpgmaker.com/" target="_blank"&gt;www.mundorpgmaker.com&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" border="0" class="bbc_img" src="http://img593.imageshack.us/img593/6522/talesfinaltpico.png" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-2233151404288451337?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/2233151404288451337/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2233151404288451337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2233151404288451337'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2011/01/forjada-pelo-dragao.html' title='Forjada Pelo Dragão'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-2198042812903057007</id><published>2010-11-01T18:08:00.009-02:00</published><updated>2011-02-04T15:57:17.584-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS12'/><title type='text'>BMP writer</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;BMP writer&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Método implementado na classe IO para escrever um arquivo de imagem do tipo bmp truecolor de 24bits a partir de um objeto da classe Bitmap usada no RGSS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;bmp truecolor 24bits&lt;/li&gt;&lt;li type="disc"&gt;resolução vertical e horizontal de 96dpi&lt;/li&gt;&lt;li type="disc"&gt;utiliza um objeto da classe Bitmap do RGSS para gerar o arquivo de imagem&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Como Usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;*Ao abrir o arquivo para a escrita, use o modo BINÁRIO.&lt;br /&gt;&lt;code&gt;file = File.new('image.bmp','wb')&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Para gravar a imagem no arquivo, use o metodo bmp_write após abrir o arquivo.&lt;br /&gt;&lt;code&gt;file.bmp_write(aBitmap_obj)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Feche o arquivo.&lt;br /&gt;&lt;code&gt;file.close&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;OBS: A escrita é um pouco demorada, dependendo tamanho da imagem pode levar alguns segundos. Veja a técnica de uso do script a seguir para resolver o problema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Usando o BMP writer num processor paralelo &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O script não utliza bibliotecas externas. Foi escrito totalmente em Ruby baseando-se no objeto Bitmap usado em RGSS/2. Mesmo sendo feito para ter um bom desempenho com relação ao tempo de escrita de arquivo, para empregá-lo em jogos o tempo de escrita pode acabar sendo longo. Por exemplo, em uma máquina com Core 2 Duo o script levou 2 segundos para gravar um bitmap de 640x480, o que parece rápidos, mas pode ser um incmodo no meio de um jogo.&lt;br /&gt;&lt;br /&gt;Então resolvi usar o metodo de escrita em um processo paralelo para não ocorrer aquela pausa no jogo enquanto a gravação do arquivo está em andamento. O problema é que leva mais tempo para o arquivo ser salvo(seguindo mesmo exemplo anterior, levou 1 minuto e meio para a gravação), isso significa que não é possível visualizar/utilizar o arquivo gerao enquanto não terminar essa gravação, e também caso o jogo seja fechado antes do término o arquivo fica corrompido.&lt;br /&gt;&lt;br /&gt;Para criar nosso processo paralelo usaremos uma Thread. Basicamente uma thread é um bloco de código que é executado em paralelo com o programa principal. A técnica não é muito complicada nem ocupa muito espaço. Primeiro vamos carregar um Bitmap para usar na gravação:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;data_system        = load_data("Data/System.rxdata")&lt;br /&gt;aBitmap_obj = RPG::Cache.title(data_system.title_name)&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;As linhas acima irão carregar a imagem de título na variável aBitmap_obj.&lt;br /&gt;&lt;br /&gt;Agora vamos à Thread:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;thread_bmp = Thread.new(aBitmap_obj) do&lt;br /&gt;begin&lt;br /&gt;file = File.new('image.bmp','wb')&lt;br /&gt;file.bmp_write(aBitmap_obj)&lt;br /&gt;file.close&lt;br /&gt;rescue&lt;br /&gt;print 'Erro ao gravar um bitmap'&lt;br /&gt;end&lt;br /&gt;end&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;a linha:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;thread_bmp = Thread.new(aBitmap_obj) do&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Cria nossa Thread. Observe que já passamos como argumentoda Thread o Bitmap que criamos antes. O "do" define o nosso bloco de código que termina no último "end".&lt;br /&gt;&lt;br /&gt;O "begin" é um outro bloco que criei dentro da threadsó para poder usar o tratamentos de exceções(erros) da clausula "rescue". Isso porque quando ocorre um erro dentro da Thread o Game.exe fecha sem nem um aviso. Então se acontecer algum erro na Thread o que está entre o recue e o end será executado. No exemplo só cooquei uma mensagem, o que não é muito correto, porque se aconteceu algum erro a thread para mas o programa continua sem tratar do problema.&lt;br /&gt;&lt;br /&gt;Entre o begin e o rescue deve entrar aquelas três linhas que já usavamos para gravar o arquivo antes.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;file = File.new('image.bmp','wb')&lt;br /&gt;file.bmp_write(aBitmap_obj)&lt;br /&gt;file.close&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Abre o arquivo para leitura, escreve o BMP no arquivo e fecha o arquivo quando terminar a escrita.&lt;br /&gt;&lt;br /&gt;Basicamente é isso. Teste a técnica e qualquer dúvida fique a vontade.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#========================================&lt;br /&gt;# BMP writer&lt;br /&gt;#----------------------------------------&lt;br /&gt;#by:      zecomeia&lt;br /&gt;#date:    01/11/2010&lt;br /&gt;#for:     RGSS/RGSS2&lt;br /&gt;#version: 1.0&lt;br /&gt;#www.colmeia-do-ze.blogspot.com&lt;br /&gt;#----------------------------------------&lt;br /&gt;=begin&lt;br /&gt;IO's method to write a BMP truecolor(24bits) file &lt;br /&gt;from a RGSS's Bitmap object.&lt;br /&gt;&lt;br /&gt;-bmp truecolor 24bits&lt;br /&gt;-resolution vertical and horizontal = 96dpi&lt;br /&gt;-use a RGSS's Bitmap object to write the image file&lt;br /&gt;&lt;br /&gt;*To open file to write, use BINARY mode.&lt;br /&gt;file = File.new('image.bmp','wb')&lt;br /&gt;To write use the bmp_write method after open file&lt;br /&gt;file.bmp_write(aBitmap_obj)&lt;br /&gt;Close file&lt;br /&gt;file.close&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;class IO&lt;br /&gt;  &lt;br /&gt;  def bmp_write(bitmap)&lt;br /&gt;    self.write_FileHeader(bitmap)&lt;br /&gt;    self.write_ImageHeader(bitmap)&lt;br /&gt;    self.write_Bitmap(bitmap)    &lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def write_FileHeader(bitmap)    &lt;br /&gt;    #sign&lt;br /&gt;    self.putc(0x42)&lt;br /&gt;    self.putc(0x4D)&lt;br /&gt;    #file size&lt;br /&gt;    w = bitmap.width&lt;br /&gt;    h = bitmap.height&lt;br /&gt;    img_size = w * h * 3 + 56 # 3bytes/pixel(true color 24bits)&lt;br /&gt;    hexa = sprintf("%x",img_size)&lt;br /&gt;    length = hexa.size&lt;br /&gt;    hexa_byte = []    &lt;br /&gt;    if length%2 != 0&lt;br /&gt;    hexa = '0' + hexa&lt;br /&gt;    length +=1&lt;br /&gt;    end&lt;br /&gt;    pointer_byte = 0&lt;br /&gt;    for i in 0...length/2&lt;br /&gt;      pointer_byte += 1&lt;br /&gt;      hexa_byte[i] = hexa.unpack('a2')&lt;br /&gt;      hexa.sub!(hexa_byte[i].to_s,'')&lt;br /&gt;    end &lt;br /&gt;    for byte in hexa_byte.reverse&lt;br /&gt;      self.putc(sh_i(byte.to_s))&lt;br /&gt;    end&lt;br /&gt;    (4 - pointer_byte).times { self.putc(0x00) }&lt;br /&gt;    #reserved area&lt;br /&gt;    4.times { self.putc(0x00) }&lt;br /&gt;    #offset bits&lt;br /&gt;    self.putc(0x36)&lt;br /&gt;    3.times { self.putc(0x00) }&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def write_ImageHeader(bitmap)&lt;br /&gt;    #image header size&lt;br /&gt;    self.putc(0x28)&lt;br /&gt;    3.times { self.putc(0x00) }&lt;br /&gt;    #width&lt;br /&gt;    w = bitmap.width&lt;br /&gt;    hexa = sprintf("%x",w)&lt;br /&gt;    length = hexa.size&lt;br /&gt;    hexa_byte = []&lt;br /&gt;    if length%2 != 0&lt;br /&gt;    hexa = '0' + hexa&lt;br /&gt;    length +=1&lt;br /&gt;    end&lt;br /&gt;    pointer_byte = 0&lt;br /&gt;    for i in 0...length/2&lt;br /&gt;      pointer_byte += 1&lt;br /&gt;      hexa_byte[i] = hexa.unpack('a2')&lt;br /&gt;      hexa.sub!(hexa_byte[i].to_s,'')&lt;br /&gt;    end &lt;br /&gt;    for byte in hexa_byte.reverse&lt;br /&gt;      self.putc(sh_i(byte.to_s))&lt;br /&gt;    end&lt;br /&gt;    (4 - pointer_byte).times { self.putc(0x00) }&lt;br /&gt;    #height&lt;br /&gt;    h = bitmap.height&lt;br /&gt;    hexa = sprintf("%x",h)&lt;br /&gt;    length = hexa.size&lt;br /&gt;    hexa_byte = []&lt;br /&gt;    if length%2 != 0&lt;br /&gt;    hexa = '0' + hexa&lt;br /&gt;    length +=1&lt;br /&gt;    end&lt;br /&gt;    pointer_byte = 0&lt;br /&gt;    for i in 0...length/2&lt;br /&gt;      pointer_byte += 1&lt;br /&gt;      hexa_byte[i] = hexa.unpack('a2')&lt;br /&gt;      hexa.sub!(hexa_byte[i].to_s,'')&lt;br /&gt;    end &lt;br /&gt;    for byte in hexa_byte.reverse&lt;br /&gt;      self.putc(sh_i(byte.to_s))&lt;br /&gt;    end&lt;br /&gt;    (4 - pointer_byte).times { self.putc(0x00) }&lt;br /&gt;    #planes&lt;br /&gt;    self.putc(0x01)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    #bits per pixel&lt;br /&gt;    self.putc(0x18) # 3bytes/pixel(true color 24bits)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    #compression&lt;br /&gt;    4.times { self.putc(0x00) }&lt;br /&gt;    #image size&lt;br /&gt;    w = bitmap.width&lt;br /&gt;    h = bitmap.height&lt;br /&gt;    img_size = w*h*4&lt;br /&gt;    hexa = sprintf("%x",img_size)&lt;br /&gt;    length = hexa.size&lt;br /&gt;    hexa_byte = []&lt;br /&gt;    if length%2 != 0&lt;br /&gt;    hexa = '0' + hexa&lt;br /&gt;    length +=1&lt;br /&gt;    end&lt;br /&gt;    pointer_byte = 0&lt;br /&gt;    for i in 0...length/2&lt;br /&gt;      pointer_byte += 1&lt;br /&gt;      hexa_byte[i] = hexa.unpack('a2')&lt;br /&gt;      hexa.sub!(hexa_byte[i].to_s,'')&lt;br /&gt;    end &lt;br /&gt;    for byte in hexa_byte.reverse&lt;br /&gt;      self.putc(sh_i(byte.to_s))&lt;br /&gt;    end&lt;br /&gt;    (4 - pointer_byte).times { self.putc(0x00) }&lt;br /&gt;    #XPP meter&lt;br /&gt;    #(0ED8)HEX = (3800)DEC  = 96dpi&lt;br /&gt;    self.putc(0xD8)&lt;br /&gt;    self.putc(0x0E)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    #YPP meter&lt;br /&gt;    #(0ED8)HEX = (3800)DEC  = 96dpi&lt;br /&gt;    self.putc(0xD8)&lt;br /&gt;    self.putc(0x0E)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    self.putc(0x00)&lt;br /&gt;    #number of colors used&lt;br /&gt;    4.times { self.putc(0x00) }&lt;br /&gt;    #number of important colors&lt;br /&gt;    4.times { self.putc(0x00) }&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def write_Squad&lt;br /&gt;    &lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def write_Bitmap(bitmap)&lt;br /&gt;    for y in 1..bitmap.height&lt;br /&gt;      for x in 0...bitmap.width&lt;br /&gt;        color = bitmap.get_pixel(x, bitmap.height - y)&lt;br /&gt;        self.putc(color.blue)&lt;br /&gt;        self.putc(color.green)        &lt;br /&gt;        self.putc(color.red)&lt;br /&gt;        #complete line with random bytes if necessary&lt;br /&gt;        if (r = bitmap.width % 4) != 0 and x == (bitmap.width - 1)&lt;br /&gt;          (4 - r).times { 3.times { self.putc(0xFF) } }&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;module Kernel&lt;br /&gt;  &lt;br /&gt;  #Convert a string with hex number to a integer&lt;br /&gt;  #sh_i("FF") returns 255&lt;br /&gt;  def sh_i(sh)&lt;br /&gt;    eval("0x#{sh}")&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;&lt;i style="font-style: italic;"&gt;Feito por zecomeia&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-2198042812903057007?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/2198042812903057007/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/11/bmp-writer-por-zecomeia-introducao.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2198042812903057007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2198042812903057007'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/11/bmp-writer-por-zecomeia-introducao.html' title='BMP writer'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4272032619222003851</id><published>2010-04-01T15:30:00.002-03:00</published><updated>2010-05-01T19:36:43.060-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Updates!</title><content type='html'>Mais um novo script para nossa lista de scripts para RGSS, o &lt;b&gt;XP Wave Effect&lt;/b&gt;. Com ele agora é possível que os programadores do RGSS consigam usar efeito que exclusivo do RGSS conhecido como "wave".&lt;br /&gt;Na verdade já tinha feito esse script e inclusive usado ele em um dos scripts aqui já postados, mas resolvi postar o script do efeito wave separado e percebi que ele precisava de melhorias e que estava "distante" de ser realmente igual ao efeito original no VX. Agora alem de estar muito masi parecido(eu pelo menos não vi diferença), também retirei algumas coisas que estavam causando lag(quando era usada apenas uma imagem como o efeito tudo bem, mas se usasse mais imagens ficava um inferno!).&lt;br /&gt;Sem mais enrolação, segue o link para o script:&lt;br /&gt;&lt;br /&gt;&lt;a href="/2010/04/xp-wave-effect.html"&gt;XP Wave Effect&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como citado acima, um de meus scripts(na verdade uma conversão) já tinha usado o wave effect, portanto aí segue o link deste script agora com a atualização do XP Wave Effect:&lt;br /&gt;&lt;br /&gt;&lt;a href="/2009/12/mog-title-miria-xp-version.html"&gt;MOG Title Miria - XP version&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;*Ando muito ocupado ultimamente, então continuaram raras minhas postagens de conteudo aqui no blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4272032619222003851?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4272032619222003851/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/04/updates.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4272032619222003851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4272032619222003851'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/04/updates.html' title='Updates!'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-1226308653536125691</id><published>2010-04-01T15:05:00.001-03:00</published><updated>2010-04-01T15:14:05.340-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>XP Wave Effect</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;XP Wave Effect&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Modificações na classe Sprite para usar o efeito "wave" existente apenas no RGSS2.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Muito fiel ao efeito do RMVX&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Screen Shot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img33.imageshack.us/i/xpeaveeffectss.png/" target="_blank" title="ImageShack - Image And Video Hosting"&gt;&lt;img border="0" height="312" src="http://img33.imageshack.us/img33/69/xpeaveeffectss.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como Usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Cole o script acima de main;&lt;/li&gt;&lt;li&gt;Use da mesma forma como é usado no RGSS2, se não souber procure pelo manual de referencia ao RGSS no próprio arquivo de help do RMVX.&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/254625210/c7640781/XP_Wave_Effect.html" target="_blank"&gt;Dowload da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#========================================&lt;br /&gt;# XP Wave Effect&lt;br /&gt;#----------------------------------------&lt;br /&gt;#by:      zecomeia&lt;br /&gt;#date:    01/03/2010&lt;br /&gt;#for:     RGSS&lt;br /&gt;#version: 1.0&lt;br /&gt;#www.colmeia-do-ze.blogspot.com&lt;br /&gt;#----------------------------------------&lt;br /&gt;=begin&lt;br /&gt;Reproduction of the VX's wave effect&lt;br /&gt;(see the help file of the RPGMaker VX &lt;br /&gt;in the RGSS manual reference topic)&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;#==============#&lt;br /&gt;# Sprite class #&lt;br /&gt;#==============#&lt;br /&gt;class Sprite&lt;br /&gt;  &lt;br /&gt;  include Math&lt;br /&gt;  &lt;br /&gt;  attr_accessor   :wave_amp&lt;br /&gt;  attr_accessor   :wave_length&lt;br /&gt;  attr_accessor   :wave_speed&lt;br /&gt;  attr_accessor   :wave_phase&lt;br /&gt;  attr_accessor   :temp_bitmap&lt;br /&gt;  &lt;br /&gt;  alias initialize default_initialize rescue nil&lt;br /&gt;  alias default_initialize initialize&lt;br /&gt;  def initialize(viewport=nil)&lt;br /&gt;    @wave_amp = 0&lt;br /&gt;    @wave_length = 180&lt;br /&gt;    @wave_speed = 360&lt;br /&gt;    @wave_phase = 0.0&lt;br /&gt;    default_initialize(viewport)&lt;br /&gt;    @temp_bitmap = nil&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  alias update default_update rescue nil&lt;br /&gt;  alias default_update update  &lt;br /&gt;  def update()&lt;br /&gt;    # the wave effect only works if wave_amp&lt;br /&gt;    # propertie is a number more than zero&lt;br /&gt;    wave_effect if @wave_amp &amp;gt; 0&lt;br /&gt;    default_update()&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  # Return the width of image, because when use&lt;br /&gt;  # obj.bitmap.width the value will be more than&lt;br /&gt;  # the original value(because effect)&lt;br /&gt;  def width()&lt;br /&gt;    return (self.bitmap.width - @wave_amp * 2)&lt;br /&gt;  end&lt;br /&gt;    &lt;br /&gt;  #---------------&lt;br /&gt;  # Wave Effect&lt;br /&gt;  #---------------&lt;br /&gt;  def wave_effect()&lt;br /&gt;    return if self.bitmap.nil?&lt;br /&gt;    @temp_bitmap = self.bitmap if @temp_bitmap.nil?&lt;br /&gt;    cw = @temp_bitmap.width + (@wave_amp * 2)&lt;br /&gt;    ch = @temp_bitmap.height&lt;br /&gt;    # Follow the VX wave effect, each horizontal line&lt;br /&gt;    # has 8 pixel of height. This device provides less&lt;br /&gt;    # lag in game.&lt;br /&gt;    divisions = @temp_bitmap.height / 8&lt;br /&gt;    divisions += 1 if @temp_bitmap.height % 8 != 0&lt;br /&gt;    self.bitmap = Bitmap.new(cw, ch)&lt;br /&gt;    for i in 0..divisions&lt;br /&gt;      x = @wave_amp * Math.sin(i * 2 * PI / (@wave_length / 8).to_i + Math.deg_to_rad(@wave_phase))&lt;br /&gt;      src_rect = Rect.new(0, i*8, @temp_bitmap.width, 8)&lt;br /&gt;      dest_rect = Rect.new(@wave_amp + x, i * 8, @temp_bitmap.width, 8)&lt;br /&gt;      self.bitmap.stretch_blt(dest_rect, @temp_bitmap, src_rect)&lt;br /&gt;    end&lt;br /&gt;    # frame rate: VX = 60 | XP = 40&lt;br /&gt;    # wave speed compatibility VX to XP: wave_speed * 60/40&lt;br /&gt;    # then: wave_speed * 1.5&lt;br /&gt;    @wave_phase += @wave_speed * 1.5 / @wave_length&lt;br /&gt;    @wave_phase -= 360 if @wave_phase &amp;gt; 360&lt;br /&gt;    @wave_phase += 360 if @wave_phase &amp;lt; 0&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#=============#&lt;br /&gt;# module Math #&lt;br /&gt;#=============#&lt;br /&gt;module Math&lt;br /&gt;  &lt;br /&gt;  #-------------------------------&lt;br /&gt;  # Conversion Degree to Radian&lt;br /&gt;  #-------------------------------&lt;br /&gt;  def Math.deg_to_rad(deg)&lt;br /&gt;    return (deg * PI) / 180.0&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;zecomeia&lt;/i&gt; pela versão para XP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-1226308653536125691?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/1226308653536125691/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/04/xp-wave-effect.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1226308653536125691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1226308653536125691'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/04/xp-wave-effect.html' title='XP Wave Effect'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4595250426573419391</id><published>2010-02-28T16:27:00.002-03:00</published><updated>2010-03-02T20:20:20.833-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS12'/><title type='text'>Module VirtualKeys</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;Module VirtualKeys&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Além de habilitar todas as teclas para o uso no RPGMaker, também é acompanhado de métodos que ajudaram na utilização das teclas, alguns tentam baseados em métodos já existentes no módulo Input, e outros totalmente novo ou incrementados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Características&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;método #press?;&lt;/li&gt;&lt;li&gt;método #trigger?;&lt;/li&gt;&lt;li&gt;método #repeat?;&lt;/li&gt;&lt;li&gt;método #dir4 com algumas novidades;&lt;/li&gt;&lt;li&gt;método #dir8 com algumas novidades;&lt;/li&gt;&lt;li&gt;métodos para manipulação das funções GetKeyState e GetAsyncKeyState, usados na construção dos outros;&lt;/li&gt;&lt;li&gt;método #get_char que retorna a tecla pressionada(seguindo o padrão ABNT);&lt;/li&gt;&lt;li&gt;todas as características anteriores foram construídas em um módulo à parte e são totalmente independentes do módulo Input.&lt;/li&gt;&lt;li&gt;Não precisar usar um método de atualização como o módulo Input.&lt;br /&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Como usar&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Instale o script acima de qualquer script que o use.&lt;br /&gt;&lt;br /&gt;*Caso use funções desse script em uma scene, de preferência não use atualize módulo Input no loop principal de sua scene, para evitar conflitos ou má performance deste script. Para isso, basta não colocar o método de módulo #update no loop da scene, veja:&lt;br /&gt;&lt;br /&gt;RGSS:&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="12"&gt;def main&lt;br /&gt;  #&lt;br /&gt;  #inicialização dos objetos da scene&lt;br /&gt;  #&lt;br /&gt;  Graphics.transition&lt;br /&gt;  loop do&lt;br /&gt;    Graphics.update&lt;br /&gt;    #Input.update &amp;lt;---- apague essa linha que aqui foi comentada&lt;br /&gt;    update&lt;br /&gt;    if $scene != self&lt;br /&gt;      break&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  Graphics.freeze&lt;br /&gt;  #&lt;br /&gt;  #dispose&lt;br /&gt;  #&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;br /&gt;Como no RGSS2 o método #main fica na superclasse de todas scenes, Scene_Base, então será preciso alterar o método #main na própria scene ao invés de modificar o método #main em Scene_Base(para não interferir nas outras, a menos que queira isso). Veja como ficaria:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="12"&gt;def main&lt;br /&gt;  start&lt;br /&gt;  perform_transition&lt;br /&gt;  post_start&lt;br /&gt;  #Input.update &amp;lt;---- apague essa linha que aqui foi comentada&lt;br /&gt;  loop do&lt;br /&gt;    Graphics.update&lt;br /&gt;    #Input.update  &amp;lt;---- apague essa linha que aqui foi comentada&lt;br /&gt;    update&lt;br /&gt;    break if $scene != self&lt;br /&gt;  end&lt;br /&gt;  Graphics.update&lt;br /&gt;  pre_terminate&lt;br /&gt;  Graphics.freeze&lt;br /&gt;  terminate&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;br /&gt;Para usar os métodos de verificação #press?, #trigger?, #repeat? siga o exemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="3"&gt;if VirtualKeys.press?(Virtual::VK_T)&lt;br /&gt;print 'você pressionou a letra T'&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;br /&gt;*O argumento é um número inteiro, e segue a tabela das Virtual Keys encontrada no próprio módulo com todas as contantes definidas(seguindo valores hexadecimais).&lt;br /&gt;&lt;br /&gt;Veja um exemplo do método #get_char :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="12"&gt;char = VirtualKeys.get_char()&lt;br /&gt;if char[0] == true or char.size == 2 # se for um acento...&lt;br /&gt;case $Acento&lt;br /&gt;when 1 ; print "você pressionou ~"&lt;br /&gt;when 2 ; print "você pressionou ^"&lt;br /&gt;when 3 ; print "você pressionou ´"&lt;br /&gt;when 4 ; print "você pressionou `"&lt;br /&gt;when 5 ; print "você pressionou ¨"&lt;br /&gt;end&lt;br /&gt;elsif char[0] != nil #se for qualquer outro caractere...&lt;br /&gt;print "você pressionou #{char[0]}"&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;br /&gt;Os métodos #dir4 e #dir8 têm o mesmo comportamento, porem, enquanto #dir4 analiza apenas as 4 direcionais para retornar um valor, #dir8 analiza também combinações entre as direções desde que não sejam opostas. Até aí sem novidades. Mas no módulo VirtualKeys ele agora recebeu 2 parâmetros de entrada, &lt;b&gt;type&lt;/b&gt; e &lt;b&gt;ignore_numpad&lt;/b&gt;. O primeiro pode ter 2 possíveis valores: 0=#press? ou 1=#trigger?. Isso vai mudar o método usado para analizar as teclas que movimentam o personagem. o argumento &lt;b&gt;ignore_numpad&lt;/b&gt; quando true, não avaliará as teclas direcionais que compartilham espaço com os números no teclado numérico(1,2,3,4,6,7,8 e 9). Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="12"&gt;case VirtualKeys.dir8(0,true)&lt;br /&gt;when 1 ; print('down left')&lt;br /&gt;when 2 ; print('down')&lt;br /&gt;when 3 ; print('down right')&lt;br /&gt;when 4 ; print('left')&lt;br /&gt;when 6 ; print('right')&lt;br /&gt;when 7 ; print('up left')&lt;br /&gt;when 8 ; print('up')&lt;br /&gt;when 9 ; print('up right')&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;br /&gt;*Os valores padrões dos argumentos são (0,false).&lt;br /&gt;&lt;br /&gt;Os métodos que chamam as funções GetKeyState e GetAsyncKeyState são, respectivamente, #gks e #gaks, onde #gks analisa o estado da tecla levando em consideração que pressionar a tecla uma vez ativa a tecla e outra desativa(ex: CAPS LOCK), enquanto #gaks analisan se a tecla está sendo pressionada(segurando a tecla). Para ambos, quando a tecla não está ativa o valor retornado é 0, caso contráro será retornado um número qualquer que não é possível prever.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/232304215/80006a05/Module_Virtual_Keys.html" target="_blank"&gt;RMVX&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/232304810/fdfd1b5c/_3__Module_Virtual_Keys.html" target="_blank"&gt;RMXP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Script&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#========================================&lt;br /&gt;# Module VirtualKeys&lt;br /&gt;#----------------------------------------&lt;br /&gt;#by:      zecomeia&lt;br /&gt;#date:    28/02/2010&lt;br /&gt;#for:     RGSS &amp;amp; RGSS2&lt;br /&gt;#version: 1.1&lt;br /&gt;#www.colmeia-do-ze.blogspot.com&lt;br /&gt;#----------------------------------------&lt;br /&gt;=begin&lt;br /&gt;&lt;br /&gt;*NOTE: recommended don't update the inputs using Input.update&lt;br /&gt;on the main loop of the scene to use functions of the script.&lt;br /&gt;para evitar conflitos, for to avoid conflicts.&lt;br /&gt;&lt;br /&gt;Module Methods:&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;VirtualKeys#press?(key)&lt;br /&gt;&lt;br /&gt;Determines whether the button num is currently being&lt;br /&gt;pressed.&lt;br /&gt;If the button is being pressed, returns TRUE. If not,&lt;br /&gt;returns FALSE.&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;VirtualKeys#trigger?(key)&lt;br /&gt;&lt;br /&gt;Determines whether the button "key" is being pressed again.&lt;br /&gt;"Pressed again" is seen as time having passed between the&lt;br /&gt;button being not pressed and being pressed.&lt;br /&gt;If the button is being pressed, returns TRUE. If not,&lt;br /&gt;returns FALSE.&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;VirtualKeys#repeat?(key)&lt;br /&gt;&lt;br /&gt;Determines whether the button "key" is being pressed again.&lt;br /&gt;Unlike trigger?, takes into account the repeat input of a&lt;br /&gt;button being held down continuously.&lt;br /&gt;If the button is being pressed, returns TRUE. If not,&lt;br /&gt;returns FALSE.&lt;br /&gt;------------------------------------------------------------&lt;br /&gt;VirtualKeys#dir4(type=0, ignore_numpad=false)&lt;br /&gt;&lt;br /&gt;Checks the status of the directional buttons, translates the&lt;br /&gt;data into a specialized 4-direction input format, and returns&lt;br /&gt;the number pad equivalent (2, 4, 6, 8).&lt;br /&gt;If no directional buttons are being pressed (or the equivalent),&lt;br /&gt;returns 0.&lt;br /&gt;&lt;br /&gt;Arguments&lt;br /&gt;&lt;br /&gt;type: defines the method that will evaluate the inputs&lt;br /&gt;(#press?(key) or #trigger?(key)).&lt;br /&gt;0=#press?(key)&lt;br /&gt;1=#trigger?(key)&lt;br /&gt;&lt;br /&gt;ignore_numpad: if true ignore inputs of the numpad, else don't.&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;VirtualKeys#dir8(type=0, ignore_numpad=false)&lt;br /&gt;&lt;br /&gt;Checks the status of the directional buttons, translates the&lt;br /&gt;data into a specialized 8-direction input format, and returns&lt;br /&gt;the number pad equivalent (1, 2, 3, 4, 6, 7, 8, 9).&lt;br /&gt;If no directional buttons are being pressed (or the equivalent),&lt;br /&gt;returns 0.&lt;br /&gt;&lt;br /&gt;Arguments&lt;br /&gt;&lt;br /&gt;type: defines the method that will evaluate the inputs&lt;br /&gt;(#press?(key) or #trigger?(key)).&lt;br /&gt;0=#press?(key)&lt;br /&gt;1=#trigger?(key)&lt;br /&gt;&lt;br /&gt;ignore_numpad: if true ignore inputs of the numpad, else don't.&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;VirtualKeys#get_char()&lt;br /&gt;&lt;br /&gt;Returns the character in a array corresponding to the&lt;br /&gt;pressed key.&lt;br /&gt;*Keys corresponding to the accents ( ' `^ ¨ ~ ) return 1 size&lt;br /&gt;array with true and change the value of the variable "$Acento"&lt;br /&gt;with a corresponding number on the first click.The second&lt;br /&gt;click, the method returns an 2 size array with the accents.&lt;br /&gt;~: $Acento=1&lt;br /&gt;^: $Acento=2&lt;br /&gt;´: $Acento=3&lt;br /&gt;`: $Acento=4&lt;br /&gt;¨: $Acento=5&lt;br /&gt;Else&lt;br /&gt;$Acento=0&lt;br /&gt;&lt;br /&gt;*NOTE: to ABNT.&lt;br /&gt;*NOTE: all characters and "symbols"(@ # $ %...) returned as&lt;br /&gt;string objects within the array.&lt;br /&gt;*NOTE: numpad numbers are returned as string objects within&lt;br /&gt;the array, while the other numbers are returned in the array&lt;br /&gt;as objects of type integer.&lt;br /&gt;-------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*"key" should be replaced by a constant of module "VirtualKeys"&lt;br /&gt;*See the constants in module "VirtualKeys"&lt;br /&gt;&lt;br /&gt;Sample:&lt;br /&gt;if VirtualKeys.trigger?(VirtualKeys::VK_A)&lt;br /&gt;  print "\"A\" is being pressed"&lt;br /&gt;end&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;module VirtualKeys&lt;br /&gt;GetAsyncKeyState = Win32API.new("user32","GetAsyncKeyState",'i','i')&lt;br /&gt;GetKeyState = Win32API.new("user32","GetKeyState",'i','i')&lt;br /&gt;$LastKey=0&lt;br /&gt;$CallsCounter=0&lt;br /&gt;$Acento=0&lt;br /&gt;&lt;br /&gt;#Constants copied:&lt;br /&gt;#http://msdn.microsoft.com/en-us/library/ms927178.aspx&lt;br /&gt;#http://www.kbdedit.com/manual/low_level_vk_list.html&lt;br /&gt;&lt;br /&gt;VK_LBUTTON=0x01 #Left mouse button&lt;br /&gt;VK_RBUTTON=0x02 #Right mouse button&lt;br /&gt;VK_CANCEL=0x03 #Control-break processing&lt;br /&gt;VK_MBUTTON=0x04 #Middle mouse button on a three-button mouse&lt;br /&gt;VK_BACK=0x08 #BACKSPACE key&lt;br /&gt;VK_TAB=0x09 #TAB key&lt;br /&gt;VK_CLEAR=0x0C #CLEAR key&lt;br /&gt;VK_RETURN=0x0D #ENTER key&lt;br /&gt;VK_SHIFT=0x10 #SHIFT key&lt;br /&gt;VK_CONTROL=0x11 #CTRL key&lt;br /&gt;VK_MENU=0x12 #ALT key&lt;br /&gt;VK_PAUSE=0x13 #PAUSE key&lt;br /&gt;VK_CAPITAL=0x14 #CAPS LOCK key&lt;br /&gt;VK_ESCAPE=0x1B #ESC key&lt;br /&gt;VK_SPACE=0x20 #SPACEBAR&lt;br /&gt;VK_PRIOR=0x21 #PAGE UP key&lt;br /&gt;VK_NEXT=0x22 #PAGE DOWN key&lt;br /&gt;VK_END=0x23 #END key&lt;br /&gt;VK_HOME=0x24 #HOME key&lt;br /&gt;VK_LEFT=0x25 #LEFT ARROW key&lt;br /&gt;VK_UP=0x26 #UP ARROW key&lt;br /&gt;VK_RIGHT=0x27 #RIGHT ARROW key&lt;br /&gt;VK_DOWN=0x28 #DOWN ARROW key&lt;br /&gt;VK_SELECT=0x29 #SELECT key&lt;br /&gt;VK_EXECUTE=0x2B #EXECUTE key&lt;br /&gt;VK_SNAPSHOT=0x2C #PRINT SCREEN key&lt;br /&gt;VK_INSERT=0x2D #INS key&lt;br /&gt;VK_DELETE=0x2E #DEL key&lt;br /&gt;VK_HELP=0x2F #HELP key&lt;br /&gt;&lt;br /&gt;VK_0=0x30 #0 key&lt;br /&gt;VK_1=0x31 #1 key&lt;br /&gt;VK_2=0x32 #2 key&lt;br /&gt;VK_3=0x33 #3 key&lt;br /&gt;VK_4=0x34 #4 key&lt;br /&gt;VK_5=0x35 #5 key&lt;br /&gt;VK_6=0x36 #6 key&lt;br /&gt;VK_7=0x37 #7 key&lt;br /&gt;VK_8=0x38 #8 key&lt;br /&gt;VK_9=0x39 #9 key&lt;br /&gt;&lt;br /&gt;VK_A=0x41 #A key&lt;br /&gt;VK_B=0x42 #B key&lt;br /&gt;VK_C=0x43 #C key&lt;br /&gt;VK_D=0x44 #D key&lt;br /&gt;VK_E=0x45 #E key&lt;br /&gt;VK_F=0x46 #F key&lt;br /&gt;VK_G=0x47 #G key&lt;br /&gt;VK_H=0x48 #H key&lt;br /&gt;VK_I=0x49 #I key&lt;br /&gt;VK_J=0x4A #J key&lt;br /&gt;VK_K=0x4B #K key&lt;br /&gt;VK_L=0x4C #L key&lt;br /&gt;VK_M=0x4D #M key&lt;br /&gt;VK_N=0x4E #N key&lt;br /&gt;VK_O=0x4F #O key&lt;br /&gt;VK_P=0x50 #P key&lt;br /&gt;VK_Q=0x51 #Q key&lt;br /&gt;VK_R=0x52 #R key&lt;br /&gt;VK_S=0x53 #S key&lt;br /&gt;VK_T=0x54 #T key&lt;br /&gt;VK_U=0x55 #U key&lt;br /&gt;VK_V=0x56 #V key&lt;br /&gt;VK_W=0x57 #W key&lt;br /&gt;VK_X=0x58 #X key&lt;br /&gt;VK_Y=0x59 #Y key&lt;br /&gt;VK_Z=0x5A #Z key&lt;br /&gt;&lt;br /&gt;VK_LWIN=0x5B #Left Windows key on a Microsoft Natural Keyboard&lt;br /&gt;VK_RWIN=0x5C #Right Windows key on a Microsoft Natural Keyboard&lt;br /&gt;VK_APPS=0x5D #Applications key on a Microsoft Natural Keyboard&lt;br /&gt;VK_NUMPAD0=0x60 #Numeric keypad 0 key&lt;br /&gt;VK_NUMPAD1=0x61 #Numeric keypad 1 key&lt;br /&gt;VK_NUMPAD2=0x62 #Numeric keypad 2 key&lt;br /&gt;VK_NUMPAD3=0x63 #Numeric keypad 3 key&lt;br /&gt;VK_NUMPAD4=0x64 #Numeric keypad 4 key&lt;br /&gt;VK_NUMPAD5=0x65 #Numeric keypad 5 key&lt;br /&gt;VK_NUMPAD6=0x66 #Numeric keypad 6 key&lt;br /&gt;VK_NUMPAD7=0x67 #Numeric keypad 7 key&lt;br /&gt;VK_NUMPAD8=0x68 #Numeric keypad 8 key&lt;br /&gt;VK_NUMPAD9=0x69 #Numeric keypad 9 key&lt;br /&gt;VK_MULTIPLY=0x6A #Multiply key&lt;br /&gt;VK_ADD=0x6B #Add key&lt;br /&gt;VK_SEPARATOR=0x6C #Separator key&lt;br /&gt;VK_SUBTRACT=0x6D #Subtract key&lt;br /&gt;VK_DECIMAL=0x6E #Decimal key&lt;br /&gt;VK_DIVIDE=0x6F #Divide key&lt;br /&gt;VK_F1=0x70 #F1 key&lt;br /&gt;VK_F2=0x71 #F2 key&lt;br /&gt;VK_F3=0x72 #F3 key&lt;br /&gt;VK_F4=0x73 #F4 key&lt;br /&gt;VK_F5=0x74 #F5 key&lt;br /&gt;VK_F6=0x75 #F6 key&lt;br /&gt;VK_F7=0x76 #F7 key&lt;br /&gt;VK_F8=0x77 #F8 key&lt;br /&gt;VK_F9=0x78 #F9 key&lt;br /&gt;VK_F10=0x79 #F10 key&lt;br /&gt;VK_F11=0x7A #F11 key&lt;br /&gt;VK_F12=0x7B #F12 key&lt;br /&gt;VK_F13=0x7C #F13 key&lt;br /&gt;VK_F14=0x7D #F14 key&lt;br /&gt;VK_F15=0x7E #F15 key&lt;br /&gt;VK_F16=0x7F #F16 key&lt;br /&gt;VK_F17=0x80 #F17 key&lt;br /&gt;VK_F18=0x81 #F18 key&lt;br /&gt;VK_F19=0x82 #F19 key&lt;br /&gt;VK_F20=0x83 #F20 key&lt;br /&gt;VK_F21=0x84 #F21 key&lt;br /&gt;VK_F22=0x85 #F22 key (PPC only) Key used to lock device.&lt;br /&gt;VK_F23=0x86 #F23 key&lt;br /&gt;VK_F24=0x87 #F24 key&lt;br /&gt;VK_NUMLOCK=0x90 #NUM LOCK key&lt;br /&gt;VK_SCROLL=0x91 #SCROLL LOCK key&lt;br /&gt;VK_LSHIFT=0xA0 #Left SHIFT&lt;br /&gt;VK_RSHIFT=0xA1 #Right SHIFT&lt;br /&gt;VK_LCONTROL=0xA2 #Left CTRL&lt;br /&gt;VK_RCONTROL=0xA3 #Right CTRL&lt;br /&gt;VK_LMENU=0xA4 #Left ALT&lt;br /&gt;VK_RMENU=0xA5 #Right ALT&lt;br /&gt;VK_PACKET=0xE7 #Used to pass Unicode characters as if they were keystrokes.&lt;br /&gt;#If VK_PACKET is used with SendInput, ; the Unicode character to be delivered&lt;br /&gt;#should be placed into the lower 16 bits of the scan code. If a keyboard message&lt;br /&gt;#is removed from the message queue and the virtual key is VK_PACKET, ; the&lt;br /&gt;#Unicode character will be the upper 16 bits of the lparam.&lt;br /&gt;VK_ATTN=0xF6 #ATTN key&lt;br /&gt;VK_CRSEL=0xF7 #CRSEL key&lt;br /&gt;VK_EXSEL=0xF8 #EXSEL key&lt;br /&gt;VK_EREOF=0xF9 #Erase EOF key&lt;br /&gt;VK_PLAY=0xFA #PLAY key&lt;br /&gt;VK_ZOOM=0xFB #ZOOM key&lt;br /&gt;VK_NONAME=0xFC #Reserved for future use&lt;br /&gt;VK_PA1=0xFD #PA1 key&lt;br /&gt;VK_OEM_CLEAR=0xFE #CLEAR key&lt;br /&gt;VK_KEYLOCK=0xF22 #Key used to lock device&lt;br /&gt;&lt;br /&gt;VK_OEM_SCROLL=0x91 #None&lt;br /&gt;VK_OEM_1=0xBA #";:" for US --- "ç" no padrão ABNT&lt;br /&gt;VK_OEM_PLUS=0xBB #"+" any country/region&lt;br /&gt;VK_OEM_COMMA=0xBC #"," any country/region&lt;br /&gt;VK_OEM_MINUS=0xBD #"-" any country/region&lt;br /&gt;VK_OEM_PERIOD=0xBE #"." any country/region&lt;br /&gt;VK_OEM_2=0xBF #"/?" for US --- ";:" no padrão ABNT&lt;br /&gt;VK_OEM_3=0xC0 #"`~" for US --- " '" " no padrão ABNT&lt;br /&gt;VK_OEM_4=0xDB #"[{" for US --- "´`" no padrão ABNT&lt;br /&gt;VK_OEM_5=0xDC #"\|" for US --- "]" no padrão ABNT&lt;br /&gt;VK_OEM_6=0xDD #"]}" for US --- "[" no padrão ABNT&lt;br /&gt;VK_OEM_7=0xDE #"'"" for US --- "~^" no padrão ABNT&lt;br /&gt;VK_OEM_8=0xDF #None&lt;br /&gt;VK_OEM_AX=0xE1 #AX key on Japanese AX keyboard&lt;br /&gt;VK_OEM_102=0xE2 #"&amp;lt;&amp;gt;" or "\|" on RT 102-key keyboard --- "\|" no padrão ABNT&lt;br /&gt;VK_ABNT_C1 = 0xC1 #"?/°" no padrão ABNT&lt;br /&gt;VK_ABNT_C2 = 0xC2 #"." no padrão ABNT&lt;br /&gt;&lt;br /&gt;VK_DBE_ALPHANUMERIC=0x0f0 #Changes the mode to alphanumeric.&lt;br /&gt;VK_DBE_KATAKANA=0x0f1 #Changes the mode to Katakana.&lt;br /&gt;VK_DBE_HIRAGANA=0x0f2 #Changes the mode to Hiragana.&lt;br /&gt;VK_DBE_SBCSCHAR=0x0f3 #Changes the mode to single-byte characters.&lt;br /&gt;VK_DBE_DBCSCHAR=0x0f4 #Changes the mode to double-byte characters.&lt;br /&gt;VK_DBE_ROMAN=0x0f5 #Changes the mode to Roman characters.&lt;br /&gt;VK_DBE_NOROMAN=0x0f6 #Changes the mode to non-Roman characters.&lt;br /&gt;VK_DBE_ENTERWORDREGISTERMODE=0x0f7 #Activates the word registration dialog box.&lt;br /&gt;VK_DBE_ENTERIMECONFIGMODE=0x0f8 #Activates a dialog box for setting up an IME environment.&lt;br /&gt;VK_DBE_FLUSHSTRING=0x0f9 #Deletes the undetermined string without determining it.&lt;br /&gt;VK_DBE_CODEINPUT=0x0fa #Changes the mode to code input.&lt;br /&gt;VK_DBE_NOCODEINPUT=0x0fb #Changes the mode to no-code input.&lt;br /&gt;&lt;br /&gt;  #===========================&lt;br /&gt;  # GetAsyncKeyState function&lt;br /&gt;  #===========================&lt;br /&gt;  def self.gaks(key)&lt;br /&gt;    GetAsyncKeyState.call(key)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #======================&lt;br /&gt;  # GetKeyState function&lt;br /&gt;  #======================&lt;br /&gt;  def self.gks(key)&lt;br /&gt;    GetKeyState.call(key)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#press?(key)&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.press?(key)&lt;br /&gt;    getState = self.gaks(key)&lt;br /&gt;    return(true) if getState != 0&lt;br /&gt;    false&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#trigger?(key)&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.trigger?(key)&lt;br /&gt;    getState = self.gaks(key)&lt;br /&gt;    getState2 = 0&lt;br /&gt;    getState2 = self.gaks($LastKey) if $LastKey != 0&lt;br /&gt;    return($LastKey = 0;false) if getState == 0 and getState2 == 0&lt;br /&gt;    return(false) if key == $LastKey and getState != 0&lt;br /&gt;    $LastKey = key if getState != 0&lt;br /&gt;    return false if getState == 0&lt;br /&gt;    true&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#repeat?(key)&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.repeat?(key)&lt;br /&gt;    return ($CallsCounter -= 1;false) if $CallsCounter &amp;gt; 0&lt;br /&gt;    ($CallsCounter = 5;return(true)) if self.gaks(key) != 0&lt;br /&gt;    false&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#dir4(type=0, ignore_numpad=false)&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.dir4(type=0,ignore_numpad=false)&lt;br /&gt;    case type&lt;br /&gt;    when 0&lt;br /&gt;      if self.press?(VK_DOWN) or (!ignore_numpad &amp;amp;&amp;amp; self.press?(VK_NUMPAD2)) ; return(2)&lt;br /&gt;      elsif self.press?(VK_LEFT) or (!ignore_numpad &amp;amp;&amp;amp; self.press?(VK_NUMPAD4)) ; return(4)&lt;br /&gt;      elsif self.press?(VK_RIGHT) or (!ignore_numpad &amp;amp;&amp;amp; self.press?(VK_NUMPAD6)) ; return(6)&lt;br /&gt;      elsif self.press?(VK_UP) or (!ignore_numpad &amp;amp;&amp;amp; self.press?(VK_NUMPAD8)) ; return(8)&lt;br /&gt;      end&lt;br /&gt;    when 1&lt;br /&gt;      if self.trigger?(VK_DOWN) or (!ignore_numpad &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD2)) ; return(2)&lt;br /&gt;      elsif self.trigger?(VK_LEFT) or (!ignore_numpad &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD4)) ; return(4)&lt;br /&gt;      elsif self.trigger?(VK_RIGHT) or (!ignore_numpad &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD6)) ; return(6)&lt;br /&gt;      elsif self.trigger?(VK_UP) or (!ignore_numpad &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD8)) ; return(8)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    0&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#dir8(type=0, ignore_numpad=false)&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.dir8(type=0,ignore_numpad=false)&lt;br /&gt;    case type&lt;br /&gt;    when 0&lt;br /&gt;      if (self.press?(VK_DOWN) &amp;amp;&amp;amp; self.press?(VK_LEFT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.press?(VK_NUMPAD2) &amp;amp;&amp;amp; self.press?(VK_NUMPAD4))) ; return(1)&lt;br /&gt;      elsif (self.press?(VK_DOWN) &amp;amp;&amp;amp; self.press?(VK_RIGHT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.press?(VK_NUMPAD2) &amp;amp;&amp;amp; self.press?(VK_NUMPAD6))) ; return(3)&lt;br /&gt;      elsif (self.press?(VK_UP) &amp;amp;&amp;amp; self.press?(VK_LEFT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.press?(VK_NUMPAD8) &amp;amp;&amp;amp; self.press?(VK_NUMPAD4))) ; return(7)&lt;br /&gt;      elsif (self.press?(VK_UP) &amp;amp;&amp;amp; self.press?(VK_RIGHT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.press?(VK_NUMPAD2) &amp;amp;&amp;amp; self.press?(VK_NUMPAD6))) ; return(9)&lt;br /&gt;      end&lt;br /&gt;    when 1&lt;br /&gt;      if (self.trigger?(VK_DOWN) &amp;amp;&amp;amp; self.trigger?(VK_LEFT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.trigger?(VK_NUMPAD2) &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD4))) ; return(1)&lt;br /&gt;      elsif (self.trigger?(VK_DOWN) &amp;amp;&amp;amp; self.trigger?(VK_RIGHT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.trigger?(VK_NUMPAD2) &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD6))) ; return(3)&lt;br /&gt;      elsif (self.trigger?(VK_UP) &amp;amp;&amp;amp; self.trigger?(VK_LEFT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.trigger?(VK_NUMPAD8) &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD4))) ; return(7)&lt;br /&gt;      elsif (self.trigger?(VK_UP) &amp;amp;&amp;amp; self.trigger?(VK_RIGHT)) or \&lt;br /&gt;        (!ignore_numpad &amp;amp;&amp;amp; (self.trigger?(VK_NUMPAD2) &amp;amp;&amp;amp; self.trigger?(VK_NUMPAD6))) ; return(9)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    self.dir4(type,ignore_numpad)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;if self.gks(VK_CAPITAL) == 0&lt;br /&gt;  $CAPITAL = false&lt;br /&gt;else $CAPITAL = true&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;  #============================================================&lt;br /&gt;  # VirtualKeys#get_char()&lt;br /&gt;  #============================================================&lt;br /&gt;  def self.get_char()&lt;br /&gt;    if self.gaks(VK_SPACE) != 0&lt;br /&gt;      char = ' '&lt;br /&gt;    end&lt;br /&gt;    if self.gaks(VK_OEM_7) != 0&lt;br /&gt;      case $Acento&lt;br /&gt;      when 0&lt;br /&gt;        $Acento = 1&lt;br /&gt;        $Acento = 2 if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        return([true])&lt;br /&gt;      when 1&lt;br /&gt;        char = "~"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 2&lt;br /&gt;        char = "^"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 3&lt;br /&gt;        char = "´"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 4&lt;br /&gt;        char = "`"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 5&lt;br /&gt;        char = "¨"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0 ; return(char)&lt;br /&gt;    elsif self.gaks(VK_OEM_4) != 0&lt;br /&gt;      case $Acento&lt;br /&gt;      when 0&lt;br /&gt;        $Acento = 3&lt;br /&gt;        $Acento = 4 if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        return([true])&lt;br /&gt;      when 1&lt;br /&gt;        char = "~"&lt;br /&gt;        c = "´"&lt;br /&gt;        c = "`" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 2&lt;br /&gt;        char = "^"&lt;br /&gt;        c = "´"&lt;br /&gt;        c = "`" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 3&lt;br /&gt;        char = "´"&lt;br /&gt;        c = "´"&lt;br /&gt;        c = "`" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 4&lt;br /&gt;        char = "`"&lt;br /&gt;        c = "´"&lt;br /&gt;        c = "`" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 5&lt;br /&gt;        char="¨"&lt;br /&gt;        c = "~"&lt;br /&gt;        c = "^" if self.gaks(VK_SHIFT) != 0&lt;br /&gt;        char = [char,c]&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0 ; return(char)&lt;br /&gt;    elsif self.gaks(VK_6) != 0 and self.gaks(VK_SHIFT) != 0&lt;br /&gt;      case $Acento&lt;br /&gt;      when 0&lt;br /&gt;        $Acento = 5&lt;br /&gt;        return([true])&lt;br /&gt;      when 1&lt;br /&gt;        char = "~"&lt;br /&gt;        c = "¨"&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 2&lt;br /&gt;        char = "^"&lt;br /&gt;        c = "¨"&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 3&lt;br /&gt;        char = "´"&lt;br /&gt;        c = "¨"&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 4&lt;br /&gt;        char = "`"&lt;br /&gt;        c = "¨"&lt;br /&gt;        char = [char,c]&lt;br /&gt;      when 5&lt;br /&gt;        char = "¨"&lt;br /&gt;        c = "¨"&lt;br /&gt;        char = [char,c]&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0 ; return(char)&lt;br /&gt;    end&lt;br /&gt;    if self.gks(VK_CAPITAL) == 0&lt;br /&gt;      $CAPITAL = false&lt;br /&gt;    else $CAPITAL = true end&lt;br /&gt;    if self.gaks(VK_A) != 0 ; char = 'a'&lt;br /&gt;    elsif self.gaks(VK_B) != 0 ; char = 'b'&lt;br /&gt;    elsif self.gaks(VK_C) != 0 ; char = 'c'&lt;br /&gt;    elsif self.gaks(VK_D) != 0 ; char = 'd'&lt;br /&gt;    elsif self.gaks(VK_E) != 0 ; char = 'e'&lt;br /&gt;    elsif self.gaks(VK_F) != 0 ; char = 'f'&lt;br /&gt;    elsif self.gaks(VK_G) != 0 ; char = 'g'&lt;br /&gt;    elsif self.gaks(VK_H) != 0 ; char = 'h'&lt;br /&gt;    elsif self.gaks(VK_I) != 0 ; char = 'i'&lt;br /&gt;    elsif self.gaks(VK_J) != 0 ; char = 'j'&lt;br /&gt;    elsif self.gaks(VK_K) != 0 ; char = 'k'&lt;br /&gt;    elsif self.gaks(VK_L) != 0 ; char = 'l'&lt;br /&gt;    elsif self.gaks(VK_M) != 0 ; char = 'm'&lt;br /&gt;    elsif self.gaks(VK_N) != 0 ; char = 'n'&lt;br /&gt;    elsif self.gaks(VK_O) != 0 ; char = 'o'&lt;br /&gt;    elsif self.gaks(VK_P) != 0 ; char = 'p'&lt;br /&gt;    elsif self.gaks(VK_Q) != 0 ; char = 'q'&lt;br /&gt;    elsif self.gaks(VK_R) != 0 ; char = 'r'&lt;br /&gt;    elsif self.gaks(VK_S) != 0 ; char = 's'&lt;br /&gt;    elsif self.gaks(VK_T) != 0 ; char = 't'&lt;br /&gt;    elsif self.gaks(VK_U) != 0 ; char = 'u'&lt;br /&gt;    elsif self.gaks(VK_V) != 0 ; char = 'v'&lt;br /&gt;    elsif self.gaks(VK_W) != 0 ; char = 'w'&lt;br /&gt;    elsif self.gaks(VK_X) != 0 ; char = 'x'   &lt;br /&gt;    elsif self.gaks(VK_Y) != 0 ; char = 'y'&lt;br /&gt;    elsif self.gaks(VK_Z) != 0 ; char = 'z'&lt;br /&gt;    elsif self.gaks(VK_OEM_1) != 0 ; char = 'ç'&lt;br /&gt;    elsif (self.gaks(VK_0)!=0) ; char = 0&lt;br /&gt;    elsif (self.gaks(VK_1)!=0) ; char = 1&lt;br /&gt;    elsif (self.gaks(VK_2)!=0) ; char = 2&lt;br /&gt;    elsif (self.gaks(VK_3)!=0) ; char = 3&lt;br /&gt;    elsif (self.gaks(VK_4)!=0) ; char = 4&lt;br /&gt;    elsif (self.gaks(VK_5)!=0) ; char = 5&lt;br /&gt;    elsif (self.gaks(VK_6)!=0) ; char = 6&lt;br /&gt;    elsif (self.gaks(VK_7)!=0) ; char = 7&lt;br /&gt;    elsif (self.gaks(VK_8)!=0) ; char = 8&lt;br /&gt;    elsif (self.gaks(VK_9)!=0) ; char = 9&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD0)!=0) ; char = '0'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD1)!=0) ; char = '1'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD2)!=0) ; char = '2'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD3)!=0) ; char = '3'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD4)!=0) ; char = '4'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD5)!=0) ; char = '5'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD6)!=0) ; char = '6'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD7)!=0) ; char = '7'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD8)!=0) ; char = '8'&lt;br /&gt;    elsif (self.gaks(VK_NUMPAD9)!=0) ; char = '9'     &lt;br /&gt;    elsif (self.gaks(VK_OEM_COMMA)!=0) or (self.gaks(VK_DECIMAL)!=0) ; char = ','&lt;br /&gt;    elsif self.gaks(VK_OEM_PERIOD) != 0 ; char = '.'   &lt;br /&gt;    elsif self.gaks(VK_OEM_PLUS) != 0 ; char = '='&lt;br /&gt;    elsif (self.gaks(VK_OEM_MINUS)!=0) or (self.gaks(VK_SUBTRACT)!=0) ; char = '-'&lt;br /&gt;    elsif self.gaks(VK_ABNT_C2) != 0 ; return (['.'])&lt;br /&gt;    elsif self.gaks(VK_ADD) != 0 ; return (['+'])&lt;br /&gt;    elsif self.gaks(VK_DIVIDE) != 0 ; return (['/'])   &lt;br /&gt;    elsif self.gaks(VK_MULTIPLY) != 0 ; return (['*'])&lt;br /&gt;    elsif self.gaks(VK_ABNT_C1) != 0 ; char = '/'&lt;br /&gt;    elsif self.gaks(VK_OEM_102) != 0 ; char = "\\"&lt;br /&gt;    elsif self.gaks(VK_OEM_2) != 0 ; char = ";"&lt;br /&gt;    elsif self.gaks(VK_OEM_3) != 0 ; char = "\'"&lt;br /&gt;    elsif self.gaks(VK_OEM_5) != 0 ; char = ']'&lt;br /&gt;    elsif self.gaks(VK_OEM_6) != 0 ; char = '['&lt;br /&gt;    end&lt;br /&gt;    if self.gaks(VK_SHIFT) != 0 and char != nil and char.is_a?(Integer) == false&lt;br /&gt;      case char&lt;br /&gt;      when ',' ;  char = '&amp;lt;'&lt;br /&gt;      when '.' ;  char = '&amp;gt;'&lt;br /&gt;      when '=' ;  char = '+'&lt;br /&gt;      when '-' ;  char = '_'&lt;br /&gt;      when "\\" ; char = '|'&lt;br /&gt;      when ';' ;  char = ':'&lt;br /&gt;      when '/' ;  char = '?'&lt;br /&gt;      when "\'" ; char = "\""&lt;br /&gt;      when ']' ;  char = '}'&lt;br /&gt;      when '[' ;  char = '{'&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    if (self.gaks(VK_SHIFT) != 0 or $CAPITAL == true) and char != nil and \&lt;br /&gt;      char.is_a?(Integer) == false&lt;br /&gt;      char=char.upcase&lt;br /&gt;      char='Ç' if char=='ç'&lt;br /&gt;    end&lt;br /&gt;    if self.gaks(VK_SHIFT) != 0 and char != nil and char.is_a?(Integer) == true&lt;br /&gt;      case char&lt;br /&gt;      when 0 ; char = ')'&lt;br /&gt;      when 1 ; char = '!'&lt;br /&gt;      when 2 ; char = '@'&lt;br /&gt;      when 3 ; char = '#'&lt;br /&gt;      when 4 ; char = '$'&lt;br /&gt;      when 5 ; char = '%'&lt;br /&gt;      when 7 ; char = '&amp;amp;'&lt;br /&gt;      when 8 ; char = '*'&lt;br /&gt;      when 9 ; char = '('&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    if self.gaks(VK_MENU) != 0 and char != nil and char.is_a?(Integer) == true&lt;br /&gt;      case char&lt;br /&gt;      when 1 ; char = '¹'&lt;br /&gt;      when 2 ; char = '²'&lt;br /&gt;      when 3 ; char = '³'&lt;br /&gt;      when 4 ; char = '£'&lt;br /&gt;      when 5 ; char = '¢'&lt;br /&gt;      when 6 ; char = '¬'     &lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    if self.gaks(VK_MENU) != 0 and char != nil and char.is_a?(Integer) == false&lt;br /&gt;      case char&lt;br /&gt;      when '/' ; char = '°'&lt;br /&gt;      when ']' ; char = 'º'&lt;br /&gt;      when '[' ; char = 'ª'&lt;br /&gt;      when '=' ; char = '§'&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    if $Acento != 0 and char == ' '&lt;br /&gt;      case $Acento&lt;br /&gt;      when 1 ; char = '~'&lt;br /&gt;      when 2 ; char = '^'&lt;br /&gt;      when 3 ; char = '´'&lt;br /&gt;      when 4 ; char = '`'&lt;br /&gt;      when 5 ; char = '¨'&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0&lt;br /&gt;    end&lt;br /&gt;    if $Acento != 0 and char =~ /[\w]/i&lt;br /&gt;      case $Acento&lt;br /&gt;      when 1&lt;br /&gt;        if char == 'A' ; char = 'Ã'&lt;br /&gt;        elsif char == 'a' ; char = 'ã'&lt;br /&gt;        elsif char == 'O' ; char = 'Õ'&lt;br /&gt;        elsif char == 'o' ; char = 'õ'&lt;br /&gt;        elsif char == 'N' ; char = 'Ñ'&lt;br /&gt;        elsif char == 'n' ; char = 'ñ'&lt;br /&gt;        end&lt;br /&gt;      when 2&lt;br /&gt;        if char == 'A' ; char = 'Â'&lt;br /&gt;        elsif char == 'a' ; char = 'â'&lt;br /&gt;        elsif char == 'E' ; char = 'Ê'&lt;br /&gt;        elsif char == 'e' ; char = 'ê'&lt;br /&gt;        elsif char == 'I' ; char = 'Î'&lt;br /&gt;        elsif char == 'i' ; char = 'î'&lt;br /&gt;        elsif char == 'O' ; char = 'Ô'&lt;br /&gt;        elsif char == 'o' ; char = 'ô'&lt;br /&gt;        elsif char == 'U' ; char = 'Û'&lt;br /&gt;        elsif char == 'u' ; char = 'û'&lt;br /&gt;        end&lt;br /&gt;      when 3&lt;br /&gt;        if char == 'A' ; char = 'Á'&lt;br /&gt;        elsif char == 'a' ; char = 'á'&lt;br /&gt;        elsif char == 'E' ; char = 'É'&lt;br /&gt;        elsif char == 'e' ; char = 'é'&lt;br /&gt;        elsif char == 'I' ; char = 'Í'&lt;br /&gt;        elsif char == 'i' ; char = 'í'&lt;br /&gt;        elsif char == 'O' ; char = 'Ó'&lt;br /&gt;        elsif char == 'o' ; char = 'ó'&lt;br /&gt;        elsif char == 'U' ; char = 'Ú'&lt;br /&gt;        elsif char == 'u' ; char = 'ú'&lt;br /&gt;        end&lt;br /&gt;      when 4&lt;br /&gt;        if char == 'A' ; char = 'À'&lt;br /&gt;        elsif char == 'a' ; char = 'à'&lt;br /&gt;        elsif char == 'E' ; char = 'È'&lt;br /&gt;        elsif char == 'e' ; char = 'è'&lt;br /&gt;        elsif char == 'I' ; char = 'Ì'&lt;br /&gt;        elsif char == 'i' ; char = 'ì'&lt;br /&gt;        elsif char == 'O' ; char = 'Ò'&lt;br /&gt;        elsif char == 'o' ; char = 'ò'&lt;br /&gt;        elsif char == 'U' ; char = 'Ù'&lt;br /&gt;        elsif char == 'u' ; char = 'ù'&lt;br /&gt;        end&lt;br /&gt;      when 5&lt;br /&gt;        if char == 'A' ; char = 'Ä'&lt;br /&gt;        elsif char == 'a' ; char = 'ä'&lt;br /&gt;        elsif char == 'E' ; char = 'Ë'&lt;br /&gt;        elsif char == 'e' ; char = 'ë'&lt;br /&gt;        elsif char == 'I' ; char = 'Ï'&lt;br /&gt;        elsif char == 'i' ; char = 'ï'&lt;br /&gt;        elsif char == 'O' ; char = 'Ö'&lt;br /&gt;        elsif char == 'o' ; char = 'ö'&lt;br /&gt;        elsif char == 'U' ; char = 'Ü'&lt;br /&gt;        elsif char == 'u' ; char = 'ü'&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0&lt;br /&gt;    elsif $Acento != 0 and char != nil&lt;br /&gt;      case $Acento&lt;br /&gt;      when 1 ; char = ['~',char]&lt;br /&gt;      when 2 ; char = ['^',char]&lt;br /&gt;      when 3 ; char = ['´',char]&lt;br /&gt;      when 4 ; char = ['`',char]&lt;br /&gt;      end&lt;br /&gt;      $Acento = 0&lt;br /&gt;      return(char)&lt;br /&gt;    end&lt;br /&gt;    [char]&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;Feito por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;&lt;i&gt;&lt;span style="font-weight: normal;"&gt;Constantes retiradas/pesquisadas de:&lt;br /&gt;http://msdn.microsoft.com/en-us/library/ms927178.aspx&lt;br /&gt;http://www.kbdedit.com/manual/low_level_vk_list.html &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4595250426573419391?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4595250426573419391/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/02/module-virtualkeys.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4595250426573419391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4595250426573419391'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/02/module-virtualkeys.html' title='Module VirtualKeys'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-8342986150249912086</id><published>2010-02-01T14:47:00.004-02:00</published><updated>2010-05-01T19:43:44.709-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Novidades</title><content type='html'>&lt;b&gt;&lt;i&gt;Interface do blog&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O blog sofreu pequenas, mas consideráveis, modificações visuais e na organização.&lt;br /&gt;A organização da sessão "Parceiros" foi mudada, posição das sessões também foram modificadas. E agora na sessão "Menu", para ficar algo mais discreto e compacto, para visualizar os tópicos é preciso expandir o menu clicando no menu desejado.&lt;br /&gt;Também foi adicionados uma sessão para destaques no topo da página, onde serão colocadas imagens com hiperligações para os respectivos itens. Lá serão colocadas, não apenas conteúdo criado aqui no blog, mas também conteúdo alheio que mereça destaque. Sempre que possível essa sessão será atualizada, portanto algumas destaques podem ser tirados para dar lugar a outros.&lt;br /&gt;Fora isto, o restante são apenas consertos na parte visual, mas pouco perceptíveis ainda.&lt;br /&gt;Aos poucos mais atualizações serão feitas com relação a interface do blog.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Parcerias&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A mais nova parceria da &lt;b&gt;Colméia do Zé&lt;/b&gt;, é o blog &lt;b&gt;&lt;i&gt;Crazy Nero Studio&lt;/i&gt;&lt;/b&gt; que expõem os trabalhos de Felipe, um &lt;b&gt;gamer mais que amador&lt;/b&gt;(humilde, não?)  e desenhista.&lt;br /&gt;Com certeza vale a pena conferir os ótimos trabalhos do Nero!&lt;br /&gt;&lt;br /&gt;&lt;sub&gt;acesse:&lt;/sub&gt;&lt;br /&gt;&lt;a href="http://crazynerostudio.blogspot.com/" target="blank"&gt;http://crazynerostudio.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Atualizações e novidade nas sessões de scripts&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O script &lt;b&gt;C-3DSR&lt;/b&gt; foi atualizado. Alem de consertar alguns Bugs, ele traz algumas novidades sendo a primeira delas pelo nome, que agora se chama &lt;b&gt;C-RS(Colméia - Rotate Sprite)&lt;/b&gt;.&lt;br /&gt;Confira as novidades nesses scripts no link abaixo.&lt;br /&gt;&lt;br /&gt;&lt;a href="/2009/12/c-3dsrcolmeia-3d-sprite-rotation.html"&gt;C-RS(Colméia - Rotate Sprite)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inaugurando o indíce de scripts para RGSS2, o script &lt;b&gt;C-TT(Colméia - Transition to Teleport)&lt;/b&gt; permite adicionar transições de tela ao usar o comando &lt;b&gt;Teletransporte&lt;/b&gt; da aba de eventos de forma simples e compacta. Confira!&lt;br /&gt;&lt;br /&gt;&lt;a href="/2010/01/c-ttcolmeia-transition-to-teleport.html"&gt;C-TT(Colméia - Transition to Teleport)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-8342986150249912086?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/8342986150249912086/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/02/novidades.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8342986150249912086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8342986150249912086'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/02/novidades.html' title='Novidades'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-44594373693052227</id><published>2010-01-31T16:27:00.003-02:00</published><updated>2010-02-02T11:26:43.499-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS2'/><title type='text'>C-TT(Colméia - Transition to Teleport)</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;C-TT(Colméia - Transition to Teleport)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Permite executar uma transição ao teleportar.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Características&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;configuração de duração e ambiguidade. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Como usar&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Instale o script acima de main.&lt;br /&gt;&lt;br /&gt;Crie uma pasta com o nome Transitions para os arquivos de transição. &lt;br /&gt;&lt;br /&gt;Use o comando chamar script e coloque:&lt;br /&gt;&lt;br /&gt;$game_temp.transition = [duração,"nome do arquivo",ambiguidade]&lt;br /&gt;&lt;br /&gt;OBS1:O nome do arquivo deve estar entre aspas e não é preciso colocar a extensão do arquivo.&lt;br /&gt;OBS2:Se não quiser usar transição em um teleporte use:&lt;br /&gt;&lt;br /&gt;$game_temp.transition = [0,"",0]&lt;br /&gt;&lt;br /&gt;Após o chamar script, basta usar o comando de teleporte normalmente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/212353273/282bd802/C-TT.html" target="_blank"&gt;Download  da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Script&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#===============================================================&lt;br /&gt;# C-TT(Colméia - Transition to Teleport)&lt;br /&gt;#---------------------------------------------------------------&lt;br /&gt;#by:    zecomeia&lt;br /&gt;#date:  28//12/2009&lt;br /&gt;#for:   RGSS2&lt;br /&gt;#http://colmeia-do-ze.blogspot.com/&lt;br /&gt;#---------------------------------------------------------------&lt;br /&gt;#Crie uma pasta com o nome Transitions para os arquivos de&lt;br /&gt;#transição.&lt;br /&gt;#&lt;br /&gt;#Use o comando chamar script e coloque:&lt;br /&gt;#&lt;br /&gt;#$game_temp.transition = [duração,"nome do arquivo",ambiguidade]&lt;br /&gt;#&lt;br /&gt;#OBS1:O nome do arquivo deve estar entre aspas e não é preciso&lt;br /&gt;#colocar a extensão do arquivo.&lt;br /&gt;#OBS2:Se não quiser usar transição em um teleporte use:&lt;br /&gt;#&lt;br /&gt;#$game_temp.transition = [0,"",0]&lt;br /&gt;#&lt;br /&gt;#Após o chamar script, basta usar o comando de teleporte &lt;br /&gt;#normalmente.&lt;br /&gt;#===============================================================&lt;br /&gt;class Game_Temp&lt;br /&gt;  attr_accessor :transition&lt;br /&gt;  alias default_initialize initialize&lt;br /&gt;  def initialize()&lt;br /&gt;    @transition = Array.new&lt;br /&gt;    @transition = [0,'',0]&lt;br /&gt;    default_initialize()&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;class Scene_Map &amp;lt; Scene_Base&lt;br /&gt;  def update_transfer_player&lt;br /&gt;    return unless $game_player.transfer?&lt;br /&gt;    fade = (Graphics.brightness &amp;gt; 0)    &lt;br /&gt;    fadeout(30) if fade and $game_temp.transition[1] == ''&lt;br /&gt;    Graphics.freeze&lt;br /&gt;    @spriteset.dispose&lt;br /&gt;    $game_player.perform_transfer&lt;br /&gt;    $game_map.autoplay &lt;br /&gt;    $game_map.update&lt;br /&gt;    if $game_temp.transition[1] == ''&lt;br /&gt;      Graphics.wait(15)&lt;br /&gt;    else&lt;br /&gt;      #$game_map.interpreter.update&lt;br /&gt;      Graphics.transition($game_temp.transition[0], "Graphics/Transitions/"+$game_temp.transition[1],$game_temp.transition[2])&lt;br /&gt;    end&lt;br /&gt;    @spriteset = Spriteset_Map.new &lt;br /&gt;    fadein(30) if fade&lt;br /&gt;    Input.update&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;Feito por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-44594373693052227?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/44594373693052227/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/01/c-ttcolmeia-transition-to-teleport.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/44594373693052227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/44594373693052227'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2010/01/c-ttcolmeia-transition-to-teleport.html' title='C-TT(Colméia - Transition to Teleport)'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-6627101794754489557</id><published>2009-12-31T09:52:00.000-02:00</published><updated>2009-12-31T09:53:29.385-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Aviso - Objetos 3D</title><content type='html'>Iniciei um sistema para &lt;b&gt;montagem&lt;/b&gt; de "objetos" em 3D apartir de sprites. Ainda está longe de ser terminado, mas estou empolgado com o mesmo. O sistema já teve um bom ponta pé inicial, porém, nada que valha a pena ser mostrado &lt;b&gt;ainda&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-6627101794754489557?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/6627101794754489557/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/aviso-objetos-3d.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6627101794754489557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6627101794754489557'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/aviso-objetos-3d.html' title='Aviso - Objetos 3D'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-6764720788077139938</id><published>2009-12-31T09:47:00.002-02:00</published><updated>2009-12-31T09:53:16.403-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Aviso - Atualizações no C-3DSR</title><content type='html'>Talvez alguns sistemas receberam atualizações e/ou consertos. Um deles com certeza será o C-3DSR, que já teve um pequeno bug consertado(erro que acontecia ao resetar o jogo por F12), e também terá uma atualização em suas funções, podendo mudá-lo totalmente ou apenas complementá-lo, mas a idéia continua a mesma, porém melhorada. Nenhuma dessas alterações foram adicionadas ao script no blog, portanto aguardem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-6764720788077139938?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/6764720788077139938/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/noticias.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6764720788077139938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6764720788077139938'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/noticias.html' title='Aviso - Atualizações no C-3DSR'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-8626063167557659899</id><published>2009-12-22T10:29:00.000-02:00</published><updated>2009-12-31T09:48:43.220-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Blog inscrito no top MakersBrasil</title><content type='html'>O blog agora está inscrito no top da &lt;a href="http://www.makersbrasil.com/topsite/"&gt;MakersBrasil&lt;/a&gt;. Então para o pessoal que acompanha o blog e acha que merece um voto, acesse:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.makersbrasil.com/topsite/index.php?a=in&amp;u=zecomeia" target="blank"&gt;&lt;img border="0" alt="MakersBrasil - Top Sites, Top Projetos!" src="http://www.makersbrasil.com/topsite/button.php?u=zecomeia"/&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-8626063167557659899?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/8626063167557659899/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/blog-inscrito-no-top-makersbrasil.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8626063167557659899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8626063167557659899'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/blog-inscrito-no-top-makersbrasil.html' title='Blog inscrito no top MakersBrasil'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-1663607567774875630</id><published>2009-12-20T17:36:00.061-02:00</published><updated>2010-02-01T10:54:57.719-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS12'/><title type='text'>C-RS(Colméia - Rotate Sprite)</title><content type='html'>&lt;style type='text/css'&gt;body,input    {    font-family:&amp;quot;Trebuchet ms&amp;quot;,arial;font-size:0.9em;    color:#204063;    }.spoiler    {    border:0px solid #ddd;    padding:0px;    }.spoiler .inner    {    &lt;!-- border:1px solid #eee; --&gt;    &lt;!-- padding:1px;margin:1px; --&gt;    }    &lt;/style&gt;&lt;br /&gt;&lt;script type='text/javascript'&gt;function showSpoiler(obj)    {    var inner = obj.parentNode.getElementsByTagName(&amp;quot;div&amp;quot;)[0];    if (inner.style.display == &amp;quot;none&amp;quot;)        inner.style.display = &amp;quot;&amp;quot;;    else        inner.style.display = &amp;quot;none&amp;quot;;    }&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;C-RS(Colméia - Rotate Sprite)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Este script é direcionado à scripters, porque adiciona uma função à classe sprite que pode ser usado na criação de scripts.&lt;br /&gt;O efeito que ele oferece é de "rotação 3D" para a imagem. É preciso definir um segundo bitmap alem do padrão(explicações a seguir) que servirá como imagem de verso, ou seja, dará a impressão da imagem ter dois lados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Possibilidade de inverter a imagem de verso também;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Velocidade do "giro" controlável.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;atualização 31/01/2010&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * O efeito está mais fiel(sem excentricidade, a menos que o usuário queira alterar a propriedade ox2) independente do RPGMaker usado;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Consertado para pode modificar a posição X, o zoom horizontal e a origem do mapa;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Consertado o erro que gerava ao reiniciar o jogo(apertar F12);&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Modificação na opção de invertar horizontalmente(agora funciona ao contrário e teve mudança no nome);&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Agora o script não altera a classe Sprite, mas sim cria uma classe chamada Rotate que estende a classe Sprite para evitar de fazer modificações em uma classe importante como essa;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Videos&lt;/b&gt;&lt;br /&gt;&lt;div class="spoiler"&gt;&lt;input onclick="showSpoiler(this);" type="button" value="RMVX" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="320" height="262"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/xc2f2w&amp;colors=background:DEDEDE;&amp;related=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.dailymotion.com/swf/xc2f2w&amp;colors=background:DEDEDE;&amp;related=0" type="application/x-shockwave-flash" width="320" height="262" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/xc2f2w_crscolmeia-rotate-sprite-rmvx_videogames"&gt;C-RS(Colm&amp;eacute;ia - Rotate Sprite) RMVX&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Enviado por &lt;a href="http://www.dailymotion.com/ze_sherek"&gt;ze_sherek&lt;/a&gt;. - &lt;a href="http://www.dailymotion.com/br/channel/videogames"&gt;Veja reviews de games, trailers e seus melhores momentos jogando&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="spoiler"&gt;&lt;input onclick="showSpoiler(this);" type="button" value="RMXP" /&gt;&lt;br /&gt;&lt;div class="inner" style="display: none;"&gt;&lt;br /&gt;&lt;div&gt;&lt;object width="320" height="255"&gt;&lt;param name="movie" value="http://www.dailymotion.com/swf/xc28r7&amp;colors=background:DEDEDE;&amp;related=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.dailymotion.com/swf/xc28r7&amp;colors=background:DEDEDE;&amp;related=0" type="application/x-shockwave-flash" width="320" height="255" allowfullscreen="true" allowscriptaccess="always"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dailymotion.com/video/xc28r7_crscolmeia-rotate-sprite-rmxp_videogames"&gt;C-RS(Colm&amp;eacute;ia - Rotate Sprite) RMXP&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Enviado por &lt;a href="http://www.dailymotion.com/ze_sherek"&gt;ze_sherek&lt;/a&gt;. - &lt;a href="http://www.dailymotion.com/br/channel/videogames"&gt;Clique aqui para ver mais videos de games&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Coloque o script acima de main.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para que o efeito funcione corretamente é preciso usar o método update.&lt;br /&gt;Também é preciso definir o parâmetro "bitmap2" que recebe um bitmap para a imagem de verso, e definir o parâmetro "ppf", que define a velocidade do "giro". Configure a situação inicial dos parâmetros(se precisar) x2, ox2 e zoom_x2 antes de definir bitmap2 para evitar transtornos com o efeitos no seu primeiro frame.&lt;br /&gt;&lt;br /&gt;*OBS: "ppf" = pixels per frame&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/212332823/6f373b54/Rotate_Sprite.html" target="_blank"&gt;Download da demo RMXP&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/212378846/d33a2ef9/_2__Rotate_Sprite.html" target="_blank"&gt;Download da demo RMVX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#======================================&lt;br /&gt;# C-RS(Colméia - Rotate Sprite)&lt;br /&gt;#--------------------------------------&lt;br /&gt;#by:    zecomeia&lt;br /&gt;#date:  20/12/2009&lt;br /&gt;#for: RGSS and RGSS2&lt;br /&gt;#http://colmeia-do-ze.blogspot.com&lt;br /&gt;#--------------------------------------&lt;br /&gt;=begin&lt;br /&gt;updates:&lt;br /&gt;------------------------------------------------&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;[31/01/2010]&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;- Now the script uses the Sprite class as&lt;br /&gt;superclass instead of changing it.&lt;br /&gt;- The property "not_reverse" now called &lt;br /&gt;"mirror2", and its operation is the reverse of &lt;br /&gt;what it was.&lt;br /&gt;- Added the property "x2", "ox2" and "zoom_x2"&lt;br /&gt;to replace the properties "x", "ox" and "zoom_x"&lt;br /&gt;because they are used to cause the effect of the&lt;br /&gt;script, and thus preventing change them.&lt;br /&gt;------------------------------------------------&lt;br /&gt;&lt;br /&gt;about the script:&lt;br /&gt;-------------------------------------------------&lt;br /&gt;A class that inherits from the Sprite class that&lt;br /&gt;adds the effects of rotation on the images giving&lt;br /&gt;the impression the image has depth.&lt;br /&gt;-------------------------------------------------&lt;br /&gt;&lt;br /&gt;manual:&lt;br /&gt;---------------------------------------------&lt;br /&gt;self.bitmap2: back image for effect.&lt;br /&gt;Is a Bitmap object&lt;br /&gt;&lt;br /&gt;self.mirro2: if true,&lt;br /&gt;the back image will be draw flip &lt;br /&gt;horizontally, if false(default), not.&lt;br /&gt;Is a Boolean type&lt;br /&gt;&lt;br /&gt;self.ppf: "pixels per frame" define&lt;br /&gt;the velocity of the effect.&lt;br /&gt;Is a Integer object&lt;br /&gt;&lt;br /&gt;self.x2 = X coordenate of sprite&lt;br /&gt;Is a Integer object&lt;br /&gt;&lt;br /&gt;self.ox2 = X coordenate of the sprite's origin&lt;br /&gt;Is a Integer object&lt;br /&gt;&lt;br /&gt;self.zoom_x2 = horizontal zoom on the sprite&lt;br /&gt;1=100%&lt;br /&gt;Is a Integer object&lt;br /&gt;----------------------------------------------&lt;br /&gt;=end&lt;br /&gt;#======================================&lt;br /&gt;class Rotate &amp;lt; Sprite&lt;br /&gt;  &lt;br /&gt;  attr_accessor   :bitmap2&lt;br /&gt;  attr_accessor   :mirror2&lt;br /&gt;  attr_accessor   :ppf&lt;br /&gt;  attr_accessor   :x2&lt;br /&gt;  attr_accessor   :ox2&lt;br /&gt;  attr_accessor   :zoom_x2&lt;br /&gt;  &lt;br /&gt;  def initialize(viewport=nil)&lt;br /&gt;    @bitmap2 = nil&lt;br /&gt;    @mirror2 = false&lt;br /&gt;    @ppf = 0&lt;br /&gt;    @x2 = 0&lt;br /&gt;    @ox2 = 0&lt;br /&gt;    @zoom_x2 = 1&lt;br /&gt;    @rotate = false&lt;br /&gt;    @stage = true&lt;br /&gt;    super(viewport)&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  def bitmap2=(bitmap2)&lt;br /&gt;    @bitmap2=bitmap2&lt;br /&gt;    self.ox = @ox2 + self.bitmap.width.to_f/2&lt;br /&gt;    self.x = @x2 + self.bitmap.width.to_f/2&lt;br /&gt;    self.zoom_x = @zoom_x2&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def update&lt;br /&gt;    super&lt;br /&gt;    rotate() unless @bitmap2.nil?&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def rotate()    &lt;br /&gt;    @img_front = bitmap if @img_front.nil?    &lt;br /&gt;    if self.zoom_x &amp;lt;= 0 &amp;amp;&amp;amp; @stage == true&lt;br /&gt;      if @rotate == false&lt;br /&gt;        @rotate = true&lt;br /&gt;        self.mirror = true if @mirror2 == true&lt;br /&gt;        self.bitmap = @bitmap2&lt;br /&gt;      else&lt;br /&gt;        @rotate = false&lt;br /&gt;        self.mirror = false if @mirror2 == true&lt;br /&gt;        self.bitmap = @img_front&lt;br /&gt;      end      &lt;br /&gt;      @stage = false&lt;br /&gt;    elsif self.zoom_x &amp;gt;= @zoom_x2 &amp;amp;&amp;amp; @stage == false&lt;br /&gt;      @stage = true&lt;br /&gt;    end&lt;br /&gt;    self.ox = @ox2 + self.bitmap.width.to_f/2&lt;br /&gt;    self.x = @x2 + self.bitmap.width.to_f/2&lt;br /&gt;    self.zoom_x-=@ppf/self.bitmap.width.to_f if @stage == true&lt;br /&gt;    self.zoom_x+=@ppf/self.bitmap.width.to_f if @stage == false&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Feito por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-1663607567774875630?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/1663607567774875630/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-3dsrcolmeia-3d-sprite-rotation.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1663607567774875630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/1663607567774875630'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-3dsrcolmeia-3d-sprite-rotation.html' title='C-RS(Colméia - Rotate Sprite)'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4300846346178789160</id><published>2009-12-19T18:05:00.001-02:00</published><updated>2009-12-20T10:43:44.502-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialEventos'/><title type='text'>HUD Totalmente por eventos</title><content type='html'>&lt;b&gt;&lt;span style="font-size: 1.45em;"&gt;HUD Totalmente por eventos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características:&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Barra de HP;&lt;/li&gt;&lt;li&gt;Barra de MP;&lt;/li&gt;&lt;li&gt;Barra de EXP;&lt;/li&gt;&lt;li&gt;Barra de EXP para próximo level;&lt;/li&gt;&lt;li&gt;Level do personagem;&lt;/li&gt;&lt;li&gt;Face com nome do personagem;&lt;/li&gt;&lt;li&gt;Estado do herói(evenenado, cego, etc.);&lt;/li&gt;&lt;li&gt;"Level UP!" e "Level Down!".&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;ScreenShot:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://img16.imageshack.us/img16/6628/sshud.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="315" id="ncode_imageresizer_container_1" onload="NcodeImageResizer.createOn(this);" src="http://img16.imageshack.us/img16/6628/sshud.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Download:&lt;/b&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/176812902/306eb185/_2__HUD.html" target="_blank"&gt;Clique Aqui&lt;/a&gt;(download via 4shared)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos:&lt;/b&gt;&lt;br /&gt;Aero por fazer as imagens usadas nessa demo&lt;br /&gt;zecomeia por programar o sistema&lt;br /&gt;Thibra pela solução pra facilitar o calculo da barra&lt;br /&gt;Linkei pela dica interessante sobre as barras de experiência e próximo level &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Informações sobre como utilizar:&lt;/b&gt;&lt;br /&gt;Caso for usar esta HUD do jeito em que está mudando apenas as imagens tenha em mente as seguintes informações sobre cada imagem da mesma(para ajudar use como template as imagens na pasta picture da demo):&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;10 imagens com os números de 0 a 9(para mostrar o nível do personagem);&lt;/li&gt;&lt;li&gt;1 imagem/icone de "level up" e 1 de "level down";&lt;/li&gt;&lt;li&gt;Icones para mostrar cada estado do herói(envenenado,cego,morto,etc);&lt;/li&gt;&lt;li&gt;Um fundo para a HUD(porque se não nos movimentos de barras,etc, o fundo vai ficar como cenário);&lt;/li&gt;&lt;li&gt;Uma imagem com a face e nome do herói devidamente posicionados(siga o template).Envolto à face não deixe transparente porque as barras poderam aparecer por traz, mas deixe tranparente o resto, se não as barras podem ser cobertas por causa que a face com o nome esta em um layer acima(SIGA O TEMPLATE!).&lt;/li&gt;&lt;li&gt;4 imagens para as barras(pode usar a mesma imagem paras as quatro se preferir).O essencial ao fazer a barra é que ela tenha 100pixeis de comprimento na horizontal(largura,eixo X), já na vertical não importa.&lt;/li&gt;&lt;li&gt;Uma imagem para ser a "capa" HUD, ou seja, estará no layer de maior prioridade, portanto lembre-se de fazer "furos"(deixar transparente) onde estão localizados os outros gráficos se não os mesmo vão ficar cobertos pela capa da HUD e não aparecerão.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Tutorial:&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Começando pelas barras&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;O calculo de todas as barras são muito simples e seguem quase em todos os casos a mesma forma.&lt;br /&gt;Acho que muitos devem conhecer o velho, bom e simples calculo de porcentagem?Então é ele mesmo que foi usado.Lembram que foi dito na descrição das imagens que as barras tem que ter 100pixeis na horizontal?O motivo é deixar a precisão da barra no deslocamento de 1 pixel para cada 1% do estato em questão(HP, MP,etc).Então seria o seguinte:&lt;br /&gt;&lt;br /&gt;no caso do HP&lt;br /&gt;variavel_HP = HP do personagem&lt;br /&gt;variavel_HP *= Largura da barra&lt;br /&gt;variavel_HP /= HP maximo do personagem&lt;br /&gt;&lt;br /&gt;Após o calculo pegamos o valor da variavel_HP e colocamos como a coordenada X do "mostrar imagem" da barra em questão e, se preciso, somamos um valor a variavel_HP para melhor posiciona-la.&lt;br /&gt;&lt;br /&gt;no caso do MP&lt;br /&gt;variavel_MP = MP do personagem&lt;br /&gt;variavel_MP *= Largura da barra&lt;br /&gt;variavel_MP /= MP maximo do personagem&lt;br /&gt;&lt;br /&gt;Após o calculo pegamos o valor da variavel_MP e colocamos como a coordenada X do "mostrar imagem" da barra em questão e, se preciso, somamos um valor a variavel_MP para melhor posiciona-la.&lt;br /&gt;&lt;br /&gt;Já no caso da experiência, se olhar no controle de variaveis verá que não existe um "EXP max", portanto foi preciso fazer um pré calculo para descobrirmos qual o valor máximo.&lt;br /&gt;&lt;br /&gt;[001]EXP_Calc_Bar1 = EXP do personagem&lt;br /&gt;Mudar nível: Todo o grupo +1 nivel&lt;br /&gt;&lt;br /&gt;[002]EXP_Calc_Bar4 = EXP do personagem&lt;br /&gt;Mudar nível: Todo o grupo -1 nivel&lt;br /&gt;[003]EXP_Calc_Bar2 = EXP do personagem&lt;br /&gt;[004]EXP_Calc_Bar3 = [003]EXP_Calc_Bar2&lt;br /&gt;[001]EXP_Calc_Bar1 -= [004]EXP_Calc_Bar3&lt;br /&gt;Mudar Experiência: Todo o grupo +[001]EXP_Calc_Bar1&lt;br /&gt;#Comentario: Aqui já começa o simples calculo de porcentagem&lt;br /&gt;[002]EXP_Calc_Bar4 -= [003]EXP_Calc_Bar2&lt;br /&gt;[001]EXP_Calc_Bar1 *= Largura da barra&lt;br /&gt;[001]EXP_Calc_Bar1 /= [002]EXP_Calc_Bar4&lt;br /&gt;&lt;br /&gt;*OBS: para a barra de próximo level, faça o mesmo calculo acima porém será acrecentado algo mais. Veja:&lt;br /&gt;&lt;br /&gt;[001]EXP_Calc_Bar1 = EXP do personagem&lt;br /&gt;Mudar nível: Todo o grupo +1 nivel&lt;br /&gt;&lt;br /&gt;[002]EXP_Calc_Bar4 = EXP do personagem&lt;br /&gt;Mudar nível: Todo o grupo -1 nivel&lt;br /&gt;[003]EXP_Calc_Bar2 = EXP do personagem&lt;br /&gt;[004]EXP_Calc_Bar3 = [003]EXP_Calc_Bar2&lt;br /&gt;[001]EXP_Calc_Bar1 -= [004]EXP_Calc_Bar3&lt;br /&gt;Mudar Experiência: Todo o grupo +[001]EXP_Calc_Bar1&lt;br /&gt;#Comentario: Aqui já começa o simples calculo de porcentagem&lt;br /&gt;[002]EXP_Calc_Bar4 -= [003]EXP_Calc_Bar2&lt;br /&gt;[001]EXP_Calc_Bar1 *= Largura da barra&lt;br /&gt;[001]EXP_Calc_Bar1 /= [002]EXP_Calc_Bar4&lt;br /&gt;&lt;br /&gt;Next_exp_bar = [001]EXP_Calc_Bar1&lt;br /&gt;Next_exp_bar += 1&lt;br /&gt;Next_exp_bar *= -1&lt;br /&gt;Next_exp_bar += 1 &lt;br /&gt;&lt;br /&gt;Após o calculo pegamos o valor da EXP e colocamos como a coordenada X do "mostrar imagem" da barra em questão e, se preciso, somamos um valor a EXP para melhor posiciona-la.&lt;br /&gt;&lt;br /&gt;Bem simples agora certo.No meio dos calculos da experiência foi colocado uma instrução dizendo para fazer condições para as habilidades, isso porque se você parar pra pensar perceberá que caso o personagem esteja no level 8 por exemplo, e aprenda uma magia no level 9 então essa magia já será aprendida no level 8 por causa do comando de subir +1 level.Existe outra forma de driblar isso simplesmente aumentando um no level de cada magia que vai ser aprendida no Database do seu jogo, mas aí pode parecer gambiarra alem de possível privação de utilizar o level 99 para aprender uma habilidade, ainda não pensei na possibilidade.Use a imaginação, combine as idéias, talvez poupe seu trabalho fazendo a condição apenas para uma magia no level 99.&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_u"&gt;&lt;strong&gt;DICA:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Usar a barra de experiência e de próximo level na HUD pode ficar meio estranho porque a diferença está apenas na direção que a barra se move, quando uma está no máximo outra está no mínimo e vice versa.Uma idéia proposta por Linkei é fazer a barra de experiência como uma barra total, ou seja, de toda esperiência ganha no jogo sendo que só chegaria ao máximo no ultimo level, enquanto a de próximo level continua no mesmo equema.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;O Contador de level&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;É bem simples fazer este contador também.Como foi dito no começo, são usadas 10 imagens, cada imagem contem um número de 0 a 9.Como o level no database só vai até 99 então faremos um contador de apenas 2 digitos, que são as:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Unidades&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Como o no database o level vai até 99(2 digitos) então para pegarmos a casa das unidades pegamos o resto do LV divido por 10.&lt;br /&gt;&lt;br /&gt;variavel_LV = Level do personagem&lt;br /&gt;variavel_LV %= 10&lt;br /&gt;variavel_LV(unidades) = variavel_LV&lt;br /&gt;&lt;br /&gt;Agora a variável "variavel_LV(unidades)" tem o valor das unidades do level, então basta criar 10 condições onde cada uma verifica se "variavel_LV(unidades)" é igual a um número de 0 a 9, e então no corpo da condição colocamos o comando de mostrar imagem com a imagem do número correspondente(use o mesmo número para todas as imagens).Vamos colocar uma condição na exceção da outra(com exceção da ultima) para amenizar possiveis problemas com lag.&lt;br /&gt;&lt;br /&gt;se variavel_LV(unidades) == 0&lt;br /&gt;&amp;nbsp;mostrar imagem(10, "numero0", x, y)&lt;br /&gt;exceção&lt;br /&gt;&amp;nbsp;se variavel_LV(unidades) == 1&lt;br /&gt;&amp;nbsp; mostrar imagem(10, "numero1", x, y)&lt;br /&gt;&amp;nbsp;exceção&lt;br /&gt;&amp;nbsp; se variavel_LV(unidades) == 2&lt;br /&gt;&amp;nbsp; &amp;nbsp;mostrar imagem(10, "numero2", x, y)&lt;br /&gt;&amp;nbsp; exceção&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;... até chegar ao 9&lt;br /&gt;&lt;br /&gt;Para evitar mais o lag, faça isso dentro da condição de level Up/Down, assim só será analisadas essas condições e executados os eventos quando mudar de level.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dezenas&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;É feito da mesma forma das unidades, porem ao invez de pegarmos o resto da divisão por 10, apenas dividimos por, veja:&lt;br /&gt;&lt;br /&gt;variavel_LV = Level do personagem&lt;br /&gt;variavel_LV /= 10&lt;br /&gt;variavel_LV(dezenas) = variavel_LV&lt;br /&gt;&lt;br /&gt;O resto do procedimento também é o mesmo, basta trocar o número da imagem, a posição(X,Y).&lt;br /&gt;&lt;br /&gt;se variavel_LV(dezenas) == 0&lt;br /&gt;&amp;nbsp;mostrar imagem(11, "numero0", x, y)&lt;br /&gt;exceção&lt;br /&gt;&amp;nbsp;se variavel_LV(dezenas) == 1&lt;br /&gt;&amp;nbsp; mostrar imagem(11, "numero1", x, y)&lt;br /&gt;&amp;nbsp;exceção&lt;br /&gt;&amp;nbsp; se variavel_LV(dezenas) == 2&lt;br /&gt;&amp;nbsp; &amp;nbsp;mostrar imagem(11, "numero2", x, y)&lt;br /&gt;&amp;nbsp; exceção&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;... até chegar ao 9&lt;br /&gt;&lt;br /&gt;Para evitar mais o lag, faça isso dentro da condição de level Up/Down, assim só será analisadas essas condições e executados os eventos quando mudar de level.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Level UP/Level Down&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Basicamente existem duas variaveis que ambas contem o valor do level do herói, porém uma é atualizada constantemente ja a outra apenas quando o herói subir/descer o level.Essa pate do sistema é dividido uma parte para o level up e e outra para o level down, a diferença fundamental entre os dois é apenas a primeira condição onde uma comprar se a variavel que é atualizada constantemente é maior que a outra, e no caso do level down a comparação é o inverso, ou seja, é comparado se a variavel constantemente atualizada é menor que a outra.&lt;br /&gt;Fora isso o resto se trata de eventos visuais/audiveis para indicar o level up ou level down.E outra coisa também importante é que são atualizados alguns valores para evitar bugs, etc.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Estados&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Essa indiscutivelmente é a parte mais básica desta HUD.Simplesmente é criada uma variavel que vai ser usada para fazermos as condições onde cada condição, em seu corpo, tem um comando para mostrar a imagem do icone do estado na HUD e atribuir aquele estado ao herói.Foram colcadas algumas bobagensinhas a mais como causar "Game Over" quando o personagem chegar a HP=0(estado morto), e antes do game over mudar o gráfico do herói para deixa-lo deitado indicando que está morto.&lt;br /&gt;&lt;br /&gt;Aqui acaba a resumida explicação desta HUD, em caso de duvidas/bugs contate&amp;nbsp; &lt;b&gt;&lt;a class="bbc_email" href="mailto:sj-pereira@hotmail.com"&gt;sj-pereira@hotmail.com&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;***Na demo eu posso ter usado, sem necessidade, variaveis a mais entre outras coisas, isso aconteceu porque teve coisas que passaram despercebidas quando terminei o sistema(coisas de testes)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4300846346178789160?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4300846346178789160/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/hud-totalmente-por-eventos.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4300846346178789160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4300846346178789160'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/hud-totalmente-por-eventos.html' title='HUD Totalmente por eventos'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-3825572321304426193</id><published>2009-12-18T16:42:00.000-02:00</published><updated>2009-12-19T18:11:30.813-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Novidades'/><title type='text'>Blog inaugurado!</title><content type='html'>Finalmente o blog tem alguma coisa para expor, então está oficialmente inaugurado.&lt;br /&gt;Em breve vou disponibilizar mais conteudo.&lt;br /&gt;&lt;br /&gt;T+&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-3825572321304426193?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/3825572321304426193/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/blog-inaugurado.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3825572321304426193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3825572321304426193'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/blog-inaugurado.html' title='Blog inaugurado!'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-2061263738655497610</id><published>2009-12-18T15:14:00.002-02:00</published><updated>2010-09-24T16:02:45.835-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS12'/><title type='text'>BUG do Pulo</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;BUG do Pulo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Conserta um BUG do comando de pulo. Na verdade é apenas uma trava de segurança, porque no RMVX não existe essa trava que impeça o jogador pular em cima de um tile não passável e ficar preso, ou pular perto dos limites do mapa ultrapassando esses limites também fazendo com que o jogador fique preso. No RMXP a trava impede que o evento de pular aconteça nas situações descritas anteriormente, já com esse script para qualquer um dos doi (RMVX ou RMXP), caso as coordenadas de destino do pulo causem problemas, as mesmas são recauculadas de forma a diminuir a distância do pulo em 1 quadro até ser possível o evento de pulo ser concretizado sem possíveis problemas. Alguns costumam aproveitar deste "BUG" para fazer cut scenes "passando por cima" de tiles não passáveis, pensando nisso o script te dá a opção de ativar ou desativar o script de conserto a qualquer momento.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Conserta o BUG do pulo do RMVX&lt;br /&gt;&amp;nbsp; &amp;nbsp; * Causa o mesmo efeito para o RMXP, mesmo não havendo BUG&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Screenshots&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Nenhuma&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Coloque o script acima de main.&lt;br /&gt;&lt;br /&gt;Para deixar o BUG use o código, no comando "chamar script":&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;$BUGpulo = true&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Para retirar o BUG use o código, no comando "chamar script":&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;$BUGpulo = nil&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Sinta-se à vontade para colocar ou tirar o BUG quando quiser.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.santuariorpgmaker.com/forum/index.php?action=dlattach;topic=3084.0;attach=2520" target="_blank"&gt;Download da demo RMXP&lt;/a&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.santuariorpgmaker.com/forum/index.php?action=dlattach;topic=3084.0;attach=2519" target="_blank"&gt;Download da demo RMVX&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input type="button" value="Selecionar Código" onClick="javascript:this.form.code.focus();this.form.code.select();"&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea rows="15" cols="52" name="code" readonly="readonly"&gt;&lt;br /&gt;#========================&lt;br /&gt;#BUG do pulo&lt;br /&gt;#========================&lt;br /&gt;#Autor: zecomeia&lt;br /&gt;#Data:  12/11/2009&lt;br /&gt;#http://colmeia-do-ze.blogspot.com/&lt;br /&gt;#------------------------&lt;br /&gt;#Descrição:&lt;br /&gt;#Este script impede que o&lt;br /&gt;#personagem fique preso&lt;br /&gt;#em tiles quando usado&lt;br /&gt;#o comando de pulo.&lt;br /&gt;#Pensando em quem costuma&lt;br /&gt;#usar o comando de pulo&lt;br /&gt;#mesmo em lugares não&lt;br /&gt;#passáveis existe uma&lt;br /&gt;#forma de ligar/desligar&lt;br /&gt;#o efeito do script.&lt;br /&gt;#Para manter o bug:&lt;br /&gt;#$BUGpulo = true&lt;br /&gt;#Para retirar o bug:&lt;br /&gt;#$BUGpulo = false&lt;br /&gt;if $TEST == true or (File.stat("Game.rgss2a").file? rescue false) or&lt;br /&gt;  (File.stat("Game.rvproj").file? rescue false)&lt;br /&gt;  $PLATFORM = 'VX'&lt;br /&gt;elsif $DEBUG == true or (File.stat("Game.rgssad").file? rescue false) or&lt;br /&gt;  (File.stat("Game.rxproj").file? rescue false)&lt;br /&gt;  $PLATFORM = 'XP'&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;$BUGpulo = true&lt;br /&gt;class Game_Character&lt;br /&gt;  def jump(x_plus, y_plus)&lt;br /&gt;    unless $BUGpulo == true&lt;br /&gt;      if x_plus.abs &gt; y_plus.abs&lt;br /&gt;        x_plus &lt; 0 ? turn_left : turn_right&lt;br /&gt;      elsif x_plus.abs &gt; y_plus.abs&lt;br /&gt;        y_plus &lt; 0 ? turn_up : turn_down&lt;br /&gt;      end&lt;br /&gt;      until ($PLATFORM.eql?('VX') ? map_passable?(@x + x_plus, @y + y_plus) : passable?(@x + x_plus, @y + y_plus,0))&lt;br /&gt;        break if x_plus==0 and y_plus==0&lt;br /&gt;        if x_plus &gt; 0&lt;br /&gt;          x_plus -= 1&lt;br /&gt;        elsif x_plus &lt; 0&lt;br /&gt;          x_plus += 1&lt;br /&gt;        end&lt;br /&gt;        if y_plus &gt; 0&lt;br /&gt;          y_plus -= 1&lt;br /&gt;        elsif y_plus &lt; 0&lt;br /&gt;          y_plus += 1&lt;br /&gt;        end&lt;br /&gt;      end     &lt;br /&gt;      @x += x_plus&lt;br /&gt;      @y += y_plus&lt;br /&gt;      distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round&lt;br /&gt;      @jump_peak = 10 + distance - @move_speed&lt;br /&gt;      @jump_count = @jump_peak * 2&lt;br /&gt;      @stop_count = 0&lt;br /&gt;      straighten&lt;br /&gt;    else   &lt;br /&gt;      if x_plus.abs &gt; y_plus.abs&lt;br /&gt;        x_plus &lt; 0 ? turn_left : turn_right&lt;br /&gt;      elsif x_plus.abs &gt; y_plus.abs&lt;br /&gt;        y_plus &lt; 0 ? turn_up : turn_down&lt;br /&gt;      end&lt;br /&gt;      @x += x_plus&lt;br /&gt;      @y += y_plus&lt;br /&gt;      distance = Math.sqrt(x_plus * x_plus + y_plus * y_plus).round&lt;br /&gt;      @jump_peak = 10 + distance - @move_speed&lt;br /&gt;      @jump_count = @jump_peak * 2&lt;br /&gt;      @stop_count = 0&lt;br /&gt;      straighten&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Feito por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-2061263738655497610?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/2061263738655497610/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/bug-do-pulo.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2061263738655497610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2061263738655497610'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/bug-do-pulo.html' title='BUG do Pulo'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4885332571600026964</id><published>2009-12-18T15:09:00.002-02:00</published><updated>2010-09-11T10:17:46.742-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>C-SIZ(Colméia - Show Item Zelda)</title><content type='html'>&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;&lt;strong&gt;C-SIZ(Colméia - Show Item Zelda)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;em&gt;zecomeia&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Introdução&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Mostra um item que foi pego igual/parecido ao jogo Zelda de SNES.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Características&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Mostra a imagem do icone do item que foi pego&lt;/li&gt;&lt;li&gt;Muda o gráfico do personagem ao pegar o item&lt;/li&gt;&lt;li&gt;Toca uma SE ao pegar o item&lt;/li&gt;&lt;li&gt;Pode ser ligado/desligado, até porque aparecer a animação ao pegar qualquer item pode ficar chato dependendo da jogabilidade do seu jogo.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Screen Shot&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" height="315" id="ncode_imageresizer_container_4" onload="NcodeImageResizer.createOn(this);" src="http://img6.imageshack.us/img6/6763/ssshowitemzelda.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Como Usar&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list" style="list-style-type: decimal;"&gt;&lt;li&gt;Coloque o script acima de main&lt;/li&gt;&lt;li&gt;Veja no script como configurar e configure&lt;/li&gt;&lt;li&gt;Faça o charset do personagem ganhando item(siga o exemplo da demo) e nomeio conforme configurado ao colocar na pasta de charsets.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Coloque o arquivo de audio a ser tocado ao pegar o item, na pasta SE e nomeio como configurado no script&lt;/li&gt;&lt;li&gt;Faça o teste e em caso de dúvida pergunte aqui ou contate &lt;a class="bbc_email" href="mailto:sj-pereira@hotmail.com"&gt;sj-pereira@hotmail.com&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Para ligar/desligar o efeito use "chamar script" em um evento e use os códigos abaixo:&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;/div&gt;&lt;code&gt;&amp;nbsp; #&amp;nbsp; Para ligar:&lt;br /&gt;&amp;nbsp; $CSIZ = true&lt;br /&gt;&amp;nbsp; #&amp;nbsp; Para desligar:&lt;br /&gt;&amp;nbsp; $CSIZ = nil&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Demo&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/H3ziieM8/_2__Zelda.html" target="_blank"&gt;Download da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Script&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input type="button" value="Selecionar Código" onClick="javascript:this.form.code.focus();this.form.code.select();"&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea rows="15" cols="52" name="code" readonly="readonly"&gt;&lt;br /&gt;#=============================================&lt;br /&gt;# C-SIZ(Colméia - Show Item Zelda)&lt;br /&gt;#---------------------------------------------&lt;br /&gt;# por zecomeia&lt;br /&gt;# 06/05/2009&lt;br /&gt;# update(11/09/2010)&lt;br /&gt;#- bug da posição da imagem corrigido&lt;br /&gt;#- mudança na forma de ligar/desligar script&lt;br /&gt;#---------------------------------------------&lt;br /&gt;#Descrição: Mostra o item que foi pego igual&lt;br /&gt;#ao jogo Zelda de SNES.&lt;br /&gt;#=============================================&lt;br /&gt;&lt;br /&gt;#====================&lt;br /&gt;#   Configuração&lt;br /&gt;#====================&lt;br /&gt;&lt;br /&gt;#Ligar/Desligar(true/nil) o efeito de mostrar o item.&lt;br /&gt;$CSIZ = nil #true/nil&lt;br /&gt;#OBS:para liga/desligar a função durante o jogo faça um evento com:&lt;br /&gt;#  Para ligar:&lt;br /&gt;#$CSIZ = true&lt;br /&gt;#  Para desligar:&lt;br /&gt;#$CSIZ = nil&lt;br /&gt;module Config_ItemShowZelda_ZC&lt;br /&gt;  #Nome do arquivo do charset do personagem mostrando que ganhou o item.&lt;br /&gt;  #O nome colocado abaixo tem que ser adicionado ao nome de arquivo&lt;br /&gt;  #do charset original, e não substir sobre o original.&lt;br /&gt;  #Ex: zelda.png -&gt; zelda(show_item_zelda).png&lt;br /&gt;  #OBS:Uma é p charset normal do personagem e a outra é o charset&lt;br /&gt;  #mostrando que ganhou o item.&lt;br /&gt;  GRAPHIC_ARQ_NAME = "(show_item)"&lt;br /&gt;  #Nome do arquivo de SE que é tocado ao ganhar o item.&lt;br /&gt;  SOUND_ARQ_NAME = "LTTP_ItemFanfare"  &lt;br /&gt;end&lt;br /&gt; &lt;br /&gt;class Window_ItemShow &lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Inicialização dos Objetos&lt;br /&gt;  #&lt;br /&gt;  #     ator : Objeto&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(x, y, item)&lt;br /&gt;    super(x - 28, y - 88, 64, 72)&lt;br /&gt;    self.contents = Bitmap.new(width - 36, height - 36)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = $fontsize&lt;br /&gt;    @item = item&lt;br /&gt;    refresh&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Atualizar&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh&lt;br /&gt;    self.contents.clear&lt;br /&gt;    draw_item_name(@item, 0, 0)&lt;br /&gt;  end &lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class Game_Player &lt; Game_Character&lt;br /&gt; &lt;br /&gt;#--Inclusão das configurações--&lt;br /&gt;include Config_ItemShowZelda_ZC&lt;br /&gt;#------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh_gain_object_zelda&lt;br /&gt;    # Se o número de membros no Grupo de Heróis for 0&lt;br /&gt;    if $game_party.actors.size == 0&lt;br /&gt;      # Limpar o nome do arquivo e a tonalidade do Herói&lt;br /&gt;      @character_name = ""&lt;br /&gt;      @character_hue = 0&lt;br /&gt;      # Fim do método&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Selecionar o Herói líder&lt;br /&gt;    actor = $game_party.actors[0]&lt;br /&gt;    # Selecionar o nome do arquivo e a tonalidade do Herói&lt;br /&gt;    @character_name = actor.character_name + GRAPHIC_ARQ_NAME&lt;br /&gt;    @character_hue = actor.character_hue&lt;br /&gt;    # Inicializar a opacidade e a sinteticidade&lt;br /&gt;    @opacity = 255&lt;br /&gt;    @blend_type = 0&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Atualização do Frame&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;    # Memorizar, se estiver movendo ou não, nas variáveis locais&lt;br /&gt;    last_moving = moving?&lt;br /&gt;    # Se estiver movendo, um evento ocorrendo, uma rota pré-determinada, ou&lt;br /&gt;    # se estiver exibindo uma mensagem&lt;br /&gt;    # Mostrar tudo como se não estivessem ocorrendo&lt;br /&gt;    unless moving? or $game_system.map_interpreter.running? or&lt;br /&gt;           @move_route_forcing or $game_temp.message_window_showing&lt;br /&gt;      # Mover o Jogador na direção que o direcional for pressionado&lt;br /&gt;    if $wait_itemshow_zelda == 0 &lt;br /&gt;       case Input.dir4&lt;br /&gt;       when 2&lt;br /&gt;         move_down&lt;br /&gt;       when 4&lt;br /&gt;         move_left&lt;br /&gt;       when 6&lt;br /&gt;         move_right&lt;br /&gt;       when 8&lt;br /&gt;         move_up&lt;br /&gt;       end&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;    # Memorizar as coordenadas nas variáveis locais&lt;br /&gt;    last_real_x = @real_x&lt;br /&gt;    last_real_y = @real_y&lt;br /&gt;    super&lt;br /&gt;    # Se o Herói for movido para baixo e tenha ficado abaixo do centro da tela&lt;br /&gt;    if @real_y &gt; last_real_y and @real_y - $game_map.display_y &gt; CENTER_Y&lt;br /&gt;      # Rolar o mapa para baixo&lt;br /&gt;      $game_map.scroll_down(@real_y - last_real_y)&lt;br /&gt;    end&lt;br /&gt;    # Se o Herói for movido para a esquerda e tenha ficado a esquerda do centro&lt;br /&gt;    # da tela&lt;br /&gt;    if @real_x &lt; last_real_x and @real_x - $game_map.display_x &lt; CENTER_X&lt;br /&gt;      # Rolar o mapa para a esquerda&lt;br /&gt;      $game_map.scroll_left(last_real_x - @real_x)&lt;br /&gt;    end&lt;br /&gt;    # Se o Herói for movido para a direita e tenha ficado a direita do centro da&lt;br /&gt;    # tela&lt;br /&gt;    if @real_x &gt; last_real_x and @real_x - $game_map.display_x &gt; CENTER_X&lt;br /&gt;      # Rolar o mapa para a direita&lt;br /&gt;      $game_map.scroll_right(@real_x - last_real_x)&lt;br /&gt;    end&lt;br /&gt;    # Se o Herói for movido para cima e tenha ficado acima do centro da tela&lt;br /&gt;    if @real_y &lt; last_real_y and @real_y - $game_map.display_y &lt; CENTER_Y&lt;br /&gt;      # rolar o mapa para cima&lt;br /&gt;      $game_map.scroll_up(last_real_y - @real_y)&lt;br /&gt;    end&lt;br /&gt;    # Se não estiver movendo&lt;br /&gt;    unless moving?&lt;br /&gt;      # Se o jogador estava se movendo&lt;br /&gt;      if last_moving&lt;br /&gt;        # Se a determinante de incialização for por toque ou mesma posição&lt;br /&gt;        result = check_event_trigger_here([1,2])&lt;br /&gt;        # Se o Evento que foi iniciado não existir&lt;br /&gt;        if result == false&lt;br /&gt;          # Desconsiderar se o Modo de Depuração estiver ON e a tecla Ctrl&lt;br /&gt;          # pressionada&lt;br /&gt;          unless $DEBUG and Input.press?(Input::CTRL)&lt;br /&gt;            # Diminuir 1 do contador de encontros&lt;br /&gt;            if @encounter_count &gt; 0&lt;br /&gt;              @encounter_count -= 1&lt;br /&gt;            end&lt;br /&gt;          end&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      # Se o botão C for pressionado&lt;br /&gt;      if Input.trigger?(Input::C)&lt;br /&gt;        # Determinantes de mesma posição e na frente do Evento&lt;br /&gt;        check_event_trigger_here([0])&lt;br /&gt;        check_event_trigger_there([0,1,2])&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end &lt;br /&gt;&lt;br /&gt;class Game_Party&lt;br /&gt;&lt;br /&gt;#--Inclusão das configurações--&lt;br /&gt;include Config_ItemShowZelda_ZC&lt;br /&gt;#------------------------------&lt;br /&gt;&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Ganhou ou Perder Itens&lt;br /&gt;  #&lt;br /&gt;  #     item_id : iD do Item&lt;br /&gt;  #     n       : quantidade&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def gain_item(item_id, n)&lt;br /&gt;    if $CSIZ == true&lt;br /&gt;     $wait_itemshow_zelda = 80&lt;br /&gt;     $game_player.turn_down&lt;br /&gt;     $game_player.refresh_gain_object_zelda&lt;br /&gt;     Audio.se_play("Audio/SE/" + SOUND_ARQ_NAME, 100, 100)&lt;br /&gt;     $window_itemshow_zelda = Window_ItemShow.new($game_player.screen_x, $game_player.screen_y, $data_items[item_id]) &lt;br /&gt;     $window_itemshow_zelda.opacity = 0&lt;br /&gt;    end&lt;br /&gt;    # Atualizar a quantidade nesta divisão&lt;br /&gt;    if item_id &gt; 0&lt;br /&gt;      @items[item_id] = [[item_number(item_id) + n, 0].max, 99].min&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Ganhar ou Perder Armas&lt;br /&gt;  #&lt;br /&gt;  #     weapon_id : ID da Arma&lt;br /&gt;  #     n         : quantidade&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def gain_weapon(weapon_id, n)&lt;br /&gt;    if $CSIZ == true&lt;br /&gt;     $wait_itemshow_zelda = 80&lt;br /&gt;     $game_player.turn_down&lt;br /&gt;     $game_player.refresh_gain_object_zelda&lt;br /&gt;     Audio.se_play("Audio/SE/" + SOUND_ARQ_NAME, 100, 100)&lt;br /&gt;     $window_itemshow_zelda = Window_ItemShow.new($game_player.screen_x, $game_player.screen_y, $data_weapons[weapon_id])&lt;br /&gt;     $window_itemshow_zelda.opacity = 0&lt;br /&gt;    end&lt;br /&gt;    # Atualizar a quantidade nesta divisão&lt;br /&gt;    if weapon_id &gt; 0&lt;br /&gt;      @weapons[weapon_id] = [[weapon_number(weapon_id) + n, 0].max, 99].min&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Ganhar ou Perder Armaduras&lt;br /&gt;  #&lt;br /&gt;  #     armor_id : ID da Armadura&lt;br /&gt;  #     n        : quantidade&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def gain_armor(armor_id, n)&lt;br /&gt;    if $CSIZ == true&lt;br /&gt;     $wait_itemshow_zelda = 80&lt;br /&gt;     $game_player.turn_down&lt;br /&gt;     $game_player.refresh_gain_object_zelda&lt;br /&gt;     Audio.se_play("Audio/SE/" + SOUND_ARQ_NAME, 100, 100)&lt;br /&gt;     $window_itemshow_zelda = Window_ItemShow.new($game_player.screen_x, $game_player.screen_y, $data_armors[armor_id])&lt;br /&gt;     $window_itemshow_zelda.opacity = 0&lt;br /&gt;    end&lt;br /&gt;    # Atualizar a quantidade nesta divisão&lt;br /&gt;    if armor_id &gt; 0&lt;br /&gt;      @armors[armor_id] = [[armor_number(armor_id) + n, 0].max, 99].min&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end &lt;br /&gt;&lt;br /&gt;class Scene_Map&lt;br /&gt; &lt;br /&gt;  alias new_main main&lt;br /&gt; &lt;br /&gt;  def main&lt;br /&gt;    $wait_itemshow_zelda = 0&lt;br /&gt;    $window_itemshow_zelda = Window_ItemShow.new($game_player.screen_x, $game_player.screen_y, $data_items[0])&lt;br /&gt;    $window_itemshow_zelda.opacity = 0&lt;br /&gt;    new_main&lt;br /&gt;    $window_itemshow_zelda.dispose&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  alias new_update update&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;    if $wait_itemshow_zelda &gt; 0&lt;br /&gt;      $game_player.turn_down&lt;br /&gt;      $game_player.refresh_gain_object_zelda&lt;br /&gt;      $window_itemshow_zelda.visible = true&lt;br /&gt;      $wait_itemshow_zelda -= 1&lt;br /&gt;    else&lt;br /&gt;      $window_itemshow_zelda.visible = false&lt;br /&gt;      $game_player.refresh&lt;br /&gt;      $wait_itemshow_zelda = 0&lt;br /&gt;    end &lt;br /&gt;  new_update&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Créditos e Agradecimentos&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&lt;em&gt;zecomeia&lt;/em&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;&lt;span style="font-weight: normal;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4885332571600026964?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4885332571600026964/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-sizcolmeia-show-item-zelda.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4885332571600026964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4885332571600026964'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-sizcolmeia-show-item-zelda.html' title='C-SIZ(Colméia - Show Item Zelda)'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-7245871300115303306</id><published>2009-12-18T15:05:00.001-02:00</published><updated>2009-12-22T09:55:36.619-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>Scene_Logotipo 1.2</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;Scene_Logotipo 1.2&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Mostra uma imagem com efeito de fade in/out na apresentação do jogo(antes da tela de titulo).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Características&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;configuracão da velocidade do efeito de fade;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;configuração de uma tecla para pular a introdução caso desejado.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Screenshots&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Não necessita.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Como usar&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Instale o script acima de main e procure a linha a seguir no script de main do seu jogo(provavelmente na linha 31):&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&amp;nbsp; $scene = Scene_Title.new&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;e então troque por:&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;&amp;nbsp; $scene = Scene_Logotipo.new&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Mais informações no começo do script.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/101120867/12585cbf/Project3.html" target="_blank"&gt;Download  da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;Script&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input type="button" value="Selecionar Código" onClick="javascript:this.form.code.focus();this.form.code.select();"&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea rows="15" cols="52" name="code" readonly="readonly"&gt;&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#-------------------Scene_Logotipo----------------------------&lt;br /&gt;#--------------------versão: 1.2 (RMXP)-----------------------&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#-por: zecomeia----------------------&lt;br /&gt;#-19/12/2008--------------------------------------------------&lt;br /&gt;#http://colmeia-do-ze.blogspot.com/&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#---Mostra uma Logo Marca com efeito Fade, antes do Title-----&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#-Leia as instruções para instalar o script no final do mesmo-&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;&lt;br /&gt; #--------------------------------------&lt;br /&gt; #---Configurações----------------------&lt;br /&gt; #--------------------------------------&lt;br /&gt;&lt;br /&gt;module ConfigIntroScene&lt;br /&gt;#Defina o nome da imagem que será usada.Lembre-se de coloca-la na pasta picture do projeto&lt;br /&gt;  IMAGE_NAME = "logo"&lt;br /&gt;#Defina a velocidade do efeito de fade.Nunca coloque zero &lt;br /&gt;  SPEED_FADE = 1&lt;br /&gt;#Escolha uma tecla que servirá para pular a introdução.A tecla pode ser:&lt;br /&gt;# Input::LEFT  Input::UP Input::RIGHT Input::DOWN&lt;br /&gt;# Input::SHIFT Input::CTRL Input::ALT&lt;br /&gt;# Input::F5 Input::F6 Input::F7 Input::F8 Input::F9&lt;br /&gt;# Input::A Input::B Input::C Input::X Input::Y Input::Z Input::L Input::R&lt;br /&gt;#OBS:Copie e cole o botão que quiser acima, assim é mais fácil.&lt;br /&gt;#Caso não queira que tenha um botão que pule a intro deixe escrito&lt;br /&gt;# nil&lt;br /&gt;  INPUT_SKIP_INTRO = nil&lt;br /&gt;end &lt;br /&gt; &lt;br /&gt; #--------------------------------------&lt;br /&gt; #---Definindo a classe Scene_Logotipo--&lt;br /&gt; #--------------------------------------&lt;br /&gt;&lt;br /&gt;class Scene_Logotipo&lt;br /&gt; &lt;br /&gt;include ConfigIntroScene&lt;br /&gt; &lt;br /&gt;  #---------------------------&lt;br /&gt;  #--------Main da Classe-----&lt;br /&gt;  #---------------------------&lt;br /&gt; &lt;br /&gt;  def main&lt;br /&gt;        # Se estiver em Teste de Batalha&lt;br /&gt;    if $BTEST&lt;br /&gt;      battle_test&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Criação do gráfico da Logo Marca&lt;br /&gt;    $data_system = load_data("Data/System.rxdata")&lt;br /&gt;    $data_system = Game_System.new&lt;br /&gt;    @logo = Sprite.new&lt;br /&gt;    @logo.bitmap = RPG::Cache.picture(IMAGE_NAME)&lt;br /&gt;    @logo.opacity = 0&lt;br /&gt;    @opacity = 0&lt;br /&gt;    # Variavel de troca de Fades&lt;br /&gt;    fade = 0&lt;br /&gt;    # Executa a Transição&lt;br /&gt;    Graphics.transition&lt;br /&gt;    # Loop principal&lt;br /&gt;    loop do&lt;br /&gt;      # Atualiza a tela do jogo&lt;br /&gt;      Graphics.update&lt;br /&gt;      # Atualiza entradas&lt;br /&gt;      Input.update&lt;br /&gt;      # Reconhece se C foi pressionado&lt;br /&gt;      if INPUT_SKIP_INTRO != nil&lt;br /&gt;       update&lt;br /&gt;      end&lt;br /&gt;     &lt;br /&gt; #--------------------------&lt;br /&gt; #---Fade In----------------&lt;br /&gt; #--------------------------&lt;br /&gt; &lt;br /&gt;  if fade == 0&lt;br /&gt;  @opacity += SPEED_FADE&lt;br /&gt;  @logo.opacity = @opacity&lt;br /&gt;  if @opacity &gt; 255&lt;br /&gt;    fade = 1&lt;br /&gt;    end&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; #--------------------------&lt;br /&gt; #---Fade Out---------------&lt;br /&gt; #--------------------------&lt;br /&gt; &lt;br /&gt; if fade == 1 &lt;br /&gt;  @opacity -= SPEED_FADE&lt;br /&gt;  @logo.opacity = @opacity&lt;br /&gt;  if @opacity &lt; 0&lt;br /&gt;     $scene = Scene_Title.new&lt;br /&gt;     end&lt;br /&gt;   end&lt;br /&gt;  # Interrompe os loops de transição de tela&lt;br /&gt;      if $scene != self&lt;br /&gt;        break&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Prepara a Transição&lt;br /&gt;    Graphics.freeze&lt;br /&gt;    # Dispose&lt;br /&gt;    @logo.dispose&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #---------------------------&lt;br /&gt;  #--------Update-------------&lt;br /&gt;  #---------------------------&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;  # Se apertar a tecla C&lt;br /&gt;    if Input.trigger?(INPUT_SKIP_INTRO)&lt;br /&gt;    # Vai para a Tela de Título&lt;br /&gt;      $scene = Scene_Title.new&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Teste de Batalha&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def battle_test&lt;br /&gt;    # Carregar Banco de Dados para o Teste de Batalha&lt;br /&gt;    $data_actors        = load_data("Data/BT_Actors.rxdata")&lt;br /&gt;    $data_classes       = load_data("Data/BT_Classes.rxdata")&lt;br /&gt;    $data_skills        = load_data("Data/BT_Skills.rxdata")&lt;br /&gt;    $data_items         = load_data("Data/BT_Items.rxdata")&lt;br /&gt;    $data_weapons       = load_data("Data/BT_Weapons.rxdata")&lt;br /&gt;    $data_armors        = load_data("Data/BT_Armors.rxdata")&lt;br /&gt;    $data_enemies       = load_data("Data/BT_Enemies.rxdata")&lt;br /&gt;    $data_troops        = load_data("Data/BT_Troops.rxdata")&lt;br /&gt;    $data_states        = load_data("Data/BT_States.rxdata")&lt;br /&gt;    $data_animations    = load_data("Data/BT_Animations.rxdata")&lt;br /&gt;    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")&lt;br /&gt;    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")&lt;br /&gt;    $data_system        = load_data("Data/BT_System.rxdata")&lt;br /&gt;    # Aqui o contador de frames é resetado para que se conte o Tempo de Jogo&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    # Criar cada tipo de objetos do jogo&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;    # Configurar Grupo para o Teste de Batalha&lt;br /&gt;    $game_party.setup_battle_test_members&lt;br /&gt;    # Definir o ID do Grupo de Inimigos, a possibilidade de fuga e o Fundo de&lt;br /&gt;    # Batalha&lt;br /&gt;    $game_temp.battle_troop_id = $data_system.test_troop_id&lt;br /&gt;    $game_temp.battle_can_escape = true&lt;br /&gt;    $game_map.battleback_name = $data_system.battleback_name&lt;br /&gt;    # Reproduzri SE de início de batalha&lt;br /&gt;    $game_system.se_play($data_system.battle_start_se)&lt;br /&gt;    # Reproduzir BGM de batalha&lt;br /&gt;    $game_system.bgm_play($game_system.battle_bgm)&lt;br /&gt;    # Mudar para a tela de batalha&lt;br /&gt;    $scene = Scene_Battle.new&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#------------------------------------------------------------------&lt;br /&gt;#---Instalando o Scene_Logotipo------------------------------------&lt;br /&gt;#------------------------------------------------------------------&lt;br /&gt;#-Apenas cole este script acima de Main.Após feito isso,vá em Main-&lt;br /&gt;#e altere a linha n°32 de "$scene = Scene_Scene_Title.new" para----&lt;br /&gt;#"$scene = Scene_Scene_Logotipo.new".Agore coloque a imagem de sua-&lt;br /&gt;#Logo Marca na pasta system de seu jogo como nome de "logo.png".---&lt;br /&gt;#------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;span style="font-size: 1em;"&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;Feito por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="font-size: 1em;"&gt;&lt;span style="font-weight: normal;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-7245871300115303306?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/7245871300115303306/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/scenelogotipo-12.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7245871300115303306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7245871300115303306'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/scenelogotipo-12.html' title='Scene_Logotipo 1.2'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-3216044960387370662</id><published>2009-12-18T15:02:00.002-02:00</published><updated>2009-12-22T09:46:54.190-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>C-CPP(Colméia - Change Party Position)</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;C-CPP(Colméia - Change Party Position)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Com este script o jogador pode trocar a ordem dos personagens do grupo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;trocar ordem dos personagens&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Screen Shot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img13.imageshack.us/img13/4049/sceneordem.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="315" id="ncode_imageresizer_container_3" onload="NcodeImageResizer.createOn(this);" src="http://img13.imageshack.us/img13/4049/sceneordem.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como Usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Cole acima de main&lt;/li&gt;&lt;li&gt;Para chamar o script vá em "chamar script" em um evento e coloque:&lt;/li&gt;&lt;/ul&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;$scene = Scene_Ordem.new&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/101111807/bb1ee68c/Ordem.html" target="_blank"&gt;Download da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input type="button" value="Selecionar Código" onClick="javascript:this.form.code.focus();this.form.code.select();"&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea rows="15" cols="52" name="code" readonly="readonly"&gt;&lt;br /&gt;#---------------------------------------------------------------&lt;br /&gt;#- ChangePartyPosition(Menu de Ordem) --------------------------&lt;br /&gt;#- por: zecomeia ------------------------------&lt;br /&gt;#- 18/02/2009 --------------------------------------------------&lt;br /&gt;# Descrição: Essa opção faz com que o jogador tenha a liberdade&lt;br /&gt;#de trocar a posição dos Heróis no grupo. ----------------------&lt;br /&gt;#---------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;class Scene_Ordem&lt;br /&gt; &lt;br /&gt;  def main&lt;br /&gt;    @status_window = Window_MenuStatus.new&lt;br /&gt;    @status_window.x = 72&lt;br /&gt;    @status_window.y = 0&lt;br /&gt;    @stlock_window = Window_MenuStatus.new&lt;br /&gt;    @stlock_window.x = 72&lt;br /&gt;    @stlock_window.y = 0&lt;br /&gt;    @status_window.active = true&lt;br /&gt;    @status_window.index = 0&lt;br /&gt;    @stlock_window.active = true&lt;br /&gt;    @stlock_window.index = 0&lt;br /&gt;    # Criar chaves de controle para escolha dos personagem na troca&lt;br /&gt;    @lock_firstchoice = nil&lt;br /&gt;    @next_choice = nil&lt;br /&gt;    # Executar transição&lt;br /&gt;    Graphics.transition&lt;br /&gt;    # Loop principal&lt;br /&gt;    loop do&lt;br /&gt;      # Atualizar a tela de jogo&lt;br /&gt;      Graphics.update&lt;br /&gt;      # Atualizar a entrada de informações&lt;br /&gt;      Input.update&lt;br /&gt;      # Atualizar Frame&lt;br /&gt;      update&lt;br /&gt;      # Abortar loop se a tela for alterada&lt;br /&gt;      if $scene != self&lt;br /&gt;        break&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Preparar para transiçõa&lt;br /&gt;    Graphics.freeze&lt;br /&gt;    # Exibição das janelas&lt;br /&gt;    @status_window.dispose&lt;br /&gt;    @stlock_window.dispose&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;    @status_window.update&lt;br /&gt;    @stlock_window.update&lt;br /&gt;    # Se a janela de Status estiver ativa e: call update_status&lt;br /&gt;    if @status_window.active and @next_choice != true&lt;br /&gt;      update_status&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se a segunda escolha da troca de personagens estiver ativa: call comand_ordem&lt;br /&gt;    if @next_choice == true &lt;br /&gt;      comand_ordem&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #-------------------------------------------------------------&lt;br /&gt;  #-- comand_ordem (segunda escolha da troca de posição) -------&lt;br /&gt;  #-------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def comand_ordem&lt;br /&gt;    # Se o botão B for pressionado (Cancel)&lt;br /&gt;    if Input.trigger?(Input::B)&lt;br /&gt;      # Reproduzir SE de cancelamento&lt;br /&gt;      $game_system.se_play($data_system.cancel_se)&lt;br /&gt;      # Voltar para escolha do primeiro Herói da troca&lt;br /&gt;      @stlock_window.active = true&lt;br /&gt;      @stlock_window.index = -1&lt;br /&gt;      @next_choice = false&lt;br /&gt;      @lock_firstchoice = false&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão C for pressionado (OK)&lt;br /&gt;    if Input.trigger?(Input::C)&lt;br /&gt;      # Reproduzir SE de OK&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Segunda escolha da troca de Heróis&lt;br /&gt;      if @status_window.index == 0 #Se for o primeiro do grupo&lt;br /&gt;        # Trocar posições dos personagens escolhidos&lt;br /&gt;        @second_choice = $game_party.actors[0]&lt;br /&gt;        $game_party.actors[0] = $game_party.actors[@first_choice]&lt;br /&gt;        $game_party.actors[@first_choice] = @second_choice&lt;br /&gt;        # Manter posição do cursor de escolha&lt;br /&gt;        @indice_position = 0&lt;br /&gt;        # Renovar gráficos&lt;br /&gt;        update_ordem&lt;br /&gt;      elsif @status_window.index == 1 #Se for o segundo do grupo&lt;br /&gt;        # Trocar posições dos personagens escolhidos&lt;br /&gt;        @second_choice = $game_party.actors[1]&lt;br /&gt;        $game_party.actors[1] = $game_party.actors[@first_choice]&lt;br /&gt;        $game_party.actors[@first_choice] = @second_choice&lt;br /&gt;        # Manter posição do cursor de escolha&lt;br /&gt;        @indice_position = 1&lt;br /&gt;        # Renovar gráficos&lt;br /&gt;        update_ordem&lt;br /&gt;      elsif @status_window.index == 2 #Se for o terceiro do grupo&lt;br /&gt;        # Trocar posições dos personagens escolhidos&lt;br /&gt;        @second_choice = $game_party.actors[2]&lt;br /&gt;        $game_party.actors[2] = $game_party.actors[@first_choice]&lt;br /&gt;        $game_party.actors[@first_choice] = @second_choice&lt;br /&gt;        # Manter posição do cursor de escolha&lt;br /&gt;        @indice_position = 2 &lt;br /&gt;        # Renovar gráficos&lt;br /&gt;        update_ordem&lt;br /&gt;      elsif @status_window.index == 3 #Se for o quarto do grupo&lt;br /&gt;        # Trocar posições dos personagens escolhidos&lt;br /&gt;        @second_choice = $game_party.actors[3]&lt;br /&gt;        $game_party.actors[3] = $game_party.actors[@first_choice]&lt;br /&gt;        $game_party.actors[@first_choice] = @second_choice&lt;br /&gt;        # Manter posição do cursor de escolha&lt;br /&gt;        @indice_position = 3&lt;br /&gt;        # Renovar gráficos&lt;br /&gt;        update_ordem&lt;br /&gt;      end       &lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #-----------------------------------------------------------------------------&lt;br /&gt;  #-- update_ordem (renova os gráficos da janela de status e do lider do grupo -&lt;br /&gt;  #-----------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update_ordem&lt;br /&gt;        $game_player.refresh&lt;br /&gt;        @status_window.dispose&lt;br /&gt;        @stlock_window.dispose&lt;br /&gt;        @status_window = Window_MenuStatus.new&lt;br /&gt;        @stlock_window = Window_MenuStatus.new&lt;br /&gt;        @status_window.x = 72&lt;br /&gt;        @status_window.y = 0&lt;br /&gt;        @stlock_window.x = 72&lt;br /&gt;        @stlock_window.y = 0&lt;br /&gt;        @stlock_window.active = true&lt;br /&gt;        @stlock_window.index = -1&lt;br /&gt;        @status_window.active = true&lt;br /&gt;        @status_window.index = @indice_position&lt;br /&gt;        @next_choice = false&lt;br /&gt;        @lock_firstchoice = false&lt;br /&gt;        return&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização do Frame (Quando o status da Janela estiver Ativo)&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update_status&lt;br /&gt;    # Se o botão B for pressionado&lt;br /&gt;    if Input.trigger?(Input::B)&lt;br /&gt;      # Reproduzir SE de cancelamento&lt;br /&gt;      $game_system.se_play($data_system.cancel_se)&lt;br /&gt;      $scene = Scene_Map.new&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão C for pressionado&lt;br /&gt;    if Input.trigger?(Input::C)&lt;br /&gt;        # Reproduzir SE de OK&lt;br /&gt;        $game_system.se_play($data_system.decision_se)&lt;br /&gt;        # Escolha do primeiro personagem da troca&lt;br /&gt;        if @status_window.index == 0 and @lock_firstchoice != true&lt;br /&gt;        @first_choice = 0&lt;br /&gt;        # Travar um cursor de indicação da primeira escolha&lt;br /&gt;        @stlock_window.index = 0&lt;br /&gt;        @lock_firstchoice = true &lt;br /&gt;        elsif @status_window.index == 1 and @lock_firstchoice != true&lt;br /&gt;        @first_choice = 1&lt;br /&gt;        # Travar um cursor de indicação da primeira escolha&lt;br /&gt;        @stlock_window.index = 1&lt;br /&gt;        @lock_firstchoice = true&lt;br /&gt;        elsif @status_window.index == 2 and @lock_firstchoice != true&lt;br /&gt;        @first_choice = 2&lt;br /&gt;        # Travar um cursor de indicação da primeira escolha&lt;br /&gt;        @stlock_window.index = 2&lt;br /&gt;        @lock_firstchoice = true&lt;br /&gt;        elsif @status_window.index == 3 and @lock_firstchoice != true&lt;br /&gt;        @first_choice = 3&lt;br /&gt;        # Travar um cursor de indicação da primeira escolha&lt;br /&gt;        @stlock_window.index = 3&lt;br /&gt;        @lock_firstchoice = true &lt;br /&gt;        end       &lt;br /&gt;        # Trava do cursor da primeira escolha&lt;br /&gt;        if @lock_firstchoice == true&lt;br /&gt;        @stlock_window.active = false&lt;br /&gt;        # Iniciar escolha do segundo personagem na troca&lt;br /&gt;        @next_choice = true&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;zecomeia&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-3216044960387370662?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/3216044960387370662/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-cppcolmeia-change-party-position.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3216044960387370662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3216044960387370662'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-cppcolmeia-change-party-position.html' title='C-CPP(Colméia - Change Party Position)'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-714610827947582986</id><published>2009-12-18T14:58:00.002-02:00</published><updated>2009-12-22T09:53:57.473-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>Horror_Menu 2.0</title><content type='html'>&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;&lt;strong&gt;Horror_Menu 2.0&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;por zecomeia&lt;/em&gt;&lt;br /&gt;&lt;em&gt;design aero&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Introdução&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Scene de Title por imagens com sistema de creditos e extras.O sistema&lt;br /&gt;de creditos e extras simplesmente salva duas variáveis&amp;nbsp; junto ao arquivo&lt;br /&gt;de save e lê todos os arquivos quando o jogo é executado e se essa(as) variaveis&lt;br /&gt;estiverem ligadas liberam sua opção.Existem algumas configurações no script.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Características&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Scene de titulo toda por imagens;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sistema de extras e creditos;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Screenshots&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img32.imageshack.us/img32/4178/horrormenu.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="315" id="ncode_imageresizer_container_22" onload="NcodeImageResizer.createOn(this);" src="http://img32.imageshack.us/img32/4178/horrormenu.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Como usar&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Coloque o script acima de main.&lt;br /&gt;&lt;br /&gt;Outras instruções no próprio script e na demo. &lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Demo&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.santuariorpgmaker.com/forum/exposicao-de-scripts/horror-menu/?action=dlattach;attach=288" target="_blank"&gt;Download da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Script&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input type="button" value="Selecionar Código" onClick="javascript:this.form.code.focus();this.form.code.select();"&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea rows="15" cols="52" name="code" readonly="readonly"&gt;&lt;br /&gt;#================================================================&lt;br /&gt;#             Horror_Menu 2.0&lt;br /&gt;#----------------------------------------------------------------&lt;br /&gt;# por: zecomeia&lt;br /&gt;# data: 13/04/2009&lt;br /&gt;#http://colmeia-do-ze.blogspot.com/&lt;br /&gt;# Desgin por Aero&lt;br /&gt;=begin&lt;br /&gt;Explicação:&lt;br /&gt;O sistema de extras e creditos que vem com este menu é uito simples de usar.&lt;br /&gt;Você pode, por exemplo, abilitar só a opção de extras ou de creditos ou ambas&lt;br /&gt;quando chegar em determinada parte do jogo, ou ate mesmo quando&lt;br /&gt;acabar o jogo para liberar mini-games, curiosidades, etc.A parte&lt;br /&gt;do script fixada no menu lê todos os arquivos de saves para ver se estão&lt;br /&gt;ativadas as variavéis que abilitam a opção de extras e/ou creditos.&lt;br /&gt;Mas para todo esse sistema funcionar precisa saber utilizar a intrução abaixo:&lt;br /&gt;&lt;br /&gt;1º No evento em que irá ativar estas opções para o jogador, use o comando&lt;br /&gt;"chamar script" do menu de eventos e coloque o script abaixo:&lt;br /&gt;&lt;br /&gt;$extras_enabled = true #true = abilitar extras - false = desabilitar extras&lt;br /&gt;$credits_enabled = true #true = abilitar creditos - false = desabilitar creditos&lt;br /&gt;save_infos = Scene_Save.new&lt;br /&gt;save_infos.save_extras&lt;br /&gt;&lt;br /&gt;2º Pronto, não precisa de mais nada.Desta forma são definidos os valores&lt;br /&gt;e já são salvos automaticamente.&lt;br /&gt;&lt;br /&gt;Mas existe a possibilidade de apenas definir o valor e deixe que só sejam salvos&lt;br /&gt;quando o jogador salvar o jogo.Para isso basta:&lt;br /&gt;&lt;br /&gt;1º No evento em que irá ativar estas opções para o jogador, use o comando&lt;br /&gt;"chamar script" do menu de eventos e coloque o script abaixo:&lt;br /&gt;&lt;br /&gt;$extras_enabled = true #true = abilitar extras - false = desabilitar extras&lt;br /&gt;$credits_enabled = true #true = abilitar creditos - false = desabilitar creditos&lt;br /&gt;&lt;br /&gt;2º Pronto.Desta forma os valores foram definidos e só serão salvos quando&lt;br /&gt;o jogador o fizer(salvar).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dúvidas visite o Site  www.santuariorpgmaker.com/forum&lt;br /&gt;e procure por zecomeia&lt;br /&gt;&lt;br /&gt;=end&lt;br /&gt;#================================================================&lt;br /&gt;&lt;br /&gt;#================================================================&lt;br /&gt;#CONFIGURAÇÕES&lt;br /&gt;#================================================================&lt;br /&gt;module ConfigExtrasData&lt;br /&gt; # Informações do mapa para opção "Creditos",respectivamente&lt;br /&gt; #"ID do mapa", "Posição inicial X do heroi","Posição inicial Y do heroi"&lt;br /&gt; MapaCredId = 2&lt;br /&gt; MapaCredX = 5&lt;br /&gt; MapaCredY = 5&lt;br /&gt; # Informações do mapa para opção "Extras",respectivamente&lt;br /&gt; #"ID do mapa", "Posição inicial X do heroi","Posição inicial Y do heroi"&lt;br /&gt; MapaExtId = 3&lt;br /&gt; MapaExtX = 6&lt;br /&gt; MapaExtY = 6&lt;br /&gt; #Se por algum motivo não quiser usar o sistema de extras e creditos&lt;br /&gt; # acionaveis no jogo então coloque o valor como true nas variaveis&lt;br /&gt; #abaixo, em qual decidir&lt;br /&gt; CREDITS_ENABLE = false #ou true&lt;br /&gt; EXTRAS_ENABLE = false #ou true&lt;br /&gt;end&lt;br /&gt;#=====FIM========================================================&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Title&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Esta classe trata da Tela de Título&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Title&lt;br /&gt; &lt;br /&gt;  include ConfigExtrasData&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Processamento Principal&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def main&lt;br /&gt;    # Se estiver em Teste de Batalha&lt;br /&gt;    if $BTEST&lt;br /&gt;      battle_test&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Carregar o Banco de Dados&lt;br /&gt;    $data_actors        = load_data("Data/Actors.rxdata")&lt;br /&gt;    $data_classes       = load_data("Data/Classes.rxdata")&lt;br /&gt;    $data_skills        = load_data("Data/Skills.rxdata")&lt;br /&gt;    $data_items         = load_data("Data/Items.rxdata")&lt;br /&gt;    $data_weapons       = load_data("Data/Weapons.rxdata")&lt;br /&gt;    $data_armors        = load_data("Data/Armors.rxdata")&lt;br /&gt;    $data_enemies       = load_data("Data/Enemies.rxdata")&lt;br /&gt;    $data_troops        = load_data("Data/Troops.rxdata")&lt;br /&gt;    $data_states        = load_data("Data/States.rxdata")&lt;br /&gt;    $data_animations    = load_data("Data/Animations.rxdata")&lt;br /&gt;    $data_tilesets      = load_data("Data/Tilesets.rxdata")&lt;br /&gt;    $data_common_events = load_data("Data/CommonEvents.rxdata")&lt;br /&gt;    $data_system        = load_data("Data/System.rxdata")&lt;br /&gt;    # Criar um Sistema&lt;br /&gt;    $game_system = Game_System.new&lt;br /&gt;    # Verificação de creditos e extras&lt;br /&gt;    ext_on = false&lt;br /&gt;    cre_on = false&lt;br /&gt;    verify = Scene_Load.new&lt;br /&gt;    $extras_enabled = false&lt;br /&gt;    $credits_enabled = false&lt;br /&gt;    for i in 0..3&lt;br /&gt;     if FileTest.exist?("Save#{i+1}.rxdata")&lt;br /&gt;       filename = "Save#{i+1}.rxdata"&lt;br /&gt;       file = File.open(filename, "r")&lt;br /&gt;       verify.read_extras_data(file)&lt;br /&gt;       if $extras_enabled == true or ext_on == true&lt;br /&gt;         ext_on = true&lt;br /&gt;         $extras_enabled = true&lt;br /&gt;       end&lt;br /&gt;       if $credits_enabled == true or cre_on == true&lt;br /&gt;         cre_on = true&lt;br /&gt;         $credits_enabled = true&lt;br /&gt;       end&lt;br /&gt;       file.close&lt;br /&gt;       ext_on = false&lt;br /&gt;       cre_on = false&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;    if $extras_enabled == nil&lt;br /&gt;      $extras_enabled = false&lt;br /&gt;    end&lt;br /&gt;    if $credits_enabled == nil&lt;br /&gt;      $credits_enabled = false&lt;br /&gt;    end&lt;br /&gt;    # Informações para efeito de confirmação&lt;br /&gt;    @oy = 1&lt;br /&gt;    @z_x = 1&lt;br /&gt;    @z_y = 1&lt;br /&gt;    @a = false&lt;br /&gt;    @x = 0&lt;br /&gt;    @y = 0&lt;br /&gt;    #######&lt;br /&gt;    # Informações do mapa para opção "Creditos",respectivamente&lt;br /&gt;    #"ID do mapa", "Posição inicial X do heroi","Posição inicial Y do heroi"&lt;br /&gt;    #***Configure no modulo no inicio do script&lt;br /&gt;    @mapa_creditos = MapaCredId&lt;br /&gt;    @mapa_creditos_x = MapaCredX&lt;br /&gt;    @mapa_creditos_y = MapaCredY&lt;br /&gt;    # Informações do mapa para opção "Extras",respectivamente&lt;br /&gt;    #"ID do mapa", "Posição inicial X do heroi","Posição inicial Y do heroi"&lt;br /&gt;    #***Configure no modulo no inicio do script &lt;br /&gt;    @mapa_extras = MapaExtId&lt;br /&gt;    @mapa_extras_x = MapaExtX&lt;br /&gt;    @mapa_extras_y = MapaExtY&lt;br /&gt;    #&lt;br /&gt;    #&lt;br /&gt;    if CREDITS_ENABLE == true&lt;br /&gt;      $credits_enabled = true&lt;br /&gt;    end &lt;br /&gt;    if EXTRAS_ENABLE == true&lt;br /&gt;      $extras_enabled = true&lt;br /&gt;    end &lt;br /&gt;    #######&lt;br /&gt;    # Posição inicial do cursor&lt;br /&gt;    @indice = 1&lt;br /&gt;    # Abilitação das setas de controle(cima/baixo)&lt;br /&gt;    @enable_cursor = true&lt;br /&gt;    # Estado dos comandos de efeito da troca de opções&lt;br /&gt;    @down_command = false&lt;br /&gt;    @up_command = false&lt;br /&gt;    # Variaveis que definem a ordem inicial do cursor de opções,&lt;br /&gt;    #e que são redefinidas ao lono do script para o funcionamento do script&lt;br /&gt;    # Caso não saiba nada de programção não tente alterar estes valores,&lt;br /&gt;    #porque precisam ser alterados em outros pontos&lt;br /&gt;    @back = "sair"&lt;br /&gt;    @main = "novo jogo"&lt;br /&gt;    @near = "carregar"&lt;br /&gt;    # Criar um Sistema&lt;br /&gt;    $game_system = Game_System.new&lt;br /&gt;    # Graficos do sistema do menu de titulo&lt;br /&gt;    @back_option = Sprite.new&lt;br /&gt;    @main_option = Sprite.new&lt;br /&gt;    @near_option = Sprite.new&lt;br /&gt;    @background = Sprite.new&lt;br /&gt;    grafics&lt;br /&gt;    @background.x  = 1&lt;br /&gt;    @background.oy = 1&lt;br /&gt;    # Aqui é checado se existe algum arquivo de save&lt;br /&gt;    # Se estiver habilitado, tornar @continue_enabled verdadeiro; se estiver&lt;br /&gt;    # desabilitado, tornar falso&lt;br /&gt;    $continue_enabled = false&lt;br /&gt;    for i in 0..3&lt;br /&gt;      if FileTest.exist?("Save#{i+1}.rxdata")&lt;br /&gt;        $continue_enabled = true&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Ativa(true)/Desativa(false) a opção de creditos no menu de titulo&lt;br /&gt;    #$credits_enabled = true&lt;br /&gt;    # Ativa(true)/Desativa(false) a opção de extras no menu de titulo&lt;br /&gt;    #$extras_enabled = true&lt;br /&gt;    #OBS:Mesmo desativada a opção continua la, só que com  uma opacidade menor&lt;br /&gt;    #para indicar que está desativada, e sua função também não funciona.&lt;br /&gt;    ##########################&lt;br /&gt;    # Reproduzir BGM de Título&lt;br /&gt;    $game_system.bgm_play($data_system.title_bgm)&lt;br /&gt;    # Parar de reproduzir BGS e ME&lt;br /&gt;    Audio.me_stop&lt;br /&gt;    Audio.bgs_stop&lt;br /&gt;    # Executar transição&lt;br /&gt;    Graphics.transition&lt;br /&gt;    # Loop principal&lt;br /&gt;    loop do&lt;br /&gt;      # Atualizar a tela de jogo&lt;br /&gt;      Graphics.update&lt;br /&gt;      # Atualizar a entrada de informações&lt;br /&gt;      Input.update&lt;br /&gt;      # Atualizar o frame&lt;br /&gt;      update&lt;br /&gt;      # Abortar o loop caso a tela tenha sido alterada&lt;br /&gt;      if $scene != self&lt;br /&gt;        break&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Preparar para transição&lt;br /&gt;    Graphics.freeze&lt;br /&gt;    # Exibir a janela de comandos&lt;br /&gt;    @back_option.dispose&lt;br /&gt;    @main_option.dispose&lt;br /&gt;    @near_option.dispose&lt;br /&gt;    # Exibir o gráfico de Título&lt;br /&gt;    @background.bitmap.dispose&lt;br /&gt;    @background.dispose&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #----------------------------------------------------&lt;br /&gt;  #-- grafics(define e atualiza os graficos do menu) --&lt;br /&gt;  #----------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def grafics&lt;br /&gt;    back = @back&lt;br /&gt;    main = @main&lt;br /&gt;    near = @near&lt;br /&gt;    @back_option.bitmap = RPG::Cache.picture(back.to_s)&lt;br /&gt;    @back_option.x = 50&lt;br /&gt;    @back_option.y = 155&lt;br /&gt;    @main_option.bitmap = RPG::Cache.picture(main.to_s)&lt;br /&gt;    @main_option.x = 50&lt;br /&gt;    @main_option.y = 207&lt;br /&gt;    @near_option.bitmap = RPG::Cache.picture(near.to_s)&lt;br /&gt;    @near_option.x = 50&lt;br /&gt;    @near_option.y = 259&lt;br /&gt;    @background.bitmap = RPG::Cache.picture("backgrund")&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------&lt;br /&gt;  #-- indice_updt(atualiza os graficos das opções e sua ordem) --&lt;br /&gt;  #--------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def indice_updt&lt;br /&gt;    # Atualizar a janela de comandos&lt;br /&gt;    case @indice&lt;br /&gt;    when 1&lt;br /&gt;    @back = "sair"&lt;br /&gt;    @main = "novo jogo"&lt;br /&gt;    @near = "carregar"&lt;br /&gt;    grafics&lt;br /&gt;    when 2&lt;br /&gt;    @back = "novo jogo"&lt;br /&gt;    @main = "carregar"&lt;br /&gt;    @near = "extras"&lt;br /&gt;    grafics&lt;br /&gt;    when 3&lt;br /&gt;    @back = "carregar"&lt;br /&gt;    @main = "extras"&lt;br /&gt;    @near = "creditos"&lt;br /&gt;    grafics&lt;br /&gt;    when 4&lt;br /&gt;    @back = "extras"&lt;br /&gt;    @main = "creditos"&lt;br /&gt;    @near = "sair"&lt;br /&gt;    grafics&lt;br /&gt;    when 5&lt;br /&gt;    @back = "creditos"&lt;br /&gt;    @main = "sair"&lt;br /&gt;    @near = "novo jogo"&lt;br /&gt;    grafics&lt;br /&gt;    end&lt;br /&gt;    # Atualiza os gráficos das opções no frame&lt;br /&gt;    @back_option.update&lt;br /&gt;    @main_option.update&lt;br /&gt;    @near_option.update&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Atualização do Frame&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;    if @zoom_effect == true&lt;br /&gt;       @back_option.x = -100&lt;br /&gt;       @near_option.x = -100&lt;br /&gt;       @x -= 20&lt;br /&gt;       @background.x = @x&lt;br /&gt;       @y -= 80&lt;br /&gt;       @background.y = @y&lt;br /&gt;       @z_x += 0.0164 * 20&lt;br /&gt;       @background.zoom_x = @z_x&lt;br /&gt;       @z_y += 0.0164 * 20&lt;br /&gt;       @background.zoom_y = @z_y&lt;br /&gt;       @background.opacity -= 15&lt;br /&gt;       @main_option.zoom_x += 0.0164 * 20&lt;br /&gt;       @main_option.zoom_y += 0.0164 * 20&lt;br /&gt;       @main_option.x -= 4&lt;br /&gt;       @main_option.y -= 12&lt;br /&gt;       if @background.zoom_x &gt;= 0.0164 * 500&lt;br /&gt;       @a = true&lt;br /&gt;        if @novo_conf == true&lt;br /&gt;         command_new_game&lt;br /&gt;        elsif @continue_conf == true&lt;br /&gt;         command_continue&lt;br /&gt;        elsif @credito_conf == true&lt;br /&gt;         command_creditos&lt;br /&gt;        elsif @extra_conf == true&lt;br /&gt;         command_extras&lt;br /&gt;        elsif @sair_conf == true&lt;br /&gt;         command_shutdown&lt;br /&gt;        end&lt;br /&gt;       end&lt;br /&gt;    end&lt;br /&gt;    ########Inicio###################&lt;br /&gt;    # Comandos de efeito de deslocamento das imagens de opções&lt;br /&gt;    if @down_command == true&lt;br /&gt;     @back_option.y += 3&lt;br /&gt;     @main_option.y += 3&lt;br /&gt;     if @back_option.y &gt; 206 and @main_option.y &gt; 258&lt;br /&gt;     @indice -= 1&lt;br /&gt;     if @indice &lt; 1&lt;br /&gt;        @indice = 5&lt;br /&gt;     end&lt;br /&gt;     @down_command = false&lt;br /&gt;     @enable_cursor = true&lt;br /&gt;     indice_updt&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;    if @up_command == true&lt;br /&gt;     @near_option.y -= 3&lt;br /&gt;     @main_option.y -= 3&lt;br /&gt;     if @near_option.y &lt; 208 and @main_option.y &lt; 156     &lt;br /&gt;     @indice += 1&lt;br /&gt;     if @indice &gt; 5&lt;br /&gt;        @indice = 1&lt;br /&gt;     end&lt;br /&gt;     @up_command = false&lt;br /&gt;     @enable_cursor = true&lt;br /&gt;     indice_updt&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;    #########Fim############&lt;br /&gt;    ############Inicio########################&lt;br /&gt;    # Reconhecimento de opção ativada/desativada para "Carregar","Extras","Creditos"&lt;br /&gt;    # Se estiver desabilitado o texto será mostrado em cinza&lt;br /&gt;case @indice&lt;br /&gt;when 1&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;    if $continue_enabled == false&lt;br /&gt;      @near_option.opacity = 100&lt;br /&gt;    end&lt;br /&gt;when 2 #########################&lt;br /&gt;    if $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 100&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true   &lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 100&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255 &lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 100 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 100&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true &lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;   end&lt;br /&gt;when 3 #########################&lt;br /&gt;    if $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 100&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true   &lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 100 &lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 100 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 100 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true &lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;   end&lt;br /&gt;when 4 ###########################&lt;br /&gt;    if $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true   &lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255 &lt;br /&gt;elsif $continue_enabled == false &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == false &amp;&amp; $credits_enabled == true&lt;br /&gt;    @back_option.opacity = 100&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == false&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 100&lt;br /&gt;    @near_option.opacity = 255 &lt;br /&gt;elsif $continue_enabled == true &amp;&amp; $extras_enabled == true &amp;&amp; $credits_enabled == true &lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;   end&lt;br /&gt;when 5&lt;br /&gt;    @back_option.opacity = 255&lt;br /&gt;    if $credits_enabled == false&lt;br /&gt;      @back_option.opacity = 100&lt;br /&gt;    end &lt;br /&gt;    @main_option.opacity = 255&lt;br /&gt;    @near_option.opacity = 255&lt;br /&gt;end  ######################&lt;br /&gt;&lt;br /&gt;    ##############Fim####################&lt;br /&gt;    # Se o botão C for pressionado&lt;br /&gt;    if Input.trigger?(Input::C) and @enable_cursor == true&lt;br /&gt;      # ramificação pela posição do cursor&lt;br /&gt;      case @indice&lt;br /&gt;      when 1  # Novo Jogo&lt;br /&gt;        command_new_game&lt;br /&gt;      when 2  # Carregar&lt;br /&gt;        command_continue&lt;br /&gt;      when 3  # Extras&lt;br /&gt;        command_extras&lt;br /&gt;      when 4  # Creditos&lt;br /&gt;        command_creditos&lt;br /&gt;      #when 5  # Son&lt;br /&gt;       # command_son&lt;br /&gt;      when 5  # Sair&lt;br /&gt;        command_shutdown&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Se o botão Down for pressionado&lt;br /&gt;    if Input.trigger?(Input::DOWN) and @enable_cursor == true&lt;br /&gt;      # Som de deslocamento do cursor (definida na linha abaixo, e não no database)&lt;br /&gt;      Audio.se_play("Audio/SE/" + "039-Switch08", 100, 100)&lt;br /&gt;      @down_command = true #Iniciar efeito de deslocamento das imagens das opções&lt;br /&gt;      @enable_cursor = false #travar movimento de escolha&lt;br /&gt;    end &lt;br /&gt;    # Se o botão Up for pressionado&lt;br /&gt;    if Input.trigger?(Input::UP) and @enable_cursor == true&lt;br /&gt;      # Som de deslocamento do cursor (definida na linha abaixo, e não no database)&lt;br /&gt;      Audio.se_play("Audio/SE/" + "039-Switch08", 100, 100)&lt;br /&gt;      @up_command = true  #Iniciar efeito de deslocamento das imagens das opções&lt;br /&gt;      @enable_cursor = false #travar movimento de escolha&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Comando: Novo Jogo&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def command_new_game&lt;br /&gt;    if @a == false&lt;br /&gt;    # Reproduzir SE de OK (definida na linha abaixo, e não no database)&lt;br /&gt;    Audio.se_play("Audio/SE/" + "034-Switch03", 100, 100)&lt;br /&gt;    # Parar BGM&lt;br /&gt;    Audio.bgm_stop&lt;br /&gt;    @zoom_effect = true&lt;br /&gt;    @enable_cursor = false&lt;br /&gt;    @novo_conf = true&lt;br /&gt;    end&lt;br /&gt;    if @a == true&lt;br /&gt;    # Aqui o contador de frames é resetado para que se conte o Tempo de Jogo&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    # Criar cada tipo de objetos do jogo&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;    # Configurar Grupo Inicial&lt;br /&gt;    $game_party.setup_starting_members&lt;br /&gt;    # Configurar posição inicial no mapa&lt;br /&gt;    $game_map.setup($data_system.start_map_id)&lt;br /&gt;    # Aqui o Jogador é movido até a posição inical configurada&lt;br /&gt;    $game_player.moveto($data_system.start_x, $data_system.start_y)&lt;br /&gt;    # Atualizar Jogador&lt;br /&gt;    $game_player.refresh&lt;br /&gt;    # Rodar, de acordo com o mapa, a BGM e a BGS&lt;br /&gt;    $game_map.autoplay&lt;br /&gt;    # Atualizar mapa (executar processos paralelos)&lt;br /&gt;    $game_map.update&lt;br /&gt;    # Mudar para a tela do mapa&lt;br /&gt;    $scene = Scene_Map.new&lt;br /&gt;    @zoom_effect = false&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Comando: Continuar&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def command_continue&lt;br /&gt;    # Se Continuar estiver desabilitado&lt;br /&gt;    unless $continue_enabled&lt;br /&gt;      # Reproduzir SE de erro (definida na linha abaixo, e não no database)&lt;br /&gt;       Audio.se_play("Audio/SE/" + "138-Darkness01", 100, 100)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    if @a == false&lt;br /&gt;    # Reproduzir SE de OK (definida na linha abaixo, e não no database)&lt;br /&gt;    Audio.se_play("Audio/SE/" + "034-Switch03", 100, 100)&lt;br /&gt;    @zoom_effect = true&lt;br /&gt;    @enable_cursor = false&lt;br /&gt;    @continue_conf = true&lt;br /&gt;    end&lt;br /&gt;    if @a == true&lt;br /&gt;    # Mudar para a tela de Carregar arquivos&lt;br /&gt;    $scene = Scene_Load.new&lt;br /&gt;    @zoom_effect = false&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Comando: Extras&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;   &lt;br /&gt;  def command_extras# Se Creditos estiver desabilitado&lt;br /&gt;    unless $extras_enabled&lt;br /&gt;      # Reproduzir SE de erro (definida na linha abaixo, e não no database)&lt;br /&gt;      Audio.se_play("Audio/SE/" + "138-Darkness01", 100, 100)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    if @a == false&lt;br /&gt;    # Reproduzir SE de OK (definida na linha abaixo, e não no database)&lt;br /&gt;    Audio.se_play("Audio/SE/" + "034-Switch03", 100, 100)&lt;br /&gt;    # Parar BGM&lt;br /&gt;    Audio.bgm_stop&lt;br /&gt;    @zoom_effect = true&lt;br /&gt;    @enable_cursor = false&lt;br /&gt;    @extra_conf = true&lt;br /&gt;    end&lt;br /&gt;    if @a == true&lt;br /&gt;    # Aqui o contador de frames é resetado para que se conte o Tempo de Jogo&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    # Criar cada tipo de objetos do jogo&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;    # Configurar Grupo Inicial&lt;br /&gt;    $game_party.setup_starting_members&lt;br /&gt;    # Configurar posição inicial no mapa&lt;br /&gt;    $game_map.setup(@mapa_extras)&lt;br /&gt;    # Aqui o Jogador é movido até a posição inical configurada&lt;br /&gt;    $game_player.moveto(@mapa_extras_x , @mapa_extras_y)&lt;br /&gt;    # Atualizar Jogador&lt;br /&gt;    $game_player.refresh&lt;br /&gt;    # Rodar, de acordo com o mapa, a BGM e a BGS&lt;br /&gt;    $game_map.autoplay&lt;br /&gt;    # Atualizar mapa (executar processos paralelos)&lt;br /&gt;    $game_map.update&lt;br /&gt;    # Mudar para a tela do mapa&lt;br /&gt;    $scene = Scene_Map.new&lt;br /&gt;    @zoom_effect = false&lt;br /&gt;    end&lt;br /&gt;end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Comando: Creditos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def command_creditos&lt;br /&gt;    # Se Creditos estiver desabilitado&lt;br /&gt;    unless $credits_enabled&lt;br /&gt;      # Reproduzir SE de erro (definida na linha abaixo, e não no database)&lt;br /&gt;      Audio.se_play("Audio/SE/" + "138-Darkness01", 100, 100)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    if @a == false&lt;br /&gt;    # Reproduzir SE de OK (definida na linha abaixo, e não no database)&lt;br /&gt;    Audio.se_play("Audio/SE/" + "034-Switch03", 100, 100)&lt;br /&gt;    # Parar BGM&lt;br /&gt;    Audio.bgm_stop&lt;br /&gt;    @zoom_effect = true&lt;br /&gt;    @enable_cursor = false&lt;br /&gt;    @credito_conf = true&lt;br /&gt;    end&lt;br /&gt;    if @a == true&lt;br /&gt;    # Aqui o contador de frames é resetado para que se conte o Tempo de Jogo&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    # Criar cada tipo de objetos do jogo&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;    # Configurar Grupo Inicial&lt;br /&gt;    $game_party.setup_starting_members&lt;br /&gt;    # Configurar posição inicial no mapa&lt;br /&gt;    $game_map.setup(@mapa_creditos)&lt;br /&gt;    # Aqui o Jogador é movido até a posição inical configurada&lt;br /&gt;    $game_player.moveto(@mapa_creditos_x , @mapa_creditos_y)&lt;br /&gt;    # Atualizar Jogador&lt;br /&gt;    $game_player.refresh&lt;br /&gt;    # Rodar, de acordo com o mapa, a BGM e a BGS&lt;br /&gt;    $game_map.autoplay&lt;br /&gt;    # Atualizar mapa (executar processos paralelos)&lt;br /&gt;    $game_map.update&lt;br /&gt;    # Mudar para a tela do mapa&lt;br /&gt;    $scene = Scene_Map.new&lt;br /&gt;    @zoom_effect = false&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Comando: Sair&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def command_shutdown&lt;br /&gt;    if @a == false&lt;br /&gt;    # Reproduzir SE de OK (definida na linha abaixo, e não no database)&lt;br /&gt;    Audio.se_play("Audio/SE/" + "034-Switch03", 100, 100)&lt;br /&gt;    @zoom_effect = true&lt;br /&gt;    @enable_cursor = false&lt;br /&gt;    @sair_conf = true&lt;br /&gt;    end&lt;br /&gt;    if @a == true&lt;br /&gt;    # Diminuir o volume de BGM, BGS e ME&lt;br /&gt;    Audio.bgm_fade(800)&lt;br /&gt;    Audio.bgs_fade(800)&lt;br /&gt;    Audio.me_fade(800)&lt;br /&gt;    # Sair&lt;br /&gt;    $scene = nil&lt;br /&gt;    @zoom_effect = false&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Teste de Batalha&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def battle_test&lt;br /&gt;    # Carregar Banco de Dados para o Teste de Batalha&lt;br /&gt;    $data_actors        = load_data("Data/BT_Actors.rxdata")&lt;br /&gt;    $data_classes       = load_data("Data/BT_Classes.rxdata")&lt;br /&gt;    $data_skills        = load_data("Data/BT_Skills.rxdata")&lt;br /&gt;    $data_items         = load_data("Data/BT_Items.rxdata")&lt;br /&gt;    $data_weapons       = load_data("Data/BT_Weapons.rxdata")&lt;br /&gt;    $data_armors        = load_data("Data/BT_Armors.rxdata")&lt;br /&gt;    $data_enemies       = load_data("Data/BT_Enemies.rxdata")&lt;br /&gt;    $data_troops        = load_data("Data/BT_Troops.rxdata")&lt;br /&gt;    $data_states        = load_data("Data/BT_States.rxdata")&lt;br /&gt;    $data_animations    = load_data("Data/BT_Animations.rxdata")&lt;br /&gt;    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")&lt;br /&gt;    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")&lt;br /&gt;    $data_system        = load_data("Data/BT_System.rxdata")&lt;br /&gt;    # Aqui o contador de frames é resetado para que se conte o Tempo de Jogo&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    # Criar cada tipo de objetos do jogo&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;    # Configurar Grupo para o Teste de Batalha&lt;br /&gt;    $game_party.setup_battle_test_members&lt;br /&gt;    # Definir o ID do Grupo de Inimigos, a possibilidade de fuga e o Fundo de&lt;br /&gt;    # Batalha&lt;br /&gt;    $game_temp.battle_troop_id = $data_system.test_troop_id&lt;br /&gt;    $game_temp.battle_can_escape = true&lt;br /&gt;    $game_map.battleback_name = $data_system.battleback_name&lt;br /&gt;    # Reproduzri SE de início de batalha&lt;br /&gt;    $game_system.se_play($data_system.battle_start_se)&lt;br /&gt;    # Reproduzir BGM de batalha&lt;br /&gt;    $game_system.bgm_play($game_system.battle_bgm)&lt;br /&gt;    # Mudar para a tela de batalha&lt;br /&gt;    $scene = Scene_Battle.new&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#################################################################&lt;br /&gt;#################################################################&lt;br /&gt;#################################################################&lt;br /&gt;#################################################################&lt;br /&gt;&lt;br /&gt;#===========================================&lt;br /&gt;# Scene_Save e Scene_Load (editado)&lt;br /&gt;#-------------------------------------------&lt;br /&gt;# edição por: zecomeia&lt;br /&gt;# 13/04/2009&lt;br /&gt;# agradecimentos: br_lemes&lt;br /&gt;#-------------------------------------------&lt;br /&gt;# Comentario:este é um script bem especifico&lt;br /&gt;# portanto tendo mais utilidade para estudo&lt;br /&gt;# ou simplesmente para utilizar o menu que&lt;br /&gt;# o acompanha.&lt;br /&gt;#-------------------------------------------&lt;br /&gt;# descrição: Adicionado duas variaveis&lt;br /&gt;#globais ao arquivo de Save, com o objetivo&lt;br /&gt;#de utiliza-las para habilitar Extras no&lt;br /&gt;#jogo.&lt;br /&gt;#===========================================&lt;br /&gt;=begin&lt;br /&gt;Variaveis adicionadas ao save&lt;br /&gt;$extras_enabled   &lt;br /&gt;$credits_enabled&lt;br /&gt;&lt;br /&gt;Os metodos acresentados são os seguintes, e com suas respectivas&lt;br /&gt;funções:&lt;br /&gt;&lt;br /&gt;class Scene_Save&lt;br /&gt;&lt;br /&gt;save_extras &lt;br /&gt;#este metodo ao ser chamado pela classe Scene_Save, grava as&lt;br /&gt;informações que já são salvadas normalmentes pelo save original&lt;br /&gt;e mais a informação das duas variaveis globais citadas, lembrando&lt;br /&gt;que usando este metodo será salvado o arquivo por cima do ultimo&lt;br /&gt;arquivo escolhido(caso não tenha escolhido nenhum salvará por cima&lt;br /&gt;primeiro).&lt;br /&gt;&lt;br /&gt;write_save_data(file)&lt;br /&gt;#na verdade esse metodo ja existe na classe de Scene_Save, mas&lt;br /&gt;foi acrescentada a informação das duas variaveis globais citadas&lt;br /&gt;&lt;br /&gt;class Scene_Load&lt;br /&gt;&lt;br /&gt;read_extras_data(file)&lt;br /&gt;#este metodo foi feito apenas para não necessitar editar o metodo&lt;br /&gt;read_save_data(file) original, isso para manter o metodo original&lt;br /&gt;da classe Scene_Load com suas caracteristicas intaquitas dando&lt;br /&gt;a possibilidade do usuario escolher quando quer que seja lidas as&lt;br /&gt;informações das duas variaveis globais adicionais ao inves de ser&lt;br /&gt;resgatado o valor de ambas a todo comando de Load.&lt;br /&gt; &lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;class Scene_Save &lt; Scene_File&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Gravando&lt;br /&gt;  #     file : Gravando um arquivo&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  alias copy_write_save_data write_save_data&lt;br /&gt;  def write_save_data(file)&lt;br /&gt;    copy_write_save_data(file)&lt;br /&gt;    Marshal.dump($extras_enabled, file)&lt;br /&gt;    Marshal.dump($credits_enabled, file)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def save_extras()&lt;br /&gt;    @file_index = $game_temp.last_file_index&lt;br /&gt;    filename = make_filename(@file_index)&lt;br /&gt;    file = File.open(filename, "wb")&lt;br /&gt;    write_save_data(file)&lt;br /&gt;    file.close&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class Scene_Load &lt; Scene_File&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # Ler Dados do Arquivo&lt;br /&gt;  #     file : arquivo que será lido (aberto)&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def read_extras_data(file)&lt;br /&gt;    read_save_data(file)&lt;br /&gt;    $extras_enabled = Marshal.load(file)&lt;br /&gt;    $credits_enabled = Marshal.load(file)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Créditos e Agradecimentos&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;&lt;em&gt;Feito por zecomeia&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Desenhado por aero&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Ajuda indireta de br_lemes&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-714610827947582986?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/714610827947582986/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/horrormenu-20.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/714610827947582986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/714610827947582986'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/horrormenu-20.html' title='Horror_Menu 2.0'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-6595651549301883777</id><published>2009-12-18T14:54:00.004-02:00</published><updated>2010-09-24T15:55:34.535-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>C-SS(Colméia - Skill System)</title><content type='html'>&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;&lt;b&gt;C-SS(Colméia - Skill System)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;por zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;Introdução&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;É um sistema onde as habilidades tem level como em jogos como Diablo, Ragnarok, e outros MMORPGs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Características&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Habilidades com level;&lt;/li&gt;&lt;li&gt;SkillTree;&lt;/li&gt;&lt;li&gt;Pontos para escolher em quais magias distribuir;&lt;/li&gt;&lt;li&gt;Habilidades divididas em passivas, ofensivas e com armas&lt;/li&gt;&lt;li&gt;15 configurações;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Screenshots&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Menu da SkillTree:&lt;br /&gt;&lt;a href="http://img34.imageshack.us/img34/5138/ssshc.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="301" id="ncode_imageresizer_container_18" onload="NcodeImageResizer.createOn(this);" src="http://img34.imageshack.us/img34/5138/ssshc.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;Como usar&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Coloque o script acima de main.&lt;br /&gt;&lt;br /&gt;Para acessar o menu da SkillTree entre no menu de habilidades e aperte 'A'&lt;br /&gt;&lt;br /&gt;Intruções sobre o script na demo e no próprio script.&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;Demo&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/122741502/aed8f0dd/SHC_Sistema_de_Habilidades_Colmia_.html"&gt;Download da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#=============================================================&lt;br /&gt;# Sistema de Habilidades Colméia(SHC)&lt;br /&gt;# versão: 1.0&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;# por zecomeia&lt;br /&gt;# 14/07/2009&lt;br /&gt;# http://colmeia-do-ze.blogspot.com/&lt;br /&gt;#-------------------------------------------------------------&lt;br /&gt;#Este script cria uma árvore de habilidades que podem aumentar&lt;br /&gt;#de nível conforme distribuidos os "skill points".E outras&lt;br /&gt;#habilidades vão sendo habilitadas conforme as habilidades&lt;br /&gt;#anteriores atingirem um certo nível definido.&lt;br /&gt;#Nesta Skill Tree as habilidades são divididas em 3 tipos:&lt;br /&gt;#    "Habilidades Passivas"&lt;br /&gt;#    "Habilidades Ofensivas"&lt;br /&gt;#    "Habilidades com Armas"&lt;br /&gt;#OBS:Esses nomes podem ser mudados.&lt;br /&gt;#=============================================================&lt;br /&gt;&lt;br /&gt;#Coloque acima de main&lt;br /&gt;&lt;br /&gt;#Veja as configurações abaixo para aproveitar ao máximo suas funções.&lt;br /&gt;&lt;br /&gt;#=================================&lt;br /&gt;# Configurações&lt;br /&gt;#=================================&lt;br /&gt;&lt;br /&gt;#-----------------------------&lt;br /&gt;# Configuração ZC_SkillPoints&lt;br /&gt;#-----------------------------&lt;br /&gt;&lt;br /&gt;module ZC_SKP&lt;br /&gt; #Definição da Tecla de informações no menu Skill_Tree.&lt;br /&gt; #Escolha uma entre:&lt;br /&gt; #Input::X  Input::A  Input::B  Input::C  Input::Y&lt;br /&gt; #Input::Z  Input::L  Input::R  nil&lt;br /&gt; #&lt;br /&gt; #*Se definir como nil então esta função é desligada&lt;br /&gt; #OBS:segue o padrão descrito no Help do RPGMaker.&lt;br /&gt; MORE_INFO_KEY = Input::X&lt;br /&gt; #-----------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Definição do nome do menu Skill_Tree.&lt;br /&gt; NAME_SKILLTREE = "Árvore de Habilidades"&lt;br /&gt; #-----------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Definição do nome dos 3 tipos de habilidades.Siga a Ordem.&lt;br /&gt; NAME_SKILLTYPE = [&lt;br /&gt; "Habilidades Passivas",&lt;br /&gt; "Habilidades Ofensivas",&lt;br /&gt; "Habilidades com Armas",&lt;br /&gt; ]&lt;br /&gt; #----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Definição do nome dos Skill_Points.&lt;br /&gt; SKP_NAME = "SKP"&lt;br /&gt; #----------------------------------&lt;br /&gt; &lt;br /&gt; #Definição da quantidade inicial de SKP(skill points).&lt;br /&gt; #(Caso não especificado SKP inicial igual a 0)&lt;br /&gt; #&lt;br /&gt; #A=&amp;gt;B&lt;br /&gt; #&lt;br /&gt; #A = ID do personagem.&lt;br /&gt; #B = Quantidade inicial de SKP.&lt;br /&gt; INI_SKP = {&lt;br /&gt; 1=&amp;gt;1,&lt;br /&gt; 2=&amp;gt;5,&lt;br /&gt; 3=&amp;gt;3,&lt;br /&gt; 4=&amp;gt;1,&lt;br /&gt; 5=&amp;gt;2&lt;br /&gt; }&lt;br /&gt; #-----------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Definição da quantidade de SKP(skill points) ganho&lt;br /&gt; #quando o personagem subir o level.&lt;br /&gt; #(Caso não especificado SKP ganho igual a 1)&lt;br /&gt; #&lt;br /&gt; #A=&amp;gt;B&lt;br /&gt; #&lt;br /&gt; #A = ID do personagem.&lt;br /&gt; #B = Quantidade de SKP ganho.&lt;br /&gt; SKP_EXP = {&lt;br /&gt; 1=&amp;gt;2,&lt;br /&gt; 2=&amp;gt;1,&lt;br /&gt; 3=&amp;gt;1,&lt;br /&gt; 4=&amp;gt;3&lt;br /&gt; }&lt;br /&gt; #--------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Itens que dão SKP.&lt;br /&gt; #A=&amp;gt;B&lt;br /&gt; #&lt;br /&gt; #A = ID do Item&lt;br /&gt; #B = Quantidade de SKP ganho.&lt;br /&gt; ITEM_SKP_INCREASE = {&lt;br /&gt; 30=&amp;gt;1,&lt;br /&gt; 31=&amp;gt;1&lt;br /&gt; }   &lt;br /&gt; #----------------------------&lt;br /&gt; &lt;br /&gt; #Level inicial das habilidades de cada personagem.&lt;br /&gt; #&lt;br /&gt; #INI_SKILL_LV[A] = {B=&amp;gt;C, B=&amp;gt;C, ...}&lt;br /&gt; #&lt;br /&gt; #A = ID do Personagem&lt;br /&gt; #B = ID da SKILL.&lt;br /&gt; #C = Level inicial.&lt;br /&gt; #*OBS: No database é necessário que coloque para os personagens&lt;br /&gt; #começarem com todas as habilidades que deseja que cada um tenha,&lt;br /&gt; #assim elas aparecerão no menu de skilltree.&lt;br /&gt; #*OBS: Se não foi definido o nível inicial da magia aqui, então&lt;br /&gt; #ela iniciará no level 0(zero), isso significa que ainda não foi&lt;br /&gt; #aprendida e portanto não pode ser usada.&lt;br /&gt; INI_SKILL_LV = []&lt;br /&gt; INI_SKILL_LV[1] = {&lt;br /&gt; 2=&amp;gt;1,&lt;br /&gt; 7=&amp;gt;1,&lt;br /&gt; 70=&amp;gt;1&lt;br /&gt; }&lt;br /&gt; INI_SKILL_LV[2] = {&lt;br /&gt; 1=&amp;gt;3,&lt;br /&gt; 8=&amp;gt;1&lt;br /&gt; }&lt;br /&gt; INI_SKILL_LV[3] = {&lt;br /&gt; 9=&amp;gt;4,&lt;br /&gt; 19=&amp;gt;6,&lt;br /&gt; 21=&amp;gt;2,&lt;br /&gt; 53=&amp;gt;9&lt;br /&gt; }&lt;br /&gt; INI_SKILL_LV[4] = {&lt;br /&gt; 22=&amp;gt;2,&lt;br /&gt; 25=&amp;gt;2,&lt;br /&gt; 39=&amp;gt;1,&lt;br /&gt; 60=&amp;gt;4&lt;br /&gt; }&lt;br /&gt; INI_SKILL_LV[5] = {&lt;br /&gt; 73=&amp;gt;5,&lt;br /&gt; 74=&amp;gt;1,&lt;br /&gt; 75=&amp;gt;4,&lt;br /&gt; 76=&amp;gt;6&lt;br /&gt; }&lt;br /&gt; #------------------------------------------------------------------     &lt;br /&gt;&lt;br /&gt; #Level inicial das habilidades de cada personagem.&lt;br /&gt; #&lt;br /&gt; #MAX_SKILL_LV[A] = {B=&amp;gt;C, B=&amp;gt;C, ...}&lt;br /&gt; #&lt;br /&gt; #A = ID do Personagem&lt;br /&gt; #B = ID da SKILL.&lt;br /&gt; #C = Level máximo.&lt;br /&gt; #*OBS: Se não foi definido o nível máximo da magia aqui, então&lt;br /&gt; #será definido como 10.&lt;br /&gt; MAX_SKILL_LV = []&lt;br /&gt; MAX_SKILL_LV[1] = {&lt;br /&gt; 2=&amp;gt;5,&lt;br /&gt; 7=&amp;gt;6,&lt;br /&gt; 9=&amp;gt;5,&lt;br /&gt; 70=&amp;gt;8,&lt;br /&gt; 72=&amp;gt;9&lt;br /&gt; }&lt;br /&gt; MAX_SKILL_LV[2] = {&lt;br /&gt; 1=&amp;gt;7,&lt;br /&gt; 8=&amp;gt;7,&lt;br /&gt; 13=&amp;gt;8,&lt;br /&gt; 63=&amp;gt;8,&lt;br /&gt; 64=&amp;gt;9&lt;br /&gt; }&lt;br /&gt; MAX_SKILL_LV[3] = {&lt;br /&gt; 9=&amp;gt;5,&lt;br /&gt; 19=&amp;gt;11,&lt;br /&gt; 21=&amp;gt;15,&lt;br /&gt; 53=&amp;gt;20&lt;br /&gt; }&lt;br /&gt; MAX_SKILL_LV[4] = {&lt;br /&gt; 22=&amp;gt;5,&lt;br /&gt; 25=&amp;gt;5,&lt;br /&gt; 39=&amp;gt;5,&lt;br /&gt; 60=&amp;gt;5,&lt;br /&gt; 61=&amp;gt;5&lt;br /&gt; }&lt;br /&gt; MAX_SKILL_LV[5] = {&lt;br /&gt; 24=&amp;gt;11,&lt;br /&gt; 73=&amp;gt;11,&lt;br /&gt; 74=&amp;gt;11,&lt;br /&gt; 75=&amp;gt;15,&lt;br /&gt; 76=&amp;gt;11&lt;br /&gt; }&lt;br /&gt; #------------------------------------------------------------------     &lt;br /&gt; &lt;br /&gt; #Atributos acrescentados/retirados das habilidades por skill level evoluído.&lt;br /&gt; #&lt;br /&gt; #ATRIBUTE_SKILLS[A] = {B=&amp;gt;[C, D, E, F, G, H, I, J, K, L, M, N], B=&amp;gt;[C, D, E, F, G, H, I, J, K, L, M, N], ...}&lt;br /&gt; #&lt;br /&gt; #A = ID do Personagem&lt;br /&gt; #B = ID da SKILL.&lt;br /&gt; #C = Gasto de MP&lt;br /&gt; #D = Poder&lt;br /&gt; #E = Força F &amp;lt;--- ---&amp;gt; Correto: Ataque F&lt;br /&gt; #F = Fuga F     |--&amp;gt;No seu Database os nomes podem estar trocados.O sistema usa o padrão correto&lt;br /&gt; #G = Ataque F&amp;lt;--- ---&amp;gt; Correto: Força F&lt;br /&gt; #H = Defesa F----&amp;gt;Idem. Correto Destreza F&lt;br /&gt; #I = Agilidade F&lt;br /&gt; #J = Inteligência&lt;br /&gt; #K = % de Acerto&lt;br /&gt; #L = Defesa Fís.&lt;br /&gt; #M = Defesa Mag.&lt;br /&gt; #N = Grau de Dist.&lt;br /&gt; #&lt;br /&gt; #*É importante que coloque os valores na sequência descrita acima.&lt;br /&gt; #*OBS: Coloque 0(zero) se não quiser que o atributo aumente quando&lt;br /&gt; #o level da skill aumentar.&lt;br /&gt; #*OBS: Se quiser que o valor seja subtraido a cada level então&lt;br /&gt; #coloque um sinal de -(menos) antes. Ex: -45&lt;br /&gt; ATRIBUTE_SKILLS = []&lt;br /&gt; ATRIBUTE_SKILLS[1] = {&lt;br /&gt; 2=&amp;gt;["-5%", "100%", "100%", 0, 0, 0, 0, "100%", 0, 0, "100%", 0],&lt;br /&gt; 7=&amp;gt;[32, 22, 5, 2, 25, 3, 8, 29, 6, 5, 2, 1],&lt;br /&gt; 9=&amp;gt;[40, 29, 15, 3, 15, 8, 7, 15, 3, 8, 3, 0],&lt;br /&gt; 70=&amp;gt;[35, 28, 15, 0, 12, 8, 5, 36, 6, 8, 1, 0],&lt;br /&gt; 72=&amp;gt;[30, 19, 20, 1, 11, 5, 7, 26, 3, 8, 3, -1]&lt;br /&gt; }&lt;br /&gt; ATRIBUTE_SKILLS[2] = {&lt;br /&gt; 1=&amp;gt;[20, 23, 15, 3, 15, 8, 7, 15, 3, 8, 3, 0],&lt;br /&gt; 8=&amp;gt;[35, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0],&lt;br /&gt; 13=&amp;gt;[30, 19, 20, 1, 11, 5, 7, 26, 3, 8, 3, -1],&lt;br /&gt; 63=&amp;gt;[35, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0],&lt;br /&gt; 64=&amp;gt;[35, 28, 15, 0, 12, 8, 5, 36, 6, 8, 1, 0]&lt;br /&gt; }&lt;br /&gt; ATRIBUTE_SKILLS[3] = {&lt;br /&gt; 9=&amp;gt;[10, 8, 15, 2, 18, 8, 7, 46, 6, 8, 3, 0],&lt;br /&gt; 19=&amp;gt;[32, 22, 5, 2, 25, 3, 8, 29, 6, 5, 2, 1],&lt;br /&gt; 21=&amp;gt;[30, 19, 20, 1, 11, 5, 7, 26, 3, 8, 3, -1],&lt;br /&gt; 53=&amp;gt;[35, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0]&lt;br /&gt; }&lt;br /&gt; ATRIBUTE_SKILLS[4] = {&lt;br /&gt; 22=&amp;gt;[-11, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0],&lt;br /&gt; 25=&amp;gt;[30, 19, 20, 1, 11, 5, 7, 26, 3, 8, 3, -1],&lt;br /&gt; 39=&amp;gt;[35, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0],&lt;br /&gt; 60=&amp;gt;[35, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, 0],&lt;br /&gt; 61=&amp;gt;[28, 29, 15, 2, 12, 8, 7, 36, 6, 8, 3, -2]&lt;br /&gt; }&lt;br /&gt; ATRIBUTE_SKILLS[5] = {&lt;br /&gt; 24=&amp;gt;[35, 24, 15, 2, 12, 8, 7, 21, 6, 8, 3, 0],&lt;br /&gt; 73=&amp;gt;[15, 9, 15, 2, 12, 8, 7, 36, 4, 8, 3, 0],&lt;br /&gt; 74=&amp;gt;[50, 19, 15, 2, 12, 0, 7, 13, 6, 8, 3, 0],&lt;br /&gt; 75=&amp;gt;[28, 22, 15, 0, 12, 8, 0, 26, 8, 8, 13, -2],&lt;br /&gt; 76=&amp;gt;[30, 10, 15, 2, 12, 1, 7, 36, 6, 8, 3, 0]&lt;br /&gt; }&lt;br /&gt; #----------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt; #Definição do nome dos atributos para que apareceram na descrição&lt;br /&gt; #da habilidade.São 12 atributos portanto 12 palavras.&lt;br /&gt; #&lt;br /&gt; #-------------------&lt;br /&gt; #ATR_WORDS = {&lt;br /&gt; #"SP"=&amp;gt;A,&lt;br /&gt; #"PWR"=&amp;gt;B,&lt;br /&gt; #"ATK"=&amp;gt;C,&lt;br /&gt; #"EVA"=&amp;gt;D,&lt;br /&gt; #"STR"=&amp;gt;E,&lt;br /&gt; #"DEX"=&amp;gt;F,&lt;br /&gt; #"AGI"=&amp;gt;G,&lt;br /&gt; #"INT"=&amp;gt;H,&lt;br /&gt; #"HIT"=&amp;gt;I,&lt;br /&gt; #"PDEF"=&amp;gt;J,&lt;br /&gt; #"MDEF"=&amp;gt;K,&lt;br /&gt; #"VAR"=&amp;gt;L&lt;br /&gt; #}&lt;br /&gt; #--------------------&lt;br /&gt; #A = Gasto de MP&lt;br /&gt; #B = Poder&lt;br /&gt; #C = Força F &amp;lt;--- ---&amp;gt; Correto: Ataque F&lt;br /&gt; #D = Fuga F     |--&amp;gt;No seu Database os nomes podem estar trocados.O script usa o padrão correto&lt;br /&gt; #E = Ataque F&amp;lt;--- ---&amp;gt; Correto: Força F&lt;br /&gt; #F = Defesa F----&amp;gt;Idem. Correto Destreza F&lt;br /&gt; #G = Agilidade F&lt;br /&gt; #H = Inteligência&lt;br /&gt; #I = % de Acerto&lt;br /&gt; #J = Defesa Fís.&lt;br /&gt; #K = Defesa Mag.&lt;br /&gt; #L = Grau de Dist.&lt;br /&gt; #--------------------&lt;br /&gt; #&lt;br /&gt; #* A menos que saiba o que está fazendo não altere os valores que&lt;br /&gt; #estão antes do =&amp;gt;  EX: "SP"=&amp;gt;&lt;br /&gt; ATR_WORDS = {&lt;br /&gt; "SP"=&amp;gt;"MP",&lt;br /&gt; "PWR"=&amp;gt;"POD",&lt;br /&gt; "ATK"=&amp;gt;"ATQ",&lt;br /&gt; "EVA"=&amp;gt;"FUG",&lt;br /&gt; "STR"=&amp;gt;"FOR",&lt;br /&gt; "DEX"=&amp;gt;"DES",&lt;br /&gt; "AGI"=&amp;gt;"AGI",&lt;br /&gt; "INT"=&amp;gt;"INT",&lt;br /&gt; "HIT"=&amp;gt;"% Acerto",&lt;br /&gt; "MDEF"=&amp;gt;"DEF M",&lt;br /&gt; "PDEF"=&amp;gt;"DEF F",&lt;br /&gt; "VAR"=&amp;gt;"Grau de Dist."&lt;br /&gt; }&lt;br /&gt; #------------------------------------------------------------------                   &lt;br /&gt; &lt;br /&gt; #Condição para aprender a magia.Defina o level minimo que outras&lt;br /&gt; #magias devem estar para poder aprender uma determinada magia.&lt;br /&gt; #&lt;br /&gt; #CONDITION_SKILL[A] = {B=&amp;gt;{C=&amp;gt;D, C=&amp;gt;D, ...}, B=&amp;gt;{C=&amp;gt;D, C=&amp;gt;D, ...}}&lt;br /&gt; #&lt;br /&gt; #A = ID do personagem.&lt;br /&gt; #B = ID da SKILL.&lt;br /&gt; #C = ID da SKILL de condição para aprender a SKILL definida em B&lt;br /&gt; #D = Level minimo da SKILL da condição.&lt;br /&gt; #------------------------------------------------------------------&lt;br /&gt; #Ex: CONDITION_SKILL[1] = {&lt;br /&gt; #    2=&amp;gt;{1=&amp;gt;3, 4=&amp;gt;5}&lt;br /&gt; #    }&lt;br /&gt; #Isso significa que para o personagem de ID 1 precisa ter a skill&lt;br /&gt; #de ID 1 no level 3 e a skill de ID 4 no level 5 para poder&lt;br /&gt; #aprender a skill de ID 2.&lt;br /&gt; #&lt;br /&gt; #*Todas outras magias não definidas aqui não tem condições.&lt;br /&gt; CONDITION_SKILL = []&lt;br /&gt; CONDITION_SKILL[1] = {&lt;br /&gt; 7=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 9=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 70=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 72=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2}&lt;br /&gt; }&lt;br /&gt; CONDITION_SKILL[2] = {&lt;br /&gt; 1=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 8=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 13=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 63=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 64=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2}&lt;br /&gt; }&lt;br /&gt; CONDITION_SKILL[3] = {&lt;br /&gt; 9=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 19=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 21=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 53=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2}&lt;br /&gt; }&lt;br /&gt; CONDITION_SKILL[4] = {&lt;br /&gt; 22=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 25=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 39=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 60=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 61=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2}&lt;br /&gt; }&lt;br /&gt; CONDITION_SKILL[5] = {&lt;br /&gt; 24=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 73=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 74=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 75=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2},&lt;br /&gt; 76=&amp;gt;{1=&amp;gt;2, 4=&amp;gt;2}&lt;br /&gt; }&lt;br /&gt; #----------------------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Definição dos tipos das habilidades.&lt;br /&gt; #&lt;br /&gt; #TYPE_SKILL = {A=&amp;gt;B, A=&amp;gt;B, ...}&lt;br /&gt; #&lt;br /&gt; #A = ID da SKILL.&lt;br /&gt; #B = Tipo da SKILL.&lt;br /&gt; #&lt;br /&gt; #* Passivas: B = 0 ; Ofensivas: B = 1 ; c/ Armas: B = 2&lt;br /&gt; #*Todas magias não definidas aqui serão automaticamente consideradas&lt;br /&gt; #do tipo Ofensiva (B = 1).&lt;br /&gt; TYPE_SKILL = {&lt;br /&gt; 1=&amp;gt;0,&lt;br /&gt; 2=&amp;gt;0,&lt;br /&gt; 7=&amp;gt;1,&lt;br /&gt; 8=&amp;gt;1,&lt;br /&gt; 9=&amp;gt;1,&lt;br /&gt; 13=&amp;gt;1,&lt;br /&gt; 19=&amp;gt;1,&lt;br /&gt; 21=&amp;gt;1,&lt;br /&gt; 22=&amp;gt;1,&lt;br /&gt; 24=&amp;gt;1,&lt;br /&gt; 25=&amp;gt;1,&lt;br /&gt; 39=&amp;gt;1,&lt;br /&gt; 53=&amp;gt;0,&lt;br /&gt; 60=&amp;gt;2,&lt;br /&gt; 61=&amp;gt;2,&lt;br /&gt; 63=&amp;gt;2,&lt;br /&gt; 64=&amp;gt;2,&lt;br /&gt; 70=&amp;gt;2,&lt;br /&gt; 72=&amp;gt;2,&lt;br /&gt; 73=&amp;gt;2,&lt;br /&gt; 74=&amp;gt;2,&lt;br /&gt; 75=&amp;gt;2,&lt;br /&gt; 76=&amp;gt;2&lt;br /&gt; }&lt;br /&gt; #-------------------------------------------------------&lt;br /&gt; &lt;br /&gt; #Defina o tipo da arma para ser usado como condição para magias&lt;br /&gt; #que foram definidas como habilidades c/ armas na configuração&lt;br /&gt; #acima.&lt;br /&gt; #&lt;br /&gt; #WEAPON_TYPE = {A=&amp;gt;B, A=&amp;gt;B, ...}&lt;br /&gt; #&lt;br /&gt; #A = ID da ARMA.&lt;br /&gt; #B = Tipo de Arma.&lt;br /&gt; #&lt;br /&gt; #* Para o valor de B use números e fique a vontade para criar&lt;br /&gt; #quantos tipos de armas desejar.Fique atento porque o valor de B&lt;br /&gt; # aqui adotado terá que ser adotado na próxima configuração.&lt;br /&gt; #Ex: Meu padrão será 0 = laminas, 1 = lanças, 2 = flechas.&lt;br /&gt; WEAPON_TYPE = {&lt;br /&gt; 1=&amp;gt;0,&lt;br /&gt; 5=&amp;gt;1,&lt;br /&gt; 13=&amp;gt;0,&lt;br /&gt; 17=&amp;gt;2&lt;br /&gt; }&lt;br /&gt; #---------------------------------------------------------------&lt;br /&gt; #WEAPON_SKILLTYPE = {A=&amp;gt;B, A=&amp;gt;B, ...}&lt;br /&gt; #&lt;br /&gt; #A = ID da SKILL.&lt;br /&gt; #B = Tipo de Arma.&lt;br /&gt; #&lt;br /&gt; #* Lembre-se o valor de B terá que ser o mesmo usado na&lt;br /&gt; #configuração anterior.&lt;br /&gt; #Ex:&lt;br /&gt; #WEAPON_TYPE = {&lt;br /&gt; #23=&amp;gt;1&lt;br /&gt; #12=&amp;gt;1&lt;br /&gt; #3=&amp;gt;4&lt;br /&gt; #}&lt;br /&gt; #WEAPON_SKILLTYPE = {&lt;br /&gt; #5=&amp;gt;1&lt;br /&gt; #}&lt;br /&gt; #-------------------------------------------------------------------&lt;br /&gt; #Ou seja, "Magia de ID número 5 só poderá ser usado se herói estiver&lt;br /&gt; #equipado com um equipamento do tipo 1, que em nosso caso existe&lt;br /&gt; #o equipamento de ID número 23 e ID número 12".&lt;br /&gt; #*Lembre-se de configurar TYPE_SKILL como "c/ Armas" para as&lt;br /&gt; #magias que forem configuradas aqui.&lt;br /&gt; WEAPON_SKILLTYPE = {&lt;br /&gt; 60=&amp;gt;0,&lt;br /&gt; 61=&amp;gt;0,&lt;br /&gt; 63=&amp;gt;1,&lt;br /&gt; 64=&amp;gt;1,&lt;br /&gt; 70=&amp;gt;0,&lt;br /&gt; 72=&amp;gt;0,&lt;br /&gt; 73=&amp;gt;2,&lt;br /&gt; 74=&amp;gt;2,&lt;br /&gt; 75=&amp;gt;2,&lt;br /&gt; 76=&amp;gt;2&lt;br /&gt; }           &lt;br /&gt; #--------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;#================================================================&lt;br /&gt;#                     Fim da Configuração&lt;br /&gt;#          NÃO Altere nada apartir daqui se não souber&lt;br /&gt;#================================================================&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==========================================================================&lt;br /&gt;# Game_Actor(Modificação)&lt;br /&gt;#----------------------------------------------------------------&lt;br /&gt;# Modificações na classe Game_Actor para adicionar o Sistema de Skill Tree.&lt;br /&gt;#==========================================================================&lt;br /&gt;&lt;br /&gt;class Game_Actor &amp;lt; Game_Battler&lt;br /&gt; &lt;br /&gt;  attr_reader     :ini_skillpoint&lt;br /&gt; &lt;br /&gt; #------------------------------------------------------&lt;br /&gt; #Acrescentando informações no metodo de setup da classe&lt;br /&gt; #------------------------------------------------------&lt;br /&gt; &lt;br /&gt; alias zc_skillpoints_setup setup&lt;br /&gt; def setup(actor_id)&lt;br /&gt;  zc_skillpoints_setup(actor_id)&lt;br /&gt;  @add_atributes = []&lt;br /&gt;  @actor_id = actor_id&lt;br /&gt;  @gain_skillpoint_levelup = ZC_SKP::SKP_EXP[actor_id]&lt;br /&gt;  @ini_skillpoint = ZC_SKP::INI_SKP[actor_id]&lt;br /&gt;  @max_skill_level = []&lt;br /&gt;  @max_skill_level = ZC_SKP::MAX_SKILL_LV[actor_id].dup if ZC_SKP::MAX_SKILL_LV[actor_id] != nil&lt;br /&gt;  @ini_skill_level = []&lt;br /&gt;  @ini_skill_level = ZC_SKP::INI_SKILL_LV[actor_id].dup if ZC_SKP::INI_SKILL_LV[actor_id] != nil&lt;br /&gt;  @skill_level = @ini_skill_level.dup if @skill_level == nil&lt;br /&gt;  @verify_ini_skl_lv = @ini_skill_level.dup if @verify_ini_skl_lv == nil&lt;br /&gt;  @atr_skl_levelup = {}&lt;br /&gt;  @atr_skl_levelup = ZC_SKP::ATRIBUTE_SKILLS[actor_id].dup if ZC_SKP::ATRIBUTE_SKILLS[actor_id] != nil&lt;br /&gt;  if @ini_skillpoint != nil&lt;br /&gt;   @base_skp = @ini_skillpoint&lt;br /&gt;  else&lt;br /&gt;   @base_skp = 0&lt;br /&gt;  end&lt;br /&gt;  @skp = @base_skp&lt;br /&gt;  if @gain_skillpoint_levelup != nil&lt;br /&gt;   skpx = (@gain_skillpoint_levelup * @level) - @gain_skillpoint_levelup&lt;br /&gt;  else&lt;br /&gt;   @gain_skillpoint_levelup = 1&lt;br /&gt;  end&lt;br /&gt;  @skp = @base_skp&lt;br /&gt;  for i in 1..$data_skills.size&lt;br /&gt;   skill_atributes(i)&lt;br /&gt;  end&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; #----------------------------------------------&lt;br /&gt; #Operadores de SKILL :Somar/Subtrair/Subtituir&lt;br /&gt; #----------------------------------------------&lt;br /&gt; #Para somar um level à skill apenas colque o&lt;br /&gt; #valor a ser somado no argumento value, para&lt;br /&gt; #subtrair coloque o valor negativo e para&lt;br /&gt; #redefinir coloque o novo valor em value e use&lt;br /&gt; #true no argumento substituir.&lt;br /&gt; &lt;br /&gt; def skill_operator(id_skill, value, substituir=false)&lt;br /&gt;  if @skill_level[id_skill] == nil ; @skill_level[id_skill] = 0 end&lt;br /&gt;  if substituir ; @skill_level[id_skill] = value else @skill_level[id_skill] += value end&lt;br /&gt;  skill_atributes(id_skill)&lt;br /&gt; end&lt;br /&gt;   &lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Retorna o level da habilidade&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; def skill_level(id_skill)&lt;br /&gt;   @skill_level = [] if @skill_level == nil&lt;br /&gt;   if @skill_level[id_skill] != nil ; return @skill_level[id_skill] else @skill_level[id_skill] = 0 end&lt;br /&gt; end &lt;br /&gt;&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Retorna o level inicial da habilidade&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; def ini_skill_level(id_skill)&lt;br /&gt;   @ini_skill_level = [] if @ini_skill_level == nil&lt;br /&gt;   if @ini_skill_level[id_skill] != nil ; return @ini_skill_level[id_skill] else @ini_skill_level[id_skill] = 0 end&lt;br /&gt; end&lt;br /&gt;   &lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Retorna o level máximo da habilidade&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; def max_skill_level(id_skill)&lt;br /&gt;   @max_skill_level = [] if @max_skill_level == nil&lt;br /&gt;   if @max_skill_level[id_skill] != nil ; return @max_skill_level[id_skill] else @max_skill_level[id_skill] = 0 end&lt;br /&gt; end&lt;br /&gt;   &lt;br /&gt; #--------------------------------------------&lt;br /&gt; #Operadores de SKP :Somar/Subtrair/Subtituir&lt;br /&gt; #--------------------------------------------&lt;br /&gt; #Para somar um level à skill apenas colque o&lt;br /&gt; #valor a ser somado no argumento skp, para&lt;br /&gt; #subtrair coloque o valor negativo e para&lt;br /&gt; #redefinir coloque o novo valor em skp e use&lt;br /&gt; #true no argumento substituir.&lt;br /&gt; &lt;br /&gt; def skp_operator(skp, substituir=false)&lt;br /&gt;   if substituir ; @skp = skp else @skp += skp end&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Calculo da SKP ganha por level(configure o total de pontos&lt;br /&gt; #por level nas configurações)&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt;&lt;br /&gt; def skp&lt;br /&gt;  if @gain_skillpoint_levelup != nil and @level &amp;gt; 1 &lt;br /&gt;   cal =  @gain_skillpoint_levelup * @level&lt;br /&gt;   return @skp + cal - @gain_skillpoint_levelup&lt;br /&gt;  else&lt;br /&gt;   return @skp&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Calculo dos atributos acrescentados por level às skills&lt;br /&gt; #(configure o total de pontos por level nas configurações)&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; def skill_atributes(id_skill)&lt;br /&gt;  @atr_skl_levelup = {} if  @atr_skl_levelup == nil&lt;br /&gt;  @atr_skl_levelup[id_skill] = [] if @atr_skl_levelup[id_skill] == nil&lt;br /&gt;  for i in 0..11&lt;br /&gt;    @add_atributes[i] = 0 if @add_atributes[i] == nil&lt;br /&gt;    @atr_skl_levelup[id_skill][i] = 0 if @atr_skl_levelup[id_skill][i] == nil&lt;br /&gt;  end &lt;br /&gt;  if @atr_skl_levelup != nil and skill_level(id_skill) &amp;gt; 1&lt;br /&gt;    for i in 0..11&lt;br /&gt;      atributes_calc(id_skill, i)&lt;br /&gt;    end &lt;br /&gt;  end&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Operadores de Atributosdas Skills :Somar/Subtrair/Subtituir&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #id_skill = ID da Habilidade a ser operada&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #atr = Atributo a ser alterado, os atributos são:&lt;br /&gt; #0 = sp_cost = Custo de SP&lt;br /&gt; #1 = power = Poder&lt;br /&gt; #2 = atk_f = Força F&lt;br /&gt; #3 = eva_f = Fuga F&lt;br /&gt; #4 = str_f = Ataque F&lt;br /&gt; #5 = dex_f = Defesa F&lt;br /&gt; #6 = agi_f = Agilidade F&lt;br /&gt; #7 = int_f = Inteligência F&lt;br /&gt; #8 = hit = % de Acerto&lt;br /&gt; #9 = mdef_f = Defesa Mag.&lt;br /&gt; #10 = pdef_f = Defesa Fís.&lt;br /&gt; #11 = variance = Grau de Dist.&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Para somar apenas colque o valor a ser somado no argumento&lt;br /&gt; #value, para subtrair coloque o valor negativo e para&lt;br /&gt; #redefinir coloque o novo valor em value e use true no&lt;br /&gt; #argumento substituir.&lt;br /&gt; &lt;br /&gt; def add_atr_skill(id_skill, atr, value, substituir=false)&lt;br /&gt;  if substituir ; @add_atributes[atr] = value else @add_atributes[atr] += value end&lt;br /&gt;  skill_atributes(id_skill)&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt;#-----------------------------------------------------------&lt;br /&gt; #Metodo de verificação e operação de porcentagem&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; #Este metodo serve para verificar se o valor do atributo&lt;br /&gt; #definido em ATRIBUTE_SKILLS é um valor em porcentagem, que&lt;br /&gt; #na configuração deve ser definido como dado do tipo string,&lt;br /&gt; #portanto é necessário a verificação e em seguida o calculo&lt;br /&gt; #porcentagem.&lt;br /&gt; &lt;br /&gt; def atributes_calc(id_skill, atr)&lt;br /&gt;   if @atr_skl_levelup[id_skill][atr] =~ "%"&lt;br /&gt;     @atr_skl_levelup[id_skill][atr].gsub!(/%/i) {""}&lt;br /&gt;     if skill_level(id_skill) == @verify_ini_skl_lv[id_skill]&lt;br /&gt;       @ini_skill_level[id_skill].times do&lt;br /&gt;       case atr&lt;br /&gt;       when 0&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].sp_cost += (($game_skills_zc[@actor_id][id_skill].sp_cost * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 1&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].power += (($game_skills_zc[@actor_id][id_skill].power * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 2&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].atk_f += (($game_skills_zc[@actor_id][id_skill].atk_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 3&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].eva_f += (($game_skills_zc[@actor_id][id_skill].eva_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 4&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].str_f += (($game_skills_zc[@actor_id][id_skill].str_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 5&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].dex_f += (($game_skills_zc[@actor_id][id_skill].dex_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 6&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].agi_f += (($game_skills_zc[@actor_id][id_skill].agi_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 7&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].int_f += (($game_skills_zc[@actor_id][id_skill].int_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 8&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].hit += (($game_skills_zc[@actor_id][id_skill].hit * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 9&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].mdef_f += (($game_skills_zc[@actor_id][id_skill].mdef_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 10&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].pdef_f += (($game_skills_zc[@actor_id][id_skill].pdef_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 11&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].variance += (($game_skills_zc[@actor_id][id_skill].variance * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       end &lt;br /&gt;       end&lt;br /&gt;       @verify_ini_skl_lv[id_skill] = 0&lt;br /&gt;       @atr_skl_levelup[id_skill][atr] = $` + "%"&lt;br /&gt;     else&lt;br /&gt;       case atr&lt;br /&gt;       when 0&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].sp_cost += (($game_skills_zc[@actor_id][id_skill].sp_cost * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 1&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].power += (($game_skills_zc[@actor_id][id_skill].power * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 2&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].atk_f += (($game_skills_zc[@actor_id][id_skill].atk_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 3&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].eva_f += (($game_skills_zc[@actor_id][id_skill].eva_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 4&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].str_f += (($game_skills_zc[@actor_id][id_skill].str_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 5&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].dex_f += (($game_skills_zc[@actor_id][id_skill].dex_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 6&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].agi_f += (($game_skills_zc[@actor_id][id_skill].agi_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 7&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].int_f += (($game_skills_zc[@actor_id][id_skill].int_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 8&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].hit += (($game_skills_zc[@actor_id][id_skill].hit * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 9&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].mdef_f += (($game_skills_zc[@actor_id][id_skill].mdef_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 10&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].pdef_f += (($game_skills_zc[@actor_id][id_skill].pdef_f * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       when 11&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].variance += (($game_skills_zc[@actor_id][id_skill].variance * @atr_skl_levelup[id_skill][atr].to_f) / 100).to_i + @add_atributes[atr]&lt;br /&gt;       end&lt;br /&gt;       @atr_skl_levelup[id_skill][atr] = $` + "%"&lt;br /&gt;     end&lt;br /&gt;   else&lt;br /&gt;     case atr&lt;br /&gt;       when 0&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].sp_cost = $data_skills[id_skill].sp_cost + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 1&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].power = $data_skills[id_skill].power + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 2&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].atk_f = $data_skills[id_skill].atk_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 3&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].eva_f = $data_skills[id_skill].eva_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 4&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].str_f = $data_skills[id_skill].str_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 5&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].dex_f = $data_skills[id_skill].dex_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 6&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].agi_f = $data_skills[id_skill].agi_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 7&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].int_f = $data_skills[id_skill].int_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 8&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].hit = $data_skills[id_skill].hit + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 9&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].mdef_f = $data_skills[id_skill].mdef_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 10&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].pdef_f = $data_skills[id_skill].pdef_f + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       when 11&lt;br /&gt;       $game_skills_zc[@actor_id][id_skill].variance = $data_skills[id_skill].variance + @atr_skl_levelup[id_skill][atr] * (skill_level(id_skill) - 1) + @add_atributes[atr]&lt;br /&gt;       end&lt;br /&gt;   end&lt;br /&gt; end &lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Game_Battler(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Game_Battler para adicionar o Sistema de Skill Tree.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Game_Battler&lt;br /&gt; &lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; # Modificação em item_effect para adicionar efeito de itens&lt;br /&gt; # que dão SKP.&lt;br /&gt; #-----------------------------------------------------------&lt;br /&gt; &lt;br /&gt; alias zc_item_effect item_effect&lt;br /&gt; def item_effect(item)&lt;br /&gt;  if $game_temp.in_battle == false &lt;br /&gt;   item_skp_increase = ZC_SKP::ITEM_SKP_INCREASE[item.id]&lt;br /&gt;   if item_skp_increase != nil&lt;br /&gt;    self.skp_operator(item_skp_increase)&lt;br /&gt;    return true&lt;br /&gt;   end&lt;br /&gt;  end&lt;br /&gt;  zc_item_effect(item)&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_SkillTree&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Esta classe processa todo o menu de skilltree.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_SkillTree     &lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #&lt;br /&gt;  #     actor_index : Índice de Heróis&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(actor_index = 0, equip_index = 0)&lt;br /&gt;    if $game_party.actors.size &amp;gt;= actor_index&lt;br /&gt;     @actor_index = actor_index&lt;br /&gt;    else&lt;br /&gt;     @actor_index = 0&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Processamento Principal&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def main&lt;br /&gt;    s1 = ZC_SKP::NAME_SKILLTYPE[0]&lt;br /&gt;    s2 = ZC_SKP::NAME_SKILLTYPE[1]&lt;br /&gt;    s3 = ZC_SKP::NAME_SKILLTYPE[2]&lt;br /&gt;    ss1 = "Adicionar"&lt;br /&gt;    ss2 = "Cancelar"&lt;br /&gt;    # Selecionar Herói&lt;br /&gt;    @actor = $game_party.actors[@actor_index]&lt;br /&gt;    # Criar janelas&lt;br /&gt;    @skill_descripition = Window_SkillDescription.new()&lt;br /&gt;    @skill_descripition.visible = false&lt;br /&gt;    @skill_window = Window_Skilltree.new(@actor)&lt;br /&gt;    @skill_window.active = false&lt;br /&gt;    @command_window = Window_Command.new(160,[s1, s2, s3])&lt;br /&gt;    @command_window.x = 480&lt;br /&gt;    @command_window.y = 352&lt;br /&gt;    @skillpoints_window = Window_SkillPoints.new(@actor_index)&lt;br /&gt;    @skilltype_text = Window_Types.new&lt;br /&gt;    @skillchar = Window_SkillOf.new(@actor_index, ZC_SKP::NAME_SKILLTREE)&lt;br /&gt;    @skill_info = Window_SkillInfo.new(@actor)&lt;br /&gt;    @skill_decision = Window_Command.new(160,[ss1, ss2])&lt;br /&gt;    @skill_decision.active = false&lt;br /&gt;    @skill_decision.x = 180&lt;br /&gt;    @skill_decision.y = 240&lt;br /&gt;    @skill_decision.index = -1&lt;br /&gt;    @skill_decision.visible = false&lt;br /&gt;    # Executar transição&lt;br /&gt;    Graphics.transition&lt;br /&gt;    # Loop Principal&lt;br /&gt;    loop do&lt;br /&gt;      # Atualizar tela de Jogo&lt;br /&gt;      Graphics.update&lt;br /&gt;      # Atualizar a entrada de informações&lt;br /&gt;      Input.update&lt;br /&gt;      # Atualizar frame&lt;br /&gt;      update&lt;br /&gt;      # Abortoar loop se a tela for alterada&lt;br /&gt;      if $scene != self&lt;br /&gt;        break&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Preparar para transição&lt;br /&gt;    Graphics.freeze&lt;br /&gt;    # Exibição das janelas&lt;br /&gt;    @skill_descripition.dispose&lt;br /&gt;    @command_window.dispose&lt;br /&gt;    @skill_window.dispose&lt;br /&gt;    @skillpoints_window.dispose&lt;br /&gt;    @skilltype_text.dispose&lt;br /&gt;    @skillchar.dispose&lt;br /&gt;    @skill_info.dispose&lt;br /&gt;    @skill_decision.dispose&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização do Frame&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update&lt;br /&gt;    # Atualizar janelas&lt;br /&gt;    @skillpoints_window.update&lt;br /&gt;    @skillpoints_window.refresh&lt;br /&gt;    @skill_decision.update&lt;br /&gt;    @skill_descripition.update&lt;br /&gt;    # Se pressionado trocar para Scene_Skill.&lt;br /&gt;    if Input.trigger?(Input::A) and @command_window.active&lt;br /&gt;      # Reproduzir SE de cancelamento&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Alternar para a tela de Menu&lt;br /&gt;      $scene = Scene_Skill.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão R for pressionado&lt;br /&gt;    if Input.trigger?(Input::R) and @command_window.active&lt;br /&gt;      # Reproduzir SE de cursor&lt;br /&gt;      $game_system.se_play($data_system.cursor_se)&lt;br /&gt;      # O comando leva ao próximo Herói&lt;br /&gt;      @actor_index += 1&lt;br /&gt;      @actor_index %= $game_party.actors.size&lt;br /&gt;      # Alternar o personagem&lt;br /&gt;      $scene = Scene_SkillTree.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão L for pressionado&lt;br /&gt;    if Input.trigger?(Input::L) and @command_window.active&lt;br /&gt;      # Reproduzir SE de cursor&lt;br /&gt;      $game_system.se_play($data_system.cursor_se)&lt;br /&gt;      # O comando leva ao Herói anterior&lt;br /&gt;      @actor_index += $game_party.actors.size - 1&lt;br /&gt;      @actor_index %= $game_party.actors.size&lt;br /&gt;      # Alternar o personagem&lt;br /&gt;      $scene = Scene_SkillTree.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Atualizar janelas&lt;br /&gt;    @skill_window.update&lt;br /&gt;    @command_window.update&lt;br /&gt;    @skilltype_text.refresh(@command_window.index)&lt;br /&gt;    @skill_window.refresh(@command_window.index)&lt;br /&gt;    @skill_info.refresh(@skill_window.skill, true) if @skill_window.active&lt;br /&gt;    @skill_info.refresh(0) unless @skill_window.active&lt;br /&gt;    @skill_info.refresh(@skill_window.skill, true) if @skill_descripition.visible == true&lt;br /&gt;    if @skill_descripition.visible&lt;br /&gt;      if ZC_SKP::MORE_INFO_KEY != nil&lt;br /&gt;        if Input.trigger?(ZC_SKP::MORE_INFO_KEY)&lt;br /&gt;          @skill_descripition.visible = false&lt;br /&gt;          @skill_window.active = true&lt;br /&gt;          @skill_window.visible = true&lt;br /&gt;          return&lt;br /&gt;        end&lt;br /&gt;      end &lt;br /&gt;      # Se pressionar sair da janela de descrição&lt;br /&gt;      if Input.trigger?(Input::B)&lt;br /&gt;       @skill_descripition.visible = false&lt;br /&gt;       @skill_window.active = true&lt;br /&gt;       @skill_window.visible = true&lt;br /&gt;       return&lt;br /&gt;      end&lt;br /&gt;    elsif @skill_decision.active&lt;br /&gt;      # Se pressionar sair da janela de decisão&lt;br /&gt;      if Input.trigger?(Input::B)&lt;br /&gt;       # Reproduzir SE de cancelamento&lt;br /&gt;       $game_system.se_play($data_system.cancel_se)&lt;br /&gt;       @skill_decision.active = false&lt;br /&gt;       @skill_decision.visible = false&lt;br /&gt;       @skill_window.active = true&lt;br /&gt;       @skill_window.visible = true&lt;br /&gt;       return&lt;br /&gt;      end&lt;br /&gt;      # Se pressionar verificar condições antes de evoluir o level da skill&lt;br /&gt;      if Input.trigger?(Input::C)&lt;br /&gt;        case @skill_decision.index&lt;br /&gt;        when 0&lt;br /&gt;        if $game_party.actors[@actor_index].skp &amp;gt; 0&lt;br /&gt;         verify_skill_condition = 0&lt;br /&gt;         condition = ZC_SKP::CONDITION_SKILL.dup&lt;br /&gt;         condition[@actor.id] = {} if condition[@actor.id] == nil&lt;br /&gt;         for i in 1..$game_skills_zc[@actor.id].size&lt;br /&gt;           condition[@actor.id][@skill_window.skill.id] = {} if condition[@actor.id][@skill_window.skill.id] == nil&lt;br /&gt;           condition[@actor.id][@skill_window.skill.id][i] = 0 if condition[@actor.id][@skill_window.skill.id][i] == nil&lt;br /&gt;           if $game_party.actors[@actor_index].skill_level(i) &amp;gt;= condition[@actor.id][@skill_window.skill.id][i]&lt;br /&gt;             verify_skill_condition += 1&lt;br /&gt;           end&lt;br /&gt;         end&lt;br /&gt;         max_level = ZC_SKP::MAX_SKILL_LV.dup&lt;br /&gt;         max_level[@actor.id] = {} if max_level[@actor.id] == nil&lt;br /&gt;         max_level[@actor.id][@skill_window.skill.id] = 10 if max_level[@actor.id][@skill_window.skill.id] == nil&lt;br /&gt;         if verify_skill_condition == $game_skills_zc[@actor.id].size and $game_party.actors[@actor_index].skill_level(@skill_window.skill.id) &amp;lt;  max_level[@actor.id][@skill_window.skill.id]&lt;br /&gt;          # Reproduzir SE de confirmação&lt;br /&gt;          $game_system.se_play($data_system.decision_se)&lt;br /&gt;          #Retirar um ponto de SKP e adicionar o level à magia&lt;br /&gt;          $game_party.actors[@actor_index].skill_operator(@skill_window.skill.id, 1)&lt;br /&gt;          $game_party.actors[@actor_index].skp_operator(-1)&lt;br /&gt;          @skill_decision.active = false&lt;br /&gt;          @skill_decision.visible = false&lt;br /&gt;          @skill_window.active = true&lt;br /&gt;          @skill_window.visible = true&lt;br /&gt;          return&lt;br /&gt;         else&lt;br /&gt;          #Se as condições não forem satisfeitas para a skill&lt;br /&gt;          # Reproduzir SE de error&lt;br /&gt;          $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;         end&lt;br /&gt;        else&lt;br /&gt;         # Reproduzir SE de error&lt;br /&gt;         $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        end&lt;br /&gt;        when 1&lt;br /&gt;        # Reproduzir SE de cancelamento&lt;br /&gt;        $game_system.se_play($data_system.cancel_se)&lt;br /&gt;        @skill_decision.active = false&lt;br /&gt;        @skill_decision.visible = false&lt;br /&gt;        @skill_window.active = true&lt;br /&gt;        @skill_window.visible = true&lt;br /&gt;        return &lt;br /&gt;        end&lt;br /&gt;      end &lt;br /&gt;    elsif @skill_window.active&lt;br /&gt;      if Input.trigger?(Input::B)&lt;br /&gt;       # Reproduzir SE de cancelamento&lt;br /&gt;       $game_system.se_play($data_system.cancel_se)&lt;br /&gt;       @command_window.active = true&lt;br /&gt;       @skill_window.active = false&lt;br /&gt;       @command_window.index = @command_window.index&lt;br /&gt;       return&lt;br /&gt;      end&lt;br /&gt;      if Input.trigger?(Input::C)&lt;br /&gt;        # Reproduzir SE de confirmação&lt;br /&gt;        $game_system.se_play($data_system.decision_se)&lt;br /&gt;        @skill_decision.active = true&lt;br /&gt;        @skill_decision.visible = true&lt;br /&gt;        @skill_decision.index = 0&lt;br /&gt;        @skill_window.active = false&lt;br /&gt;        @skill_window.visible = false&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;      if ZC_SKP::MORE_INFO_KEY != nil&lt;br /&gt;        if Input.trigger?(ZC_SKP::MORE_INFO_KEY)&lt;br /&gt;          @skill_descripition.refresh(@skill_window.skill.id, @actor.id)       &lt;br /&gt;          @skill_descripition.visible = true&lt;br /&gt;          @skill_window.active = false&lt;br /&gt;          @skill_window.visible = false&lt;br /&gt;          return&lt;br /&gt;        end&lt;br /&gt;      end &lt;br /&gt;    elsif @command_window.active&lt;br /&gt;      if Input.trigger?(Input::B)&lt;br /&gt;       # Reproduzir SE de cancelamento&lt;br /&gt;       $game_system.se_play($data_system.cancel_se)&lt;br /&gt;       # Alternar para a tela do menu&lt;br /&gt;       $scene = Scene_Menu.new(1)&lt;br /&gt;       return&lt;br /&gt;      end&lt;br /&gt;      if Input.trigger?(Input::C)&lt;br /&gt;       temp_index = @skill_window.index&lt;br /&gt;       cont = 0&lt;br /&gt;       for i in 0...@actor.skills.size&lt;br /&gt;        if ZC_SKP::TYPE_SKILL[@actor.skills[i]] == @command_window.index&lt;br /&gt;          cont += 1&lt;br /&gt;        end&lt;br /&gt;       end&lt;br /&gt;       if cont == 0 or cont == nil&lt;br /&gt;        # Reproduzir SE de erro&lt;br /&gt;        $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        return&lt;br /&gt;       end&lt;br /&gt;       # Reproduzir SE de confirmação&lt;br /&gt;       $game_system.se_play($data_system.decision_se)&lt;br /&gt;       cont -= 1&lt;br /&gt;       @skill_window.index = 0&lt;br /&gt;       if temp_index &amp;gt; cont&lt;br /&gt;        @skill_window.index = cont       &lt;br /&gt;       else&lt;br /&gt;        @skill_window.index = temp_index&lt;br /&gt;       end&lt;br /&gt;       @command_window.active = false&lt;br /&gt;       @skill_window.active = true&lt;br /&gt;      end     &lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_SkillPoints&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Janela que mostra quantos skill points(skp) o personagem tem para distribuir.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_SkillPoints &amp;lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(actor_index)&lt;br /&gt;    super(480, 0, 160, 136)&lt;br /&gt;    @actor = $game_party.actors[actor_index]&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = 24&lt;br /&gt;    refresh&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh&lt;br /&gt;    self.contents.clear&lt;br /&gt;    self.contents.font.color = normal_color&lt;br /&gt;    self.contents.font.size = 24&lt;br /&gt;    self.contents.draw_text(4, 14, 120, 32, ZC_SKP::SKP_NAME, 1)&lt;br /&gt;    self.contents.font.color = system_color&lt;br /&gt;    self.contents.font.size = 22&lt;br /&gt;    self.contents.draw_text(4, 54, 120, 26, @actor.skp.to_s, 1)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_SkillDescription&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Janela que mostra a descrição da skill.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_SkillDescription &amp;lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize()&lt;br /&gt;    super(0, 136, 480, 344)&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = 20&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #-------------------------------------------------------------------------- &lt;br /&gt; &lt;br /&gt;  def refresh(skill_id=1, actor_id=1)&lt;br /&gt;    @i = []&lt;br /&gt;    skls = $game_skills_zc[actor_id]&lt;br /&gt;    actor = $game_actors[actor_id]&lt;br /&gt;    if ZC_SKP::ATRIBUTE_SKILLS[actor_id][skill_id] != nil&lt;br /&gt;      atr = ZC_SKP::ATRIBUTE_SKILLS[actor_id][skill_id].dup&lt;br /&gt;    else&lt;br /&gt;      atr = []&lt;br /&gt;      for i in 0..11&lt;br /&gt;        atr[i] = 0&lt;br /&gt;      end&lt;br /&gt;    end &lt;br /&gt;    aw = ZC_SKP::ATR_WORDS&lt;br /&gt;    condt = ZC_SKP::CONDITION_SKILL&lt;br /&gt;    condt[actor_id] = {} if condt[actor_id] == nil&lt;br /&gt;    for i in 1..$game_skills_zc[@actor.id].size&lt;br /&gt;      condt[actor_id][skill_id] = {} if condt[actor_id][skill_id] == nil&lt;br /&gt;      condt[actor_id][skill_id][i] = 0 if condt[actor_id][skill_id][i] == nil&lt;br /&gt;    end&lt;br /&gt;    skill_desc1 = &amp;lt;&amp;lt;DESC&lt;br /&gt;Atributos por Level&lt;br /&gt;         &lt;br /&gt;#{aw["SP"]} #{atr[0]}\n#{aw["PWR"]} #{atr[1]}\n#{aw["ATK"]} #{atr[2]}&lt;br /&gt;#{aw["EVA"]} #{atr[3]}\n#{aw["STR"]} #{atr[4]}\n#{aw["DEX"]} #{atr[5]}&lt;br /&gt;#{aw["AGI"]} #{atr[6]}\n#{aw["INT"]} #{atr[7]}\n#{aw["HIT"]} #{atr[8]}&lt;br /&gt;#{aw["PDEF"]} #{atr[9]}\n#{aw["MDEF"]} #{atr[10]}\n#{aw["VAR"]} #{atr[11]}&lt;br /&gt;&lt;br /&gt;Necessita&lt;br /&gt;&lt;br /&gt;DESC&lt;br /&gt;    skill_desc2 = []&lt;br /&gt;    index = 0&lt;br /&gt;    for i in 1...condt[actor_id][skill_id].size&lt;br /&gt;      if i != nil and condt[actor_id][skill_id][i] != 0&lt;br /&gt;        skill_desc2[index] = "#{skls[i].name} Lv#{condt[actor_id][skill_id][i]}"&lt;br /&gt;        @i[index] = i&lt;br /&gt;        index += 1&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    string1 = skill_desc1.split("\n")&lt;br /&gt;    string2 = skill_desc2&lt;br /&gt;    self.contents.clear&lt;br /&gt;    self.contents.font.color = normal_color&lt;br /&gt;    for i in 0...string1.size&lt;br /&gt;      if i == 0 or i == 15 ; align = 1 else align = 0 end&lt;br /&gt;      if i == 0 or i == 1 &lt;br /&gt;        self.contents.draw_text(4, (i * 20), 448, 20, string1[i], align)&lt;br /&gt;      end&lt;br /&gt;      if i &amp;gt;= 2 and i &amp;lt; 14&lt;br /&gt;        x = 4 + ((i - 2) * 154) -  (((i - 2) / 3).to_i) * 462&lt;br /&gt;        y = (2 + ((i - 2 )/ 3).to_i) * 20&lt;br /&gt;        self.contents.draw_text(x, y, 150, 20, string1[i], align)&lt;br /&gt;      end&lt;br /&gt;      if i &amp;gt;= 14&lt;br /&gt;        self.contents.draw_text(4, (i / 2) * 20, 448, 20, string1[i], align)&lt;br /&gt;      end &lt;br /&gt;    end&lt;br /&gt;    i = 9&lt;br /&gt;    for j in 0...string2.size&lt;br /&gt;      if actor.skill_level(@i[j]) &amp;gt;= condt[actor_id][skill_id][@i[j]]&lt;br /&gt;        self.contents.font.color = normal_color&lt;br /&gt;      else&lt;br /&gt;        self.contents.font.color = disabled_color&lt;br /&gt;      end&lt;br /&gt;      self.contents.draw_text(4 + ((j / 6).to_i) * 154, (i - ((j / 6).to_i * 6)) * 20, 150, 20, string2[j])&lt;br /&gt;      i += 1&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_Types&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Descreve o tipo de magias que estão na opção onde o indice se encontra.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_Types &amp;lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize&lt;br /&gt;    super(480, 136, 160, 216)&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = 22&lt;br /&gt;    @text = []&lt;br /&gt;    refresh&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh(index = 0)&lt;br /&gt;    case index&lt;br /&gt;    when 0&lt;br /&gt;      @text[0] = ZC_SKP::NAME_SKILLTYPE[0]&lt;br /&gt;      self.contents.font.size = 14&lt;br /&gt;      @text[1] = "são magias"&lt;br /&gt;      self.contents.font.size = 22&lt;br /&gt;      @text[2] = "usadas para suporte"&lt;br /&gt;    when 1&lt;br /&gt;      @text[0] = ZC_SKP::NAME_SKILLTYPE[1]&lt;br /&gt;      @text[1] = "são habilidades"&lt;br /&gt;      @text[2] = "usadas para ataque"&lt;br /&gt;    when 2&lt;br /&gt;      @text[0] = ZC_SKP::NAME_SKILLTYPE[2]&lt;br /&gt;      self.contents.font.size = 14&lt;br /&gt;      @text[1] = "são técnicas"&lt;br /&gt;      self.contents.font.size = 22&lt;br /&gt;      @text[2] = "usadas com armas"&lt;br /&gt;    end&lt;br /&gt;    self.contents.clear&lt;br /&gt;    self.contents.font.color = normal_color&lt;br /&gt;    self.contents.draw_text(4, 18, 120, 32, @text[0], 1)&lt;br /&gt;    self.contents.draw_text(4, 64, 120, 32, @text[1], 1)&lt;br /&gt;    self.contents.draw_text(4, 106, 120, 32, @text[2], 1)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_Skilltree&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Janela de escolha de habilidades&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_Skilltree &amp;lt; Window_Selectable&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(actor)&lt;br /&gt;    super(0, 136, 480, 344)&lt;br /&gt;    @actor = actor&lt;br /&gt;    @column_max = 4&lt;br /&gt;    refresh(0)&lt;br /&gt;    self.index = 0&lt;br /&gt;    # Se for em batalha, mover a janela e colocá-la em translucidez&lt;br /&gt;    if $game_temp.in_battle&lt;br /&gt;      self.y = 64&lt;br /&gt;      self.height = 256&lt;br /&gt;      self.back_opacity = 160&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Uso de Habilidades&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def skill&lt;br /&gt;    return @data[self.index]&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh(skill_type)&lt;br /&gt;    if self.contents != nil&lt;br /&gt;      self.contents.dispose&lt;br /&gt;      self.contents = nil&lt;br /&gt;    end&lt;br /&gt;    @data = []&lt;br /&gt;    for i in 0...@actor.skills.size&lt;br /&gt;      if ZC_SKP::TYPE_SKILL[@actor.skills[i]] == nil&lt;br /&gt;        ZC_SKP::TYPE_SKILL[@actor.skills[i]] = 1&lt;br /&gt;      end &lt;br /&gt;      skill = $game_skills_zc[@actor.id][@actor.skills[i]]&lt;br /&gt;      if skill != nil&lt;br /&gt;        @data.push(skill) if ZC_SKP::TYPE_SKILL[@actor.skills[i]] == skill_type&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Número de Itens. Se não for 0 desenhá-los.&lt;br /&gt;    @item_max = @data.size&lt;br /&gt;    if @item_max &amp;gt; 0&lt;br /&gt;      self.contents = Bitmap.new(width - 32, row_max * 32)&lt;br /&gt;          self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = $fontsize&lt;br /&gt;      for i in 0...@item_max&lt;br /&gt;        draw_item(i)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Desenhando Itens&lt;br /&gt;  #&lt;br /&gt;  #     index : Número de Itens&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def draw_item(index)&lt;br /&gt;    skill = @data[index]&lt;br /&gt;    if $game_actors[@actor.id].skill_level(skill.id) &amp;gt; 0&lt;br /&gt;      self.contents.font.color = normal_color&lt;br /&gt;    else&lt;br /&gt;      self.contents.font.color = disabled_color&lt;br /&gt;    end&lt;br /&gt;    x = 4 + index % 4 * 120&lt;br /&gt;    y = index / 4 * 32&lt;br /&gt;    rect = Rect.new(x, y, self.width / @column_max - 32, 32)&lt;br /&gt;    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))&lt;br /&gt;    bitmap = RPG::Cache.icon(skill.icon_name)&lt;br /&gt;    opacity = self.contents.font.color == normal_color ? 255 : 128&lt;br /&gt;    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)&lt;br /&gt;    self.contents.draw_text(x + 36, y, 204, 32, "Lv" + $game_actors[@actor.id].skill_level(skill.id).to_s, 0)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_SkillInfo&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Janela que contem algumas informações sobre a magia(skill).&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_SkillInfo &amp;lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(actor)&lt;br /&gt;    super(0, 56, 480, 80)&lt;br /&gt;    key = ZC_SKP::MORE_INFO_KEY&lt;br /&gt;    case key&lt;br /&gt;    when Input::X&lt;br /&gt;    @str_key = "X"&lt;br /&gt;    when Input::A&lt;br /&gt;    @str_key = "A"&lt;br /&gt;    when Input::B&lt;br /&gt;    @str_key = "B"&lt;br /&gt;    when Input::C&lt;br /&gt;    @str_key = "C"&lt;br /&gt;    when Input::Y&lt;br /&gt;    @str_key = "Y"&lt;br /&gt;    when Input::Z&lt;br /&gt;    @str_key = "Z"&lt;br /&gt;    when Input::L&lt;br /&gt;    @str_key = "L"&lt;br /&gt;    when Input::R&lt;br /&gt;    @str_key = "R"&lt;br /&gt;    when nil&lt;br /&gt;    @str_key = "" &lt;br /&gt;    end&lt;br /&gt;    @actor = actor&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = 22&lt;br /&gt;    refresh(0)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh(magic, active=false)&lt;br /&gt;    self.contents.clear&lt;br /&gt;    if active == true&lt;br /&gt;      self.contents.font.size = 14&lt;br /&gt;      if @str_key != ""&lt;br /&gt;        y = 0&lt;br /&gt;        self.contents.draw_text(-8, 24, 480, 32, "pressione #{@str_key} para mais informações", 1)&lt;br /&gt;      else&lt;br /&gt;        y = 8&lt;br /&gt;      end&lt;br /&gt;      self.contents.font.size = 22&lt;br /&gt;      self.contents.font.color = normal_color&lt;br /&gt;      string_lv = " Lv"  + $game_actors[@actor.id].skill_level(magic.id).to_s&lt;br /&gt;      self.contents.draw_text(4, y, 480, 32, magic.name.to_s + string_lv, 3)&lt;br /&gt;    end &lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_SkillOf&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Janela com nome e boneco do personagem selecionado na skilltree.&lt;br /&gt;#==============================================================================&lt;br /&gt; &lt;br /&gt;class Window_SkillOf &amp;lt; Window_Base&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Inicialização dos Objetos&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def initialize(character, name_skill_tree)&lt;br /&gt;    @name_skill_tree = name_skill_tree&lt;br /&gt;    @character = character&lt;br /&gt;    @character_name = $game_party.actors[@character].name&lt;br /&gt;    super(0, 0, 480, 56)&lt;br /&gt;    self.contents = Bitmap.new(width - 32, height - 32)&lt;br /&gt;    self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = 22&lt;br /&gt;    refresh&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh&lt;br /&gt;    self.contents.clear&lt;br /&gt;    self.contents.font.color = normal_color&lt;br /&gt;    actor = $game_party.actors[@character]&lt;br /&gt;    draw_actor_graphic(actor, 12, 48)&lt;br /&gt;    self.contents.draw_text(26, 0, 480, 32, @character_name, 3)&lt;br /&gt;    self.contents.draw_text(4, 0, 420, 32, @name_skill_tree, 2)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Window_Skill(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Window_Skill para adicionar o Sistema de Skill Tree.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Window_Skill &amp;lt; Window_Selectable&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def refresh&lt;br /&gt;    if self.contents != nil&lt;br /&gt;      self.contents.dispose&lt;br /&gt;      self.contents = nil&lt;br /&gt;    end&lt;br /&gt;    @data = []&lt;br /&gt;    for i in 0...@actor.skills.size&lt;br /&gt;      skill = $game_skills_zc[@actor.id][@actor.skills[i]]&lt;br /&gt;      if skill != nil&lt;br /&gt;        @data.push(skill) if $game_actors[@actor.id].skill_level(skill.id) &amp;gt; 0&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Número de Itens. Se não for 0 desenhá-los.&lt;br /&gt;    @item_max = @data.size&lt;br /&gt;    if @item_max &amp;gt; 0&lt;br /&gt;      self.contents = Bitmap.new(width - 32, row_max * 32)&lt;br /&gt;          self.contents.font.name = $fontface&lt;br /&gt;    self.contents.font.size = $fontsize&lt;br /&gt;      for i in 0...@item_max&lt;br /&gt;        draw_item(i)&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Desenhando Itens&lt;br /&gt;  #&lt;br /&gt;  #     index : Número de Itens&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def draw_item(index)&lt;br /&gt;     skill = @data[index]&lt;br /&gt;    if @actor.skill_can_use?(skill.id)&lt;br /&gt;      self.contents.font.color = normal_color&lt;br /&gt;    else&lt;br /&gt;      self.contents.font.color = disabled_color&lt;br /&gt;    end&lt;br /&gt;    if ZC_SKP::TYPE_SKILL[skill.id] == 2&lt;br /&gt;      unless ZC_SKP::WEAPON_TYPE[@actor.weapon_id] == ZC_SKP::WEAPON_SKILLTYPE[skill.id]&lt;br /&gt;        self.contents.font.color = disabled_color&lt;br /&gt;      end &lt;br /&gt;    end&lt;br /&gt;    x = 4 + index % 2 * (288 + 32)&lt;br /&gt;    y = index / 2 * 32&lt;br /&gt;    rect = Rect.new(x, y, self.width / @column_max - 32, 32)&lt;br /&gt;    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))&lt;br /&gt;    bitmap = RPG::Cache.icon(skill.icon_name)&lt;br /&gt;    opacity = self.contents.font.color == normal_color ? 255 : 128&lt;br /&gt;    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)&lt;br /&gt;    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)&lt;br /&gt;    self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end &lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Skill(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Scene_Skill para adicionar o Sistema de Skill Tree.&lt;br /&gt;# *Possíveis erros de compatibilidades podem acontecer caso esteja usando outro&lt;br /&gt;# script de menu que modifique a Scene_Skill padrão, porem nada dificil de editar.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Skill&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização do Frame (Qunado a janela de Habilidades estiver ativa)&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update_skill&lt;br /&gt;    if Input.trigger?(Input::A)&lt;br /&gt;      # Reproduzir SE de confirmação&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Alternar para a tela de SkillTree&lt;br /&gt;      $scene = Scene_SkillTree.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão B for pressionado&lt;br /&gt;    if Input.trigger?(Input::B)&lt;br /&gt;      # Reproduzir SE de cancelamento&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Alternar para a tela de Menu&lt;br /&gt;      $scene = Scene_Menu.new(1)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão C for pressionado&lt;br /&gt;    if Input.trigger?(Input::C)&lt;br /&gt;      # Selecionar dados escolhidos na janela de Habilidades&lt;br /&gt;      @skill = @skill_window.skill&lt;br /&gt;      # Aqui é verificado se é possível utilizar a Habilidade&lt;br /&gt;      if @skill == nil or not @actor.skill_can_use?(@skill.id)&lt;br /&gt;        # Reproduzir SE de erro&lt;br /&gt;        $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;      unless $game_actors[@actor.id].skill_level(@skill.id) &amp;gt; 0&lt;br /&gt;       # Reproduzir SE de erro&lt;br /&gt;        $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;      # Reproduzir SE de OK&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Se o efeito da Habilidade for um aliado&lt;br /&gt;      if @skill.scope &amp;gt;= 3&lt;br /&gt;        # Ativar janela alvo&lt;br /&gt;        @skill_window.active = false&lt;br /&gt;        @target_window.x = (@skill_window.index + 1) % 2 * 304&lt;br /&gt;        @target_window.visible = true&lt;br /&gt;        @target_window.active = true&lt;br /&gt;        # Definir se o alcance é um aliado ou todo o grupo&lt;br /&gt;        if @skill.scope == 4 || @skill.scope == 6&lt;br /&gt;          @target_window.index = -1&lt;br /&gt;        elsif @skill.scope == 7&lt;br /&gt;          @target_window.index = @actor_index - 10&lt;br /&gt;        else&lt;br /&gt;          @target_window.index = 0&lt;br /&gt;        end&lt;br /&gt;      # Se o efeito for outro senão para um aliado&lt;br /&gt;      else&lt;br /&gt;        # Se o ID do evento comum for válido&lt;br /&gt;        if @skill.common_event_id &amp;gt; 0&lt;br /&gt;          # Chamar evento comum da reserva&lt;br /&gt;          $game_temp.common_event_id = @skill.common_event_id&lt;br /&gt;          # Reproduzir SE da Habilidade&lt;br /&gt;          $game_system.se_play(@skill.menu_se)&lt;br /&gt;          # Descontar MP&lt;br /&gt;          @actor.sp -= @skill.sp_cost&lt;br /&gt;          # Recriar cada conteúdo das janelas&lt;br /&gt;          @status_window.refresh&lt;br /&gt;          @skill_window.refresh&lt;br /&gt;          @target_window.refresh&lt;br /&gt;          # Alternar para a tela do Mapa&lt;br /&gt;          $scene = Scene_Map.new&lt;br /&gt;          return&lt;br /&gt;        end&lt;br /&gt;      end&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão R for pressionado&lt;br /&gt;    if Input.trigger?(Input::R)&lt;br /&gt;      # Reproduzir SE de cursor&lt;br /&gt;      $game_system.se_play($data_system.cursor_se)&lt;br /&gt;      # O comando leva ao próximo Herói&lt;br /&gt;      @actor_index += 1&lt;br /&gt;      @actor_index %= $game_party.actors.size&lt;br /&gt;      # Alternar para uma tela de Habilidades diferente&lt;br /&gt;      $scene = Scene_Skill.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão L for pressionado&lt;br /&gt;    if Input.trigger?(Input::L)&lt;br /&gt;      # Reproduzir SE de cursor&lt;br /&gt;      $game_system.se_play($data_system.cursor_se)&lt;br /&gt;      # O comando leva ao Herói anterior&lt;br /&gt;      @actor_index += $game_party.actors.size - 1&lt;br /&gt;      @actor_index %= $game_party.actors.size&lt;br /&gt;      # Alternar para uma tela de Habilidades diferente&lt;br /&gt;      $scene = Scene_Skill.new(@actor_index)&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end &lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Battle(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Scene_Battle para adicionar o Sistema de Skill Tree.&lt;br /&gt;# *Possíveis erros de compatibilidades podem acontecer caso esteja usando outro&lt;br /&gt;# script de batalha que não seja o padrão, porem nada dificil de editar.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Battle&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Atualização do Frame (Fase de Comandos do Herói : Seleção da Habilidade)&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def update_phase3_skill_select&lt;br /&gt;    # Tornar a janela de Habilidades visível&lt;br /&gt;    @skill_window.visible = true&lt;br /&gt;    # Atualizar janela de Habilidades&lt;br /&gt;    @skill_window.update&lt;br /&gt;    # Se o botão B for pressionado&lt;br /&gt;    if Input.trigger?(Input::B)&lt;br /&gt;      # Reproduzir SE de Cancelamento&lt;br /&gt;      $game_system.se_play($data_system.cancel_se)&lt;br /&gt;      # Finializar selação da Habilidade&lt;br /&gt;      end_skill_select&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;    # Se o botão C for pressionado&lt;br /&gt;    if Input.trigger?(Input::C)&lt;br /&gt;      # Selecionar os dados escolhidos na janela de Habilidades&lt;br /&gt;      @skill = @skill_window.skill&lt;br /&gt;      # Se não puder ser utilizado&lt;br /&gt;      if @skill == nil or not @active_battler.skill_can_use?(@skill.id)&lt;br /&gt;        # Reproduzir SE de Erro&lt;br /&gt;        $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;      if ZC_SKP::TYPE_SKILL[@skill.id] == 2 #se a habiliade precisa de uma arma&lt;br /&gt;        unless ZC_SKP::WEAPON_TYPE[@active_battler.weapon_id] == ZC_SKP::WEAPON_SKILLTYPE[@skill.id]&lt;br /&gt;          # Reproduzir SE de Erro&lt;br /&gt;          $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;          return&lt;br /&gt;        end&lt;br /&gt;      end &lt;br /&gt;      unless $game_actors[@active_battler.id].skill_level(@skill.id) &amp;gt; 0&lt;br /&gt;       # Reproduzir SE de erro&lt;br /&gt;        $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;      # Reproduzir SE de OK&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      # Definir ação&lt;br /&gt;      @active_battler.current_action.skill_id = @skill.id&lt;br /&gt;      # Tornar a janela de Habilidade inivisível&lt;br /&gt;      @skill_window.visible = false&lt;br /&gt;      # Se o alvo do efeito for apenas um Inimigo&lt;br /&gt;      if @skill.scope == 1&lt;br /&gt;        # Iniciar a seleção do Inimigo&lt;br /&gt;        start_enemy_select&lt;br /&gt;      # Se o alvo do efeito for apenas um aliado&lt;br /&gt;      elsif @skill.scope == 3 or @skill.scope == 5&lt;br /&gt;        # Iniciar a seleçao do Herói&lt;br /&gt;        start_actor_select&lt;br /&gt;      # Se o alvo do efeito não for simples&lt;br /&gt;      else&lt;br /&gt;        # Finalizar a seleção da Habilidade&lt;br /&gt;        end_skill_select&lt;br /&gt;        # Ir para a entrada de comandos do próximo Herói&lt;br /&gt;        phase3_next_actor&lt;br /&gt;      end&lt;br /&gt;      return&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt;  # - Criação o Resultado das Habilidade&lt;br /&gt;  #--------------------------------------------------------------------------&lt;br /&gt; &lt;br /&gt;  def make_skill_action_result&lt;br /&gt;    # Selecionar Habilidade&lt;br /&gt;    @skill = $game_skills_zc[@active_battler.id][@active_battler.current_action.skill_id]&lt;br /&gt;    # Se não for uma ação pré-definida&lt;br /&gt;    unless @active_battler.current_action.forcing&lt;br /&gt;      # Se for impossível utilizar porque não há MP suficiente&lt;br /&gt;      unless @active_battler.skill_can_use?(@skill.id)&lt;br /&gt;        # Limpar o Battler que estiver em uma ação pré-definida&lt;br /&gt;        $game_temp.forcing_battler = nil&lt;br /&gt;        # Alternar para o passo 1&lt;br /&gt;        @phase4_step = 1&lt;br /&gt;        return&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;    # Utilizar MP&lt;br /&gt;    @active_battler.sp -= @skill.sp_cost&lt;br /&gt;    # Atualizar a janela de Status&lt;br /&gt;    @status_window.refresh   &lt;br /&gt;    # Exibir o nome da Habilidade na janela de Ajuda&lt;br /&gt;    @help_window.set_text(@skill.name, 1)&lt;br /&gt;    # Definir o ID da animação&lt;br /&gt;    @animation1_id = @skill.animation1_id&lt;br /&gt;    @animation2_id = @skill.animation2_id&lt;br /&gt;    # Definir o ID do Evento Comum&lt;br /&gt;    @common_event_id = @skill.common_event_id&lt;br /&gt;    # Definir os Battlers alvo&lt;br /&gt;    set_target_battlers(@skill.scope)   &lt;br /&gt;    # Aplicar os efeitos da Habilidade&lt;br /&gt;    for target in @target_battlers&lt;br /&gt;      target.skill_effect(@active_battler, @skill)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Title(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Scene_Title para adicionar o Sistema de Skill Tree.&lt;br /&gt;# *Possíveis erros de compatibilidades podem acontecer caso esteja usando script&lt;br /&gt;# de pular introdução caso após introdução não volte para Scene_Title.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Title&lt;br /&gt;   &lt;br /&gt;  alias zc_main main&lt;br /&gt;  def main&lt;br /&gt;    $data_actors        = load_data("Data/Actors.rxdata")&lt;br /&gt;        $game_skills_zc = []&lt;br /&gt;    for i in 1...$data_actors.size&lt;br /&gt;     $game_skills_zc[i]    = load_data("Data/Skills.rxdata")&lt;br /&gt;    end&lt;br /&gt;    zc_main&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Save(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Scene_Save para adicionar o Sistema de Skill Tree.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Save &amp;lt; Scene_File&lt;br /&gt; &lt;br /&gt;  alias zc_write_save_data write_save_data&lt;br /&gt;  def write_save_data(file)&lt;br /&gt;    zc_write_save_data(file)&lt;br /&gt;    Marshal.dump($game_skills_zc, file)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#==============================================================================&lt;br /&gt;# Scene_Load(Modificação)&lt;br /&gt;#------------------------------------------------------------------------------&lt;br /&gt;# Modificações na classe Scene_Load para adicionar o Sistema de Skill Tree.&lt;br /&gt;#==============================================================================&lt;br /&gt;&lt;br /&gt;class Scene_Load &amp;lt; Scene_File&lt;br /&gt; &lt;br /&gt;  alias zc_read_save_data read_save_data&lt;br /&gt;  def read_save_data(file)&lt;br /&gt;    zc_read_save_data(file)&lt;br /&gt;    $game_skills_zc     = Marshal.load(file)&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;b&gt;&lt;span class="bbc_u"&gt;Créditos e Agradecimentos&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li type="disc"&gt;&lt;i&gt;Feito por zecomeia&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li type="disc"&gt;&lt;i&gt;Ajuda indireta de Atoa e Rune Angel&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-6595651549301883777?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/6595651549301883777/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-sscolmeia-skill-system.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6595651549301883777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/6595651549301883777'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/c-sscolmeia-skill-system.html' title='C-SS(Colméia - Skill System)'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-8076179772063445782</id><published>2009-12-18T14:42:00.004-02:00</published><updated>2010-05-01T20:39:23.904-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ScriptRGSS'/><title type='text'>MOG Title Miria - XP version</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;MOG Title Miria - XP version&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;por &lt;i&gt;zecomeia&lt;/i&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Introdução&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Conversão do script original &lt;b&gt;VX MOG Title Miria&lt;/b&gt; feito por MogHunter.&lt;br /&gt;Tela de título animada com efeitos wave, zoom, panorama, etc.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Características&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Totalmente customizável&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Screen Shot&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.atelier-rgss.com/RGSS/Menu/VX_Menu01_IM01.gif"&gt;&lt;img alt="" border="0" class="bbc_img" height="315" id="ncode_imageresizer_container_4" onload="NcodeImageResizer.createOn(this);" src="http://www.atelier-rgss.com/RGSS/Menu/VX_Menu01_IM01.gif" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Como Usar&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul class="bbc_list"&gt;&lt;li&gt;Cole o script acima de main&lt;/li&gt;&lt;li&gt;Baixe o pacote de imagens a seguir:&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/169291504/69ab5aea/Imagens_Title_Miria.html" target="_blank"&gt;Pacote de imagens&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Coloque todas as imagens na pasta Graphics/Titles, as imagens são:&lt;br /&gt;Title&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; - Imagem que contem o texto do título&lt;br /&gt;Transition&amp;nbsp; &amp;nbsp;- Imagem da transição de tela&lt;br /&gt;Plane1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem da camada 1&lt;br /&gt;Plane2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem da camada 2&lt;br /&gt;Plane3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem da camada 3&lt;br /&gt;Com_01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem do menu seleção NEW GAME&lt;br /&gt;Com_02&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem do menu seleção CONTINUE&lt;br /&gt;Com_03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- Imagem do menu seleção EXIT&lt;/li&gt;&lt;li&gt;Também é necessário o uso do script XP Wave Effect(será postado junto), então coloque-o acima de main.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;*OBS:&lt;/span&gt;edite as imagens à vontade, mas mantenha com o mesmo nome os arquivos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Demo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://www.4shared.com/file/254634630/7787830a/XP_MOG_Title_Miria.html" target="_blank"&gt;Dowload da demo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Título animado:&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#==================================================&lt;br /&gt;# Scene Title Screen Miria XP version&lt;br /&gt;#&lt;br /&gt;# By zecomeia&lt;br /&gt;# http://colmeia-do-ze.blogspot.com/&lt;br /&gt;#--------------------------------------------------&lt;br /&gt;# Original version for RMVX:&lt;br /&gt;# Scene Title Screen Miria V1.0                                 &lt;br /&gt;#&lt;br /&gt;# By Moghunter&lt;br /&gt;# http://www.atelier-rgss.com&lt;br /&gt;#==================================================&lt;br /&gt;# Tela de titulo animada&lt;br /&gt;# Coloque todas as imagens na pasta Graphics/Titles&lt;br /&gt;# São necessárias as seguintes imagens&lt;br /&gt;#&lt;br /&gt;# Title        #Imagem que contem o texto do título&lt;br /&gt;# Transition   #Imagem da transição de tela&lt;br /&gt;# Plane1       #Imagem da camada 1&lt;br /&gt;# Plane2       #Imagem da camada 2&lt;br /&gt;# Plane3       #Imagem da camada 3&lt;br /&gt;# Com_01       #Imagem do menu seleção NEW GAME&lt;br /&gt;# Com_02       #Imagem do menu seleção CONTINUE&lt;br /&gt;# Com_03       #Imagem do menu seleção EXIT&lt;br /&gt;#&lt;br /&gt;#==================================================&lt;br /&gt;&lt;br /&gt;#============#&lt;br /&gt;#   CONFIG   #&lt;br /&gt;#============#&lt;br /&gt;module MOG_VX01&lt;br /&gt;#Ativar tela cheia.    (true = Ativar ou false = Desativar)&lt;br /&gt;FULL_SCREEN = false&lt;br /&gt;# Tempo de transição.&lt;br /&gt;TT = 20&lt;br /&gt;#Ativar movimento de Onda no texto do titulo.&lt;br /&gt;# (true = Ativar ou false = Desativar)&lt;br /&gt;TWAVE = true&lt;br /&gt;#Opacidade da imagem camada 1.&lt;br /&gt;TPLANE1_OPA = 255&lt;br /&gt;#Opacidade da imagem camada 2.&lt;br /&gt;TPLANE2_OPA = 200&lt;br /&gt;#Opacidade da imagem camada 3&lt;br /&gt;TPLANE3_OPA = 170&lt;br /&gt;# Velocidade de movimento da camada 1 na horizontal.&lt;br /&gt;TPLANE1_X = 1&lt;br /&gt;# Velocidade de movimento da camada 1 na vertical.&lt;br /&gt;TPLANE1_Y = 0&lt;br /&gt;# Velocidade de movimento da camada 2 na horizontal.&lt;br /&gt;TPLANE2_X = 2&lt;br /&gt;# Velocidade de movimento da camada 2 na vertical.&lt;br /&gt;TPLANE2_Y = 0&lt;br /&gt;# Velocidade de movimento da camada 2 na horizontal.&lt;br /&gt;TPLANE3_X = 4&lt;br /&gt;# Velocidade de movimento da camada 2 na vertical.&lt;br /&gt;TPLANE3_Y = 0&lt;br /&gt;end&lt;br /&gt;#-------------------------------------------------&lt;br /&gt;$mogscript = {} if $mogscript == nil&lt;br /&gt;$mogscript["title_miria"] = true&lt;br /&gt;#-------------------------------------------------&lt;br /&gt;&lt;br /&gt;#=============#&lt;br /&gt;# Scene_Title #&lt;br /&gt;#=============#&lt;br /&gt;$full_screen = 0&lt;br /&gt;class Scene_Title&lt;br /&gt;include  MOG_VX01&lt;br /&gt;    def main&lt;br /&gt;    if $BTEST                       &lt;br /&gt;      battle_test                     &lt;br /&gt;    return&lt;br /&gt;    end     &lt;br /&gt;    $full_screen += 1&lt;br /&gt;    if MOG_VX01::FULL_SCREEN == true and $full_screen == 1&lt;br /&gt;    $showm = Win32API.new 'user32', 'keybd_event', %w(l l l l), ' '&lt;br /&gt;    $showm.call(18,0,0,0)&lt;br /&gt;    $showm.call(13,0,0,0)&lt;br /&gt;    $showm.call(13,0,2,0)&lt;br /&gt;    $showm.call(18,0,2,0)&lt;br /&gt;    end     &lt;br /&gt;    start                         &lt;br /&gt;    perform_transition         &lt;br /&gt;    Input.update               &lt;br /&gt;    loop do&lt;br /&gt;      Graphics.update           &lt;br /&gt;      Input.update               &lt;br /&gt;      update                     &lt;br /&gt;      break if $scene != self   &lt;br /&gt;    end&lt;br /&gt;    Graphics.update&lt;br /&gt;    Graphics.freeze               &lt;br /&gt;    terminate                     &lt;br /&gt;  end&lt;br /&gt;  def start&lt;br /&gt;    load_database                   &lt;br /&gt;    create_game_objects           &lt;br /&gt;    check_continue                   &lt;br /&gt;    create_title_graphic             &lt;br /&gt;    create_command_window         &lt;br /&gt;    play_title_music                 &lt;br /&gt;  end&lt;br /&gt;  def perform_transition&lt;br /&gt;    Graphics.transition(TT , "Graphics/Titles/Transition")&lt;br /&gt;  end&lt;br /&gt;  def terminate&lt;br /&gt;    dispose_command_window&lt;br /&gt;    dispose_title_graphic&lt;br /&gt;  end&lt;br /&gt;  def update&lt;br /&gt;    @command_window.update&lt;br /&gt;     case @command_window.index&lt;br /&gt;     when 0&lt;br /&gt;     @com.bitmap = RPG::Cache.title("Com_01")&lt;br /&gt;     when 1&lt;br /&gt;     @com.bitmap = RPG::Cache.title("Com_02")   &lt;br /&gt;     when 2&lt;br /&gt;     @com.bitmap = RPG::Cache.title("Com_03")&lt;br /&gt;   end       &lt;br /&gt;    @sprite_title.opacity += 2&lt;br /&gt;    @com.opacity += 2 if @sprite_title.opacity &amp;gt; 150&lt;br /&gt;    @sprite.ox += TPLANE1_X&lt;br /&gt;    @sprite.oy += TPLANE1_Y&lt;br /&gt;    @sprite2.ox += TPLANE2_X&lt;br /&gt;    @sprite2.oy += TPLANE2_Y&lt;br /&gt;    @sprite3.ox += TPLANE3_X&lt;br /&gt;    @sprite3.oy += TPLANE3_Y&lt;br /&gt;    @sprite_title.update if TWAVE == true&lt;br /&gt;    if Input.trigger?(Input::C)&lt;br /&gt;      case @command_window.index&lt;br /&gt;      when 0 &lt;br /&gt;        command_new_game&lt;br /&gt;      when 1   &lt;br /&gt;        command_continue&lt;br /&gt;      when 2   &lt;br /&gt;        command_shutdown&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  def update_slide&lt;br /&gt;    @sprite.ox += TPLANE1_X&lt;br /&gt;    @sprite.oy += TPLANE1_Y&lt;br /&gt;    @sprite2.ox += TPLANE2_X&lt;br /&gt;    @sprite2.oy += TPLANE2_Y&lt;br /&gt;    @sprite3.ox += TPLANE3_X&lt;br /&gt;    @sprite3.oy += TPLANE3_Y&lt;br /&gt;    @sprite_title.update if TWAVE == true   &lt;br /&gt;  end&lt;br /&gt;  def load_database&lt;br /&gt;    $data_actors        = load_data("Data/Actors.rxdata")&lt;br /&gt;    $data_classes       = load_data("Data/Classes.rxdata")&lt;br /&gt;    $data_skills        = load_data("Data/Skills.rxdata")&lt;br /&gt;    $data_items         = load_data("Data/Items.rxdata")&lt;br /&gt;    $data_weapons       = load_data("Data/Weapons.rxdata")&lt;br /&gt;    $data_armors        = load_data("Data/Armors.rxdata")&lt;br /&gt;    $data_enemies       = load_data("Data/Enemies.rxdata")&lt;br /&gt;    $data_troops        = load_data("Data/Troops.rxdata")&lt;br /&gt;    $data_states        = load_data("Data/States.rxdata")&lt;br /&gt;    $data_animations    = load_data("Data/Animations.rxdata")&lt;br /&gt;    $data_tilesets      = load_data("Data/Tilesets.rxdata")&lt;br /&gt;    $data_common_events = load_data("Data/CommonEvents.rxdata")&lt;br /&gt;    $data_system        = load_data("Data/System.rxdata")&lt;br /&gt;  end&lt;br /&gt;  def load_bt_database&lt;br /&gt;    $data_actors        = load_data("Data/BT_Actors.rxdata")&lt;br /&gt;    $data_classes       = load_data("Data/BT_Classes.rxdata")&lt;br /&gt;    $data_skills        = load_data("Data/BT_Skills.rxdata")&lt;br /&gt;    $data_items         = load_data("Data/BT_Items.rxdata")&lt;br /&gt;    $data_weapons       = load_data("Data/BT_Weapons.rxdata")&lt;br /&gt;    $data_armors        = load_data("Data/BT_Armors.rxdata")&lt;br /&gt;    $data_enemies       = load_data("Data/BT_Enemies.rxdata")&lt;br /&gt;    $data_troops        = load_data("Data/BT_Troops.rxdata")&lt;br /&gt;    $data_states        = load_data("Data/BT_States.rxdata")&lt;br /&gt;    $data_animations    = load_data("Data/BT_Animations.rxdata")&lt;br /&gt;    $data_tilesets      = load_data("Data/BT_Tilesets.rxdata")&lt;br /&gt;    $data_common_events = load_data("Data/BT_CommonEvents.rxdata")&lt;br /&gt;    $data_system        = load_data("Data/BT_System.rxdata")&lt;br /&gt;  end&lt;br /&gt;  def create_game_objects&lt;br /&gt;    $game_temp          = Game_Temp.new&lt;br /&gt;    $game_system        = Game_System.new&lt;br /&gt;    $game_switches      = Game_Switches.new&lt;br /&gt;    $game_variables     = Game_Variables.new&lt;br /&gt;    $game_self_switches = Game_SelfSwitches.new&lt;br /&gt;    $game_screen        = Game_Screen.new&lt;br /&gt;    $game_actors        = Game_Actors.new&lt;br /&gt;    $game_party         = Game_Party.new&lt;br /&gt;    $game_troop         = Game_Troop.new&lt;br /&gt;    $game_map           = Game_Map.new&lt;br /&gt;    $game_player        = Game_Player.new&lt;br /&gt;  end&lt;br /&gt;  def check_continue&lt;br /&gt;    @continue_enabled = (Dir.glob('Save*.rxdata').size &amp;gt; 0)&lt;br /&gt;  end&lt;br /&gt;  def create_title_graphic&lt;br /&gt;    @sprite_title = Sprite.new   &lt;br /&gt;    @sprite_title.bitmap = RPG::Cache.title("Title") &lt;br /&gt;    @sprite_title.opacity = 0&lt;br /&gt;    @com = Sprite.new&lt;br /&gt;    @com.bitmap = RPG::Cache.title("Com_01") &lt;br /&gt;    @com.opacity = 0&lt;br /&gt;    @sprite = Plane.new   &lt;br /&gt;    @sprite.bitmap = RPG::Cache.title("Plane1")&lt;br /&gt;    @sprite2 = Plane.new&lt;br /&gt;    @sprite2.bitmap = RPG::Cache.title("Plane2")&lt;br /&gt;    @sprite3 = Plane.new   &lt;br /&gt;    @sprite3.bitmap = RPG::Cache.title("Plane3")&lt;br /&gt;    @sprite.opacity = TPLANE1_OPA&lt;br /&gt;    @sprite2.opacity = TPLANE2_OPA   &lt;br /&gt;    @sprite3.opacity = TPLANE3_OPA   &lt;br /&gt;    @sprite.z  = 1&lt;br /&gt;    @sprite2.z = 2&lt;br /&gt;    @sprite3.z = 3&lt;br /&gt;    @com.z = 4&lt;br /&gt;    @sprite_title.z = 5   &lt;br /&gt;  if TWAVE == true&lt;br /&gt;    @sprite_title.wave_amp = 8&lt;br /&gt;    @sprite_title.wave_length = 240&lt;br /&gt;    @sprite_title.wave_speed = 320&lt;br /&gt;  end&lt;br /&gt;    end&lt;br /&gt;  def dispose_title_graphic&lt;br /&gt;    @sprite.bitmap.dispose&lt;br /&gt;    @sprite2.bitmap.dispose&lt;br /&gt;    @sprite3.bitmap.dispose   &lt;br /&gt;    @com.bitmap.dispose   &lt;br /&gt;    @sprite_title.bitmap.dispose&lt;br /&gt;    @sprite.dispose&lt;br /&gt;    @sprite2.dispose&lt;br /&gt;    @sprite3.dispose&lt;br /&gt;    @com.dispose     &lt;br /&gt;    @sprite_title.dispose&lt;br /&gt;  end&lt;br /&gt;  def create_command_window&lt;br /&gt;    s1 = "Novo Jogo"&lt;br /&gt;    s2 = "Continuar"&lt;br /&gt;    s3 = "Sair"&lt;br /&gt;    @command_window = Window_Command.new(172, [s1, s2, s3])&lt;br /&gt;    @command_window.opacity = 0&lt;br /&gt;    @command_window.contents_opacity = 0&lt;br /&gt;    if @continue_enabled                 &lt;br /&gt;      @command_window.index = 1             &lt;br /&gt;    else                               &lt;br /&gt;      @command_window.draw_item(1, Color.new(255, 255, 255, 255)) &lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  def title_fade&lt;br /&gt;   if TWAVE == true   &lt;br /&gt;    @sprite_title.wave_amp = 34&lt;br /&gt;    @sprite_title.wave_length = 120&lt;br /&gt;    @sprite_title.wave_speed = 800&lt;br /&gt;    end   &lt;br /&gt;    for i in 0..120&lt;br /&gt;    @sprite_title.opacity -= 3   &lt;br /&gt;    @sprite_title.update if TWAVE == true   &lt;br /&gt;    @com.opacity -= 3&lt;br /&gt;     case @command_window.index&lt;br /&gt;     when 0   &lt;br /&gt;     @sprite.zoom_x += 0.01&lt;br /&gt;     @sprite.zoom_y += 0.01   &lt;br /&gt;     @sprite2.zoom_x += 0.01&lt;br /&gt;     @sprite2.zoom_y += 0.01       &lt;br /&gt;     @sprite3.zoom_x += 0.01&lt;br /&gt;     @sprite3.zoom_y += 0.01       &lt;br /&gt;     @sprite.ox += 2&lt;br /&gt;     @sprite.oy += 2&lt;br /&gt;     @sprite2.ox += 2&lt;br /&gt;     @sprite2.oy += 2&lt;br /&gt;     @sprite3.ox += 2&lt;br /&gt;     @sprite3.oy += 2   &lt;br /&gt;     end&lt;br /&gt;    update_slide&lt;br /&gt;    Graphics.update &lt;br /&gt;    end         &lt;br /&gt;  end &lt;br /&gt;  def dispose_command_window&lt;br /&gt;    @command_window.dispose&lt;br /&gt;  end&lt;br /&gt;  def play_title_music&lt;br /&gt;    $game_system.bgm_play($data_system.title_bgm)&lt;br /&gt;    Audio.bgs_stop&lt;br /&gt;    Audio.me_stop&lt;br /&gt;  end&lt;br /&gt;  def confirm_player_location&lt;br /&gt;    if $data_system.start_map_id == 0&lt;br /&gt;      print "?????????????????????"&lt;br /&gt;      exit&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  def command_new_game&lt;br /&gt;    confirm_player_location&lt;br /&gt;    $game_system.se_play($data_system.decision_se)&lt;br /&gt;    title_fade&lt;br /&gt;    $game_party.setup_starting_members       &lt;br /&gt;    $game_map.setup($data_system.start_map_id)   &lt;br /&gt;    $game_player.moveto($data_system.start_x, $data_system.start_y)&lt;br /&gt;    $game_player.refresh&lt;br /&gt;    $scene = Scene_Map.new&lt;br /&gt;    Audio.bgm_fade(500)&lt;br /&gt;    20.times do&lt;br /&gt;      @sprite.opacity -= 12&lt;br /&gt;      @sprite2.opacity -= 12&lt;br /&gt;      @sprite3.opacity -= 12&lt;br /&gt;      Graphics.update&lt;br /&gt;    end&lt;br /&gt;    @sprite.opacity -= 1&lt;br /&gt;    @sprite2.opacity -= 1&lt;br /&gt;    @sprite3.opacity -= 1&lt;br /&gt;    Graphics.frame_count = 0&lt;br /&gt;    Audio.bgm_stop&lt;br /&gt;    $game_map.autoplay&lt;br /&gt;  end&lt;br /&gt;  def command_continue&lt;br /&gt;    if @continue_enabled&lt;br /&gt;      $game_system.se_play($data_system.decision_se)&lt;br /&gt;      title_fade&lt;br /&gt;      $scene = Scene_Load.new&lt;br /&gt;    else&lt;br /&gt;      $game_system.se_play($data_system.buzzer_se)&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;  def command_shutdown   &lt;br /&gt;    $game_system.se_play($data_system.decision_se)&lt;br /&gt;    title_fade&lt;br /&gt;    Audio.bgm_fade(800)&lt;br /&gt;    Audio.bgs_fade(800)&lt;br /&gt;    Audio.me_fade(800)&lt;br /&gt;    $scene = nil&lt;br /&gt;  end&lt;br /&gt;  def battle_test&lt;br /&gt;    load_bt_database             &lt;br /&gt;    create_game_objects         &lt;br /&gt;    Graphics.frame_count = 0         &lt;br /&gt;    $game_party.setup_battle_test_members&lt;br /&gt;    $game_troop.setup($data_system.test_troop_id)&lt;br /&gt;    $game_troop.can_escape = true&lt;br /&gt;    $game_system.battle_bgm.play&lt;br /&gt;    snapshot_for_background&lt;br /&gt;    $scene = Scene_Battle.new&lt;br /&gt;  end&lt;br /&gt;  def snapshot_for_background&lt;br /&gt;    $game_temp.background_bitmap.dispose&lt;br /&gt;    $game_temp.background_bitmap = Graphics.snap_to_bitmap&lt;br /&gt;    $game_temp.background_bitmap.blur&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;a href="/2010/04/xp-wave-effect.html"&gt;XP Wave Effect&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;form name="select_all"&gt;&lt;input onclick="javascript:this.form.code.focus();this.form.code.select();" type="button" value="Selecionar Código" /&gt;&lt;br /&gt;&lt;pre&gt;&lt;textarea cols="52" name="code" readonly="readonly" rows="15"&gt;#========================================&lt;br /&gt;# XP Wave Effect&lt;br /&gt;#----------------------------------------&lt;br /&gt;#by:      zecomeia&lt;br /&gt;#date:    01/03/2010&lt;br /&gt;#for:     RGSS&lt;br /&gt;#version: 1.0&lt;br /&gt;#www.colmeia-do-ze.blogspot.com&lt;br /&gt;#----------------------------------------&lt;br /&gt;=begin&lt;br /&gt;Reproduction of the VX's wave effect&lt;br /&gt;(see the help file of the RPGMaker VX &lt;br /&gt;in the RGSS manual reference topic)&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;#==============#&lt;br /&gt;# Sprite class #&lt;br /&gt;#==============#&lt;br /&gt;class Sprite&lt;br /&gt;  &lt;br /&gt;  include Math&lt;br /&gt;  &lt;br /&gt;  attr_accessor   :wave_amp&lt;br /&gt;  attr_accessor   :wave_length&lt;br /&gt;  attr_accessor   :wave_speed&lt;br /&gt;  attr_accessor   :wave_phase&lt;br /&gt;  attr_accessor   :temp_bitmap&lt;br /&gt;  &lt;br /&gt;  alias initialize default_initialize rescue nil&lt;br /&gt;  alias default_initialize initialize&lt;br /&gt;  def initialize(viewport=nil)&lt;br /&gt;    @wave_amp = 0&lt;br /&gt;    @wave_length = 180&lt;br /&gt;    @wave_speed = 360&lt;br /&gt;    @wave_phase = 0.0&lt;br /&gt;    default_initialize(viewport)&lt;br /&gt;    @temp_bitmap = nil&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  alias update default_update rescue nil&lt;br /&gt;  alias default_update update  &lt;br /&gt;  def update()&lt;br /&gt;    # the wave effect only works if wave_amp&lt;br /&gt;    # propertie is a number more than zero&lt;br /&gt;    wave_effect if @wave_amp &amp;gt; 0&lt;br /&gt;    default_update()&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;  # Return the width of image, because when use&lt;br /&gt;  # obj.bitmap.width the value will be more than&lt;br /&gt;  # the original value(because effect)&lt;br /&gt;  def width()&lt;br /&gt;    return (self.bitmap.width - @wave_amp * 2)&lt;br /&gt;  end&lt;br /&gt;    &lt;br /&gt;  #---------------&lt;br /&gt;  # Wave Effect&lt;br /&gt;  #---------------&lt;br /&gt;  def wave_effect()&lt;br /&gt;    return if self.bitmap.nil?&lt;br /&gt;    @temp_bitmap = self.bitmap if @temp_bitmap.nil?&lt;br /&gt;    cw = @temp_bitmap.width + (@wave_amp * 2)&lt;br /&gt;    ch = @temp_bitmap.height&lt;br /&gt;    # Follow the VX wave effect, each horizontal line&lt;br /&gt;    # has 8 pixel of height. This device provides less&lt;br /&gt;    # lag in game.&lt;br /&gt;    divisions = @temp_bitmap.height / 8&lt;br /&gt;    divisions += 1 if @temp_bitmap.height % 8 != 0&lt;br /&gt;    self.bitmap = Bitmap.new(cw, ch)&lt;br /&gt;    for i in 0..divisions&lt;br /&gt;      x = @wave_amp * Math.sin(i * 2 * PI / (@wave_length / 8).to_i + Math.deg_to_rad(@wave_phase))&lt;br /&gt;      src_rect = Rect.new(0, i*8, @temp_bitmap.width, 8)&lt;br /&gt;      dest_rect = Rect.new(@wave_amp + x, i * 8, @temp_bitmap.width, 8)&lt;br /&gt;      self.bitmap.stretch_blt(dest_rect, @temp_bitmap, src_rect)&lt;br /&gt;    end&lt;br /&gt;    # frame rate: VX = 60 | XP = 40&lt;br /&gt;    # wave speed compatibility VX to XP: wave_speed * 60/40&lt;br /&gt;    # then: wave_speed * 1.5&lt;br /&gt;    @wave_phase += @wave_speed * 1.5 / @wave_length&lt;br /&gt;    @wave_phase -= 360 if @wave_phase &amp;gt; 360&lt;br /&gt;    @wave_phase += 360 if @wave_phase &amp;lt; 0&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;#=============#&lt;br /&gt;# module Math #&lt;br /&gt;#=============#&lt;br /&gt;module Math&lt;br /&gt;  &lt;br /&gt;  #-------------------------------&lt;br /&gt;  # Conversion Degree to Radian&lt;br /&gt;  #-------------------------------&lt;br /&gt;  def Math.deg_to_rad(deg)&lt;br /&gt;    return (deg * PI) / 180.0&lt;br /&gt;  end&lt;br /&gt;  &lt;br /&gt;end&lt;br /&gt;&lt;/textarea&gt;&lt;/pre&gt;&lt;/form&gt;&lt;br /&gt;&lt;b&gt;Créditos e Agradecimentos&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;i&gt;zecomeia&lt;/i&gt; pela versão para XP&lt;br /&gt;&amp;nbsp;&lt;i&gt;MogHunter&lt;/i&gt; pelo script original para VX&lt;b&gt; &lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-8076179772063445782?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/8076179772063445782/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/mog-title-miria-xp-version.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8076179772063445782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/8076179772063445782'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/mog-title-miria-xp-version.html' title='MOG Title Miria - XP version'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-4251050737265701075</id><published>2009-12-18T14:27:00.000-02:00</published><updated>2009-12-18T14:29:26.304-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialRGSS12'/><title type='text'>Apostila RGSS/RGSS2 | Cap.3 - Manipulando e Verificando Dados</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;3.Manipulando e Verificando Dados&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Começaremos agora a colocar em prática o pouco que aprendemos.&lt;br /&gt;No decorrer do capítulo aprenderemos alguns métodos de Ruby utilizados para verificar valores; comentários; e conheceremos as palavras que a linguagem Ruby reserva para si.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 1.35em;"&gt;&lt;b&gt;Palavras Reservadas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A seguir a lista de palavras reservadas, ou seja, palavras que Ruby reserva para si e portanto não podem ser usadas para dar nome ao outro objeto.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BEGIN&amp;nbsp;&amp;nbsp;&amp;nbsp;class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ensure&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;self&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;when&lt;br /&gt;&lt;br /&gt;END&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;def&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;false&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;not&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;super&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&lt;br /&gt;&lt;br /&gt;alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;defined&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;or&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;then&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;yield&lt;br /&gt;&lt;br /&gt;and&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;redo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;true&lt;br /&gt;&lt;br /&gt;begin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rescue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;undef&lt;br /&gt;&lt;br /&gt;break&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;elsif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unless&lt;br /&gt;&lt;br /&gt;case&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;next&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;until&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;span style="font-size: 14pt;"&gt;Comentários&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Comentários são trechos de código que não interferem na execução do programa, então podemos usá-los para fazer anotações em trechos do programa quando precisamos dar atenção especial àquele trecho ou simplesmente para descrever o que o mesmo faz. Esse recurso é muito útil e ajuda muito a organizar o programa, e também ajuda a relembrar o “porquê daquela linha”, por exemplo, imagine que estava desenvolvendo um programa e por algum motivo teve que parar por um bom tempo, se deixou comentário em seu código será mais fácil de relembrar o que cada coisa faz.&lt;br /&gt;&lt;b&gt;Para comentar uma linha&lt;/b&gt; do código, coloque &lt;b&gt;#&lt;/b&gt; antes da mesma. Lembre-se esse tipo de comentário é válido para apenas &lt;b&gt;uma linha&lt;/b&gt;. Exemplo:&lt;br /&gt;&lt;a href="http://img412.imageshack.us/img412/9969/img1cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="128" id="ncode_imageresizer_container_6" onload="NcodeImageResizer.createOn(this);" src="http://img412.imageshack.us/img412/9969/img1cap3.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;OBS:&lt;/b&gt; Perceba ao escrever no editor de scripts do RPGMaker, o texto fica colorido conforme a sintaxe. No caso, uma linha comentada recebe a coloração verde como na imagem acima. Isso acontece com outras partes da sintaxe também, como por exemplo, palavras reservadas ficam em azul.&lt;br /&gt;&lt;br /&gt;Existe também um comando para comentários &lt;b&gt;multi-linhas&lt;/b&gt;, usada para fazer comentários longos(com várias linhas). Mas este comando não é usada apenas para isso, também serve para &lt;b&gt;documentação embutida&lt;/b&gt; pela ferramenta &lt;b&gt;rdtool&lt;/b&gt;, mas isso não será abordado(talvez futuramente).&lt;br /&gt;O comando é composto por &lt;b&gt;delimitadores&lt;/b&gt;, um para indicar o início e outro para o fim, são eles &lt;b&gt;=begin&lt;/b&gt; e &lt;b&gt;=end&lt;/b&gt;, respectivamente. O que estive escrito entre esses delimitadores será considerado comentário e não irão interferir do programa. Mas existem alguns cuidados a tomar. É obrigatório escrever o delimitador no início da linha(&lt;b&gt;colado no início da linha&lt;/b&gt;), e para cada =begin tem que existir um =end, lembrando que se ao colocar =begin dentro de um outro comentário também o torna um comentário. Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img412.imageshack.us/img412/3312/img2cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="84" onload="NcodeImageResizer.createOn(this);" src="http://img412.imageshack.us/img412/3312/img2cap3.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OBS:&lt;/b&gt; escrever qualquer coisa com exceção da palavra =end no início, pois isso encerraria o comentário.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 14pt;"&gt;&lt;b&gt;print( ) puts( ) p( )&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Bom, até agora usamos o método &lt;b&gt;print&lt;/b&gt;várias vezes. O que o método fez foi nos mostrar em uma &lt;b&gt;message box&lt;/b&gt; o valor de uma variável, ou até mesmo um dado escrito diretamente(sem precisar de variável). E é isso mesmo que ele faz, assim como o método &lt;b&gt;p( )&lt;/b&gt;. Veja os exemplos&lt;br /&gt;&lt;a href="http://img4.imageshack.us/img4/1092/img22cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img4.imageshack.us/img4/1092/img22cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Embora com ou sem parênteses funcione, é recomendável utilizá-los&lt;br /&gt;&lt;br /&gt;Já o método &lt;b&gt;puts( )&lt;/b&gt;, não dos mostra a janela com o valor. Bom normalmente os métodos &lt;b&gt;print( )&lt;/b&gt; e &lt;b&gt;p( )&lt;/b&gt; , do ruby, também não, mas com modificações feitas neles pelo RGSS os valores são exibidos na janela. Também é possível alterar o método puts( ) de ruby para mostrar a mensagem em uma janela, mas não veremos isso agora para não “embolar” a cabeça de ninguém. Resumindo estes três métodos nos retorna o valor empregado como argumento(o valor dentro do parênteses ou na frente do método) à eles na saída padrão, mas que pode ser alterada para uma message box por exemplo.&lt;br /&gt;&lt;div align="center"&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;Operadores&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Os operadores são utilizados para manipular os dados , por exemplo, construir expressões matemáticas, operações lógicas, comparar valores, etc. É essencial o uso destes para construir nosso programas e portanto &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;Operadores aritméticos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Veremos a seguir &lt;b&gt;operadores aritméticos&lt;/b&gt; e suas funções.&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Operador&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Função&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Exemplo&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Retorno&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;+&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Adição&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1+1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;-&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Subtração&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1-1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;0&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;*&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Multiplicação&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1*1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;/&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Divisão&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1/1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Resto da Divisão&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1%1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;0&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;+&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Mais(unário)&lt;br /&gt;&lt;/td&gt;&lt;td&gt;+1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;-&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Menos(unário)&lt;br /&gt;&lt;/td&gt;&lt;td&gt;-(1)&lt;br /&gt;&lt;/td&gt;&lt;td&gt;-1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;**&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Exponenciação&lt;br /&gt;&lt;/td&gt;&lt;td&gt;2**3&lt;br /&gt;&lt;/td&gt;&lt;td&gt;8&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Atente para as coluna “Exemplo" e "Retorno”, ela mostra exemplos do que o operador faz, onde "Exemplo"&amp;nbsp; é a expressão utilizando o operador em questão, e "Retorno" é o resultado da expressão, ou seja, o valor que será &lt;b&gt;retornado&lt;/b&gt; pela expressão, e que podemos usá-lo de imediato ou &lt;b&gt;*armazená-lo em uma variável&lt;/b&gt; para uso posterior.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;A partir deste ponto sempre irei colocar, em relação a variável, como &lt;b&gt;armazenar&lt;/b&gt; informação na variável e não &lt;b&gt;fazer referência&lt;/b&gt; como anteriormente, pois a explicação do capítulo 2&amp;nbsp; sobre variáveis foi para fins didáticos e após ter entendido não é preciso ficar se referindo desta forma à função de uma variável, assim facilitamos o trabalho daqui em diante.&lt;br /&gt;&lt;br /&gt;Os operadores anteriormente mostrados são operadores aritméticos, para expressões matemáticas, &lt;b&gt;mas&lt;/b&gt; o operador “+” pode ser usado na concatenação de strings também.&lt;br /&gt;&lt;a href="http://img686.imageshack.us/img686/9611/img3cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="19" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/9611/img3cap3.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;O código acima abrirá uma janela do Windows com os três trechos juntos escritos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;&lt;b&gt;Operadores relacionais&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Agora uma tabela com alguns &lt;b&gt;operadores relacionais&lt;/b&gt;, eles servem para comparar valores. Lembre-se aí não estão todos.&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Operador&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Função&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Maior que&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;gt;=&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Maior que ou igual a&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Menor que&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;=&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Menor que ou igual a&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;!=&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Diferente de&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;==&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Diferente de&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Exemplos:&lt;br /&gt;&lt;a href="http://img403.imageshack.us/img403/6430/img4cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="480" id="ncode_imageresizer_container_7" onload="NcodeImageResizer.createOn(this);" src="http://img403.imageshack.us/img403/6430/img4cap3.jpg" width="348" /&gt;&lt;/a&gt;&lt;br /&gt;Repare que todos retornam valores booleanos(TrueClass ou FalseClass).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: 1.45em;"&gt;Operadores condicionais ou lógicos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Operador&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Função&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;and&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“e” lógico/condicional&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;amp;&amp;amp;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“e” lógico/condicional&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;or&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“ou” lógico/condicional&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;||&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“ou” lógico/condicional&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;not&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Negação&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;amp;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“e”&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;|&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“ou”&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;^&lt;br /&gt;&lt;/td&gt;&lt;td&gt;“ou exclusivo”&lt;br /&gt;&lt;/td&gt;&lt;td&gt;!&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Negação&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Não é necessário usá-los em conjunto com operadores relacionais, embora sejam comumente usados.&lt;br /&gt;São conhecidos como operadores condicionais porque impõem uma condição para o retorno, onde cada operador tem uma condição diferente.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;and :&lt;/b&gt;&lt;br /&gt;Este operador avalia duas expressões, uma que o precede e a que vem a frente do &lt;b&gt;and&lt;/b&gt;, e verifica se as duas expressões retornam &lt;b&gt;true&lt;/b&gt; para então a operação retorna true &lt;b&gt;também&lt;/b&gt;, se pelo menos uma das expressões retornar &lt;b&gt;false&lt;/b&gt;, a operação também retornará false independente da outra expressão retornar true ou false.Exemplos:&lt;br /&gt;&lt;a href="http://img403.imageshack.us/img403/6430/img4cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="480" id="ncode_imageresizer_container_15" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/1828/img5cap3.jpg" width="419" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;Perceba que foram necessários parênteses no código, sem eles não seria possível ver o verdadeiro efeito do operador direto como foi feito.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;amp;&amp;amp; :&lt;/b&gt;&lt;br /&gt;Tem o mesmo efeito do operador &lt;b&gt;and&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;or :&lt;/b&gt;&lt;br /&gt;Avalia duas expressões da mesma forma que o operador &lt;b&gt;and&lt;/b&gt;, porem este verifica se a primeira expressão &lt;b&gt;ou&lt;/b&gt; a segunda expressão tem valor &lt;b&gt;true&lt;/b&gt; para o operador poder retornar &lt;b&gt;true&lt;/b&gt;, ou seja, pelo menos uma das expressões tem que ser verdadeira para a operação retornar true, consequentemente, se nenhuma das expressões forem true a operação retornará &lt;b&gt;false&lt;/b&gt;. Exemplos:&lt;br /&gt;&lt;a href="http://img163.imageshack.us/img163/928/img6cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="480" id="ncode_imageresizer_container_9" onload="NcodeImageResizer.createOn(this);" src="http://img163.imageshack.us/img163/928/img6cap3.jpg" width="412" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;Perceba que foram necessários parênteses no código, sem eles não seria possível ver o verdadeiro efeito do operador direto como foi feito.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;|| :&lt;/b&gt;&lt;br /&gt;Tem o mesmo efeito do operador &lt;b&gt;or&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;not :&lt;/b&gt;&lt;br /&gt;Este operador avalia apenas uma expressão. Como descrito na função, ele é um operador de &lt;b&gt;negação&lt;/b&gt;, portanto ele nega o valor, e essa negação é simplemente uma inversão do valor, ou seja, se o valor for &lt;b&gt;true&lt;/b&gt; será invertido para &lt;b&gt;false&lt;/b&gt;, e se for &lt;b&gt;false&lt;/b&gt; será invertido para &lt;b&gt;true&lt;/b&gt;. Exemplos:&lt;br /&gt;&lt;a href="http://img163.imageshack.us/img163/496/img7cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="204" onload="NcodeImageResizer.createOn(this);" src="http://img163.imageshack.us/img163/496/img7cap3.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;Perceba que foram necessários parênteses no código, sem eles não seria possível ver o verdadeiro efeito do operador direto como foi feito.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;! :&lt;/b&gt;&lt;br /&gt;Tem o mesmo efeito do operador &lt;b&gt;not&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;amp; :&lt;/b&gt;&lt;br /&gt;Este é um pouco mais complicado. Quando se trabalha apenas com lógica(true ou false) o operador tem a mesma função do &lt;b&gt;&amp;amp;&amp;amp;&lt;/b&gt;. Veja os exemplos:&lt;br /&gt;&lt;a href="http://img412.imageshack.us/img412/6227/img8cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img412.imageshack.us/img412/6227/img8cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Ao trabalhar com números, as coisas mudam um pouco. Primeiro os números envolvidos na operação são &lt;b&gt;transformados em números binários&lt;/b&gt; para o operador iniciar uma operação lógica do tipo &lt;b&gt;and bit a bit&lt;/b&gt;, ou seja, vai verificar aplicar a lógica &lt;b&gt;and&lt;/b&gt; comparando cada dígito do número para formular uma resposta de retorno que será transformada para decimal novamente. Exemplos:&lt;br /&gt;&lt;a href="http://img686.imageshack.us/img686/3983/img9cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/3983/img9cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Antes de iniciar a análise dos exemplos, devo citar que é preciso ter em mente que um número em binário é apresentado apenas pelos números 0 e 1, e que para efeito de calculo, considere 1 como true e 0 como false, isso para facilitar o entendimento do operação and bit a bit.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;OBS: O bit pode ser encarado como o número de dígitos do número binário.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;OBS: Conversões de decimal para binário e vice-versa são necessárias porque a &lt;b&gt;linguagem&lt;/b&gt; que a máquina utiliza é diferente da &lt;b&gt;humana&lt;/b&gt;, e usa um outro sistema numérico conhecido como binário que utiliza apenas de 0 e 1 para construção de seus números. Então a comunicação homem-máquina-homem com maior facilidade implica nestas conversões.&lt;br /&gt;&lt;br /&gt;Vamos analisar a primeira operação. Primeiro os números foram transformados de decimais para binários:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DECIMAL&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BINÁRIO&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1111&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Em seguida é feita a operação lógica &lt;b&gt;and&lt;/b&gt; bit a bit:&lt;br /&gt;&lt;br /&gt;1111 and 0001 =&amp;gt; 1111&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0001&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;-------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;0001&lt;br /&gt;&lt;br /&gt;O resultado agora é convertido para decimal novamente e impresso na janela gerada pelo comando printpara podermos ver o valor de retorno:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BINÁRIO&lt;br /&gt;&lt;/td&gt;&lt;td&gt;DECIMAL&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0001&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ao testar o código verá que será exatamente &lt;b&gt;1&lt;/b&gt; o valor retornado.&lt;br /&gt;&lt;br /&gt;Agora demonstrando o segundo exemplo:&lt;br /&gt;Primeiro os números foram transformados de decimais para binários:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DECIMAL&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BINÁRIO&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;11&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1011&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1110&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Em seguida é feita a operação lógica &lt;b&gt;and&lt;/b&gt; bit a bit:&lt;br /&gt;&lt;br /&gt;1011 and 1110 =&amp;gt; 1011&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1110&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1010&lt;br /&gt;&lt;br /&gt;O resultado agora é convertido para decimal novamente e impresso na janela gerada pelo comando print para podermos ver o valor de retorno:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BINÁRIO&lt;br /&gt;&lt;/td&gt;&lt;td&gt;DECIMAL&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1010&lt;br /&gt;&lt;/td&gt;&lt;td&gt;10&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ao testar o código verá que será exatamente &lt;b&gt;10&lt;/b&gt; o valor retornado.&lt;br /&gt;&lt;br /&gt;*OBS: Escrever &lt;b&gt;0001&lt;/b&gt; ao invés de escrever apenas &lt;b&gt;1&lt;/b&gt;, foi apenas uma forma mais simples de explicar.&lt;br /&gt;&lt;br /&gt;Mesmo hoje em dia ser muito fácil encontrar calculadoras que façam essas conversões para você(geralmente qualquer computador vem com um software de uma calculadora do tipo), seria legal como é feita estas conversões na &lt;b&gt;mão&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DECIMAL para BINÁRIO&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Simplesmente deve dividir o número que deseja converter para binário, dividendo, por &lt;b&gt;2(porque que números binários são de base 2, lembre-se BI=2)&lt;/b&gt;, divisor, não se importando com o &lt;b&gt;resto da divisão(o resto será 1 quando existir)&lt;/b&gt; caso exista(ele será usado depois), evitando assim números com vírgula. O resultado da divisão(quociente) será o nosso novo dividendo desde que ele não valha &lt;b&gt;1&lt;/b&gt;. Este processo deve ser repetido até o quociente valer &lt;b&gt;1&lt;/b&gt;. Então é preciso juntar o valor deste quociente final que sempre será 1 com os valores de &lt;b&gt;resto&lt;/b&gt; das divisões anteriores, seguindo da última para a primeira. Uma ilustração para ajudar a entender:&lt;br /&gt;&lt;a href="http://img686.imageshack.us/img686/3796/img10cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/3796/img10cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BINÁRIO para DECIMAL&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para essa conversão é preciso conhecer exponenciação. Primeiro um exemplo em seguida um explicação, será melhor fazer desta forma para explicar:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*OBS: o sinal ** representa elevar a uma potencia, portando, 2**2 é o mesmo que 2², ou 2 elevado a 2.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Passando 1111 para decimal:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1 x 2**3 + 1 x 2**2 + 1 x 2**1 + 1 x 2**0 = 15&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Passando 1110 para decimal:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1 x 2**3 + 1 x 2**2 + 1 x 2**1 + 0 x 2**0 = 15&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Pelos exemplo acima, é possível perceber que é somado o valor resultante de cada bit, e o valor de cada bit muda conforme sua “posição”(qual digito) no número, da mesma forma que no sistema decimal o primeiro digito vale unidades, o segundo dezenas, terceiro centenas, etc. Só com os números binários o primeiro digito &lt;b&gt;vale 2 elevado a 0, o segundo 2 elevado a 1, o terceiro 2 elevado a 2, e assim segue.&lt;/b&gt;&lt;br /&gt;Assim como nos decimais, &lt;b&gt;0(zero)&lt;/b&gt; dezenas significa que não tem dezenas, nos binários o bit 0 significa que não tem aquele digito, então não vamos incluí-lo no cálculo, para isso bastou multiplicar por &lt;b&gt;0(zero)&lt;/b&gt; o valor da potencia resultante da casa em questão.&lt;br /&gt;Isso é o básico sobre a conversão entre estes dois tipos, ainda existem alguns detalhes com relação a conversão do número quando &lt;b&gt;há virgula&lt;/b&gt;. Para não continuar a prolongar está explicação que foge um pouco do assunto em questão é melhor que os interessados em saber mais sobre essas conversões tentem &lt;b&gt;“andar por suas próprias pernas“&lt;/b&gt;, pesquisando por conta própria, ou até mesmo, para os mais empolgados, tentar descobrir sozinho apenas analisando o que já foi passado.&lt;br /&gt;&lt;br /&gt;Continuando com o &lt;b&gt;operador &amp;amp;&lt;/b&gt;, não utilize para trabalhar diretamente com objetos do &lt;b&gt;tipo string&lt;/b&gt;, pois isso ocasionará erros.&lt;br /&gt;&lt;br /&gt;Existe uma situação onde este operador age diferente das situações anteriormente vistas. Quando está trabalhando com objetos do tipo &lt;b&gt;array&lt;/b&gt;.&lt;br /&gt;Nessa situação, ele busca a &lt;b&gt;intersecção&lt;/b&gt; entre as duas arrays avaliadas, ou seja, valores em comum entre elas. Então não importa o tipo de objetos armazenados nessa array já que o operador não precisa “mexer“ nestes valores.&lt;br /&gt;Ao final, o operador retorna como resposta uma array com os valores em comum entre as duas arrays avaliadas, organizadas conforme os valores estão organizados na primeira array da operação e sem repetir valores iguais mesmo que exista a repetição do mesmo valor várias vezes nas duas arrays avaliadas. Se não houver valores em comum a função retorna uma &lt;b&gt;array vazia&lt;/b&gt;. Exemplos:&lt;br /&gt;&lt;a href="http://img33.imageshack.us/img33/1317/img11cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="111" id="ncode_imageresizer_container_5" onload="NcodeImageResizer.createOn(this);" src="http://img33.imageshack.us/img33/1317/img11cap3.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Na imagem do código acima foi colocado na frente de cada operação um comentário seguido do valor que será retornado(como vem sendo feito em todos exemplos), mas é importante ressaltar que o valor retornado é um &lt;b&gt;array&lt;/b&gt; carregada com os valores citados(isso ajuda a explicar o porque do “13“, por exemplo, que na verdade é “1” e “3”).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;| :&lt;/b&gt;&lt;br /&gt;Funciona da mesma forma que o operador &lt;b&gt;&amp;amp;&lt;/b&gt;, porém, ao invés de fazer a operação lógica &lt;b&gt;and&lt;/b&gt; executa-se a operação &lt;b&gt;or&lt;/b&gt;, tanto para o &lt;b&gt;bit a bit&lt;/b&gt;, como para valores lógicos(true e false), tanto para arrays. Exemplos:&lt;br /&gt;&lt;a href="http://img163.imageshack.us/img163/1186/img12cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img163.imageshack.us/img163/1186/img12cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Perceba como o resultado é idêntico ao resultado dos exemplo com operador &lt;b&gt;or(||)&lt;/b&gt;.&lt;br /&gt;&lt;a href="http://img686.imageshack.us/img686/7173/img13cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/7173/img13cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O procedimento é idêntico ao do operador &lt;b&gt;&amp;amp;&lt;/b&gt;, porém, a operação bit a bit usou a lógica &lt;b&gt;or&lt;/b&gt; ao invés de &lt;b&gt;and&lt;/b&gt;. Veja:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1110&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;br /&gt;&lt;/td&gt;&lt;td&gt;0011&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;1110 or 0011 =&amp;gt; 1110&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0011&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1111&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1111&lt;br /&gt;&lt;/td&gt;&lt;td&gt;15&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href="http://img412.imageshack.us/img412/7210/img14cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img412.imageshack.us/img412/7210/img14cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;Ao trabalhar com arrays, ao contrario do operador &amp;amp; que buscava a intersecção entre as arrays, o operador “|” busca a união entre elas, formando uma nova array seguindo as mesmas regras de organização do operador &amp;amp;: ordem em que aparecem os valores da primeira array da operação; sem valores repetidos mesmo que hajam vários iguais nas duas arrays; o valor retornado é um array com os valores dos dois operandos. Caso a array &lt;b&gt;retorne vazia&lt;/b&gt;, significa que não existem valores em nenhuma das arrays da operação(nil).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;OBS: também não é possível operar valores do tipo string com este operador.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;^ :&lt;/b&gt;&lt;br /&gt;Funciona da mesma forma que os operadores &lt;b&gt;&amp;amp;&lt;/b&gt; e &lt;b&gt;|&lt;/b&gt;, porém, executa-se a operação lógica conhecida como &lt;b&gt;ou exclusivo&lt;/b&gt;, tanto para o &lt;b&gt;bit a bit&lt;/b&gt;, como para valores lógicos(true e false). &lt;br /&gt;O operador ou exclusivo, quando usado com valores lógicos(true e false), retorna verdadeiro quando as duas expressões avaliadas forem diferentes(uma true e a outra false), e retorna false quando as duas expressões são iguais(as duas são true ou as duas são false). Exemplos:&lt;br /&gt;&lt;a href="http://img263.imageshack.us/img263/1754/img15cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img263.imageshack.us/img263/1754/img15cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para a operação bit a bit, assim como foi visto anteriormente, considere nos números binários “0” como false e “1” como true para a comparação bit a bit da operação com números, seguindo aquele mesmo processo dos anteriores.&lt;br /&gt;&lt;a href="http://img524.imageshack.us/img524/6508/img16cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img524.imageshack.us/img524/6508/img16cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resolução:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1110&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;br /&gt;&lt;/td&gt;&lt;td&gt;0011&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;1110 ou exlusivo 0011 =&amp;gt; 1110&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0011&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1101&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1101&lt;br /&gt;&lt;/td&gt;&lt;td&gt;13&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;OBS: também não é possível operar valores do tipo string com este operador.&lt;br /&gt;&lt;b&gt;*&lt;/b&gt;OBS: &lt;b&gt;não é possível operar arrays com este operador.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Operadores de deslocamento&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Operador&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Função&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;gt;&amp;gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Desloca bits a direita&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;&amp;lt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Desloca bits a esquerda&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Eles servem para &lt;b&gt;deslocamento de bits&lt;/b&gt;. Assim como os operadores bit a bit vistos anteriormente, estes também necessitam de conhecimento sobre binário e decimal.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;O operador “&amp;gt;&amp;gt;“ avalia duas expressões, uma que o precede e outra logo em seguida do operador(EX: A&amp;gt;&amp;gt;B). Onde B é o número de bits que serão &lt;b&gt;deslocados a direita&lt;/b&gt; em A, isso significa que B representa quantos dígitos serão “empurrados” para fora do número em binário. Exemplo:&lt;br /&gt;&lt;a href="http://img686.imageshack.us/img686/9756/img17cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img686.imageshack.us/img686/9756/img17cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O que aconteceu foi o seguinte:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1111&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href="http://img524.imageshack.us/img524/5830/img18cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img524.imageshack.us/img524/5830/img18cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Simplesmente é isso o que é feito. Lembre-se, este operador só funciona com dados do tipo &lt;b&gt;Integer(números inteiros)&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;O operador “&amp;lt;&amp;lt;“ também avalia duas expressões, uma que o precede e outra logo em seguida do operador(EX: A&amp;gt;&amp;gt;B). Onde B é o número de bits que serão &lt;b&gt;deslocados a esquerda&lt;/b&gt; em A, isso significa que B representa quantos dígitos serão “adicionados”&amp;nbsp; ao número em binário(&lt;b&gt;os bits adicionados tem valor “0“&lt;/b&gt;). Exemplo:&lt;br /&gt;&lt;a href="http://img524.imageshack.us/img524/8215/img19cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img524.imageshack.us/img524/8215/img19cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O que aconteceu foi o seguinte:&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;DEC&lt;br /&gt;&lt;/td&gt;&lt;td&gt;BIN&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;15&lt;br /&gt;&lt;/td&gt;&lt;td&gt;1111&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;a href="http://img412.imageshack.us/img412/2392/img20cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img412.imageshack.us/img412/2392/img20cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Simplesmente é isso o que é feito. Lembre-se, este operador só funciona com dados do tipo &lt;b&gt;Integer(números inteiros)&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;&lt;b&gt;&lt;br /&gt;Operadores de Atribuição&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O principal operador de atribuição é o “=“, ele serve para atribuir valor a um objeto.&lt;br /&gt;Para entender os outros operadores é preciso entender este, que por sinal é muito simples. Já vimos ele em funcionamento no capítulo 2 quando atribuímos valores as nossas variáveis. É importan ressaltar que o operador = não é a mesma coisa que o sinal =&amp;nbsp; que usamos na matemática, este ultimo diz que duas coisas são iguais, já aqui nosso operador, de forma curta e grossa, diz para a expressão da esquerda ter o valor da expressão da direita. Exemplos:&lt;br /&gt;&lt;a href="http://img403.imageshack.us/img403/8370/img21cap3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img403.imageshack.us/img403/8370/img21cap3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dando atenção especial para a linha:&lt;br /&gt;&lt;br /&gt;var = var + 2&lt;br /&gt;&lt;br /&gt;Podemos começar a entender os outros operadores de atribuição.&lt;br /&gt;O que acontece é que o novo valor da variável &lt;b&gt;var&lt;/b&gt; é igual a “&lt;b&gt;var&lt;/b&gt; + 2”.&lt;br /&gt;E existe uma operador equivalente a isto, o operador “+=“, veja como ficaria o exemplo acima utilizando este operador:&lt;br /&gt;&lt;br /&gt;var += 2&lt;br /&gt;&lt;br /&gt;O resultado será o mesmo. O único cuidado que deve ser tomado é a certeza do objeto &lt;b&gt;var&lt;/b&gt; ser do tipo que o operador funcione.&lt;br /&gt;A tabela a seguir mostra vários operadores seguem a mesma linha, a diferença está na operação que eles executam:&lt;br /&gt;&lt;br /&gt;&lt;table class="bbc_table"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;Exemplo&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Equivalente&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var += 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var + 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var -= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var - 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var *= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var * 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var /= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var / 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var %= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var % 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var **= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var ** 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var &amp;amp;= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var &amp;amp; 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var &amp;amp;&amp;amp;= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var &amp;amp;&amp;amp; 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var |= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var | 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var ||= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var || 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var &amp;gt;&amp;gt;= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var &amp;gt;&amp;gt; 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;var &amp;lt;&amp;lt;= 2&lt;br /&gt;&lt;/td&gt;&lt;td&gt;var = var &amp;lt;&amp;lt; 2&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Comentários:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Os códigos estão sendo escritos no editor de scripts do RPGMakerXP e em seguida é tirado uma screenshot do código para servir de exemplos na apostila, ou seja, sendo uma imagem o leitor não poderá copiar os códigos para testar os exemplo. A idéia e fazer com&amp;nbsp; que o leitor escreva ele mesmo os códigos ao invés de apenas copiar e colar. A partir do próximo capítulo os códigos começaram a ser escritos, pois a esta altura o programador já deve ter se familiarizado um pouco com o editor e percebido que as vezes quando estamos escrevendo acabamos errando e isso interfere em nosso programa, desta forma aprendeu como corrigir alguns erros.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Agradecimentos:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;zecomeia&lt;br /&gt;livro “Ruby: Investigando a Linguagem” por Ivan Mecenas (Editora Alta Books)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-4251050737265701075?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/4251050737265701075/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap3-manipulando-e.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4251050737265701075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/4251050737265701075'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap3-manipulando-e.html' title='Apostila RGSS/RGSS2 | Cap.3 - Manipulando e Verificando Dados'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-2251922291692390797</id><published>2009-12-18T14:14:00.000-02:00</published><updated>2009-12-18T14:29:26.304-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialRGSS12'/><title type='text'>Apostila RGSS/RGSS2 | Cap.2 - Básico sobre Dados, Variáveis e Constantes</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;2.Básico sobre Dados, Variáveis e Constantes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Como vimos no capítulo anterior, o RGSS/RGSS2 provem da linguagem de programação &lt;b&gt;Ruby&lt;/b&gt;, seria interessante, porém não necessário, o leitor se informar mais sobre a linguagem Ruby, até porque existe mais conteúdo que possa ajudar no aprendizado sobre Ruby do que RGSS, e muito deste conteúdo é válido para o RGSS, além do mais isso ajuda a ampliar os horizontes para a programação.No final deste capítulo serão anexados alguns links que possam ajudar com o Ruby.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 1.35em;"&gt;&lt;b&gt;Tipos de Dados&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Para criação de programas é preciso manipular dados, sendo eles, basicamente, números e letras.No RGSS os dados são separados da seguinte forma:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Numbers:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;Integer: Números inteiros positivos e negativos.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;°Fixnum: Números inteiros positivos e negativos limitados por valores máximo &amp;nbsp;&amp;nbsp;&amp;nbsp;e mínimo dependentes da máquina do usuário.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;°Bignum: Valores que ultrapassem os limites de fixnum são automaticamente &amp;nbsp;&amp;nbsp;&amp;nbsp;convertidos para Bignum.&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div class="quoteheader"&gt;&lt;div class="topslice_quote"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;blockquote&gt;Float: Tem maior precisão que o Integer pelo fato de comportar números com vírgula . &lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;blockquote&gt;Boolean: Representa os estados lógicos, &lt;b&gt;true&lt;/b&gt; ou &lt;b&gt;false&lt;/b&gt;.&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Para o número ser negativo, deve ser precedido do sinal “-”. Os números também pode assumir bases diferente da decimal, como octal, hexadecimal ou binária. Para isso o número deve ser:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;0&lt;/b&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt; para octais&lt;br /&gt;&lt;b&gt;0x&lt;/b&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt; para hexadecimais&lt;br /&gt;&lt;b&gt;0b&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;gt; para binários&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;*&lt;/span&gt;Lembre-se, cada base tem uma forma correta de utilizar. Os octais devem ter, após e juntamente ao &lt;b&gt;0&lt;/b&gt;, apenas números 0 a 7, os hexadecimais, após e juntamente ao &lt;b&gt;0x&lt;/b&gt;,&amp;nbsp; apenas números de 0 a 9 e letras de A à F, e os binários, após e juntamente ao &lt;b&gt;0b&lt;/b&gt;,&amp;nbsp; apenas 0 e 1.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Strings:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;São cadeias de caracteres. Quando definida uma string entre aspas (“ ”) esta permite a entrada de caracteres de escape para o controle de fluxo da mesma, mas quando definida entre apóstrofo (‘ ‘), também conhecido como aspas simples, caracteres de escape não são reconhecidos. Existem outras formas de definir uma string e serão mostradas posteriormente neste trabalho.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 1.35em;"&gt;&lt;b&gt;Conversores de tipo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Agora serão mostrados alguns “conversores de tipo”. Esse conversores quando aplicados corretamente, retornam o valor do objeto, a qual foi associado, convertido para o tipo de dados que o método converte.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;to_s()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Retorna dados do tipo &lt;b&gt;string&lt;/b&gt;. Ex:&lt;br /&gt;&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;_var = 1&lt;br /&gt;print _var.class&lt;br /&gt;print _var.to_s.class&lt;br /&gt;print _var.class&lt;br /&gt;_var = _var.to_s&lt;br /&gt;print _var.class&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Perceba(a partir do print da classe do objeto em cada etapa do exemplo) que simplesmente usando o métodos to_s() o objeto não é alterado definitivamente, mas é visível que na linha “_var = _var.to_s” você esta &lt;b&gt;redefinindo&lt;/b&gt; a variável, agora com o valor “1” do tipo string. Funciona do mesmo modo para os próximos casos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;to_i()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Retorna dados do tipo &lt;b&gt;integer&lt;/b&gt;. Ex:&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;_var = “1”&lt;br /&gt;print _var.class&lt;br /&gt;print _var.to_i.class&lt;br /&gt;print _var.class&lt;br /&gt;_var = _var.to_i&lt;br /&gt;print _var.class&lt;/code&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;to_f()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Retorna dados do tipo &lt;b&gt;float&lt;/b&gt;. Ex:&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;_var = 1&lt;br /&gt;print _var&lt;br /&gt;print _var.class&lt;br /&gt;print _var.to_f.class&lt;br /&gt;print _var.class&lt;br /&gt;_var = _var.to_f&lt;br /&gt;print _var&lt;br /&gt;print _var.class&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;to_a()&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Retorna os dados em uma &lt;b&gt;array&lt;/b&gt;(veremos futuramente). Ex:&lt;br /&gt;&lt;div class="codeheader"&gt;&lt;br /&gt;&lt;/div&gt;&lt;code&gt;_var = “1”&lt;br /&gt;print _var.class&lt;br /&gt;print _var.to_a.class&lt;br /&gt;print _var.class&lt;br /&gt;_var = _var.to_a&lt;br /&gt;print _var.class&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size: 1.35em;"&gt;&lt;b&gt;Variáveis&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Variáveis são uma exceção com relação a linguagem ser totalmente orientada a objetos, pois variáveis não são objetos, mas sim, referências ao objeto atribuídos à elas.&lt;br /&gt;O exemplo abaixo ajuda a entender isto:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img132.imageshack.us/img132/5423/img1cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="158" id="ncode_imageresizer_container_19" onload="NcodeImageResizer.createOn(this);" src="http://img132.imageshack.us/img132/5423/img1cap2.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Explicação básica para entendimento do exemplo:&lt;br /&gt;&lt;br /&gt;O comando print irá mostrar uma janela, sendo que o conteúdo da mensagem é o valor especificado para o comando, no nosso caso são os valores atribuídos para a variável, chamada sugestivamente de “variável”, e também utilizamos, em seguida de cada atribuição de valores, novamente o comando print, só que agora para mostrar o valor retornado pelo método class que basicamente retorna a que classe o objeto pertence.&lt;br /&gt;Outro comando que utilizamos foi o #. Ele serve para escrevermos comentários em uma linha. Comentários tornam o código escrito após ele inútil afim de influenciar o seu programa, isso significa que não afeta em nada em seu código, podendo então, ser usados como anotações para organizarmos melhor nossos códigos, mas no nosso caso, os comentários foram usados para demonstrar o que vai ser mostrado na janela mostrada pelo comando print. Teste e verá que o resultado será o que está escrito após os comentários (com exceção do “=&amp;gt;“).&lt;br /&gt;Talvez tenha notado a linha 13, onde a variável foi definida com valor &lt;b&gt;nil&lt;/b&gt;, e que ele pertence a &lt;b&gt;NilClass&lt;/b&gt;. Este valor nós chamamos de &lt;b&gt;nulo&lt;/b&gt;, para indicar que a variável, na realidade, não faz referência a um objeto de nenhum tipo citado anteriormente. As variáveis de tipo global e de instância(veremos a seguir) fazem referência, inicialmente, ao valor nil mesmo se a variável ainda não tenha sido declarada(ou até mesmo não existam) no seu código.&lt;br /&gt;Por final, perceba que nossa variável fez referência a objetos de tipos diferenciados ao longo do nosso código(String, Fixnum, Float, etc). Em algumas linguagens tal tarefa não é tão simples quanto em Ruby. Um exemplo disso é a linguagem de programação&amp;nbsp; C, onde as variáveis devem ser definidas com o seu tipo implícito.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Os tipos de variáveis:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Variáveis locais: valem apenas para o bloco de código onde foi definida(blocos, métodos). Como regra da linguagem, variáveis locais devem ser escritas com pelo menos a primeira letra minúscula ou com uma sublinha “_”(do inglês, underline).&lt;br /&gt;&lt;br /&gt;Variáveis de instância: valem para toda a classe.Como regra da linguagem, variáveis de instância devem ser precedidas do caractere “@“.&lt;br /&gt;&lt;br /&gt;Variáveis de classe: valem para toda a classe e continuam com o mesmo valor independente do objeto que a instancie. Como regra da linguagem, variáveis de classe devem ser precedidas do caractere “@@“.&lt;br /&gt;&lt;br /&gt;Variáveis globais: valem para todo o programa, independente de onde for utilizada. Como regra da linguagem, variáveis globais devem ser precedidas do caractere “$“.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Constantes:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Assim como variáveis globais, tem valor em todo o programa, mas existem cuidados especiais para com Constantes que devem ser tomados(veremos futuramente). Como regra da linguagem, Constantes devem&amp;nbsp; ser escritas com pelo menos a primeira letra maiúscula, porém, costuma-se escrevê-la inteiramente com letras maiúsculas.&lt;br /&gt;&lt;br /&gt;Definindo Variáveis e Constantes. Exemplos&lt;br /&gt;&lt;br /&gt;&amp;nbsp;de variáveis locais:&lt;br /&gt;&lt;a href="http://img16.imageshack.us/img16/5417/img2cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img16.imageshack.us/img16/5417/img2cap2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;de variáveis de instância:&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/8832/img4cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/8832/img4cap2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;de variáveis de classe:&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/540/img5cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/540/img5cap2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;de variáveis globais:&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/4058/img3cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/4058/img3cap2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;de constantes:&lt;br /&gt;&lt;a href="http://img38.imageshack.us/img38/9396/img6cap2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img38.imageshack.us/img38/9396/img6cap2.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-2251922291692390797?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/2251922291692390797/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap2-basico-sobre.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2251922291692390797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/2251922291692390797'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap2-basico-sobre.html' title='Apostila RGSS/RGSS2 | Cap.2 - Básico sobre Dados, Variáveis e Constantes'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-3509369594955800176</id><published>2009-12-18T14:13:00.000-02:00</published><updated>2009-12-18T14:29:26.305-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialRGSS12'/><title type='text'>Apostila RGSS/RGSS2 | Cap.1 - Um pouco sobre a linguagem</title><content type='html'>&lt;div align="center"&gt;&lt;strong&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;1.Um pouco sobre a linguagem&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;O RGSS(Ruby Game Scripting System) é o Ruby, que é uma linguagem de programação orientada à objetos, preparado para criação de jogos no software&amp;nbsp; RPGMaker.Implantada no programa dedicado à criação de jogos RPGMaker XP, a “linguagem” ganhou uma nova "versão" denominada RGSS2 com a vinda&amp;nbsp; do RPGMaker VX, nova versão do software criado pela Enterbrain.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Bem, apenas dizer o que é uma linguagem orientada a objetos pode não ser o bastante, lembrando que muitos dos que estão lendo esta apostila nunca tiveram contato com uma linguagem de programação, ou se já, esta pode não ter sido uma linguagem de programação orientada a objetos como Ruby.Então, além da explicação do que é uma linguagem de POO(Programação Orientada a Objetos, ou OOP no inglês), também será mostrado neste capítulo um pouco sobre um outro “tipo de linguagem”, linguagens estruturadas.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.35em;"&gt;&lt;strong&gt;Programação Orientada a Objetos(POO)&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;O objetivo de uma linguagem de programação orientada a objetos é tornar o modo como o programador constrói seu programa mais parecido com como as coisas funcionam&amp;nbsp; no “mundo real”, isso facilita na familiarização com a linguagem, uma maior facilidade na compreensão/construção de códigos extensos além de algumas facilidades mais.Assim o programa pode ser organizado em partes e separado em classes com métodos e variáveis que podem trocar informações direta ou indiretamente com outras partes do programa.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.35em;"&gt;&lt;strong&gt;Programação Estruturada&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;A linguagem estruturada é fácil de entender.Basicamente, existe uma função principal onde o programa vai sendo construído através de funções criadas ou não pelo programador.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span class="bbc_size" style="font-size: 1.35em;"&gt;&lt;strong&gt;Programação Mista&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Existem linguagens de programação que dispõem dos dois princípios.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;strong&gt;Links:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Para saber mais sobre as diferenças visite:&lt;br /&gt;&lt;a class="bbc_link new_win" href="http://pipeless.blogspot.com/2009/01/programao-estruturada-versus-programao.html" target="_blank"&gt;http://pipeless.blogspot.com/2009/01/programao-estruturada-versus-programao.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1em;"&gt;&lt;strong&gt;Agradecimentos:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;zecomeia&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;a class="bbc_link new_win" href="http://pipeless.blogspot.com/" target="_blank"&gt;pipeless&lt;/a&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-3509369594955800176?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/3509369594955800176/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap1-um-pouco-sobre.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3509369594955800176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/3509369594955800176'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/apostila-rgssrgss2-cap1-um-pouco-sobre.html' title='Apostila RGSS/RGSS2 | Cap.1 - Um pouco sobre a linguagem'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-7207918997465952456</id><published>2009-12-18T13:59:00.000-02:00</published><updated>2009-12-18T14:00:32.093-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialEventos'/><title type='text'>Trabalhando Amplamente as Mensagens</title><content type='html'>&lt;strong&gt;Primeiro reforço das aulas de programação por eventos&lt;br /&gt;por zecomeia &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;Trabalhando Amplamente as Mensagens&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Introdução&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;O objetivo deste reforço na verdade é mostrar e explicar os comandos para mensagens existente nos RMakers, foi feito um reforço porque o que vale para um RM não não vale para outro.&lt;br /&gt;Além de mostrar os comandos também irá detalhar um pouco mais a parte de &lt;strong&gt;&lt;em&gt;"Opções de Mensagem"&lt;/em&gt;&lt;/strong&gt;, que não existe no RM2000 e 2003 mas que o equivalente neles seriam os comandos &lt;strong&gt;&lt;em&gt;"Forma de exibição da mensagem"&lt;/em&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;em&gt;"Estilo de Mensagem"&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;em&gt;"Gráfico de Face da mensagem"&lt;/em&gt;&lt;/strong&gt; ou &lt;strong&gt;&lt;em&gt;"Gráficos de Rosto"&lt;/em&gt;&lt;/strong&gt;, e que aliás tem algumas ferramentas a mais neles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Comandos nas Mensagens para RPGMaker 2000 e 2003&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A maioria dos comando começam com uma barra inversa (\), então isso a torna um caracter especial na mensagem e se colocada sozinha não irá aparecer, então que tal começarmos com o comando que faz aparecer a barra inversa?Vamos lá:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\\&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Mais de uma barra inversa faz com que apareça a quantidade de barras na mensagem igual ao número de barras digitadas menos 1(a primeira não aparece).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\C[id] =&amp;gt;&lt;/strong&gt; Este comando faz com que todos os caracteres que venham a seguir tenham a cor definida pelo número colocado no lugar da palavra "id".São 20 cores dispostas de 0-19 e dependem do gráfico de sistema escolhido(windowskin).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\S[id] =&amp;gt;&lt;/strong&gt; Com esse comando é possível controlar a velocidade com que os caracteres aparecem na mesangem, podendo ser substituido "id" por números de 1-20, sendo que 1 é a velocidade mais rápida e 20 a mais lenta.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\N[id] =&amp;gt;&lt;/strong&gt; Mostra o nome do personagem.Substitua "id" pelo o número do personagem no Database(Banco de Dados).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\V[id] =&amp;gt;&lt;/strong&gt; Mostra o valor de uma variável.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\$&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Mostra uma janela no canto da tela que mostra a quantidade de dinheiro do jogador.Para fazer com que o valor apareça na própria mensagem crie uma variavel e dê o valor dela igual ao dinheiro possuido, depois insira na mensagem o comando \V[id].&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\!&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Quando colocado na mensagem faz com que a mensagem só continue a ser digitada quando for pressionada uma tecla de confirmação/cancelamento.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\.&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Inseri 1/4s de atraso para aparecer o próximo caractere.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\|&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Inseri 1s de atraso para aparecer o próximo caractere.(equivale 4 repetições do comando anterior)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\_&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Equivalente a metade do espaço que é deixado pela tecla space bar(barra de espaço).Aconselho fazer um teste para entender melhor.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\^&amp;nbsp; &amp;nbsp; &amp;nbsp;=&amp;gt;&lt;/strong&gt; Faz com que a mensagem se encerre automaticamente após ter aparecido todos os caracteres da mesma.Normalmente(sem esse comando), para ser encerrada a mensagem precisa que seja pressionada uma tecla de confirmação/cancelamento.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;\&amp;gt; \&amp;lt;&amp;nbsp; =&amp;gt;&lt;/strong&gt; Mostra instantaneamente o que está entre "\&amp;gt;"&amp;nbsp; "\&amp;lt;" , independente da velocidade da mensagem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;$&amp;nbsp; &amp;nbsp; &amp;nbsp; =&amp;gt;&lt;/strong&gt; Este comando imprime símbolos na mensagem, siga a tabela abaixo para usar este comando.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span class="bbc_u"&gt;Símbolos Especias na mensagem&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img151.imageshack.us/img151/9682/apendice1img1.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Símbolos de inventório:&lt;/strong&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$A: Espada&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$B: Escudo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$C: Estrela de Salomão(David)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Símbolos dos planetas:&lt;/strong&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$D: Sol&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$E: Lua&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $F: Mercurio&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$G: Vênus &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$H: Terra&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$I: Marte &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$J: Jupiter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$K: Saturno &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $L: Urano&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$M: Netuno &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$N: Plutão &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Signos Astrológicos(do oróscopo):&lt;/strong&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$O: Aries&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$P: Touro &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $Q: Gemeos&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$R: Câncer &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$S: Leão &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $T: Virgem&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$U: Libra&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$V: Escorpião&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $W: Sagitario&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $X: Capricôrnio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$Y: Aquario&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $Z: Peixes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Outros Símbolos:&lt;/strong&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$a: rosto (sorrindo)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;$b: rosto(normal) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $c: rosto(triste) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$d: gota 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$e: gota 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$f: espadas(escuro)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$g: coração(escuro)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $h: ouros(escuro)&amp;nbsp;&amp;nbsp;&amp;nbsp;$i: paus(escuro)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$j: espadas(branco)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $k: coração(branco) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $l: ouros(branco) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$m: paus(branco)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $n: cavera &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$o: cruz &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$p: sol(desenho)&amp;nbsp;&amp;nbsp;&amp;nbsp;$q: lua(desenho) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$r: bolinha branca&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Flechas(direcionais):&lt;/strong&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$s: Cima &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$t: Direita&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$u: Baixo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;$v: Esquerda&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$w: Cima-Direita&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$x: Baixo-Direita&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; $y: Baixo-Esquerda&amp;nbsp;&amp;nbsp;&amp;nbsp;$z: Cima-Esquerda&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: red;"&gt;&lt;span class="bbc_size" style="font-size: 1.35em;"&gt;*OBS:&lt;/span&gt;&lt;/span&gt;Estes símbolos estão localizados no arquivo RPG_rt.exe da pasta do seu RPGMaker 2000.Para editar estes símbolos(fazer seus próprios) você precisará de um programa como o Resource Workshop ou o eXeScope.Com ele você poderá exportar imagens, edita-las e então importa-las de volta, para seu pojeto.&lt;br /&gt;Caso mude algum símbolo lembre-se de seguir como tamplate a tabela de codigos passadas acima, porque eles representam a posição em que está o símbolo.&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_color" style="color: red;"&gt;***&lt;/span&gt;Acredito que absolutamente todos os comando do RM2000 funcionem no RM2003.Digo isso porque testei todos, mas como "errar é humano" pode ser que algum destes comandos não tenham funcionado da mesma maneira nos dois RMakers e isso pode ter passado despercebido por mim.Caso encontre alguma diferença gostaria que alerta-se com um post aqui no tópico.&lt;br /&gt;&lt;br /&gt;Aqui acaba tudo que você precisa saber sobre as mensagens no RPGMaker2000/2003, com certeza todos estes comando ajudam a personalizar mais seu jogo dando mais liberdade e tirando a monotomia das mensagens.Aprenda a explorar esses comandos.&lt;br /&gt;&lt;br /&gt;Antes de mostrar os comandos das mensagens nos RMXP/VX, vamos ver um pouco dos outros comandos(ainda para RM2000/2003) que disse que seriam abordados aqui "Forma de exibição da mensagem" ou "Estilo de Mensagem" e "Gráfico de Face da mensagem" ou "Gráficos de Rosto".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Forma de exibição da mensagem ou Estilo de Mensagem&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Além das opções da posição da janela da imagem(abaixo, centro ou acima) e se mostrar a janela ou não(opaco ou transparente), tambem existem duas opções que podem ser marcadas, são elas:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;"Não permitir que a janela sobreponha o Héroi":&lt;/strong&gt;&lt;/em&gt;com está opção marcada não importa a posição que você colocou para a janela aparecer(acima, centro ou abaixo), porque esta posição vai ser dada por dependência da posição do personagem na tela, desse modo impedindo que a mensagem apareça onde o mesmo está.&lt;br /&gt;&lt;em&gt;&lt;strong&gt;"Permitir que outros eventos continuem":&lt;/strong&gt;&lt;/em&gt;se marcada essa a opção qualquer evento no mapa que esteja sendo executado ao mesmo tempo que a mensagem continuará funcionando, caso não for marcada a opção o evento aguardará o fim de cada mensagem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Gráfico de Face da mensagem ou Gráficos de Rosto&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Com esse comando você poderá decidir se irá aparecer um gráfico de rosto junto da mensagem ou não, e se aparecer, em que lado(esquerdo ou direito) irá aparecer na janela, além de uma ferramente adicional de espelhar.Com a ferramenta espelhar o grafico da face inverte totalmente para o outro lado, ajuda a deixar de uma forma mais legal o dialogo de acordo com o espaço onde acontece se for bem usada esta ferramenta junto da posição da face na janela.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Agora vamos com as versões XP e VX&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&amp;nbsp;\V&lt;/strong&gt;&lt;strong&gt;[x]&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Mostra o valor da variável X. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;\N[x]&lt;br /&gt;Mostra o nome do personagem com ID X.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;\C&lt;/strong&gt;&lt;strong&gt;[x]&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Muda a cor das letras com base na paleta do gráfico de janela. Troque X pelo número correspondente à cor.*No RMaker XP essa cores seguem uma tabela que será mostrada um pouco mais a frente. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;\G&amp;nbsp; &lt;br /&gt;Mostra uma janela com o dinheiro do grupo.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;\.&amp;nbsp; &lt;br /&gt;Cria uma pausa de 0.25 segundos.*No maker XP não funciona.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;\|&amp;nbsp; &lt;br /&gt;Cria uma pausa de 1 segundo.*No maker XP não funciona.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;\! &lt;br /&gt;Cria uma pausa que aguardará até o jogador pressionar uma tecla.*No maker XP não funciona.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;\&amp;gt; &lt;br /&gt;Ao utilizar isto, ao invés do texto ser mostrado letra por letra, toda a mensagem será exibida.*No maker XP não funciona&lt;br /&gt;&lt;br /&gt;&amp;nbsp;\^&amp;nbsp; &lt;br /&gt;Fecha a janela de mensagem.*No maker XP não funciona.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;\\&amp;nbsp; &lt;br /&gt;Exibe o caractere \.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Tabela de cores para os caracteres da mensagem (RMXP):&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img151.imageshack.us/img151/5681/apendice1img2.png" /&gt;&lt;br /&gt;&lt;br /&gt;Vocês devem estar pensando, "eu ja vi isso em algum lugar...", isso porque já viram mesmo(pelo menos quem leu o Help do RPGMaker.Eu só citei quais desses comandos não funcionam no RMaker XP.&lt;br /&gt;Agora antes de colocar na cabeça que o RMaker XP é bem pior nas mensagens(o que de certa forma é verdade, hehe), mas existe um script de mensagens avançado que geralmente(acho que sempre) vem junto do Help do RPGMaker XP.&lt;br /&gt;&lt;br /&gt;*Caso alguém não tenha o Help com este script, está interessado em ter, post aqui pedindo.&lt;br /&gt;&lt;br /&gt;Agora, como disse antes, vamos ver um pouco mais de &lt;strong&gt;"Opções de Mensagem"&lt;/strong&gt;.Na verdade não vamos ver exatamente "Opções de Mensagem" porque tudo que tinha para ser visto sobre o mesmo ja foi visto na 3ªAula, mas então vamos falar do que seria o equivalente no RMVX.Este comando está inbutido do comando Mostrar Mensagem no VX,então vamos ver o que muda.&lt;br /&gt;&lt;br /&gt;Além de poder escolher entre mostrar janela ou não, também pode escolher em colocar um fundo preto no lugar da janela.Outra coisa bem simples é que no XP não tem como colocar faces por comando do programa, no VX sim.E a ultima diferença é que o usuario pode selecionar a opção "Múltiplas Mensagens" que permite que vocês escreva todas as falas de uma vez chamando o comando só uma vez, daí o próprio programa separa elas em seus limites de altura da janela.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bom com isso acabamos o reforço &lt;em&gt;&lt;span class="bbc_color" style="color: blue;"&gt;"Trabalhando Amplamente as Mensagens"&lt;/span&gt;&lt;/em&gt;, espero que tenham gostado e tirem suas dúvidas se preciso.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Comentários&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Uma parte do conteúdo deste reforço(aliás, boa parte do conteúdo das aulas também) foi retirados dos respectivos arquivos de Help(tive que traduzir algumas partes e explicar melhor) dos próprios RMakers, e o que não foi tirado de lá é de experieêcia própria e também pequenos testes e análises dos comandos(minha memória não é tão boa então vivo tendo que relembrar algumas coisinhas dos eventos).Lembrando também que as aulas e os apêndices são feito de forma discontraída e de fácil entendimento(espero que esteja) tentando fugir da forma que são os livros(feitos formalmente) para ficar mais fácil de passar o conteudo, e que só a leitura as vezes não funciona por isso estou aqui disponível como "professor" para ajudar a esclarecer dúvidas(e como todo pofessor, também aprendo com os alunos).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Link para:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;nenhum&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Extras:&lt;/b&gt;&lt;br /&gt;&lt;em&gt;nenhum&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-7207918997465952456?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/7207918997465952456/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/trabalhando-amplamente-as-mensagens.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7207918997465952456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/7207918997465952456'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/trabalhando-amplamente-as-mensagens.html' title='Trabalhando Amplamente as Mensagens'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-9111362021829660364</id><published>2009-12-18T13:55:00.000-02:00</published><updated>2009-12-18T13:55:51.213-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialEventos'/><title type='text'>Switchs Locais</title><content type='html'>&lt;strong&gt;Terceiro reforço das aulas de programação por evento&lt;br /&gt;por zecomeia&lt;br /&gt;&lt;br /&gt;&lt;span class="bbc_size" style="font-size: 1.45em;"&gt;Switchs Locais&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Introdução&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Um reforço bem curto afim apenas de esclarecer as switchs locais.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Uso geral&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A diferença entre as switchs comuns que conhecemos até então e as switchs locais é que as locais só valem para o evento em questão, ou seja, não tem efeito sobre outros efeito alem do próprio onde é usado.&lt;br /&gt;Como as switchs locais só valem para o evento em que são usadas então usamos ela para trocar de página nos eventos(isso não significa que não pode ser usadas com a mesma função que as normais, mas vale lembrar que não afeta outros eventos).Ex:&lt;br /&gt;&lt;br /&gt;Crie um evento como nas imagens a seguir:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img524.imageshack.us/img524/5070/apendice3img1.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="377" id="ncode_imageresizer_container_28" onload="NcodeImageResizer.createOn(this);" src="http://img524.imageshack.us/img524/5070/apendice3img1.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img403.imageshack.us/img403/6940/apendice3img2.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="377" id="ncode_imageresizer_container_25" onload="NcodeImageResizer.createOn(this);" src="http://img403.imageshack.us/img403/6940/apendice3img2.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;table class="ncode_imageresizer_warning" id="ncode_imageresizer_warning_27" style="width: 508px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="td1" width="20"&gt;&lt;img alt="" border="0" height="16" src="http://www.santuariorpgmaker.com/forum/Themes/santuario/images/icons/assist.gif" width="16" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://img518.imageshack.us/img518/1995/apendice3img3.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="377" id="ncode_imageresizer_container_27" onload="NcodeImageResizer.createOn(this);" src="http://img518.imageshack.us/img518/1995/apendice3img3.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img242.imageshack.us/img242/4253/apendice3img4.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="377" id="ncode_imageresizer_container_10" onload="NcodeImageResizer.createOn(this);" src="http://img242.imageshack.us/img242/4253/apendice3img4.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img514.imageshack.us/img514/9324/apendice3img5.png"&gt;&lt;img alt="" border="0" class="bbc_img" height="377" id="ncode_imageresizer_container_20" onload="NcodeImageResizer.createOn(this);" src="http://img514.imageshack.us/img514/9324/apendice3img5.png" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Analise o evento e o efeito proporcionado ao executa-lo.&lt;br /&gt;&lt;br /&gt;Agora se tentar coloca uma condição com uma switch local em um evento e ativar a switch em outro evento não funcionará.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Comentários&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Viram como é fácil, realmente agora não tem mais nada o que dizer, mas caso tenha restado duvidas pergunte.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Link para:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;nenhum&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Extras:&lt;/b&gt;&lt;br /&gt;&lt;em&gt;nenhum&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5363999679499377237-9111362021829660364?l=www.colmeia-do-ze.co.cc' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.colmeia-do-ze.co.cc/feeds/9111362021829660364/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/switchs-locais.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/9111362021829660364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5363999679499377237/posts/default/9111362021829660364'/><link rel='alternate' type='text/html' href='http://www.colmeia-do-ze.co.cc/2009/12/switchs-locais.html' title='Switchs Locais'/><author><name>zecomeia</name><uri>http://www.blogger.com/profile/00102973673274374898</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_SnDRv81YMmc/TSnGF_mOctI/AAAAAAAAADI/0UZBvVAdj0U/S220/logo_ZC_forums.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5363999679499377237.post-8341148261759055193</id><published>2009-12-18T13:51:00.000-02:00</published><updated>2009-12-18T13:52:58.504-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TutorialEventos'/><title type='text'>Lógica</title><content type='html'>&lt;b&gt;&lt;i&gt;Segundo reforço das aulas de programação por evento&lt;br /&gt;por zecomeia&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 1.45em;"&gt;&lt;b&gt;&lt;i&gt;Lógica&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Introdução&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;No começo é difícil entender a Lógica(no nosso caso lógica Booleana, procure por George Boole na wikipedia), mas com o tempo rapidamente vai ficar fácil, basta concentração.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;O que podemos considerar como lógica?&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Qualquer afirmação que fazemos é uma lógica independente de estar “certa” ou “errada”.Ex:&lt;br /&gt;&lt;br /&gt;3 + 43 = 2&lt;br /&gt;&lt;br /&gt;Isto é uma lógica, mas o importante é se preocupar se a lógica é verdadeira ou falsa.No exemplo acima se formos pensar na matemática podemos dizer que aquela lógica é falas, mas em outros casos aquele resultado, 2 por exemplo, pode ser apenas representativo da situação(estado) em que &lt;br /&gt;afirmação(3 + 43 =) se encontra no contexto de onde ela foi aplicada.&lt;br /&gt;Agora parece que complicou mas veremos como isso é simples.Então vamos ver sobre os estados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Estados&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O que nos importa para a programação são os estados que&amp;nbsp; podem&amp;nbsp; ser "verdadeiro e "falso"(existe o nulo também, mas não vamos usá-lo por não ser usado na programação por eventos para o nosso caso).&lt;br /&gt;Veja a seguir:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;Verdadeiro = ON&amp;nbsp; = 1&lt;br /&gt;Falso&amp;nbsp; &amp;nbsp; &amp;nbsp; = OFF = 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Iremos usar o 0 e 1 para representar.Resumindo o 0(falso) será "desligado", e 1(verdadeiro) será "ligado".&lt;br /&gt;EX:&lt;br /&gt;Geralmente em aparelho eletrônicos, junto ao botão de Liga/Desliga tem um símbolo de um 0 e 1, quando está ligado a chave está pro lado do 1 e desligado pro lado do zero.&lt;br /&gt;&lt;br /&gt;Como só usamos 0 ou 1 então temos que usar uma matemática baseada nas lógicas:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;AND/E:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;A lógica AND(E em português) diz que a saída só será 1 se A and B forem iguais 1(A e B no caso porque só existem esses dois termos, caso existissem mais termos todos teriam que ser iguais &lt;br /&gt;a 1).Então se repararmos bem o que a lógica AND faz é &lt;b&gt;&lt;i&gt;multiplicar&lt;/i&gt;&lt;/b&gt;[/i] os termos.&lt;br /&gt;&lt;br /&gt;Veja a tabela verdade da lógica AND:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;&amp;nbsp;Resultado&lt;br /&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usamos a simbologia a seguir para a lógica AND:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img11.imageshack.us/img11/4383/reforo2img1.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img11.imageshack.us/img11/4383/reforo2img1.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;A x B = Resultado&lt;br /&gt;&lt;br /&gt;Lógica &lt;b&gt;&lt;i&gt;OR/OU&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;A lógica OR(OU em português) diz que a saída será 1 se A or B forem iguais 1(A e B no caso porque só existem esses dois termos, caso existissem mais termos pelo menos 1 teria que ser igual &lt;br /&gt;a 1).Então se repararmos bem o que a lógica OR faz é &lt;b&gt;&lt;i&gt;somar&lt;/i&gt;&lt;/b&gt; os termos.&lt;br /&gt;&lt;br /&gt;Veja a tabela verdade da lógica OR:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&amp;nbsp;&amp;nbsp;Resultado&lt;br /&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;0&lt;br /&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;0&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ao olhar a tabela acima você deve estar se perguntando:&lt;br /&gt;“Ué?!?!Se a porta lógica OR soma os termo então 1 + 1 tem que ser igual a 2.”&lt;br /&gt;Só que isso não acontece porque usamos a lógica para estados de base binária, ou seja, a saída só pode ser 0(desligado) ou 1(ligado).Pense assim, se fosse igual a 2 então o sistema estaria ligado duas vezes?!?!Acho que entenderam onde quero chegar.&lt;br /&gt;&lt;br /&gt;Usamos a simbologia a seguir para a lógica OR:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/3499/reforo2img2.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/3499/reforo2img2.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;A + B = Resultado&lt;br /&gt;&lt;br /&gt;Lógica &lt;b&gt;&lt;i&gt;NOT/NÃO&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;A lógica NOT(NÃO em português) diz que a saída será 1 se a entrada NÃO for 1.Ou seja se a entrada for 0 a saída será 1, se a entrada for 1 a saída será 0.Resumindo a lógica NOT inverte os estados binários 0 e 1. &lt;br /&gt;&lt;br /&gt;Veja a tabela verdade da lógica NOT:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Entrada(A)&amp;nbsp;&amp;nbsp;&amp;nbsp;Saída(Resultado = Ā)&lt;br /&gt;0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;br /&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Usamos a simbologia a seguir para a lógica NOT:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/2348/reforo2img3.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/2348/reforo2img3.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;A = Ā&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;*OBS: Ā(A barrado) significa que é o inverso de A.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Alguns postulados de Matemática booleana&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Antes de vermos como usar essas lógicas no RPGMaker vamos ver algumas analises que nos ajudam no ato de calcular os resultados e formar lógicas que nos ajude a criar nossos sistemas.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Teoremas de De Morgan&lt;/i&gt;&lt;br /&gt;***OBS:Lembra do A barrado, a partir de agora no lugar de uma barra em cima da letra será usada apenas uma aspas simples(apóstrofo) para representar cada barra.&lt;br /&gt;&lt;br /&gt;Vamos entender a afirmação abaixo.Como a barra inverte o valor(de 0 para 1 e vice versa) então se invertemos uma variável duas vezes ela será a mesma coisa de não inverte-la.&lt;br /&gt;A’’ = A &lt;br /&gt;&lt;br /&gt;Nesse próximo caso vamos usar algo conhecido como “barrão” isso significa que a barra de inversão abrange toda a expressão entre parênteses.A expressão abaixo significa que a inversão da soma de termos é igual a multiplicação dos termos já invertidos.&lt;br /&gt;(A + B)’ = A’ x B’&lt;br /&gt;&lt;br /&gt;No caso abaixo podemos ver que o processo é parecido com o do caso anterior.Onde agora a inversão da multiplicação de termos é igual a soma dos termos invertidos.&lt;br /&gt;(A x B)’ = A’ + B’&lt;br /&gt;&lt;br /&gt;A partir das analises dos teoremas de De Morgan mostrados acima fica mais fácil a compreensão de algumas lógicas, além da criação de outras como a “coincidência”(“ou exclusivo“ conhecido também como XOR), mas isso não vem ao caso, então se ficou interessado serão postados links pra saber sobre o assunto no final da aula.&lt;br /&gt;Outra coisa que essas analises nos ajudam é na simplificação das expressões feitas para a lógica de seu programa, isso é muito importante.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Usando a Lógica Booleana no RPGMaker&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Alguns devem estar se perguntando que diabos isso me ajudará a programar no rpgmaker, pois agora vou explicar um pouco melhor e mostrar alguns exemplos, perceberás que você já usava essas lógicas sem nem mesmo perceber.&lt;br /&gt;&lt;br /&gt;Para usarmos essas lógicas a nosso favor no RPGMaker devemos usar as indispensáveis ferramentas:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Condições, Variáveis e Switchs.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;*OBS:Ainda não passei a aula sobre condições mas já está sendo feita(falta uns retoques), então sugiro que se não saiba nada sobre condições pare de ler aqui e vá ler a aula de condições caso ela já tenha sido postada.&lt;br /&gt;&lt;br /&gt;Primeiros vamos pensar no caso das switchs por ser mais simples.&lt;br /&gt;Quando você abre o comando de “condições”&amp;nbsp; e seleciona a condição como “switch” lá na aba 1, pode se ver que é possível escolher entre “ON” e “OFF” para a condição da switch.Agora lembra-se dos nosso estados binários 0 e 1?Sim, ON e OFF são exatamente eles neste caso.Então que tal formarmos uma lógica AND com as condições para dois termos(switchs nos casos).Vamos lá então.&lt;br /&gt;&lt;br /&gt;Primeiro nomeie duas switchs, uma A e a outra como B e deixe as duas como “OFF”.&lt;br /&gt;*OBS:As switch s já começam com seu estado natural em “OFF”, mas para efeito didático use o comando e deixe como OFF as switchs.&lt;br /&gt;&lt;br /&gt;Agora crie duas condições, onde a segunda condição se encontra no corpo da primeira.A primeira condição é que a switch A tem que estar ON, e a segunda condição é que a switch B tem que estar ON.Dentro da segunda condição coloque uma mensagem apenas para verificarmos o efeito, pode ser “A e B estão ligadas.”, desta forma:&lt;br /&gt;&lt;table class="ncode_imageresizer_warning" id="ncode_imageresizer_warning_23" style="width: 507px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="td1" width="20"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="td2"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;a href="http://img7.imageshack.us/img7/679/reforo2img4.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="378" id="ncode_imageresizer_container_23" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/679/reforo2img4.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora lembra da tabela verdade da lógica AND?Vamos comprovar se nossas condições do evento estão mesmo seguindo está lógica.Faça os testes um por um mudando os valores das switchs no evento conforme a tabela verdade da lógica AND e verificando os resultados.&lt;br /&gt;&lt;br /&gt;Agora vamos ver a situação da lógica OR.&lt;br /&gt;Crie outro evento e deixe no estado OFF aquelas duas switchs como no primeiro evento feito com o AND.&lt;br /&gt;Agora vamos criar nossas condições.Faça a primeira condição como A igual a ON e coloque exceção.No corpo dessa primeira condição vamos colocar uma mensagem pra verificar o efeito, pode ser “A ou B está(ão) ligadas.”.Agora na exceção da primeira condição nós vamos fazer a segunda condição, que será B igual ON para o funcionamento, e não há necessidade de colocar uma condição. No corpo da segunda condição coloque aquela mesma mensagem da primeira para verificarmos o resultado.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/4185/reforo2img5.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="378" id="ncode_imageresizer_container_26" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/4185/reforo2img5.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Faça os testes assim como foi feito para a lógica AND, mas claro, seguindo a tabela verdade da lógica OR.&lt;br /&gt;&lt;br /&gt;*Parecer uma OR, o conteúdo do corpo da primeira condição tem que ser igual ao conteúdo da segunda.&lt;br /&gt;&lt;br /&gt;Está na hora de ver a situação da lógica NOT.&lt;br /&gt;Crie outro evento e desta vez usaremos apenas a switch A, deixe-a no estado OFF.Faça a condição(sem exceção) como A igual a &lt;span style="color: red;"&gt;“OFF”&lt;/span&gt;.No corpo da condição coloque uma mensagem para verificarmos o resultado, pode ser “A está desligada.”.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/4787/reforo2img6.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="378" id="ncode_imageresizer_container_30" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/4787/reforo2img6.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Teste o evento verificando as duas situações da tabela verdade da lógica NOT.&lt;br /&gt;&lt;br /&gt;Agora pense como usando esses elementos ao mesmo tempo a infinidade de “expressões” que podem ser feitas para trabalhar o seu evento, lembrando que seguindo esses princípios podem ser criadas condições para mais termos e não apenas 2 como na maioria de nossos exemplos.&lt;br /&gt;&lt;br /&gt;Veremos agora como as possibilidades se ampliam ainda mais quando usamos a lógica aplicada com as condições e as variáveis.&lt;br /&gt;&lt;br /&gt;Lembra daquele primeiro exemplo deste texto( 3 + 43 = 2 ), pois é, com variáveis pode-se transformá-lo em uma lógica verdadeira.Veja o exemplo:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img7.imageshack.us/img7/4334/reforo2img7.jpg"&gt;&lt;img alt="" border="0" class="bbc_img" height="378" id="ncode_imageresizer_container_24" onload="NcodeImageResizer.createOn(this);" src="http://img7.imageshack.us/img7/4334/reforo2img7.jpg" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Exemplo bem bobo, né?Mas isso nos mostra que podemos criar condições que executem algo que queremos quando a variável assumir determinado valor.Isso significa que com uma variável temos uma switch de infinitos(teoricamente) estados e não só 2( estado 0 e 1) como nossa switch convencional.&lt;br /&gt;Lembrando que nosso comando de condição no caso de variáveis nos dá ferramentas que nos permite comparar uma variável em relação a um numero constante escolhido na hora ou á uma 
