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.