Ergebnis 1 bis 6 von 6

Thema: Tastenbelegung und (Un)mögliches?

  1. #1

    Users Awaiting Email Confirmation

    Tastenbelegung und (Un)mögliches?

    Tach auch,

    da im Xp ja der Tastenpatch mit schon drin is (wenn net dann schlagt mich) wollte ich mal wissen welche Nummern ich den einzelenen Tasten zuweisen
    muss.

    Außerdem steh ich vor einer Frage, die ich aber ohne nötiges Tastatur-Maker-Wissen nicht klären kann. Und zwar ob es möglich ist das man z.B. mit den Tasten W,A,S,D läuft und mit den Pfeiltasten die Gesichstrichtung vorgibt. Also das ich wie in einen Ego-Shooter geradeaus laufe und dabei nach rechts sehen kann. Aber ich bin mir eben nicht sicher ob dies möglich ist (Chartechnich mal ganz abegesehn).

    Danke schonmal für evtl. Hilfe ^^

    MfG Gieby

  2. #2
    Für deine erste Frage solltest du einfach mal in den RmXP FAQ thread in diesem Forum schauen. (Es stimmt. Gepinnte threads werden einfach so gut wie NIE beachtet ). Aber du kannst mit dem XP alleine nicht alle Tasten belegen. Wie das geht wirst du aber auch der FAQ entnehmen(kurz: du musst dir ein script holen).

    Frage 2: Mit Ruby bekommst du alles gebacken - aber das ist wahrscheinlich keine Option für dich. Ob es ganz alleine mit clickscripting geht, kann man so nicht sagen (ohne es probiert zu haben :>). Die Sache ist die, dass die Pfeiltasten generell immer belegt sind(für die Steuerung - kann man aber höchstwahrscheinlich via Ruby ändern bzw. das entsprechende Script dafür editieren). Du könntest aber mit AutoStart experimentieren, da reagieren die Pfeiltasten nicht wie normal. Oder du verwendest nicht den Character sondern spielst mit einem Event. Generell ist das aber schon möglich.

  3. #3

    Users Awaiting Email Confirmation

    Ja gepinnte Threads werden nicht beachtet. (Wo sind die eigentlich ^^ --> Scherz)

    Ruby ist wirklich keine Option, obwohl ich gerade versuche es irgendwie zu lernen, aber neben Schule und anderen macht sich das nicht so gut....
    Wie ich das sehen und laufen nun hinbekomme muss ich sehen. Das Problem ist, dass das ganze ziemlich komplex wird. Und (ich möcht nicht sagen das ich ein noob bin) da ich net alzuviel Ahnung von Ruby&Co. habe, wird das ne lustige Angelegenheit.
    Autostart würd ich mal las Variante ausschließen, denn ich hab ja noch selbständig agierende Ereignisse. Un der Player als Event, ich weiß nicht so genau. Muss einfach sehen wie ich das mache.

    Trozdem Danke

    MfG Gieby

  4. #4
    Zitat Zitat
    Außerdem steh ich vor einer Frage, die ich aber ohne nötiges Tastatur-Maker-Wissen nicht klären kann. Und zwar ob es möglich ist das man z.B. mit den Tasten W,A,S,D läuft und mit den Pfeiltasten die Gesichstrichtung vorgibt. Also das ich wie in einen Ego-Shooter geradeaus laufe und dabei nach rechts sehen kann. Aber ich bin mir eben nicht sicher ob dies möglich ist (Chartechnich mal ganz abegesehn).
    In etwa so:
    Code:
    module Input
      def Input.getstate(key)
       return true unless Win32API.new("user32","GetKeyState",['i'],'i').call(key).between?(0, 1)
       return false
     end
     
     def self.wasd
       if Input.getstate(87)
         return 8 unless Input.getstate(83)    #W 
       elsif Input.getstate(65)
         return 4 unless Input.getstate(68)     #A
       elsif Input.getstate(83)
         return 2                                                #S
       elsif Input.getstate(68)
         return 6                                                #D
       end
       return 0
     end
    end
    
    class Game_Player < Game_Character
      def initialize
        super
        @direction_fix = true
      end
      
      def update
        last_moving = moving?
        unless moving? or $game_system.map_interpreter.running? or
               @move_route_forcing or $game_temp.message_window_showing
          case Input.dir4
          when 2
            @direction = 2
            @stop_count = 0
          when 4
            @direction = 4
            @stop_count = 0
          when 6
            @direction = 6
            @stop_count = 0
          when 8
            @direction = 8
            @stop_count = 0
          end
          case Input.wasd
          when 2
            move_down
          when 4
            move_left
          when 6
            move_right
          when 8
            move_up
          end
        end
    
        last_real_x = @real_x
        last_real_y = @real_y
        super
        if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
          $game_map.scroll_down(@real_y - last_real_y)
        end
        if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
          $game_map.scroll_left(last_real_x - @real_x)
        end
        if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
          $game_map.scroll_right(@real_x - last_real_x)
        end
        if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
          $game_map.scroll_up(last_real_y - @real_y)
        end
        unless moving?
          if last_moving
            result = check_event_trigger_here([1,2])
            if result == false
              unless $DEBUG and Input.press?(Input::CTRL)
                if @encounter_count > 0
                  @encounter_count -= 1
                end
              end
            end
          end
          if Input.trigger?(Input::C)
            check_event_trigger_here([0])
            check_event_trigger_there([0,1,2])
          end
        end
      end
    end
    Einfach als seperates Skript direkt über Main kopieren. ... ist zwar nicht sonderlich elegant, aber nur um mal zu zeigen wie schnell man so manches schwieriges Editor-Problem mit Ruby gelöst bekommt.
    Wenn du also irgendwie Zeit finden solltest: lern Ruby.

    Zitat Zitat
    da im Xp ja der Tastenpatch mit schon drin is (wenn net dann schlagt mich) wollte ich mal wissen welche Nummern ich den einzelenen Tasten zuweisen muss.
    Standardmäßig drin? Nein, aber wie gesagt, Ruby rockt:
    http://www.dubealex.com/index.php?showtopic=752
    Das dann allerdings in den Editor einzufügen wäre ein ziemlicher Aufwand und würde das ganze zusätzlich noch langsamer machen. Von daher ist es besser solche Dinge dierekt in Skripten zu machen.

  5. #5

    Users Awaiting Email Confirmation

    danke werd ihn heut abend ma ausprobieren...

    ich habe aber noch etwas (Un)mögliches und zwar folgendes:

    Wer die FEAR SP-Demo gespielt hat weiß wovon ich rede. Wenn ich jetzt eine Granate werfe, was zweifelsohne mit dem XP machbar ist, explodiert sie ja irgendwann einaml. Logisch. Doch wenn sie explodiert gibst ja nicht nur ein Krawumm und ne Explo, nein, vielmehr entsteht ja noch eine Druckwelle. Und in FEAR ist die durch einen Krümmungseffekt dargestellt. Doch is so etwas auch für den Xp realisierbar????? Wenn es jemanden hilft, dann lad ich mir nochmal die 700MB und werf ne Granate und mach nen Screen davon. Aber nur im äußersten Notfall wenn sich keiner was drunter vorstellen kann.

    Wie immer: Danke schonmal für Antworten^^

  6. #6

    hier ist ein tastenscript von mir und Bananen-Joe

    Hallo alle zusammen,
    Hier habe ich und Bananen-Joe haben mal für euch nen Script über RGSS gemacht, mitdem man alle Tasten der Tastatur und die Maus belegen kann.
    Ich hoffe es wird euch weiter helfen.


    -------------------------------------------------------------------------
    module Input
    VK_A = 0x41
    VK_B = 0x42
    VK_C = 0x43
    VK_D = 0x44
    VK_E = 0x45
    VK_F = 0x46
    VK_G = 0x47
    VK_H = 0x48
    VK_I = 0x49
    VK_J = 0x4A
    VK_K = 0x4B
    VK_L = 0x4C
    VK_M = 0x4D
    VK_N = 0x4E
    VK_O = 0x4F
    VK_P = 0x50
    VK_Q = 0x51
    VK_R = 0x52
    VK_S = 0x53
    VK_T = 0x54
    VK_U = 0x55
    VK_V = 0x56
    VK_W = 0x57
    VK_X = 0x58
    VK_Y = 0x59
    VK_Z = 0x5A
    VK_ADD = 0x6B
    VK_ATTN = 0xF6
    VK_BACK = 0x8
    VK_CANCEL = 0x3
    VK_CAPITAL = 0x14
    VK_CLEAR = 0xC
    VK_CONTROL = 0x11
    VK_CRSEL = 0xF7
    VK_DECIMAL = 0x6E
    VK_DELETE = 0x2E
    VK_DIVIDE = 0x6F
    VK_DOWN = 0x28
    VK_END = 0x23
    VK_EREOF = 0xF9
    VK_ESCAPE = 0x1B
    VK_EXECUTE = 0x2B
    VK_EXSEL = 0xF8
    VK_F1 = 0x70
    VK_F10 = 0x79
    VK_F11 = 0x7A
    VK_F12 = 0x7B
    VK_F13 = 0x7C
    VK_F14 = 0x7D
    VK_F15 = 0x7E
    VK_F16 = 0x7F
    VK_F17 = 0x80
    VK_F18 = 0x81
    VK_F19 = 0x82
    VK_F2 = 0x71
    VK_F20 = 0x83
    VK_F21 = 0x84
    VK_F22 = 0x85
    VK_F23 = 0x86
    VK_F24 = 0x87
    VK_F3 = 0x72
    VK_F4 = 0x73
    VK_F5 = 0x74
    VK_F6 = 0x75
    VK_F7 = 0x76
    VK_F8 = 0x77
    VK_F9 = 0x78
    VK_HELP = 0x2F
    VK_HOME = 0x24
    VK_INSERT = 0x2D
    VK_LBUTTON = 0x1
    VK_LCONTROL = 0xA2
    VK_LEFT = 0x25
    VK_LMENU = 0xA4
    VK_LSHIFT = 0xA0
    VK_MBUTTON = 0x4
    VK_MENU = 0x12
    VK_MULTIPLY = 0x6A
    VK_NEXT = 0x22
    VK_NONAME = 0xFC
    VK_NUMLOCK = 0x90
    VK_NUMPAD0 = 0x60
    VK_NUMPAD1 = 0x61
    VK_NUMPAD2 = 0x62
    VK_NUMPAD3 = 0x63
    VK_NUMPAD4 = 0x64
    VK_NUMPAD5 = 0x65
    VK_NUMPAD6 = 0x66
    VK_NUMPAD7 = 0x67
    VK_NUMPAD8 = 0x68
    VK_NUMPAD9 = 0x69
    VK_OEM_CLEAR = 0xFE
    VK_PA1 = 0xFD
    VK_PAUSE = 0x13
    VK_PLAY = 0xFA
    VK_PRINT = 0x2A
    VK_PRIOR = 0x21
    VK_PROCESSKEY = 0xE5
    VK_RBUTTON = 0x2
    VK_RCONTROL = 0xA3
    VK_RETURN = 0xD
    VK_RIGHT = 0x27
    VK_RMENU = 0xA5
    VK_RSHIFT = 0xA1
    VK_SCROLL = 0x91
    VK_SELECT = 0x29
    VK_SEPARATOR = 0x6C
    VK_SHIFT = 0x10
    VK_SNAPSHOT = 0x2C
    VK_SPACE = 0x20
    VK_SUBTRACT = 0x6D
    VK_TAB = 0x9
    VK_UP = 0x26
    VK_ZOOM = 0xFB
    KEYEVENTF_KEYDOWN = 0x0
    KEYEVENTF_EXTENDEDKEY = 0x1
    KEYEVENTF_KEYUP = 0x2
    class Keyboard
    @keystate = Win32API.new("user32", "GetAsyncKeyState", "i", "s")
    @keyevent = Win32API.new("user32", "keybd_event", "iiii", "")
    def self.pressed?(key = 0)
    return @keystate.call(key)
    end
    def self.event(vk, scan, flags, info)
    @keyevent.call(vk, scan, flags, info)
    end
    def self.press(vk, presstype = -1)
    if presstype < 0
    @keyevent.call(vk, 0, Input::KEYEVENTF_KEYDOWN, 0)
    @keyevent.call(vk, 0, Input::KEYEVENTF_KEYUP, 0)
    else
    @keyevent.call(vk, 0, presstype, 0)
    end
    end
    end
    class Mouse
    @getcursorpos = Win32API.new("user32", "GetCursorPos", "p", "i")
    @setcursorpos = Win32API.new("user32", "SetCursorPos", "ii", "i")
    def self.getpos()
    pos = " " * 8
    @getcursorpos.call(pos)
    return pos.unpack("ii")
    end
    def self.setpos(x, y)
    return @setcursorpos.call(x, y)
    end
    end
    end


    Das kommt unter den neu-Angelegten RGSS Punkt Modul rein.
    Die VK_????? sind die Tastenbezeichnungen mit den ihr die tasten aufrufen könnt. Wie z.b. "0x24" ist die Tasten Abfrage.
    -------------------------------------------------------------------------
    Hier noch die anderen sachen um die taste anzusprechen, Vollbild zu machen etc....:

    Zitat:
    ====Cursorpos setzen====

    Input::Mouse.setpos(30, 60)

    =====Curspos holen=====

    $game_variables[5],$game_variables[6] = Input::Mouse.getpos()

    =====Tasten drücken=====

    Input::Keyboard.press(Input::VK_MENU, 0)

    ====Vollbild machen====

    Input::Keyboard.press(Input::VK_MENU, 0)
    Input::Keyboard.press(Input::VK_RETURN, 0)
    Input::Keyboard.press(Input::VK_MENU, 2)
    Input::Keyboard.press(Input::VK_RETURN, 2)

    ====Taste gedrückt?====

    if Input::Keyboard.pressed?(Input::VK_RIGHT) < 0
    [...] //Taste ist gedrückt.
    else
    [...] //Taste ist nicht gedrückt.
    end

    -------------------------------------------------------------------------

    Diese werden über Events gestartet über die Funktion"Script ausführen" im Normalen Event Editor.

    Hoffe ich konnte euch ein bissl helfen.
    Sorry das ich irgentwie die originale Formatierung nich hinbekommen habe.

    MFG ZeroX

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •