Erst einmal vielen Dank für die schnelle Antwort.
Ich verstehe genau was du meinst, allerdings kenne ich mich in RGSS nicht besonders gut aus.
Hier erst einmal das relevante Script. insgesamt besteht es aus 4 Teilen.

Code:
class MSS # Monsta's Shoot System
   
  def initialize

    #===Optionen===#
    @active = false # Ist das Schusssystem von Anfang an aktiv
    @undurchlässiges_terrain = [7]   # Alle Zahlen von 0-7 können im Array verwendet werden. Einzelne Terrain ID's werden wie im Array gewohnt durch ein Komma getrennt
    @option_events_aktivieren = false # Mit dieser Option braucht man nicht immer die Waffe zu wechseln um ein "Push Key" Event zu starten. [x]
    @option_allow_weapon_change = true # Gibt an, ob die Waffe gewechselt werden darf
    @option_quake_sounds = [true,
     RPG::AudioFile.new('double',100,100),
     RPG::AudioFile.new('multi',100,100),
     RPG::AudioFile.new('ultra',100,100),
     RPG::AudioFile.new('monster',100,100)]
    @option_automatisches_nachladen = true # Gibt an, ob automatisch nachgeladen werden soll, wenn das Magazin leer ist.
    @option_hud_sichtbar = [false,false] # Gibt an, ob der HUD mit HP und Ammo Anzeige Sichtbar sein soll. Der 2. Wert steht für den Nachladebalken
    # Die Waffenzusammenstellung die man am Anfang des Spiels hat. Der nil wert ist für Waffe wegstecken.
    @waffe = [1,nil,
    {'Name' => 'Pistole', 'Munition' => '/', 'Magazin' => 15},
   # {'Name' => 'Deagle', 'Munition' => 30, 'Magazin' => 7},
    {'Name' => 'Shotgun', 'Munition' => 300, 'Magazin' => 1}
    ]
    @actor = 1 # Heldennummer (für z.B. HP Berechnung)
    @actor_graphic = 'player_normal_SICHERUNG' # Heldengrafik, als Figur ohne Waffe
    @waffenwechselsound = RPG::AudioFile.new('Waffe_wechsel',100,100)
    @leere_waffe_sound = RPG::AudioFile.new('leer',100,100)
    @standard_blut = [25,26,27,28]
    @spinne_blut = [109,109,109,109]
    
    @nachladetasten = [0,0,0]  # "R" - "Alt" - "Shift"
    
    @key_strafe = 65 # Strafelauf ist auf Taste A. Um Strafen zu deaktivierten nil nehmen
    @key_medikit = 0 # Medikit benutzen ist auf Taste S.
    @key_granate = 68 # Granate werfen ist auf Taste D.
    @key_mine = 0 # Mine legen ist auf Taste Q.
    @key_sprinten = 0 # Sprinten auf STRG.
    
    @sprinten_max = 100
    @sprinten = @sprinten_max
    @heal_power = 50
    @granate_power = [12,2] # Schaden, Radius
    @mine_power = [19,3] # Schaden, Radius
    @items = Hash.new(0) # Speichert zusätzliche Items. zB Medikits
    @event_database = 8 # Die Map wo Events wie Granaten gespeichert sind
    @movement_8_way = true
    
    @skills = [ ['HP','$game_actors[$MSS.actor].maxhp',100,50],  # Name, Wert, Preis, Steigerung
    ['Sprinten','$MSS.sprinten_max',50,20],
    ['Granatenschaden','$MSS.granate_power[0]',50,1],
    ['Minenschaden','$MSS.mine_power[0]',50,1] ]
    #===Ini===# (Hier bitte nichts verändern, wenn ihr euch nicht mit RGSS auskennt^^
    ini_waffen
    ini_gegner
    ini_statistik
    @waffe_aktuell = @waffe[@waffe[0]]
    @events = {'Gegner' => [],'Hindernis' => [], 'ID' => []}
    @key = Keys.new
    @wait = 0
    @schussrate = 0
    @hud_boss = nil
    @hud_boss_active = nil
  end
      attr_accessor :option_hud_sichtbar
  # VORSICHT!
  # Diese Daten werden beim Spielstand mitgespeichert (Da man diese Werte ja auch
  # während des Spiels verändern (Pimpen =) ) kann. Also Änderungen wirken sich
  # nur auf Neue Spiele aus
  
  def ini_waffen
    @waffen_atr = {
    'Pistole' => {
      'Schaden' => 1,
      'Schusssound' => RPG::AudioFile.new('Pistole',100,100),
      'Nachladesound' => RPG::AudioFile.new('Pistole Nachladen',100,100),
      'Nachladezeit' => 80,         # Nachladezeit in Frames. Bei 40 Frames pro Sekunde also hier 2 Sekunden.
      'Magazin' => 15,
      'Schussrate' => nil,          # Bei nicht automatischen Waffen "nil" hinschreiben. Ansonsten die Frame Wartezeit
      'Spielergrafik' => 'player_pistole',
      'Mündungsfeuer' => [1,2,3,29]  # Wenn keine Animation sein soll einfach "nil" (ohne Anführungszeichen) schreiben! Die Zahlen im Array stehen für die Animations ID in dieser Reihenfolge: [Unten, Links, Rechts, Oben]. Die ID "0" steht für keine Animation!
     },
     
    'Deagle' => {
      'Schaden' => 4,
      'Schusssound' => RPG::AudioFile.new('Deagle',100,100),
      'Nachladesound' => RPG::AudioFile.new('Deagle Nachladen',100,100),
      'Nachladezeit' => 75,
      'Magazin' => 7,
      'Schussrate' => nil,
      'Spielergrafik' => 'Deagle',
      'Mündungsfeuer' => [5,6,7,0]
     },
    
    'MP5' => {
      'Schaden' => 2,
      'Schusssound' => RPG::AudioFile.new('MP5',100,100),
      'Nachladesound' => RPG::AudioFile.new('MP5 Nachladen',100,100),
      'Nachladezeit' => 90,
      'Magazin' => 30,
      'Schussrate' => 3,
      'Spielergrafik' => 'MP5',
      'Mündungsfeuer' => [8,9,10,0]
     },
     
     'Colt' => {
      'Schaden' => 7,
      'Schusssound' => RPG::AudioFile.new('Colt',100,100),
      'Nachladesound' => RPG::AudioFile.new('Colt Nachladen',100,100),
      'Nachladezeit' => 125,
      'Magazin' => 6,
      'Schussrate' => nil,
      'Spielergrafik' => 'Colt',
      'Mündungsfeuer' => [11,12,13,0]
     },
     
     'M4' => {
      'Schaden' => 4,
      'Schusssound' => RPG::AudioFile.new('M4',100,100),
      'Nachladesound' => RPG::AudioFile.new('M4 Nachladen',100,100),
      'Nachladezeit' => 75,
      'Magazin' => 30,
      'Schussrate' => 4,
      'Spielergrafik' => 'M4',
      'Mündungsfeuer' => [14,15,16,0]
     },
     
    'Dual' => {
      'Schaden' => 1,
      'Schusssound' => RPG::AudioFile.new('Pistole',100,100),
      'Nachladesound' => RPG::AudioFile.new('Dual Nachladen',100,100),
      'Nachladezeit' => 135,
      'Magazin' => 30,
      'Schussrate' => nil,
      'Spielergrafik' => 'Dual',
      'Mündungsfeuer' => [40,41,42,43],
      'Spezial_Schuss' => 'dual_feuerwechsel'
     },
     
    'MG' => {
      'Schaden' => 6,
      'Schusssound' => RPG::AudioFile.new('MG',100,100),
      'Nachladesound' => RPG::AudioFile.new('MG Nachladen',100,100),
      'Nachladezeit' => 233,
      'Magazin' => 100,
      'Schussrate' => 5,
      'Spielergrafik' => 'MG',
      'Mündungsfeuer' => [17,18,19,0],
      'Spezial_Anlegen' => 'schwere_waffe',
      'Spezial_Ablegen' => 'schwere_waffe(false)'
     },
     
     'Shotgun' => {
      'Schaden' => 50,
      'Schusssound' => RPG::AudioFile.new('Shotgun',100,100),
      'Nachladesound' => RPG::AudioFile.new('Shotgun Nachladen',100,100),
      'Nachladezeit' => 65,
      'Magazin' => 1,
      'Schussrate' => nil,
      'Spielergrafik' => 'player_shotgun',
      'Mündungsfeuer' => [20,21,22,23]
     }
    }
    
  end
  
  def ini_gegner
    @gegner_atr = {
    'Bandit' => {
      'Schaden' => 15,
      'HP' => 10,
      'Trefferanimation' => 4,
      'Spezial' => nil,            # Dieser String wird beim Treffen des Eventes mit "eval" ausgeführt
      'Blut' => @standard_blut,     # Ein Array mit den Blutanimationen, ähnlich dem Mündungsfeuer bei den Waffen. Weil ich oft das gleiche Blut benutze, hab ich oben einen Array mit dem Standardblut gemacht
      'Kugeldurchlässig' => true
      },
     'Biene' => {
      'Schaden' => 20,
      'HP' => 4,
      'Trefferanimation' => 4,
      'Spezial' => '!A! hitsound("089-Attack01","089-Attack01")',
      'Blut' => @spinne_blut,
      'Kugeldurchlässig' => false
      },
      'Glas' => {
      'Schaden' => 0,
      'HP' => 1,
      'Trefferanimation' => 4,
      'Spezial' => nil,
      'Blut' => nil,
      'Kugeldurchlässig' => true
      },
      'Schiessender Gegner' => {
      'Schaden' => 100,
      'HP' => 10,
      'Trefferanimation' => 4,
      'Spezial' => nil, #"print ('Hey, du sollst mich nicht abschiessen! Ich bin nur ein Beispiel für einen Schiessenden Gegner und das Spezial Attribut ;-)');return",
      'Blut' => @standard_blut, #nil,
      'Kugeldurchlässig' => true
      },
      'Goblin' => {
      'Schaden' => 1,
      'HP' => 9999,
      'Trefferanimation' => 4,
      'Spezial' => nil,
      'Blut' => @standard_blut,
      'Kugeldurchlässig' => true
      },
      
     'Endgegner' => {
      'Schaden' => 100,
      'HP' => 300,
      'Trefferanimation' => 4,
      'Spezial' => nil,
      'Blut' => @standard_blut,
      'Kugeldurchlässig' => false
      },
      
     'Stampfi' => {
      'Schaden' => 100,
      'HP' => 1500,
      'Trefferanimation' => 4,
      'Spezial' => nil,
      'Blut' => [48,49,50,51],
      'Kugeldurchlässig' => false
      }
     }
   end
   
   def ini_statistik
     @statistik = {
     'Schuesse' => 0,
     'Treffer' => 0,  # Noch nicht programmiert!
     'Gegner' => 0,
     'Multikill' => 0,
     'Verlorene HP' => 0,
     'Zugefuegter Schaden' => 0
     }
   end
   
   def ini_events # Event erkennung. Bitte nur Ändern wenn ihr euch mit RGSS auskennt^^
     @events = {'Gegner' => [],'Hindernis' => [], 'ID' => []}
     begin
     for ev in $game_map.events.values
       case $game_map.map.events[ev.id].name.downcase
        when 'gegner'
          if ev.list[0].code == 108
           komm = $game_map.events[ev.id].list[0].parameters.pop
           if @gegner_atr[komm] == nil
              print ("Bei dem Gegner mit der ID #{ev.id} wurde eine Monsterklasse angegeben, die nicht existiert.") if $DEBUG
              next
            end
         else return
         end
          @events['Gegner'].push({'id' => ev.id, 'Klasse' => komm,
          'HP' => @gegner_atr[komm]['HP']})
          @events['ID'][ev.id] = @events['Gegner'].size - 1
          
        when 'spezial'
          if ev.list[0].code == 108
           komm = $game_map.events[ev.id].list[0].parameters.pop
         else 
           print ("Bei dem Spezialevent mit der ID #{ev.id} wurde kein Spezialaufruf gefunden.") if $DEBUG
           next
         end
        @events['Gegner'] << {'id' => ev.id, 'Spezial' => komm}
        @events['ID'][ev.id] = @events['Gegner'].size - 1
         
        when 'hindernis'
          @events['Hindernis'].push(ev.id)
           
        when 'flaches event'
          $game_map.events[ev.id].flat = true
       end
     end
   rescue StandardError, SyntaxError
     p ev
    end
   end
 end
Wenn ich deine Codezeile in die Zeile über "def initialize" (Zeile 2) einfüge erhalte ich keine Fehlermeldung mehr.
Doch das HUD erscheint nicht. Soll ich die anderen Teile des Skripts auch posten?