Kampfsystem-Idee
Idee wäre mal folgende:
Wenn man Angriff und Ziel gewählt hat, erscheint ein Balken über dem jeweiligen Charakter, der außen ganz rot ist und zur Mitte hin immer grüner wird. Vom einen Ende des Balkens zum anderen und immer hin und her läuft ein schwarzer kleiner senkrechter Balken. Man kann den senkrechten Balken anhalten wenn man die Aktionstaste (Enter) drückt. Je näher der senkrechte Balken nun der Mitte ist, desto höher ist der Schaden in Prozent. Ist er fast ganz in der Mitte, ist der Schaden kritisch und das "CRITICAL"-Zeichen wird angezeigt. Die passenden Soundeffekte geben dem Ganzen dann den letzten Schliff.


Das hier ist ein Bild, wie der Balken aussehen könnte. Der schwarze Strich läuft dabei schnell von links nach rechts. Am besten wäre es, wenn der Balken nach Abschluss langsam ausgeblendet werden könnte, und beim nächsten in der Runde wieder eingeblendet.
Wie findet ihr die Idee? Kann man sowas gut umsetzen? Wenn jemand Zeit und Lust hat, so etwas zu machen, wäre das umwerfend.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
class Scene_Battle # Graphics/Pictures/ Balken_Bitmap = "DamageBalken" # Speed Balken_Speed = 10 # Width (from left/right) which is a total fail Balken_FailRange = 50 # Power when total fail Balken_FailPower = 10 # Critical Range Balken_CritRange = 5 def update_phase4 case @phase4_step when 1 update_phase4_step1 when 2 update_phase4_step2 when 3 update_phase4_step3 when 4 update_phase4_step4 when 5 update_phase4_step5 when 5.5379 update_phase4_balken when 6 update_phase4_step6 end end def update_phase4_balken @update_phase4_balken_wurst = 0 if !@update_phase4_balken_wurst sprite = @balken_cursor_sprite x,w = @balken_sprite.x, @balken_sprite.bitmap.width if @update_phase4_balken_wurst == 0 sprite.x += Balken_Speed if sprite.x >= x+w sprite.x = w+x @update_phase4_balken_wurst = 1 end else sprite.x -= Balken_Speed if sprite.x <= x sprite.x = x @update_phase4_balken_wurst = 0 end end if Input.trigger?(Input::C) x = @balken_cursor_sprite.x - @balken_sprite.x w = @balken_sprite.bitmap.width if x < Balken_FailRange or x > w-Balken_FailRange # Fail @balken_power = Balken_FailPower end_balken_step return end w -= Balken_FailRange*2 w /= 2 x = (w-x).abs r = Balken_CritRange/2 if x >= r # Critical @balken_power = 200 end_balken_step return end w -= r y = (120-Balken_FailPower)/w @balken_power = y*x end_balken_step end end def start_balken_step @balken_sprite = Sprite.new @balken_sprite.bitmap = RPG::Cache.picture(Balken_Bitmap) w = @balken_sprite.bitmap.width h = @balken_sprite.bitmap.height x, y = 320-w/2, 240-h/2 @balken_sprite.x = x @balken_sprite.y = y @balken_cursor_sprite = Sprite.new @balken_cursor_sprite.bitmap = Bitmap.new(3, @balken_sprite.bitmap.height+4) @balken_cursor_sprite.y = y-2 @balken_cursor_sprite.x = x color = Color.new(0,0,0) @balken_cursor_sprite.bitmap.fill_rect(@balken_cursor_sprite.bitmap.rect, color) end def end_balken_step [@balken_sprite, @balken_cursor_sprite, @balken_cursor_sprite.bitmap].each {|i| i.dispose} case @active_battler.current_action.kind when 0 if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critical = crit && target.damage != "Miss" target.damage = target.damage.round end when 1 set_target_battlers(@skill.scope) for target in @target_battlers target.skill_effect(@active_battler, @skill) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critial = crit && target.damage != "Miss" target.damage = target.damage.round end end @phase4_step = 5 end def make_basic_action_result @balken_power = 100 if @active_battler.current_action.basic == 0 @animation1_id = @active_battler.animation1_id @animation2_id = @active_battler.animation2_id if @active_battler.is_a?(Game_Enemy) if @active_battler.restriction == 3 target = $game_troop.random_target_enemy elsif @active_battler.restriction == 2 target = $game_party.random_target_actor else index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) end end if @active_battler.is_a?(Game_Actor) if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end end if @active_battler.is_a?(Game_Actor) start_balken_step @phase4_step = 5.5379 else @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critical = crit end end return end if @active_battler.current_action.basic == 1 @help_window.set_text($data_system.words.guard, 1) return end if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2 @help_window.set_text("Escape", 1) @active_battler.escape return end if @active_battler.current_action.basic == 3 $game_temp.forcing_battler = nil @phase4_step = 1 return end end def make_skill_action_result @skill = $data_skills[@active_battler.current_action.skill_id] unless @active_battler.current_action.forcing unless @active_battler.skill_can_use?(@skill.id) $game_temp.forcing_battler = nil @phase4_step = 1 return end end @active_battler.sp -= @skill.sp_cost @status_window.refresh @help_window.set_text(@skill.name, 1) @animation1_id = @skill.animation1_id @animation2_id = @skill.animation2_id @common_event_id = @skill.common_event_id if @skill.power != 0 and @active_battler.is_a?(Game_Actor) start_balken_step @phase4_step = 5.5379 else set_target_battlers(@skill.scope) for target in @target_battlers target.skill_effect(@active_battler, @skill) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critial = crit end @phase4_step = 5 end end end |
Re:
MFG
Damage-Balken.rar
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Asandril« (31. Mai 2009, 15:46)
Benutzerinformationen überspringen
Ankömmling
Motto: Probleme sind da um sie auf andere Leute zu übertragen...
ich hab jetz fast 10minuten gekämpft (also, den kampf wiederholt, un hab die ganze zeit kritische treffer gemacht...
ich würde das ein wenig verbessern...also, den kritischen bereich ein wenig schmäler machen, weils ja sonst zu leicht wird...
Und noch was: es laggt ein bissal aber ich glaub, da kann man eh nix machen...bin ja auch nurne niete im skripten...
mfg c-mon
-
Online-Flashgame-Maker
-
Willst du mir helfen?
Wer mich in einem billigen Onlinegame unterstützen will, bitte Hier klicken 
zum Lesen den Text mit der Maus markieren
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Dafür gibts Einstellungen ;D
Zitat
ich hab jetz fast 10minuten gekämpft (also, den kampf wiederholt, un hab die ganze zeit kritische treffer gemacht...
ich würde das ein wenig verbessern...also, den kritischen bereich ein wenig schmäler machen, weils ja sonst zu leicht wird...

Außerdem sind gar keine Animationen und Geräusche. Und die Tatsache, dass die vier Balken alle sofort hintereinander kommen, macht die Sache nicht sehr elegant. Kann man nicht einmal bei einem Char aussuchen, dann kommt der Balken, dann der Angriff. -Dann erst der nächste Char?!
Ich weiß, ich hab mich einfach falsch ausgedrückt, es wäre trotzdem sehr nett, es nochmal zu überarbeiten und nach Fehlern zu suchen. Skills funktionieren bei mir gar nicht!
Und der Schaden, den die Gegner verursachen wird als Dezimalzahl (46.0 oder 60.0) angezeigt.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »CosmoMemories« (31. Mai 2009, 14:48)
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 |
class Scene_Battle # Graphics/Pictures/ Balken_Bitmap = "DamageBalken" # Speed Balken_Speed = 10 # Width (from left/right) which is a total fail Balken_FailRange = 50 # Power when total fail Balken_FailPower = 10 # Critical Range Balken_CritRange = 5 def update_phase4 case @phase4_step when 1 update_phase4_step1 when 2 update_phase4_step2 when 3 update_phase4_step3 when 4 update_phase4_step4 when 5 update_phase4_step5 when 5.5379 update_phase4_balken when 6 update_phase4_step6 end end def update_phase4_balken @update_phase4_balken_wurst = 0 if !@update_phase4_balken_wurst sprite = @balken_cursor_sprite x,w = @balken_sprite.x, @balken_sprite.bitmap.width if @update_phase4_balken_wurst == 0 sprite.x += Balken_Speed if sprite.x >= x+w sprite.x = w+x @update_phase4_balken_wurst = 1 end else sprite.x -= Balken_Speed if sprite.x <= x sprite.x = x @update_phase4_balken_wurst = 0 end end if Input.trigger?(Input::C) x = @balken_cursor_sprite.x - @balken_sprite.x w = @balken_sprite.bitmap.width if x < Balken_FailRange or x > w-Balken_FailRange # Fail @balken_power = Balken_FailPower end_balken_step return end w -= Balken_FailRange*2 w /= 2 x = (w-x).abs r = Balken_CritRange/2 if x >= r # Critical @balken_power = 200 end_balken_step return end w -= r y = (120-Balken_FailPower)/w @balken_power = y*x end_balken_step end end def start_balken_step @balken_sprite = Sprite.new @balken_sprite.bitmap = RPG::Cache.picture(Balken_Bitmap) w = @balken_sprite.bitmap.width h = @balken_sprite.bitmap.height x, y = 320-w/2, 240-h/2 @balken_sprite.x = x @balken_sprite.y = y @balken_cursor_sprite = Sprite.new @balken_cursor_sprite.bitmap = Bitmap.new(3, @balken_sprite.bitmap.height+4) @balken_cursor_sprite.y = y-2 @balken_cursor_sprite.x = x color = Color.new(0,0,0) @balken_cursor_sprite.bitmap.fill_rect(@balken_cursor_sprite.bitmap.rect, color) end def end_balken_step [@balken_sprite, @balken_cursor_sprite, @balken_cursor_sprite.bitmap].each {|i| i.dispose} case @active_battler.current_action.kind when 0 if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critical = crit && target.damage != "Miss" target.damage = target.damage.round.to_i if target.damage.is_a?(Numeric) end when 1 set_target_battlers(@skill.scope) for target in @target_battlers target.skill_effect(@active_battler, @skill) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.critical = crit && target.damage != "Miss" target.damage = target.damage.round.to_i if target.damage.is_a?(Numeric) end end @phase4_step = 4 end def make_basic_action_result @balken_power = 100 if @active_battler.current_action.basic == 0 @animation1_id = @active_battler.animation1_id @animation2_id = @active_battler.animation2_id if @active_battler.is_a?(Game_Enemy) if @active_battler.restriction == 3 target = $game_troop.random_target_enemy elsif @active_battler.restriction == 2 target = $game_party.random_target_actor else index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) end end if @active_battler.is_a?(Game_Actor) if @active_battler.restriction == 3 target = $game_party.random_target_actor elsif @active_battler.restriction == 2 target = $game_troop.random_target_enemy else index = @active_battler.current_action.target_index target = $game_troop.smooth_target_enemy(index) end end if @active_battler.is_a?(Game_Actor) start_balken_step @phase4_step = 5.5379 else @target_battlers = [target] for target in @target_battlers target.attack_effect(@active_battler) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.damage = target.damage.round.to_i if target.damage.is_a?(Numeric) target.critical = crit end end return end if @active_battler.current_action.basic == 1 @help_window.set_text($data_system.words.guard, 1) return end if @active_battler.is_a?(Game_Enemy) and @active_battler.current_action.basic == 2 @help_window.set_text("Escape", 1) @active_battler.escape return end if @active_battler.current_action.basic == 3 $game_temp.forcing_battler = nil @phase4_step = 1 return end end def make_skill_action_result @skill = $data_skills[@active_battler.current_action.skill_id] unless @active_battler.current_action.forcing unless @active_battler.skill_can_use?(@skill.id) $game_temp.forcing_battler = nil @phase4_step = 1 return end end @active_battler.sp -= @skill.sp_cost @status_window.refresh @help_window.set_text(@skill.name, 1) @animation1_id = @skill.animation1_id @animation2_id = @skill.animation2_id @common_event_id = @skill.common_event_id if @skill.power != 0 and @active_battler.is_a?(Game_Actor) start_balken_step @phase4_step = 5.5379 else set_target_battlers(@skill.scope) for target in @target_battlers target.skill_effect(@active_battler, @skill) crit = @balken_power == 200 @balken_power /= 2 if crit target.damage *= @balken_power/100.0 target.damage = target.damage.round.to_i if target.damage.is_a?(Numeric) target.critial = crit end @phase4_step = 5 end end end |
Aber eben nur bei dir, daher nicht meine Schuld^^
Zitat
Bei mir treten aber sehr viele Fehler auf, wenn ich das Skript benutze...
Geräusche? oô
Zitat
Außerdem sind gar keine Animationen und Geräusche.
Die Animationen hab ich jetzt hinzugefügt.
So isses doch auch =)
Zitat
Kann man nicht einmal bei einem Char aussuchen, dann kommt der Balken, dann der Angriff. -Dann erst der nächste Char?!
Was heißt denn sie funktionieren nicht? Bei mir kam ein Fehler wegen einem Tippfehler (hatte vorhin vergessen sie zu testen)
Zitat
Skills funktionieren bei mir gar nicht!
Auch verbessert
Zitat
Und der Schaden, den die Gegner verursachen wird als Dezimalzahl (46.0 oder 60.0) angezeigt.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
So isses doch auch =)
Zitat
Kann man nicht einmal bei einem Char aussuchen, dann kommt der Balken, dann der Angriff. -Dann erst der nächste Char?!
Momentan läuft es so ab:
Man wählt einen Angriff bei Char A
Dann wählt man einen Angriff bei Char B
dann bei Char C und dann bei Char D
Dann kommen direkt hintereinander 4 Balken! Das sieht nicht so schön aus, finde ich.
Wenn es so ablaufen könnte wäre es meiner Meinung nach besser:
Charakter A - Balken A - Angriff A
Charakter B - Balken B - Angriff B
usw.
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Greift Char1 an wird Balkenpicture001 angezeigt
Greift Char2 an wird Balkenpicture002 angezeigt
usw.
Das wär toll
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

EDIT: Das Skript ist fehlerhaft. Es bricht während des Kämpfens oft ab. Und ein fünftes DamageBalken Bild für Charakter 5 kann ich auch nicht hinzufügen.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CosmoMemories« (8. Oktober 2009, 20:37)
Ähnliche Themen
-
Archiv Spielvorstellungen »-
Manticore - Vom Schicksal gezeichnet
(10. Januar 2009, 17:24)
-
Archiv Spielvorstellungen »-
Das Schwert der Vier (Demo)
(17. März 2008, 01:56)
-
Archiv Entwürfe und Entwicklung »-
[Idee] Hab ne Idee!! ^^
(7. März 2009, 22:18)
-
Skript-Anfragen »-
kampfsystem von rpg 2003 zu vx
(15. Februar 2009, 13:09)
-
Archiv Spielvorstellungen »-
AKS Demo
(17. Dezember 2008, 14:07)



