RPG maker VX


Unirse al foro, es rápido y fácil

RPG maker VX
RPG maker VX
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.
Últimos temas
» Script de menu
por maxi Jue 04 Dic 2014, 1:44 pm

» Ayuda intro animado!!!
por maxi Miér 03 Dic 2014, 9:41 pm

» ayuda con este engin
por maxi Miér 03 Dic 2014, 8:42 am

» Hud de Vida 100% Personalizable - Engine Sencillo! Sin Scripts :)
por davidaikago Jue 20 Nov 2014, 10:58 am

» Ultimate parallax control by:GDS [ace]
por arellano Miér 08 Oct 2014, 8:28 pm

» Script Touhou (animated) Map name (v1.4)
por davidaikago Miér 08 Oct 2014, 2:09 pm

» tutorial puerta nueva
por davidaikago Miér 08 Oct 2014, 9:08 am

» cámara de fotos
por davidaikago Miér 08 Oct 2014, 9:05 am

» Imperial Action System II Demo
por davidaikago Miér 08 Oct 2014, 8:47 am

» VE Batalla animada [ACE]
por FhierusIV Jue 18 Sep 2014, 10:57 am

» Nuevo Reglamento del Foro [Vigente desde Septiembre 2014]
por maxi Miér 17 Sep 2014, 8:37 am

» MOG|Animated Title
por Souta21 Mar 09 Sep 2014, 7:24 pm

» Tutorial Engine - Cambiar Character al Equipar Objeto
por maxi Lun 21 Jul 2014, 10:19 am

» Script de climas
por gambasoxd Sáb 19 Jul 2014, 8:58 am

» Script de contraseña(codigo) para abrir un cofre
por rpgame Jue 03 Jul 2014, 6:03 pm

¿Quién está en línea?
En total hay 1 usuario en línea: 0 Registrados, 0 Ocultos y 1 Invitado

Ninguno

[ Ver toda la lista ]


El record de usuarios en línea fue de 117 durante el Mar 09 Ago 2011, 3:39 pm

Script: Advanced Controls System v1.0

Ir abajo

Script: Advanced Controls System v1.0 Empty Script: Advanced Controls System v1.0

Mensaje por ClubIce Lun 27 Sep 2010, 7:27 pm

Advance Controls System v1.0

Autor: ClubIce (yo)
Ultima actualización: 27/09/2010
Contacto: por MP o por msn: [Tienes que estar registrado y conectado para ver este vínculo]
Licencia: Para proyectos comerciales y no comerciales. si olvidar dar creditos al autor (yo)

Introducción:

Este Script nos permite que el Jugador cambie los controles del juego en cualquier momento.

Caracteristicas:

  • Se pueden usar casi todas la teclas del teclado para configurarla como algun control.
  • Se puede cambiar los controles de desplazamiento, cosa que no te permite el RMVX.
  • Por cada partida guardada, puede tener una configuración diferente a la de las demas partidas.
Instalación

Pegar sobre el Main. Deben colocar la siguiente imagen con el nombre de Controls en la carpeta System:

[Tienes que estar registrado y conectado para ver esa imagen]

Instrucciones:

El Script añade directamente la opción de Controles en el Menú. Ver a continuación la sección de Personalización. Para más información del manejo del Modulo Keyboard, ver sus instrucciones de uso.

Capturas:

Spoiler:

Personalización:

Debajo de las instrucciones en el Script (Advanced Controls Syetem), encotraran la seccion de Personalización del Script.

Script:

Código:
#===============================================================================
#                        ☆ Keyboard Module v1.0 ☆
#===============================================================================
#                            ☆ Scripter Tool ☆
#-------------------------------------------------------------------------------
# * Versión                : 1.0
# * Ultima Actualización    : 27/09/2010
# * Autor                  : ClubIce
# * Contacto                : [Tienes que estar registrado y conectado para ver este vínculo]
# * Licencia                : Para proyectos comerciales y no comerciales,
#                            sin olvidar dar créditos a mí, ClubIce
#
#  ☆ Script hecho para la comunidad de http://rpgmakervx.forosactivos.net ☆
#
#-------------------------------------------------------------------------------
# ● DESCRIPTCIÓN:
#
#  Este modulo permite el uso ilimitado del teclado.
#
#-------------------------------------------------------------------------------
# ● INFORMACIÓN TECNICA:
#
#  ☆ Cantidad de teclas soportadas:
#    106 teclas, ten en cuenta que el modulo lee cualquier tecla, siempre y
#    cuando se dé el código de la tecla correctamente.
#
#  ☆ Teclas soportadas:
#    - Letras : A-Z
#    - Números: 0-9
#    - Numpad : 0-9, +, -, *, /, Coma decimal
#    - Teclas de función: F1-F12
#    - Teclas nativas de Windows: Win. Buttons y Apps Button
#    - Teclas desplazamiento, y desplazamiento de pagina
#    - Botones del Mouse.
#    - CTRL, SHIF, ALT, ENTER, ESCAPE, TAB
#    - Print Screen, Pause/Break
#    - Insertar, Suprimir
#    - Punto, Coma, Guion
#
#-------------------------------------------------------------------------------
# ● INSTALACIÓN:
#
#  Pegar sobre el Main
#
#-------------------------------------------------------------------------------
# ● METODOS:
#
#  ☆ update:
#    Este método es indispensable para el funcionamiento del modulo, debe ser
#    llamado cada vez que se necesite usar los métodos del modulo.
#
#  ☆ trigger?(tecla):
#    Devuelve true si se ha presionado la tecla, pero devuelve false si se
#    sigue presionando esa tecla.
#
#  ☆ repeat?(tecla):
#    Devuelve true periódicamente si se esta presionando la tecla.
#
#  ☆ press?(tecla):
#    Devuelve true si se esta presionando la tecla.
#
#-------------------------------------------------------------------------------
# ● INSTRUCCIONES
#
#  A continuación encontrara dos listados de teclas: el primero contiene el
#    código de cada tecla, el cual es llamado atraves de:
#    Keyboard::<Tecla>
#
#  El segundo listado, contiene el nombre de las teclas como texto, basándose
#    en el código de cada tecla, el cual puede editar
#
#  Para saber que tecla es cual, guíese con el nombre de la tecla, en el
#    listado de teclas, después según el código de la tecla, podrás identificar
#    la tecla en el listado de teclas.
#
#-------------------------------------------------------------------------------
module Keyboard
#===============================================================================
# ● Listado de Codigos
#===============================================================================
  L_MOUSE  = 0x01;  R_MOUSE  = 0x02;  M_MOUSE  = 0x03;  ROLL_UP  = 0x04;
  ROLL_DOWN = 0x05;  BACK      = 0x08;  TAB      = 0x09;  ENTER    = 0x0D;
  SHIFT    = 0x10;  CTRL      = 0x11;  ALT      = 0x12;  PAUSE    = 0x13;
  BLOQ_CAPS = 0x14;  ESCAPE    = 0x1B;  SPACE    = 0x20;  PAGE_UP  = 0x21;
  PAGE_DOWN = 0x22;  _END      = 0x23;  HOME      = 0x24;  LEFT      = 0x25;
  UP        = 0x26;  RIGHT    = 0x27;  DOWN      = 0x28;  SELECT    = 0x29;
  PRINT    = 0x2A;  SNAPSHOT  = 0x2C;  INSERT    = 0x2D;  DELETE    = 0x2E;
  NUM0      = 0x30;  NUM1      = 0x31;  NUM2      = 0x32;  NUM3      = 0x33;
  NUM4      = 0x34;  NUM5      = 0x35;  NUM6      = 0x36;  NUM7      = 0x37;
  NUM8      = 0x38;  NUM9      = 0x39;  A        = 0x41;  B        = 0x42;
  C        = 0x43;  D        = 0x44;  E        = 0x45;  F        = 0x46;
  G        = 0x47;  H        = 0x48;  I        = 0x49;  J        = 0x4A;
  K        = 0x4B;  L        = 0x4C;  M        = 0x4D;  N        = 0x4E;
  O        = 0x4F;  P        = 0x50;  Q        = 0x51;  R        = 0x52;
  S        = 0x53;  T        = 0x54;  U        = 0x55;  V        = 0x56;
  W        = 0x57;  X        = 0x58;  Y        = 0x59;  Z        = 0x5A;
  L_WIN    = 0x5B;  R_WIN    = 0x5C;  APPS      = 0x5D;  NUMPAD0  = 0x60;
  NUMPAD1  = 0x61;  NUMPAD2  = 0x62;  NUMPAD3  = 0x63;  NUMPAD4  = 0x64;
  NUMPAD5  = 0x65;  NUMPAD6  = 0x66;  NUMPAD7  = 0x67;  NUMPAD8  = 0x68;
  NUMPAD9  = 0x69;  MULTIPLY  = 0x6A;  ADD      = 0x6B;  SUBTRACT  = 0x6C;
  SEPARATOR = 0x6D;  DECIMAL  = 0x6E;  DIVIDE    = 0x6F;  F1        = 0x70;
  F2        = 0x71;  F3        = 0x72;  F4        = 0x73;  F5        = 0x74;
  F6        = 0x75;  F7        = 0x76;  F8        = 0x77;  F9        = 0x78;
  F10      = 0x79;  F11      = 0x7A;  F12      = 0x7B;  BLOQ_NUM  = 0x90;
  BLOQ_SCROLL=0x91;  L_SHIFT  = 0xA0;  R_SHIFT  = 0xA1;  L_CONTROL = 0xA2;
  R_CONTROL = 0xA3;  L_ALT    = 0xA4;  R_ALT    = 0xA5;  SEP      = 0xBC;
  DASH      = 0xBD;  DOTT      = 0xBE;
#===============================================================================
# ● Listado de Nombres
#===============================================================================
  Names = {
  0x01 => "CLIC IZQUIERDO",  0x02 => "CLIC DERECHO",
  0x03 => "RUEDA ARRIBA",    0x04 => "CLIC CENTRAL",
  0x05 => "RUEDA ABAJO",      0x08 => "RETROCESO",
  0x09 => "TAB",              0x0D => "ENTER",
  0x10 => "SHIFT",            0x11 => "CONTROL",
  0x12 => "ALT",              0x13 => "PAUSA",
  0x14 => "BLOQ. MAYUS.",    0x1B => "ESCAPE",
  0x20 => "ESPACIO",          0x21 => "PAG. SIGUIENTE",
  0x22 => "PAG. ANTERIOR",    0x23 => "FIN",
  0x24 => "INICIO",          0x25 => "IZQUIERDA",
  0x26 => "ARRIBA",          0x27 => "DERECHA",
  0x28 => "ABAJO",            0x29 => "SELECCION",
  0x2A => "IMPRIMIR",        0x2C => "PRINT SCREEN",
  0x2D => "INSERTAR",        0x2E => "SUPRIMIR",
  0x30 => "0",  0x31 => "1",  0x32 => "2",  0x33 => "3",
  0x34 => "4",  0x35 => "5",  0x36 => "6",  0x37 => "7",
  0x38 => "8",  0x39 => "9",  0x41 => "A",  0x42 => "B",
  0x43 => "C",  0x44 => "D",  0x45 => "E",  0x46 => "F",
  0x47 => "G",  0x48 => "H",  0x49 => "I",  0x4A => "J",
  0x4B => "K",  0x4C => "L",  0x4D => "M",  0x4E => "N",
  0x4F => "O",  0x50 => "P",  0x51 => "Q",  0x52 => "R",
  0x53 => "S",  0x54 => "T",  0x55 => "U",  0x56 => "V",
  0x57 => "W",  0x58 => "X",  0x59 => "Y",  0x5A => "Z",
  0x5B => "WIN. IZQUIERDO",  0x5C => "WIN. DERECHO",
  0x5D => "APLICACIONES",    0x60 => "NUMERO 0",
  0x61 => "NUMERO 1",        0x62 => "NUMERO 2",
  0x63 => "NUMERO 3",        0x64 => "NUMERO 4",
  0x65 => "NUMERO 5",        0x66 => "NUMERO 6",
  0x67 => "NUMERO 7",        0x68 => "NUMERO 8",
  0x69 => "NUMERO 9",        0x6A => "MULTIPLICAR",
  0x6B => "SUMAR",            0x6C => "SEPARADOR",
  0x6D => "RESTAR",          0x6E => "COMA DECIMAL",
  0x6F => "DIVIDIR",          0x70 => "F1",
  0x71 => "F2",  0x72 => "F3",  0x73 => "F4",  0x74 => "F5",
  0x75 => "F6",  0x76 => "F7",  0x77 => "F8",  0x78 => "F9",
  0x79 => "F10",  0x7A => "F11",  0x7B => "F12",
  0x90 => "BLOQ. NUM.",          0x91 => "BLOQ. DESP.",
  0xA0 => "SHIFT IZQUIERDO",      0xA1 => "SHIFT DERECHO",
  0xA2 => "CONTROL IZQUIERDO",    0xA3 => "CONTROL DERECHO",
  0xA4 => "ALT IZQUIERDO",        0xA5 => "ALT DERECHO",
  0xBC => "COMA",  0xBD => "GUION",  0xBE => "PUNTO"
  } 
  GetKeyState = Win32API.new("user32", "GetAsyncKeyState", "i", "i")
  KeyRepeatCounter = {}
 
  module_function
 
  def self.update
    for key in KeyRepeatCounter.keys
      if (GetKeyState.call(key).abs & 0x8000 == 0x8000)
        KeyRepeatCounter[key] += 1
      else
        KeyRepeatCounter.delete(key)
      end
    end
  end
  def self.press?(key)
    return false if key == nil
    return true unless KeyRepeatCounter[key].nil?
    return key_pressed?(key)
  end
  def self.trigger?(key)
    return false if key == nil
    count = KeyRepeatCounter[key]
    press = count.nil? ? key_pressed?(key) : false
    return (count == 0 or press)
  end
  def self.repeat?(key)
    return false if key == nil
    count = KeyRepeatCounter[key]
    return true if count == 0
    if count.nil?
      return key_pressed?(key)
    else
      return (count >= 23 and (count - 23) % 6 == 0)
    end
  end
  def self.key_pressed?(key)
    if (GetKeyState.call(key).abs & 0x8000 == 0x8000)
      KeyRepeatCounter[key] = 0
      return true
    end
    return false
  end
  def self.getKey
    for i in 0...256
      if GetKeyState.call(i) == -32767
        key = i
        break
      end
    end
    return if key == nil
    return Names[key] != nil ? key : 0
  end
end
#===============================================================================
#                    ☆ Advanced Controls System v1.0 ☆
#-------------------------------------------------------------------------------
# * Version                : 1.0
# * Ultima Actialización    : 27/09/2010
# * Autor                  : ClubIce
# * Contacto                : [Tienes que estar registrado y conectado para ver este vínculo]
# * Licencia                : Para proyectos comerciales y no comerciales,
#                            sin olvidar dar créditos a mí, ClubIce
#
#  ☆ Script hecho para la comunidad de http://rpgmakervx.forosactivos.net ☆
#                      ☆ Idea original de maxinm ☆
#
#-------------------------------------------------------------------------------
# ● DESCRIPTCIÓN:
#
#  Este Script nos permite que el Jugador cambie los controles del juego en
#    cualquier momento.
#
#-------------------------------------------------------------------------------
# ● CARACTERISTICAS:
#
#    ☆ Se pueden usar casi todas la teclas del teclado para configurarla como
#      algun control.
#    ☆ Se puede cambiar los controles de desplazamiento, cosa que no te
#      permite el RMVX.
#    ☆ Por cada partida guardada, puede tener una configuración diferente a
#      la de las demas partidas.
#
#-------------------------------------------------------------------------------
# ● INSTALACIÓN:
#
#  Pegar sobre el Main
#
#-------------------------------------------------------------------------------
# ● COMPATIBILIDAD:
#
#  * Incompatible con scripts de Menú u otros Scripts que quitan y/o añaden
#      comandos al Menú. Se corrigiera en la próxima versión.
#
#  * El Script evita que se el Jugador use Gamepad o Joystick.
#
#  Se reemplaza en su totalidad el Modulo Input por el Modulo Keyboard, el
#    cual permite el uso completo del teclado.
#
#  Adicionalmente, se reemplaza los siguientes métodos:
#
#  ☆ Game_Player
#    - debug_through? (mejora de compatibilidad)
#
#  ☆ Scene_Map
#    - update_call_debug (mejora de compatibilidad)
#
#  ☆ Scene_Menu
#    - create_command_window
#    - update_command_selection
#
#  Se alían los siguientes metodos:
#
#  ☆ Scene_Title :
#    - create_game_objects
#
#  ☆ Scene_File  :
#    - write_save_data
#    - read_save_data
#
#-------------------------------------------------------------------------------
# ● INSTRUCCIONES
#
#  El Script añade directamente la opción de Controles en el Menú. Ver a
#    continuación la sección de Personalización. Para más información del manejo
#    del Modulo Keyboard, ver sus instrucciones de uso.
#
#-------------------------------------------------------------------------------
#                          ☆ PERSONALIZACIÓN ☆
#-------------------------------------------------------------------------------
# * Las siguientes lineas son editables.
#-------------------------------------------------------------------------------
module ClubIce        # No toques esta linea!
  module Controls      # No toques esta linea!
# ☆ Palabra la cual va en la opción en el menú.
  CONTROLS_COMMAND = "Controles"
#-------------------------------------------------------------------------------
    RESULTS_TEXTS    = [ # No toques esta línea!
# ☆ Texto que aparece cuando se va a elegir una nueva tecla.
  "Presiona la tecla que deseas usar para esta selección",
# ☆ Texto cuando la nueva tecla elegida no aparece registrada en el
#  modulo Keyboard.
  "¡La tecla seleccionada no esta soportada por la aplicación!",
# ☆ Texto cuando la nueva tecla ya esta siendo usada.
  "¡No puedes usar una tecla mas de una vez!",
# ☆ Texto cuando la nueva tecla está entre las deshabilitadas
  "¡Esta tecla no puede ser usada por la aplicación!"
  ] # No toques esta línea!
#-------------------------------------------------------------------------------
    OPTIONS_COMMANDS = [ # No toques esta línea!
    "Cambiar",          # ☆ Opción Cambiar.
    "Predeterminado",    # ☆ Opción de Predeterminado.
    "Cancelar"          # ☆ Opción de Cancelar.
    ]                    # No toques esta línea!
#-------------------------------------------------------------------------------
    COMMANDS_TEXT    = [ # No toques esta línea!
# ☆ Descripción de la opción de cambiar controles.
    "Cambiar la configuración de los controles.",
# ☆ Descripción de la opción de cambiar los controles a predeterminados
    "Usar la configuración predeterminada del juego.",
# ☆ Este texto indica sobre tecla la F1, que permite entrar a las opciones 
#    por defecto del RMVX; este texto aparece cuando el Jugador selecciona la
#    opción de cancelar.
    "Para Configurar el Gamepad y otras opciones, presiona F1"
    ] # No toques esta línea!
#-------------------------------------------------------------------------------
# * La siguiente sección de personalización hace referencia al Modulo Keyboard,
#    por lo cual, debes leer las instrucciones de este antes
#    de continuar con esta sección de la personalización.
#-------------------------------------------------------------------------------
    DEFAULT = { # No toques esta línea.
#-------------------------------------------------------------------------------
# ☆ Las siguientes son las teclas que se usaran por defecto por el juego, ten
#    en cuenta que cada comando es ser llamado por 2 teclas.
#
#  * La configuración que he elegido es la misma que trae el RMVX, a excepción
#    de algunas teclas secundarias.
#-------------------------------------------------------------------------------
# ☆ Tecla de desplazamiento ARRIBA
    "UP"    => [Keyboard::UP,    Keyboard::I],
# ☆ Tecla de desplazamiento ABAJO
    "DOWN"  => [Keyboard::DOWN,  Keyboard::K],
# ☆ Tecla de desplazamiento IZQUIERDA
    "LEFT"  => [Keyboard::LEFT,  Keyboard::J],
# ☆ Tecla de desplazamiento DERECHA
    "RIGHT" => [Keyboard::RIGHT,  Keyboard::L],
# ☆ Tecla con la cual se Corre en el Mapa
    "A"  =>    [Keyboard::SHIFT,  Keyboard::V],
# ☆ Tecla de la acción cancelar y abrir menú.
    "B"  =>    [Keyboard::ESCAPE, Keyboard::X],
# ☆ Tecla de la acción aceptar entre otros.
    "C"  =>    [Keyboard::ENTER,  Keyboard::Z],
# ☆ Tecla la cual es usada en otros sistemas de batalla (por ejemplo)
    "L"  =>    [Keyboard::SEP,    Keyboard::Q],
# ☆ Igual que la anterior
    "R"  =>    [Keyboard::DOTT,  Keyboard::W],
# ☆ Tecla del control X
    "X"  =>    [Keyboard::SPACE,  Keyboard::A],
# ☆ Tecla del control Y
    "Y"  =>    [Keyboard::BACK,  Keyboard::S],
# ☆ Tecla del control Z
    "Z"  =>    [Keyboard::D,      Keyboard::C]
    } # No toques esta línea!
#-------------------------------------------------------------------------------
# ☆ Las siguientes son las teclas que no pueden ser elegidas por el juego.
#
#  * Te recomiendo dejar esta configuración tal como está, ya que las teclas
#      que he elegido, son las que el RMVX usa para funciones internas como el
#      modo Debug.
#-------------------------------------------------------------------------------
  DISABLED_KEYS = [ # No toques esta línea!
# ☆ Añade una coma (,) al final de cada tecla, a excepción de la ultima tecla.
  Keyboard::CTRL,    Keyboard::ALT,      Keyboard::F1,      Keyboard::F2,
  Keyboard::F3,      Keyboard::F4,      Keyboard::F5,      Keyboard::F6,
  Keyboard::F7,      Keyboard::F8,      Keyboard::F9,      Keyboard::M_MOUSE,
  Keyboard::L_MOUSE, Keyboard::R_MOUSE,  Keyboard::R_WIN,  Keyboard::L_WIN
    ] # No toques esta línea!
#-------------------------------------------------------------------------------
#        ☆ Fin del área editable, No editar nada a continuación!! ☆
#===============================================================================
    KEYS = ["UP","DOWN","LEFT","RIGHT","A","B","C","L","R","X","Y","Z"]
    KEY_ICONS = {
    "UP"    => Rect.new(0,48,24,24),
    "DOWN"  => Rect.new(72,48,24,24),
    "LEFT"  => Rect.new(48,48,24,24),
    "RIGHT" => Rect.new(24,48,24,24),
    "A"  => Rect.new(0,24,24,24),
    "B"  => Rect.new(24,24,24,24),
    "C"  => Rect.new(48,24,24,24),
    "L"  => Rect.new(72,0,24,24),
    "R"  => Rect.new(72,24,24,24),
    "X"  => Rect.new(48,0,24,24),
    "Y"  => Rect.new(24,0,24,24),
    "Z"  => Rect.new(0,0,24,24)
    }
  end
  def self.split_text(text, size)
    return [text] if text.size <= size
    result = []
    words  = text.split(" ")
    rText  = ""
    inc    = 0
    for i in 0..words.size*2
      break if words[i-inc] == nil
      rText += words[i-inc]
      rText += " "
      if rText.size-1 == size or (i-inc+1) == words.size
        result.push(rText)
        rText = ""
      elsif rText.size-1 >= size
        rWords = rText.split(" ")
        rText = ""
        for j in 0..rWords.size-2
          rText += rWords[j]
          rText += " "
        end
        result.push(rText)
        rText = ""
        inc+=1
      end
    end
    return result
  end
end

module Input
  def self.update
    Keyboard.update
  end
  def self.trigger?(key)
    return (Keyboard.trigger?(transform_key(key)[0]) or Keyboard.trigger?(transform_key(key)[1]))
  end
  def self.repeat?(key)
    return (Keyboard.repeat?(transform_key(key)[0]) or Keyboard.repeat?(transform_key(key)[1]))
  end
  def self.press?(key)
    return (Keyboard.press?(transform_key(key)[0]) or Keyboard.press?(transform_key(key)[1]))
  end
  def self.transform_key (key)
    case key
      when UP
        key = $game_controls["UP"]
      when DOWN
        key = $game_controls["DOWN"]
      when LEFT
        key = $game_controls["LEFT"]
      when RIGHT
        key = $game_controls["RIGHT"]
      when A
        key = $game_controls["A"]
      when B
        key = $game_controls["B"]
      when C
        key = $game_controls["C"]
      when L
        key = $game_controls["L"]
      when R
        key = $game_controls["R"]
      when Y
        key = $game_controls["Y"]
      when X
        key = $game_controls["X"]
      when Z
        key = $game_controls["Z"]
      when F5
        key = Keyboard::F5
      when F6
        key = Keyboard::F6
      when F7
        key = Keyboard::F7
      when F8
        key = Keyboard::F8
      when F9
        key = Keyboard::F9
      when CTRL
        key = Keyboard::CTRL
      when ALT
        key = Keyboard::ALT
      when SHIF
        key = Keyboard::SHIF
      end
  return key
  end
  def self.dir4
    if press?(DOWN)
      return 2
    elsif press?(LEFT)
      return 4
    elsif press?(RIGHT)
      return 6
    elsif press?(UP)
      return 8
    end
  end
  def self.dir8
    if press?(DOWN) and press?(LEFT)
      return 1
    elsif press?(DOWN)
      return 2
    elsif press?(DOWN) and press?(RIGHT)
      return 3
    elsif press?(LEFT)
      return 4
    elsif press?(RIGHT)
      return 5
    elsif press?(UP) and press?(LEFT)
      return 6
    elsif press?(UP)
      return 7
    elsif press(UP) and press?(RIGHT)
      return 8
    end
  end
end

class Game_Controls
  def initialize
    reset
  end
  def [](control)
    return "" if control == nil
    return @data[control]
  end
  def []=(control, value)
    @data[control] = value
  end
  def reset
    @data={}
    keys = ClubIce::Controls::KEYS
    for i in 0..11
      @data[keys[i]] = ClubIce::Controls::DEFAULT[keys[i]].clone
    end
  end
end

class Window_SetControl < Window_Base
  attr_accessor :status
  attr_accessor :timer
  def initialize
    height = WLH*3+32
    x = (300 + Graphics.width) / 2 - 300
    y = (height + Graphics.height) / 2 - height
    super(x,y,300,height)
    @status = 0
    @timer = 0
    update
  end
  def wait
    for i in 0..120
      Graphics.update
    end
  end
  def update
    @timer += 1 if self.visible
    timer = 5 - (@timer / Graphics.frame_rate)
    self.contents.clear
    case @status
      when 0
        text = ClubIce.split_text(ClubIce::Controls::RESULTS_TEXTS[0],35)
        self.contents.font.color = normal_color
        for i in 0..text.size-1
          self.contents.draw_text(0, i*WLH, self.width-32, WLH, text[i], 1)
        end
        self.contents.draw_text(0, WLH*2, self.width-32, WLH, "Autocancelado en #{timer} seg.",1)
      when 1
        @text = ClubIce.split_text(ClubIce::Controls::RESULTS_TEXTS[1],35)
        draw_error
      when 2
        @text = ClubIce.split_text(ClubIce::Controls::RESULTS_TEXTS[2],30)
        draw_error
      when 3
        @text = ClubIce.split_text(ClubIce::Controls::RESULTS_TEXTS[3],35)
        draw_error
    end
  end
  def draw_error
    self.contents.font.color = knockout_color
    for i in [Tienes que estar registrado y conectado para ver este vínculo]-1
      self.contents.draw_text(0, i*WLH, self.width-32, WLH, @text[i], 1)
    end
    wait
    @status = 0
    @timer = 300
  end
end

class Scene_Controls < Scene_Base
  def start
    super
    create_menu_background
    @help_window                = Window_Help.new
    create_command_window
    @controls_window            = Window_Controls.new
    @set_control_window        = Window_SetControl.new
    @controls_window.active    = false
    @set_control_window.visible = false
    end
  def create_command_window
    op = ClubIce::Controls::OPTIONS_COMMANDS
    @command_window    = Window_Command.new(Graphics.width, op, 3)
    @command_window.y += @help_window.height
  end
  def update
    super
    update_menu_background
    @command_window.update
    @controls_window.update
    @set_control_window.update
    if @command_window.active
      update_command_selection
    elsif @controls_window.active
      update_control_selection
    elsif @set_control_window.visible || @set_control_window.active
      update_key_selection
    end
  end
  def update_command_selection
    case @command_window.index
      when 0
        @help_window.set_text(ClubIce::Controls::COMMANDS_TEXT[0])
      when 1
        @help_window.set_text(ClubIce::Controls::COMMANDS_TEXT[1])
      when 2
        @help_window.set_text(ClubIce::Controls::COMMANDS_TEXT[2])
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      $scene = Scene_Map.new
    elsif Input.trigger?(Input::C)
      case @command_window.index
        when 0
          Sound.play_decision
          @controls_window.index  = 0
          @command_window.index  = -1
          @controls_window.active = true
          @command_window.active  = false
        when 1
          Sound.play_equip
          $game_controls.reset
          @controls_window.refresh
        when 2
          Sound.play_cancel
          $scene = Scene_Map.new
      end
    end
  end
  def update_control_selection
    @help_window.set_text("ENTER = Cambiar Tecla. ESCAPE = Cancelar")
    if Keyboard.trigger?(Keyboard::ESCAPE)
      Sound.play_cancel
      @command_window.index  =  0
      @controls_window.index  = -1
      @command_window.active  = true
      @controls_window.active = false
    elsif Keyboard.trigger?(Keyboard::ENTER)
      Sound.play_decision
      @set_control_window.timer = 0
      @set_control_window.visible = true
      @set_control_window.active  = true
      @controls_window.active    = false
    end
  end
  def update_key_selection
    key = Keyboard.getKey
    keys = ClubIce::Controls::KEYS
    all_keys = []
    for i in 0..11
      for j in 0..1
        all_keys.push($game_controls[keys[i]][j])
      end
    end
    if 5 - (@set_control_window.timer / Graphics.frame_rate) <= 0
      Sound.play_cancel
      @set_control_window.active  = false
      @set_control_window.visible = false
      @controls_window.active    = true
    elsif key == 0
      Sound.play_buzzer
      @set_control_window.status = 1
    elsif key != nil
      key_pos = @controls_window.index / 2
      key_num = @controls_window.index % 2
      x = 0
      for i in 0..all_keys.size-1
        if key == all_keys[i]
          for j in 0..all_keys.size-1
            if j == i and x == 0
              x = 1
            else
              Sound.play_buzzer
              @set_control_window.status = 2
              x = 0
              return
            end
          end
        end
      end
      for i in 0..ClubIce::Controls::DISABLED_KEYS.size-1
        if key = i
          Sound.play_buzzer
          @set_control_window.status=3
          return
        end
      end
      $game_controls[ClubIce::Controls::KEYS[key_pos]][key_num] = key
      @controls_window.refresh
      Sound.play_decision
      @set_control_window.active  = false
      @set_control_window.visible = false
      @controls_window.active    = true
    end
  end
  def terminate
    super
    dispose_menu_background
    @help_window.dispose
    @command_window.dispose
    @controls_window.dispose
    @set_control_window.dispose
  end
end

Demo:

No es nesesario.

Notas de Autor:

Idea original de maxinm. Creo que lo que el queria era una ventana que mostrara los controles, pero yo quieze mejorarlo, y este fue el resutado
ClubIce
ClubIce
220
220

Masculino

Edad 27

Cantidad de envíos 253

Maker Cash 361

Reputación 38


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.