Lua RPG Maker
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

[Pedido] Condição

2 participantes

Ir para baixo

[Pedido] Condição Empty [Pedido] Condição

Mensagem por vinisan07 Seg Dez 26, 2011 6:16 pm

Eaw galera da lua não, de marte besta!
Enquanto reabastecemos nossas naves esperando a mensagem para poder voltar a terra, nós se ocupamos
com outras coisas, eu estou fazendo uns trabalhos, etc.
Meu pedido seria um script de condição de tecla, um coração generoso poderia criar um ou achar.
Definições:
A condição seria que se qualquer tecla, qualquer tecla do teclado não pô, do mouse fosse pressionado aconteceria algo, tipo, se pressionasse a tecla P abrisse o inventário (Lembrando que este script
deve ser personalizável), o script deve ser para vx, vlw pela atenção!
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por JohnBolton Seg Dez 26, 2011 8:46 pm

Fiz para você, primeiro coloque este script do MaxHero e da RTH acima do main:

Código:
#===============================================================================
# Keyboard Extensor [RMVX] and [RMXP] 1.5
#-------------------------------------------------------------------------------
# Credits: Maxhero and RTH
#===============================================================================
module Input
 
  #--------------------------------------------------------------------------
  # Constantes usada pelo Input
  #--------------------------------------------------------------------------
 
  Letter = {
    'A' => 65,
    'B' => 66,
    'C' => 67,
    'D' => 68,
    'E' => 69,
    'F' => 70,
    'G' => 71,
    'H' => 72,
    'I' => 73,
    'J' => 74,
    'K' => 75,
    'L' => 76,
    'M' => 77,
    'N' => 78,
    'O' => 79,
    'P' => 80,
    'Q' => 81,
    'R' => 82,
    'S' => 83,
    'T' => 84,
    'U' => 85,
    'V' => 86,
    'W' => 87,
    'X' => 88,
    'Y' => 89,
    'Z' => 90
  }
 
  Number = {
    '0' => 48,
    '1' => 49,
    '2' => 50,
    '3' => 51,
    '4' => 52,
    '5' => 53,
    '6' => 54,
    '7' => 55,
    '8' => 56,
    '9' => 57
  }
 
  Numpad  = {
    '1' => 96,
    '2' => 97,
    '3' => 98,
    '4' => 99,
    '5' => 100,
    '6' => 101,
    '7' => 102,
    '8' => 103,
    '9' => 104,
    '0' => 105
  }
  Special = {
    'BKS'        => 8, 
    'SPC'        => 32,
    'DEL'        => 127,
    'F1'        => 112,
    'F2'        => 113,
    'F3'        => 114,
    'F4'        => 115,
    'F5'        => 116,
    'F6'        => 117,
    'F7'        => 118,
    'F8'        => 119,
    'F9'        => 120,
    'F10'        => 121,
    'F11'        => 122,
    'F12'        => 123,
    'ESC'        => 27,
    'TAB'        => 11,
    'RETURN'    => 13
  }
  Arrow = {
    'LEFT'  => 0x25,
    'UP'    => 0x26,
    'RIGHT' => 0x27,
    'DOWN'  => 0x28
  }
 
  #--------------------------------------------------------------------------
  # Teclas padrões do maker
  #--------------------------------------------------------------------------
 
  A = [16, 90]
  B = [27, 88, 105]
  C = [13, 32, 67]
  X = 65
  Y = 83
  Z = 68
  L = 81
  R = 87
  LEFT  = 0x25
  UP    = 0x26
  RIGHT = 0x27
  DOWN  = 0x28
 
  #--------------------------------------------------------------------------
  # Variaveis
  #--------------------------------------------------------------------------
 
  @@press              = Array.new(256, false)
  @@trigger            = Array.new(256, false)
  @@repeat              = Array.new(256, false)
  @@release            = Array.new(256, false)
  @@repeat_counter      = Array.new(256, 0)
  @@first_repeat_delay  = 15
  @@second_repeat_delay = 8
  @@temp_array          = '0' * 256
 
  #--------------------------------------------------------------------------
  # Funções
  #--------------------------------------------------------------------------
 
  GetKeyboardState = Win32API.new('user32', 'GetKeyboardState', ['P'], 'V')
 
  #--------------------------------------------------------------------------
  # Atualiza o Input
  #--------------------------------------------------------------------------
 
  def self.update
    GetKeyboardState.call(@@temp_array)
    array = @@temp_array.unpack('C*')
    for i in 0...array.size
      if ((array[i] & 0xF0) != 0)
        @@release[i] = false
        if (@@press[i])
          @@repeat_counter[i] -= 1
          if (@@repeat_counter[i] <= 0)
            @@repeat[i]        = true
            @@repeat_counter[i] = @@second_repeat_delay
          else
            @@repeat[i]        = false
          end
          @@trigger[i] = false
        else
          @@trigger[i] = true
          @@repeat[i]  = true
          @@press[i]  = true
          @@repeat_counter[i] = @@first_repeat_delay
        end
      else
        @@release[i] = (@@press[i])
        @@trigger[i] = false
        @@repeat[i]  = false
        @@press[i]  = false
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla está sendo pressionada
  #--------------------------------------------------------------------------
 
  def self.press?(key)
    return key.any? {|k|    self.press?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.press?(k) } if key.is_a?(Hash)
    return @@press[key]
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla acabou se ser pressionada
  #--------------------------------------------------------------------------
 
  def self.trigger?(key)
    return key.any? {|k|    self.trigger?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.trigger?(k) } if key.is_a?(Hash)
    return @@trigger[key]
  end
 
  #--------------------------------------------------------------------------
  # Retorna algumas vezes quando a tecla é mantida pressionada
  #--------------------------------------------------------------------------
 
  def self.repeat?(key)
    return key.any? {|k|    self.repeat?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.repeat?(k) } if key.is_a?(Hash)
    return @@repeat[key]
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla acabou se ser solta
  #--------------------------------------------------------------------------
 
  def self.release?(key)
    return key.any? {|k|    self.release?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.release?(k) } if key.is_a?(Hash)
    return @@release[key]
  end
 
  #--------------------------------------------------------------------------
  # Define o delay do método .repeat?
  #--------------------------------------------------------------------------
 
  def self.set_repeat_delay(first, second = first)
    @@first_repeat_delay  = first
    @@second_repeat_delay = second
  end
 
end

E abaixo deste coloque o que fiz para você:

Código:
module JohnBolton92
 
  #Tecla de abertura da janela de itens
 
  Item = [false, "C"]
 
  #Tecla de abertura da janela de habilidades
 
  Skill = [true, "D"]
 
  #Tecla de abertura da janela de equipamentos
 
  Equip = [true, "E"]
 
  #Tecla de abertura da janela de status
 
  Status = [true, "F"]
 
  #Tecla de abertura da janela de salvamento
 
  Save = [true, "G"]
 
  #Tecla de abertura da janela de carregamento
 
  Load = [true, "H"]
 
  #Tecla de abertura da janela de finalização
 
  End = [true, "I"]
 
  #Efeito Sonoro ao abrir qualquer um das janelas acima
 
  Sound_Effect = [true, "Book"]
 
end

class Scene_Map
  include JohnBolton92
  alias update_bolton92 update
  def update
    if Input.trigger?(eval("Input::Letter#{"[Item[1]]"}")) and Item[0]
      $scene = Scene_Item.new
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[Skill[1]]"}")) and Skill[0]
      $scene = Scene_Skill.new
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[Equip[1]]"}")) and Equip[0]
      $scene = Scene_Equip.new
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[Status[1]]"}")) and Status[0]
      $scene = Scene_Status.new
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[Save[1]]"}")) and Save[0]
      $scene = Scene_File.new(true,false,true)
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[Load[1]]"}")) and Load[0]
      $scene = Scene_File.new(false,false,true)
      sound_effect
    elsif Input.trigger?(eval("Input::Letter#{"[End[1]]"}")) and End[0]
      $scene = Scene_End.new
      sound_effect
    end
    update_bolton92
  end
  def sound_effect
    if Sound_Effect[0]
      Audio.se_play("Audio/SE/" + Sound_Effect[1])
    end
  end
end


Configure no modulo.
Para o primeiro valor das constantes coloque
Código:
true
se quiser que se ao teclar tal tecla abra aquela janela em especifico.
Coloque
Código:
false
se quiser que aquela tecla não abra tal janela em especifico.
O segundo valor é a tecla que abrirá 'x' menu.

Qualquer dúvida, basta perguntar.

Até mais.
JohnBolton
JohnBolton

Mensagens : 6
Data de inscrição : 25/12/2011
Idade : 28
Localização : São Carlos, SP.

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por vinisan07 Ter Dez 27, 2011 6:00 pm

o segundo código é para botar no mesmo script ou em outra aba?
Edit:
Ei eu testei o script, adorei! Era o que eu estava esperando vlw!Mas... faltou o principal que eu queria, eu queria um script que quando precionasse tal tecla acontecia algo, tipo, eu aperto space, e aparece uma mensagem no meio com o nome pause, e outras coisas, entende, mas se você não conseguir, não tem problema!
Mesmo assim adorei o script, vlw! Wink
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por JohnBolton Ter Dez 27, 2011 7:15 pm

Na sua primeira explicação não dava para ter ideia do que você queria. Pensei que fosse daquele jeito lá. E com a última explicação, continuei sem entender muito bem, tente explicar melhor e com mais detalhes, e o que exatamente quer que eu faço para você.

Até
JohnBolton
JohnBolton

Mensagens : 6
Data de inscrição : 25/12/2011
Idade : 28
Localização : São Carlos, SP.

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por vinisan07 Qua Dez 28, 2011 8:52 am

bem, eu quero um script de quando pressionada tal tecla aconteça algo, não status, não equips, não habilidades, e sim um evento que esteja em campo.
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por JohnBolton Qua Dez 28, 2011 10:36 am

Tipo o que o enter faz? Ou quer que ao apertar uma tecla ative qualquer evento do mapa pré-determinado por você? Pois se for isso, é mais simples por eventos.
JohnBolton
JohnBolton

Mensagens : 6
Data de inscrição : 25/12/2011
Idade : 28
Localização : São Carlos, SP.

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por vinisan07 Qui Dez 29, 2011 10:46 am

eu sei, mas o script que eu quero, bem eu num sei explica bem, mas vou tentar, quando o personagem apertar a tecla P acontece algo, nas condições de tecla, só pode usar as teclas Q,W,A,S,D,Shift,Z,X, e as setas, eu queria mais que isso, entendeu? Para poder usar os números e as outras teclas, mas o meu principal é para um jogo que eu estou fazendo para quando o Personagem apertar a tecla P ele acontecesse algo em campo, não abrisse os status, ou outras coisas! Se não entendeu não tem problema, vlw por tentar me ajudar! Smile
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por JohnBolton Qui Dez 29, 2011 12:29 pm

Basta usar este script:
Código:

#===============================================================================
# Keyboard Extensor [RMVX] and [RMXP] 1.5
#-------------------------------------------------------------------------------
# Credits: Maxhero and RTH
#===============================================================================
module Input
 
  #--------------------------------------------------------------------------
  # Constantes usada pelo Input
  #--------------------------------------------------------------------------
 
  Letter = {
    'A' => 65,
    'B' => 66,
    'C' => 67,
    'D' => 68,
    'E' => 69,
    'F' => 70,
    'G' => 71,
    'H' => 72,
    'I' => 73,
    'J' => 74,
    'K' => 75,
    'L' => 76,
    'M' => 77,
    'N' => 78,
    'O' => 79,
    'P' => 80,
    'Q' => 81,
    'R' => 82,
    'S' => 83,
    'T' => 84,
    'U' => 85,
    'V' => 86,
    'W' => 87,
    'X' => 88,
    'Y' => 89,
    'Z' => 90
  }
 
  Number = {
    '0' => 48,
    '1' => 49,
    '2' => 50,
    '3' => 51,
    '4' => 52,
    '5' => 53,
    '6' => 54,
    '7' => 55,
    '8' => 56,
    '9' => 57
  }
 
  Numpad  = {
    '1' => 96,
    '2' => 97,
    '3' => 98,
    '4' => 99,
    '5' => 100,
    '6' => 101,
    '7' => 102,
    '8' => 103,
    '9' => 104,
    '0' => 105
  }
  Special = {
    'BKS'        => 8, 
    'SPC'        => 32,
    'DEL'        => 127,
    'F1'        => 112,
    'F2'        => 113,
    'F3'        => 114,
    'F4'        => 115,
    'F5'        => 116,
    'F6'        => 117,
    'F7'        => 118,
    'F8'        => 119,
    'F9'        => 120,
    'F10'        => 121,
    'F11'        => 122,
    'F12'        => 123,
    'ESC'        => 27,
    'TAB'        => 11,
    'RETURN'    => 13
  }
  Arrow = {
    'LEFT'  => 0x25,
    'UP'    => 0x26,
    'RIGHT' => 0x27,
    'DOWN'  => 0x28
  }
 
  #--------------------------------------------------------------------------
  # Teclas padrões do maker
  #--------------------------------------------------------------------------
 
  A = [16, 90]
  B = [27, 88, 105]
  C = [13, 32, 67]
  X = 65
  Y = 83
  Z = 68
  L = 81
  R = 87
  LEFT  = 0x25
  UP    = 0x26
  RIGHT = 0x27
  DOWN  = 0x28
 
  #--------------------------------------------------------------------------
  # Variaveis
  #--------------------------------------------------------------------------
 
  @@press              = Array.new(256, false)
  @@trigger            = Array.new(256, false)
  @@repeat              = Array.new(256, false)
  @@release            = Array.new(256, false)
  @@repeat_counter      = Array.new(256, 0)
  @@first_repeat_delay  = 15
  @@second_repeat_delay = 8
  @@temp_array          = '0' * 256
 
  #--------------------------------------------------------------------------
  # Funções
  #--------------------------------------------------------------------------
 
  GetKeyboardState = Win32API.new('user32', 'GetKeyboardState', ['P'], 'V')
 
  #--------------------------------------------------------------------------
  # Atualiza o Input
  #--------------------------------------------------------------------------
 
  def self.update
    GetKeyboardState.call(@@temp_array)
    array = @@temp_array.unpack('C*')
    for i in 0...array.size
      if ((array[i] & 0xF0) != 0)
        @@release[i] = false
        if (@@press[i])
          @@repeat_counter[i] -= 1
          if (@@repeat_counter[i] <= 0)
            @@repeat[i]        = true
            @@repeat_counter[i] = @@second_repeat_delay
          else
            @@repeat[i]        = false
          end
          @@trigger[i] = false
        else
          @@trigger[i] = true
          @@repeat[i]  = true
          @@press[i]  = true
          @@repeat_counter[i] = @@first_repeat_delay
        end
      else
        @@release[i] = (@@press[i])
        @@trigger[i] = false
        @@repeat[i]  = false
        @@press[i]  = false
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla está sendo pressionada
  #--------------------------------------------------------------------------
 
  def self.press?(key)
    return key.any? {|k|    self.press?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.press?(k) } if key.is_a?(Hash)
    return @@press[key]
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla acabou se ser pressionada
  #--------------------------------------------------------------------------
 
  def self.trigger?(key)
    return key.any? {|k|    self.trigger?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.trigger?(k) } if key.is_a?(Hash)
    return @@trigger[key]
  end
 
  #--------------------------------------------------------------------------
  # Retorna algumas vezes quando a tecla é mantida pressionada
  #--------------------------------------------------------------------------
 
  def self.repeat?(key)
    return key.any? {|k|    self.repeat?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.repeat?(k) } if key.is_a?(Hash)
    return @@repeat[key]
  end
 
  #--------------------------------------------------------------------------
  # Verifica se se a tecla acabou se ser solta
  #--------------------------------------------------------------------------
 
  def self.release?(key)
    return key.any? {|k|    self.release?(k) } if key.is_a?(Array)
    return key.any? {|i, k| self.release?(k) } if key.is_a?(Hash)
    return @@release[key]
  end
 
  #--------------------------------------------------------------------------
  # Define o delay do método .repeat?
  #--------------------------------------------------------------------------
 
  def self.set_repeat_delay(first, second = first)
    @@first_repeat_delay  = first
    @@second_repeat_delay = second
  end
 
end

Instruções:

Código:
Usando Letras
Input::Letter['A']      #Usa a Letra A
Input::Number['1']    #Usa o Numero 1
Input::Numpad['1']  #Usa o Numero 1 do Bloco numerico
Input::Special['BKS'] #Backspace
Input::Special['SPC'] #Espaço
Input::Special['DEL'] #Delete
Input::Special['F1'] #F1
Input::Special['F2'] #F2
Input::Special['F3'] #F3
Input::Special['F4'] #F4
Input::Special['F5'] #F5
Input::Special['F6'] #F6
Input::Special['F7'] #F7
Input::Special['F8'] #F8
Input::Special['F9'] #F9
Input::Special['F10'] #F10
Input::Special['F11'] #F11
Input::Special['F12'] #F12
Input::Special['ESC'] #ESC
Input::Special['TAB'] #TAB
Input::Special['RETURN'] #Enter
Em Scripts:
Se eu for usar fica assim:
if Input.trigger?(Input::Letter['A']) #Se Gatilhar (apertar e soltar) a tecla A
e para os eventos:
Condição>Script: Input.trigger?(Input::Letter['A'])
JohnBolton
JohnBolton

Mensagens : 6
Data de inscrição : 25/12/2011
Idade : 28
Localização : São Carlos, SP.

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por vinisan07 Qui Dez 29, 2011 6:37 pm

tem que colocar Input::Letter['A'] para ativar a condição da tecla A é?
Edit: aew quando eu testei o personagem não se mecheu, porque?! e me ensina a usar este script, eu num so muito disso! Sad
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por JohnBolton Sáb Dez 31, 2011 3:09 pm

Mais ou menos isso, vá na 1ª aba dos eventos, lá, acesse o comando "Condições".
Abrirá uma nova janela, nesta janela, vá na 4ª aba, e no ultimo comando, selecione "Script"
E coloque as condições de tecla lá, por exemplo:
Código:
Input.trigger?(Input::Letter['A'])

Até mais.
JohnBolton
JohnBolton

Mensagens : 6
Data de inscrição : 25/12/2011
Idade : 28
Localização : São Carlos, SP.

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por vinisan07 Dom Jan 01, 2012 12:02 pm

Ah, deixa pra lá, o que tenho já me serve, este script não funcionou comigo, a condição não funcionou, o personagem não dá para mexer e as teclas que dá para usar é X, Esc, Enter. Sad Deixa pra lá, tento me virar nos eventos! VLW! Very Happy
vinisan07
vinisan07

Mensagens : 35
Data de inscrição : 01/12/2011

Ir para o topo Ir para baixo

[Pedido] Condição Empty Re: [Pedido] Condição

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos