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

Inserir nome utilizando o teclado

Iniciado por Raizen, 14/06/2013 às 18:53

14/06/2013 às 18:53 Última edição: 14/06/2013 às 18:56 por Raizen
Inserir nome do herói com o teclado Ace
por lasso[/I]

Introdução

Tem as mesmas funções do "Inserir nome do herói", porém usa o teclado.

Screenshots (da versão do VX, porém é igual)



Como usar

Coloque acima de Main.

Vá à 3ª aba dos comandos do evento, cloque "Chamar Script" e chame isso
change_name(id, caracteres)

sendo id o id do personagem e caracteres o numero de caracteres
nao tem limite pro numero de caracteres

Comparibilidade:VX Ace

Script
################################################################################
# Inserir nome do herói com o teclado Ace                                      #
################################################################################
#--------------------------------Créditos--------------------------------------#
################################################################################
# Por: Lasso.                                                                  #
################################################################################
#-----------------------------Características----------------------------------#
################################################################################
# Tem as mesmas funções do "Inserir nome do herói", porém usa o teclado.       #
################################################################################
#--------------------------------Intruções-------------------------------------#
################################################################################
# Coloque acima de Main.                                                       #
#                                                                              #
# Vá à 3ª aba dos comandos do evento, cloque "Chamar Script" e chame isso      #
# change_name(id, caracteres)                                                  #
# sendo id o id do personagem e caracteres o numero de caracteres              #
# nao tem limite pro numero de caracteres                                      #
################################################################################
$nome_id = 0
$nome_n = 0
module Keys
  @getAsyncKeyState = Win32API.new('user32', 'GetAsyncKeyState', 'i', 'i')
  @last_array = Array.new(256, false)
  @trigger = Array.new(256, false)
  @press = Array.new(256, false)
  def self.update
    @trigger = Array.new(256, false)
    @press = Array.new(256, false)
    for i in 0..255
      @press[i] = (@getAsyncKeyState.call(i) == 0)? false : true
      if @last_array[i] == false and @press[i] == true
        @trigger[i] = true
      end
    end
    @last_array = @press
  end
  def self.trigger?(i)
    return @trigger[i]
  end
  def self.press?(i)
    return @press[i]
  end
end
module Input
  class << self
    alias keys_update update
  end
  def self.update
    self.keys_update
    Keys.update
  end
end
class Window_Name < Window_Base
  attr_reader   :name
  attr_reader   :index
  attr_reader   :max_char
  def initialize(actor_id, max_char)
    super(0, 0, 544, 128)
    @actor = $game_actors[actor_id]
    @name = @actor.name
    @max_char = max_char
    @default_name = @name
    @index = @name.size
    self.active = false
    refresh
    update_cursor
  end
  def restore_default
    @name = @default_name
    @index = @name.size
    refresh
    update_cursor
  end
  def add(character)
    if @index < @max_char and character != ''
      @name += character
      @index += 1
      refresh
      update_cursor
    end
  end
  def back
    if @index > 0
      name_array = @name.split(//)
      @name = ""
      for i in 0...name_array.size-1
        @name += name_array[i]
      end
      @index -= 1
      refresh
      update_cursor
    end
  end
  def item_rect(index)
    rect = Rect.new(0, 0, 0, 0)
    rect.x = 220 - (@max_char + 1) * 12 + index * 24
    rect.y = 36
    rect.width = 24
    rect.height = line_height
    return rect
  end
  def refresh
    self.contents.clear
    draw_actor_face(@actor, 0, 0)
    name_array = @name.split(//)
    for i in 0...@max_char
      c = name_array[i]
      c = '_' if c == nil
      self.contents.draw_text(item_rect(i), c, 1)
    end
  end
  def update_cursor
    self.cursor_rect = item_rect(@index)
  end
  def update
    super
    update_cursor
  end
end
class Scene_NameInput < Scene_MenuBase
  CHARACTERS = [[65,'a'],[66,'b'],[67,'c'],[68,'d'],[69,'e'],[70,'f'],[71,'g'],[72,'h'],[73,'i'],[74,'j'],[75,'k'],[76,'l'],[77,'m'],[78,'n'],[79,'o'],[80,'p'],[81,'q'],[82,'r'],[83,'s'],[84,'t'],[85,'u'],[86,'v'],[87,'w'],[88,'x'],[89,'y'],[90,'z'],[48,'0'],[49,'1'],[50,'2'],[51,'3'],[52,'4'],[53,'5'],[54,'6'],[55,'7'],[56,'8'],[57,'9'],[32,' '],[96,'0'],[97,'1'],[98,'2'],[99,'3'],[100,'4'],[101,'5'],[102,'6'],[103,'7'],[104,'8'],[105,'9']]
  ENTER = 13
  BACKSPACE = 8
  LEFT_SHIFT = 160
  RIGHT_SHIFT = 161
  def start
    super
    @actor = $game_actors[$nome_id]
    @edit_window = Window_Name.new($nome_id, $nome_n)
  end
  def terminate
    super
    @edit_window.dispose
  end
  def update
    super
    @edit_window.update
    if Keys.trigger?(BACKSPACE)
      if @edit_window.index > 0
        @edit_window.back
      end
    elsif Keys.trigger?(ENTER)
      if @edit_window.name == ''
        @edit_window.restore_default
      else
        @actor.name = @edit_window.name
        return_scene
      end
    end
    for i in CHARACTERS
      if Keys.trigger?(i[0])
       unless @edit_window.index == @edit_window.max_char
          case shift?
          when true
            @edit_window.add(i[1].upcase)
          when false
            @edit_window.add(i[1])
          end
        end
      end
    end
  end
  def shift?
    return (Keys.press?(LEFT_SHIFT) or Keys.press?(RIGHT_SHIFT))
  end
end
def change_name(id,characters)
  $nome_id = id
  $nome_n = characters
  SceneManager.call(Scene_NameInput)
end



Créditos e Agradecimentos

  • Criado por lasso.

Que script legal, muito bom mesmo e ainda coloca como chamar =)
+ouro raizen!

Gostei *-*  :clap:
Click na Imagem para ampliar-la


Cara o Meu Jogo ta Dando esse Erro Quando eu Chamo o Script e eu fiz tudo certo. Por Favor Sera Que Você Sabe o Que Deu Esse Erro ou Coisa Assim?  :T.T:

Spoiler
[close]

Citação de: Tobi Madara online 10/07/2013 às 02:20
Cara o Meu Jogo ta Dando esse Erro Quando eu Chamo o Script e eu fiz tudo certo. Por Favor Sera Que Você Sabe o Que Deu Esse Erro ou Coisa Assim?  :T.T:

Spoiler
[close]
Acredito que você não tenha editado o "ID" ali no "Chamar Script".  Troque o "ID" pelo próprio ID do personagem.

  Se não for isso, só o Raizen dai. xD

Citação de: Tobi Madara online 10/07/2013 às 02:20
Cara o Meu Jogo ta Dando esse Erro Quando eu Chamo o Script e eu fiz tudo certo. Por Favor Sera Que Você Sabe o Que Deu Esse Erro ou Coisa Assim?  :T.T:

Spoiler
[close]
Erros na linha 1414 são erros de chamadas de script :X, ou seja, você utilizou o Chamar Script de modo incorreto, mande aqui como utilizou isso xD. Na verdade o lobozero falou praticamente oque aconteceu k.

Primeiramente gostaria de agradecer pelo script, obrigado e parabéns, segundo gostaria de saber se há como colocar um sistema de sobrenome pré-definido, algo similar as series Mass Effect e Dragon Age, pretendo acrescentar dublagem em meu projeto, grato desde já! abraços. :ok:
"Não é preciso ter olhos abertos para ver o sol, nem é preciso ter ouvidos afiados para ouvir o trovão. Para ser vitorioso você precisa ver o que não está visível."