Suporte ao desenvolvimento de jogos!


    Modulo Input[NP1.7]

    Compartilhe
    avatar
    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 1043
    Créditos : 127

    Modulo Input[NP1.7]

    Mensagem por Komuro Takashi em Ter Jun 26, 2012 2:03 pm

    Olá pessoal levei um tempo mais ta ai, pra quem ta acostumado a usar o Input do NP Master eu converti ele pra vocês:

    Crédito ao Author Cybersam an Script Converter Komuro Takashi

    segue abaixo o script:

    Spoiler:

    Código:

    #===============================================================================
    # ** Input Script v2 - This script was first created by Cybersam and she
    #                        deserves most of the credit, all I did was add a few
    #                        functions. (Astro_Mech says)
    #-------------------------------------------------------------------------------
    # Author    Cybersam
    # Version  2.0
    # Date      11-04-06
    # Edit      Astro_mech and Mr.Mo
    # Convertions By Komuro Takashi
    # Verção 1.0 bug's Corrigidos
    #===============================================================================
    #SDK.log("Input", "Astro_mech and Mr.Mo", "2.0", " 13-04-06")
    #-------------------------------------------------------------------------------
    # Begin SDK Enabled Check
    #-------------------------------------------------------------------------------
    #if SDK.state('Input')
    module Input
      #--------------------------------------------------------------------------
      # * Variable Setup
      #--------------------------------------------------------------------------
        @keys = []
        @pressed = []
        Mouse_Left = 1
        Mouse_Right = 2
        Mouse_Middle = 4
        Back = 8
        Tab = 9
        Enter = 13
        Shift = 16
        Ctrl = 17
        Alt = 18
        Esc = 0x1B
        LT = 0x25
        UPs = 0x26 
        RT = 0x27
        DN = 0x28
        Space = 32
       
        Numberkeys = {}
        Numberkeys[0] = 48        # => 0
        Numberkeys[1] = 49        # => 1
        Numberkeys[2] = 50        # => 2
        Numberkeys[3] = 51        # => 3
        Numberkeys[4] = 52        # => 4
        Numberkeys[5] = 53        # => 5
        Numberkeys[6] = 54        # => 6
        Numberkeys[7] = 55        # => 7
        Numberkeys[8] = 56        # => 8
        Numberkeys[9] = 57        # => 9
       
        Numberpad = {}
        Numberpad[0] = 45
        Numberpad[1] = 35
        Numberpad[2] = 40
        Numberpad[3] = 34
        Numberpad[4] = 37
        Numberpad[5] = 12
        Numberpad[6] = 39
        Numberpad[7] = 36
        Numberpad[8] = 38
        Numberpad[9] = 33
       
        Letters = {}
        Letters["A"] = 65
        Letters["B"] = 66
        Letters["C"] = 67
        Letters["D"] = 68
        Letters["E"] = 69
        Letters["F"] = 70
        Letters["G"] = 71
        Letters["H"] = 72
        Letters["I"] = 73
        Letters["J"] = 74
        Letters["K"] = 75
        Letters["L"] = 76
        Letters["M"] = 77
        Letters["N"] = 78
        Letters["O"] = 79
        Letters["P"] = 80
        Letters["Q"] = 81
        Letters["R"] = 82
        Letters["S"] = 83
        Letters["T"] = 84
        Letters["U"] = 85
        Letters["V"] = 86
        Letters["W"] = 87
        Letters["X"] = 88
        Letters["Y"] = 89
        Letters["Z"] = 90
       
        Equ = {}
        Equ[0] = ')'
        Equ[1] = '!'
        Equ[2] = '@' 
        Equ[3] = '#' 
        Equ[4] = '$'   
        Equ[5] = '%'
        Equ[6] = '¨'   
        Equ[7] = '&' 
        Equ[8] = '*'   
        Equ[9] = '('

        Fkeys = {}
        Fkeys[1] = 112
        Fkeys[2] = 113
        Fkeys[3] = 114
        Fkeys[4] = 115
        Fkeys[5] = 116
        Fkeys[6] = 117
        Fkeys[7] = 118
        Fkeys[8] = 119
        Fkeys[9] = 120
        Fkeys[10] = 121
        Fkeys[11] = 122
        Fkeys[12] = 123
       
        Collon = 186        # => \ |
        Equal = 187        # => = +
        Comma = 188        # => , <
        Underscore = 189    # => - _
        Dot = 190          # => . >
        Backslash = 191    # => ; :
        Backslash2 = 193    # => / ?
        Points2 = 0xBF
        Lb = 219
        Hb = 220
        Rb = 221
        Quote = 222        # => '"
       
        Lb = 219            # US: [{  FR: )°
        Rb = 221            # US: ]}  FR: ^¨
        E2 = 226            #        FR: <>
        DC = 220            # US: \|  FR: *µ
        DF = 223            #        FR: !§
        C0 = 192            # US: `~  FR: ù%
       
        State = Win32API.new 'user32','GetKeyState',['i'],'i'
        Key = Win32API.new 'user32','GetAsyncKeyState',['i'],'i'
    #-------------------------------------------------------------------------------
        USED_KEYS = [Mouse_Left, Mouse_Right, Mouse_Middle]
    #-------------------------------------------------------------------------------
      module_function
        #-------------------------------------------------------------------------- 
        def Input.getstate(key)
          return true unless State.call(key).between?(0, 1)
          return false
        end
        #--------------------------------------------------------------------------
        def Input.testkey(key)
          Key.call(key) & 0x01 == 1
        end
        #--------------------------------------------------------------------------
        def Input.update
          $mouse.update
          @keys = []
          @keys.push(Input::Mouse_Left) if Input.testkey(Input::Mouse_Left)
          @keys.push(Input::Mouse_Right) if Input.testkey(Input::Mouse_Right)
          @keys.push(Input::Back) if Input.testkey(Input::Back)
          @keys.push(Input::Tab) if Input.testkey(Input::Tab)
          @keys.push(Input::Enter) if Input.testkey(Input::Enter)
          @keys.push(Input::Shift) if Input.testkey(Input::Shift)
          @keys.push(Input::Ctrl) if Input.testkey(Input::Ctrl)
          @keys.push(Input::Alt) if Input.testkey(Input::Alt)
          @keys.push(Input::Points2) if Input.testkey(Input::Points2)
          @keys.push(Input::Esc) if Input.testkey(Input::Esc)
         
          for key in Input::Letters.values
            @keys.push(key) if Input.testkey(key)
          end
         
          for key in Input::Numberkeys.values
            @keys.push(key) if Input.testkey(key)
          end
         
          for key in Input::Numberpad.values
            @keys.push(key) if Input.testkey(key)
          end
         
          for key in Input::Fkeys.values
            @keys.push(key) if Input.testkey(key)
          end
         
          @keys.push(Input::Collon) if Input.testkey(Input::Collon)
          @keys.push(Input::Equal) if Input.testkey(Input::Equal)
          @keys.push(Input::Comma) if Input.testkey(Input::Comma)
          @keys.push(Input::Underscore) if Input.testkey(Input::Underscore)
          @keys.push(Input::Dot) if Input.testkey(Input::Dot)
          @keys.push(Input::Backslash) if Input.testkey(Input::Backslash)
          @keys.push(Input::Backslash2) if Input.testkey(Input::Backslash2)
          @keys.push(Input::Lb) if Input.testkey(Input::Lb)
          @keys.push(Input::Rb) if Input.testkey(Input::Rb)
          @keys.push(Input::Hb) if Input.testkey(Input::Hb)
          @keys.push(Input::Quote) if Input.testkey(Input::Quote)
          @keys.push(Input::Space) if Input.testkey(Input::Space)
          @keys.push(Input::LT) if Input.testkey(Input::LT)
          @keys.push(Input::UPs) if Input.testkey(Input::UPs)
          @keys.push(Input::RT) if Input.testkey(Input::RT)
          @keys.push(Input::DN) if Input.testkey(Input::DN)
         
          @pressed = []
          @pressed.push(Input::Space) if Input.getstate(Input::Space)
          @pressed.push(Input::Mouse_Left) if Input.getstate(Input::Mouse_Left)
          @pressed.push(Input::Mouse_Right) if Input.getstate(Input::Mouse_Right)
          @pressed.push(Input::Back) if Input.getstate(Input::Back)
          @pressed.push(Input::Tab) if Input.getstate(Input::Tab)
          @pressed.push(Input::Enter) if Input.getstate(Input::Enter)
          @pressed.push(Input::Shift) if Input.getstate(Input::Shift)
          @pressed.push(Input::Ctrl) if Input.getstate(Input::Ctrl)
          @pressed.push(Input::Alt) if Input.getstate(Input::Alt)
          @pressed.push(Input::Points2) if Input.getstate(Input::Points2)
          @pressed.push(Input::Esc) if Input.getstate(Input::Esc)
          @pressed.push(Input::LT) if Input.getstate(Input::LT)
          @pressed.push(Input::UPs) if Input.getstate(Input::UPs)
          @pressed.push(Input::RT) if Input.getstate(Input::RT)
          @pressed.push(Input::DN) if Input.getstate(Input::DN)
         
          for key in Input::Numberkeys.values
            @pressed.push(key) if Input.getstate(key)
          end
         
          for key in Input::Numberpad.values
            @pressed.push(key) if Input.getstate(key)
          end
         
          for key in Input::Letters.values
            @pressed.push(key) if Input.getstate(key)
          end
         
          for key in Input::Fkeys.values
            @pressed.push(key) if Input.getstate(key)
          end
         
          @pressed.push(Input::Collon) if Input.getstate(Input::Collon)
          @pressed.push(Input::Equal) if Input.getstate(Input::Equal)
          @pressed.push(Input::Comma) if Input.getstate(Input::Comma)
          @pressed.push(Input::Underscore) if Input.getstate(Input::Underscore)
          @pressed.push(Input::Dot) if Input.getstate(Input::Dot)
          @pressed.push(Input::Backslash) if Input.getstate(Input::Backslash)
          @pressed.push(Input::Backslash2) if Input.getstate(Input::Backslash2)
          @pressed.push(Input::Lb) if Input.getstate(Input::Lb)
          @pressed.push(Input::Rb) if Input.getstate(Input::Rb)
          @pressed.push(Input::Hb) if Input.getstate(Input::Hb)
          @pressed.push(Input::Quote) if Input.getstate(Input::Quote)
          # Definir Valores Iniciais
          @click_esq = false if @click_esq == nil
          @count1 = 0 if @count1 == nil
          @click_dir = false if @click_dir == nil
          @count2 = 0 if @count2 == nil     
          # Checar Clique (Esquerdo)
          if Input.pressed(Input::Mouse_Left)
            if !@click_esq
              $click_esquerdo = true
              @count1 = 0
            end
            $clicked_esquerdo = true
            @click_esq = true       
          elsif !Input.pressed(Input::Mouse_Left)
            @click_esq = false
            $clicked_esquerdo = false
            $click_esquerdo = false if $click_esquerdo == true
          end
          if @count1 == 3 and $click_esquerdo
            #p 'saiu clique'
            $click_esquerdo = false
            @count1 = 0
          end
          @count1 = @count1 + 1
         
          # Checar Clique (Direito)
          if Input.pressed(Input::Mouse_Right)
            if !@click_dir   
              $click_direito = true
              @count2 = 0
            end
            @click_dir = true
            $clicked_direito = true
          else
            @click_dir = false
            $clicked_direito = false
            $click_direito = false if $click_direito == true
          end
          if @count2 == 3 and $click_esquerdo == true
            $click_direito = false
            @count2 = 0
          end
          @count2 = @count2 + 1
        end
        #--------------------------------------------------------------------------
        def Input.triggerd?(key)
          return true if @keys.include?(key)
          return false
        end
        #--------------------------------------------------------------------------
        def Input.pressed?(key)
          return true if @pressed.include?(key)
          return false
        end
      #--------------------------------------------------------------------------
      # * 4 Diraction
      #--------------------------------------------------------------------------
      def Input.dir4
        return 2 if Input.pressed?(Input::DN)
        return 4 if Input.pressed?(Input::LT)
        return 6 if Input.pressed?(Input::RT)
        return 8 if Input.pressed?(Input::UPs)
        return 0
      end

      #end
      #--------------------------------------------------------------------------
      # * Trigger (key)
      #--------------------------------------------------------------------------
      def trigger?(key)
        keys = []
        case key
        when Input::DOWN
          keys.push(Input::DN)
        when Input::UP
          keys.push(Input::UPs)
        when Input::LEFT
          keys.push(Input::LT)
        when Input::RIGHT
          keys.push(Input::RT)
        when Input::C
          keys.push(Input::Enter)
        when Input::B
          keys.push(Input::Esc, Input::Numberpad[0])
        when Input::X
          keys.push(Input::Letters["A"])
        when Input::L
          keys.push(Input::Letters["Q"])
        when Input::R
          keys.push(Input::Letters["W"])
        when Input::Y
          keys.push(Input::Letters["R"])
        when Input::F5
          keys.push(Input::Fkeys[5])
        when Input::F6
          keys.push(Input::Fkeys[6])
        when Input::F7
          keys.push(Input::Fkeys[7])
        when Input::F8
          keys.push(Input::Fkeys[8])
        when Input::F9
          keys.push(Input::Fkeys[9])
        when Input::SHIFT
          keys.push(Input::Shift)
        when Input::CTRL
          keys.push(Input::Ctrl)
        when Input::ALT
          keys.push(Input::Alt)
        when Input::Points2
          keys.push(Input::Points2)
        else
          keys.push(key)
        end
        for k in keys
        if Input.triggerd?(k)
          return true
        end
      end
      return false
     end
     
      #--------------------------------------------------------------------------
      # * Mouse Triggered ? (key)
      #--------------------------------------------------------------------------
      def trigger(key)
        return @used_i.include?(key)
      end
      #--------------------------------------------------------------------------
      # * Mouse Pressed ? (key)
      #--------------------------------------------------------------------------
      def pressed(key)
        return true unless Win32API.new("user32","GetKeyState",['i'],'i').call(key).between?(0, 1)
        return false
      end
     
      #--------------------------------------------------------------------------
      # * Repeat (key)
      #--------------------------------------------------------------------------
      def repeat?(key)
        keys = []
        case key
        when Input::DOWN
          keys.push(Input::DN)
        when Input::UP
          keys.push(Input::UPs)
        when Input::LEFT
          keys.push(Input::LT)
        when Input::RIGHT
          keys.push(Input::RT)
        when Input::C
          keys.push(Input::Enter)
        when Input::B
          keys.push(Input::Esc, Input::Numberpad[0])
        when Input::X
          keys.push(Input::Letters["A"])
        when Input::L
          keys.push(Input::Letters["Q"])
        when Input::R
          keys.push(Input::Letters["W"])
        when Input::Y
          keys.push(Input::Letters["R"])
        when Input::F5
          keys.push(Input::Fkeys[5])
        when Input::F6
          keys.push(Input::Fkeys[6])
        when Input::F7
          keys.push(Input::Fkeys[7])
        when Input::F8
          keys.push(Input::Fkeys[8])
        when Input::F9
          keys.push(Input::Fkeys[9])
        when Input::SHIFT
          keys.push(Input::Shift)
        when Input::CTRL
          keys.push(Input::Ctrl)
        when Input::ALT
          keys.push(Input::Alt)
        when Input::Points2
          keys.push(Input::Points2)
        else
          keys.push(key)
        end
        for k in keys
        if Input.triggerd?(k)
          return true
        end
      end
      return false
      end   
      #--------------------------------------------------------------------------
      # * Check (key)
      #--------------------------------------------------------------------------
      def check(key)
        Win32API.new("user32","GetAsyncKeyState",['i'],'i').call(key) & 0x01 == 1  # key 0
      end
      #--------------------------------------------------------------------------
      # * Mouse Update
      #--------------------------------------------------------------------------
      def mouse_update
        @used_i = []
        for i in USED_KEYS
          x = check(i)
          if x == true
            @used_i.push(i)
          end
        end
      end
      #--------------------------------------------------------------------------
      # * Short Write C
      #--------------------------------------------------------------------------
      def Input.C
        Input.trigger?(C)
      end
      #--------------------------------------------------------------------------
      # * Short Write B
      #--------------------------------------------------------------------------
      def Input.B
        Input.trigger?(B)
      end
      #--------------------------------------------------------------------------
      # * Short Write A
      #--------------------------------------------------------------------------
      def Input.A
        Input.trigger?(A)
      end
      #--------------------------------------------------------------------------
      # * Short Write Down
      #--------------------------------------------------------------------------
      def Input.Down
        Input.trigger?(DOWN)
      end
      #--------------------------------------------------------------------------
      # * Short Write Up
      #--------------------------------------------------------------------------
      def Input.Up
        Input.trigger?(UP)
      end
      #--------------------------------------------------------------------------
      # * Short Write Right
      #--------------------------------------------------------------------------
      def Input.Right
        Input.trigger?(RIGHT)
      end
      #--------------------------------------------------------------------------
      # * Short Write Left
      #--------------------------------------------------------------------------
      def Input.Left
        Input.trigger?(LEFT)
      end
      #--------------------------------------------------------------------------
      # * Anykey pressed?  ( A or B or C or Down or Up or Right or Left )
      #--------------------------------------------------------------------------
      def Input.Anykey
        if A or B or C or Down or Up or Right or Left
          return true
        else
          return false
        end
      end
    end

    module Keys
    MOUSE_PRIMARY = Input::Mouse_Left
    MOUSE_SECONDARY = Input::Mouse_Right

      def Keys.name?(num)
        return "MOUSE PRIMARY" if num==1
        return "MOUSE SECONDARY" if num==2
        return "MOUSE MIDDLE" if num==4
        return "MOUSE 4TH" if num==5
        return "MOUSE 5TH" if num==6
        return "BACKSPACE" if num==8
        return "TAB" if num==9
        return "RETURN" if num==13
        return "SHIFT" if num==16
        return "CTLR" if num==17
        return "ALT" if num==18
        return "CAPS LOCK" if num==20
        return "ESCAPE" if num==27
        return "SPACE" if num==32
        return "PGUP" if num==33
        return "PGDN" if num==34
        return "END" if num==35
        return "HOME" if num==36
        return "LEFT" if num==37
        return "UP" if num==38
        return "RIGHT" if num==39
        return "DOWN" if num==40
        return "SNAPSHOT" if num==44
        return "INSERT" if num==45
        return "DELETE" if num==46
        return "0" if num==48
        return "1" if num==49
        return "2" if num==50
        return "3" if num==51
        return "4" if num==52
        return "5" if num==53
        return "6" if num==54
        return "7" if num==55
        return "8" if num==56
        return "9" if num==57
        return "A" if num==65
        return "B" if num==66
        return "C" if num==67
        return "D" if num==68
        return "E" if num==69
        return "F" if num==70
        return "G" if num==71
        return "H" if num==72
        return "I" if num==73
        return "J" if num==74
        return "K" if num==75
        return "L" if num==76
        return "M" if num==77
        return "N" if num==78
        return "O" if num==79
        return "P" if num==80
        return "Q" if num==81
        return "R" if num==82
        return "S" if num==83
        return "T" if num==84
        return "U" if num==85
        return "V" if num==86
        return "W" if num==87
        return "X" if num==88
        return "Y" if num==89
        return "Z" if num==90
        return "LWIN" if num==91
        return "RWIN" if num==92
        return "APPS" if num==93
        return "0" if num==96
        return "1" if num==97
        return "2" if num==98
        return "3" if num==99
        return "4" if num==100
        return "5" if num==101
        return "6" if num==102
        return "7" if num==103
        return "8" if num==104
        return "9" if num==105
        return "*" if num==106
        return "+" if num==107
        return "-" if num==109
        return "." if num==110
        return "/" if num==111
        return "F1" if num==112
        return "F2" if num==113
        return "F3" if num==114
        return "F4" if num==115
        return "F5" if num==116
        return "F6" if num==117
        return "F7" if num==118
        return "F8" if num==119
        return "F9" if num==120
        return "F10" if num==121
        return "F11" if num==122
        return "F12" if num==123
        return "NUM LOCK" if num==144
        return "SCROLL LOCK" if num==145
        return "LEFT SHIFT" if num==160
        return "RIGHT SHIFT" if num==161
        return "LEFT CTRL" if num==162
        return "RIGHT CTRL" if num==163
        return "LEFT ALT" if num==164
        return "RIGHT ALT" if num==165
        return ";" if num==186
        return "=" if num==187
        return "," if num==188
        return "_" if num==189
        return "." if num==190
        return "/" if num==191
        return "`" if num==192
        return "[" if num==219
        return " \\ " if num==220
        return "]" if num==221
        return "'" if num==222
        return "??? - " + "#{num}"
      end
     
    end
    #-------------------------------------------------------------------------------
    # End SDK Enabled Check
    #-------------------------------------------------------------------------------

    Comandos são os mesmos do NP. Espero que tenham gostado.


    _________________
    avatar
    Felix Blayder
    Membro de Honra
    Membro de Honra

    Mensagens : 1502
    Créditos : 219

    Re: Modulo Input[NP1.7]

    Mensagem por Felix Blayder em Ter Jun 26, 2012 3:12 pm

    muito legal cara, converteu a versão com o teclado numérico incluso ou é a versão normal sem ele?


    _________________

    Se inscreva em meu Canal no YouTube:
    https://www.youtube.com/localnerd

    Faça uma doação para ajudar nos custos:

    https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3N8T2RJ977RCQ

    avatar
    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 1043
    Créditos : 127

    Re: Modulo Input[NP1.7]

    Mensagem por Komuro Takashi em Ter Jun 26, 2012 3:16 pm

    Numberkeys = {} tem sim a versão numérica.


    _________________
    avatar
    RD12
    Lenda
    Lenda

    Medalhas :
    Mensagens : 1966
    Créditos : 741

    Re: Modulo Input[NP1.7]

    Mensagem por RD12 em Ter Jun 26, 2012 6:50 pm

    Cara esse input é horrível :/ Você ganharia mais convertendo outro input.. Mas parabéns pelo trabalho.
    avatar
    Komuro Takashi
    Moderador Local
    Moderador Local

    Mensagens : 1043
    Créditos : 127

    Re: Modulo Input[NP1.7]

    Mensagem por Komuro Takashi em Ter Jun 26, 2012 8:01 pm

    Obrigado pessoal
    @RD/
    só mandar o Input que eu Converto manda por pm qual vc quer to fera no Input.

    Converti 4 hoje.
    e um scrip de mouse que to fazendo os path finding's dele.


    _________________

    Conteúdo patrocinado

    Re: Modulo Input[NP1.7]

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Sab Fev 17, 2018 5:59 pm