Hier dreht sich alles um die RPG-Maker-Reihe von ASCII/Enterbrain. Der RPG-Maker ist ein Tool, mit dem du dir dein eigenes kleines Rollenspiel erstellen kannst. Du findest hier alles, was du dazu brauchst. Aber natürlich umfasst die Community noch mehr!
hey leute. ich habe mir das Action Battle system aus dem creation Asylum geholt, und habe festgestellt, dass ich einen Error erhalte. aber nur bei ner bestimmten gegnerklasse. O.o das script hat 2 seiten/scriptpages whatever. der error ist in der ersten page, da er nen name error bei der zeile 367 hat.
Code:
Zeile: 367 switch_id = action.condition_switch_id
er erkennt das "action" nicht. wurde nicht deklariert, oder?
dies ist die komplette erste page:
Code:
#============================================================================== # ■ Action Battle System #------------------------------------------------------------------------------ # By: Near Fantastica # Date: 07/2/05 # Version 2 # # A key – X input – Skill Hot Key 1 # S key – Y input – Skill Hot Key 2 # D key – Z input – Skill Hot Key 3 # Q key – L input – Attacking # W key –R input – Defending # # The Skill Hot Keys can be changed in the Skill Menu by cursering over to the # skill you want and pressing the hot key you want to set that skill too ~! # # Thanks to Harosata, Akura, Hazarim, Deke, Arcaine and # Thanks to everyone for testing and for your input #==============================================================================
class Action_Battle_System #-------------------------------------------------------------------------- # ● Open instance variable #-------------------------------------------------------------------------- attr_accessor :active_actor attr_accessor :display attr_accessor :player_defending attr_accessor :skill_hot_key attr_accessor :dash_level #-------------------------------------------------------------------------- # ● Initialization #-------------------------------------------------------------------------- def initialize @event_counter = 0 @display = Sprite.new @display.bitmap = Bitmap.new(88, 48) @clear_counter = 0 @active_actor = 0 @player_defending = false @restore = false @reduce= false @timer = 0 @dash_level = 5 @sec = 0 @skill_hot_key = {} @skill_hot_key[1] = 0 @skill_hot_key[2] = 0 @skill_hot_key[3] = 0 @enemy_id = {} @enemy_name = {} @enemy_hp = {} @enemy_sp = {} @enemy_str = {} @enemy_dex = {} @enemy_agi = {} @enemy_int = {} @enemy_atk = {} @enemy_pdef = {} @enemy_mdef = {} @enemy_eva = {} @enemy_animation1_id = {} @enemy_animation2_id = {} @enemy_exp = {} @enemy_gold = {} @enemy_item_id = {} @enemy_weapon_id = {} @enemy_armor_id = {} @enemy_treasure_prob = {} @enemy_engagement = {} @enemy_movment = {} @enemy_frequency = {} @enemy_speed = {} @enemy_defending = {} @enemy_dex_loop = {} end #-------------------------------------------------------------------------- # ● Enemy Setup #-------------------------------------------------------------------------- def enemy_setup # Setup Event Max @event_counter = 0 for i in 1..999 if $game_map.map.events[i].id > @event_counter @event_counter = $game_map.map.events[i].id end end # Setup Event for i in 1..@event_counter #$game_map.map.events.size # Set the event to nill setting @enemy_id[i] = 0 for x in 1..$data_enemies.size - 1 if $game_map.map.events[i] == nil next i end if $game_map.map.events[i].name[$data_enemies[x].name] # Event is an Enemy Setup Emeny @enemy_id[i] = $data_enemies[x].id @enemy_name[i] = $data_enemies[x].name @enemy_hp[i] = $data_enemies[x].maxhp @enemy_sp[i] = $data_enemies[x].maxsp @enemy_str[i] = $data_enemies[x].str @enemy_dex[i] = $data_enemies[x].dex @enemy_agi [i] = $data_enemies[x].agi @enemy_int[i] = $data_enemies[x].int @enemy_atk[i] = $data_enemies[x].atk @enemy_pdef[i] = $data_enemies[x].pdef @enemy_mdef[i] = $data_enemies[x].mdef @enemy_eva[i] = $data_enemies[x].eva @enemy_animation1_id[i] = $data_enemies[x].animation1_id @enemy_animation2_id[i] = $data_enemies[x].animation2_id @enemy_exp[i] = $data_enemies[x].exp @enemy_gold[i] = $data_enemies[x].gold @enemy_item_id[i] = $data_enemies[x].item_id @enemy_weapon_id[i] = $data_enemies[x].weapon_id @enemy_armor_id[i] = $data_enemies[x].armor_id @enemy_treasure_prob[i] = $data_enemies[x].treasure_prob @enemy_states = [] @enemy_engagement[i] = false @enemy_movment[i] = 0 @enemy_frequency[i] = 0 @enemy_speed[i] = 0 @enemy_defending[i] = false @enemy_dex_loop[i] = 0 end end end end #-------------------------------------------------------------------------- # ● Update Dash #-------------------------------------------------------------------------- def update_dash # check if sheild is active if @player_defending == true $game_player.move_speed = 3 return end # check is Dash Mode Active if Input.press?(Input::A) if $game_player.moving? # If A Key press enter dash mode # reduce dash level $game_player.move_speed=5 @restore = false if @reduce == false @timer = 50 # Initial time off set @reduce = true else @timer-= 1 end @sec = (@timer / Graphics.frame_rate)%60 if @sec == 0 if @dash_level != 0 @dash_level -= 1 @timer = 50 # Timer Count end end if @dash_level == 0 $game_player.move_speed=4 end end else # restore dash level $game_player.move_speed=4 @reduce = false if @restore == false @timer = 80 # Initial time off set @restore = true else @timer-= 1 end @sec = (@timer / Graphics.frame_rate)%60 if @sec == 0 if @dash_level != 5 @dash_level+= 1 @timer = 60 # Timer Count end end end end #-------------------------------------------------------------------------- # ● Clear Display #-------------------------------------------------------------------------- def clear_display @clear_counter += 1 if @clear_counter == 50 @clear_counter = 0 @display.bitmap.clear end end #-------------------------------------------------------------------------- # ● Update #-------------------------------------------------------------------------- def update update_dash clear_display for i in 1..@event_counter # Check if Event is an Enemy if @enemy_id[i] == 0 next else # Enemy Engaged if @enemy_engagement[i] == true # Check Range if in_range?(i,5) # Update Battle if in_range?(i,1) event_melee_attack(i) else event_skill_attack(i) end next else @enemy_engagement[i] = false # Change Movement $game_map.events[i].move_type = @enemy_movment[i] $game_map.events[i].move_frequency = @enemy_frequency[i] $game_map.events[i].move_speed = @enemy_speed[i] next end end # Check Range if in_range?(i,5) # Check Event Direction if facing_player?(i) # Set Enemy Engaged @enemy_engagement[i] = true # Change Movement @enemy_movment[i] = $game_map.events[i].move_type $game_map.events[i].move_type = 2 @enemy_frequency[i] = $game_map.events[i].move_frequency $game_map.events[i].move_frequency = 5 @enemy_speed[i] = $game_map.events[i].move_speed $game_map.events[i].move_speed = 4 # Update Battle if in_range?(i,1) event_melee_attack(i) else event_skill_attack(i) end end end end end end #-------------------------------------------------------------------------- # ● Check If Event Is In Range #-------------------------------------------------------------------------- def in_range?(event_index, range) playerx = $game_player.x playery = $game_player.y eventx = $game_map.events[event_index].x eventy = $game_map.events[event_index].y # Determine x and y of circle x = (playerx - eventx) * (playerx - eventx) y = (playery - eventy) * (playery - eventy) # Determine raduis r = x +y if r <= (range * range) return true else return false end end #-------------------------------------------------------------------------- # ● Check If Event Is Facing Player #-------------------------------------------------------------------------- def facing_player?(event_index) playerx = $game_player.x playery = $game_player.y eventx = $game_map.events[event_index].x eventy = $game_map.events[event_index].y event_direction = $game_map.events[event_index].direction # Check down if event_direction == 2 if playery >= eventy return true end end # Check Left if event_direction == 4 if playerx <= eventx return true end end # Check Right if event_direction == 6 if playerx >= eventx return true end end # Check Up if event_direction == 8 if playery <= eventy return true end end return false end #-------------------------------------------------------------------------- # ● Check Event Attack Condisions # NOTE : there is no turns in the ABS therfore there is no turn percondition #-------------------------------------------------------------------------- def event_melee_preconditions(event_index) if @enemy_dex_loop[event_index] >= @enemy_dex[event_index] * 20 @enemy_dex_loop[event_index] = 0 for i in 0..$data_enemies[@enemy_id[event_index]].actions.size - 1 if $data_enemies[@enemy_id[event_index]].actions[i].kind == 0 actions = $data_enemies[@enemy_id[event_index]].actions[i] # Check Hp Level condition if @enemy_hp[event_index] * 100.0 / $data_enemies[@enemy_id[event_index]].maxhp > actions.condition_hp next end # Check Max Level condition if $game_party.max_level < actions.condition_level next end # Check switch condition switch_id = actions.condition_switch_id if actions.condition_switch_id > 0 and $game_switches[switch_id] == false next end # Check Rank to see if it is larger then the dice roll n = rand(10) if actions.rating < n next end # Return Action case actions.basic when 0 return 0 when 1 return 1 when 2 return 2 when 3 return 3 end end end # No action taken return 3 else # add to the dex loop @enemy_dex_loop[event_index] += @enemy_dex[event_index] return 3 end end #-------------------------------------------------------------------------- # ● Check Event Attack Condisions # NOTE : there is no turns in the ABS therfore there is no turn percondition #-------------------------------------------------------------------------- def event_skill_preconditions(event_index) if @enemy_dex_loop[event_index] >= @enemy_dex[event_index] * 100 @enemy_dex_loop[event_index] = 0 for i in 0..$data_enemies[@enemy_id[event_index]].actions.size - 1 if $data_enemies[@enemy_id[event_index]].actions[i].kind == 1 actions = $data_enemies[@enemy_id[event_index]].actions[i] # Check Hp Level condition if @enemy_hp[event_index] * 100.0 / $data_enemies[@enemy_id[event_index]].maxhp > actions.condition_hp return 0 end # Check Max Level condition if $game_party.max_level < actions.condition_level return 0 end # Check switch condition switch_id = action.condition_switch_id if action.condition_switch_id > 0 and $game_switches[switch_id] == false return 0 end return actions.skill_id end end return 0 else # add to the dex loop @enemy_dex_loop[event_index] += @enemy_dex[event_index] return 0 end end #-------------------------------------------------------------------------- # ● Calculation of attribute correction # element_set : Attribute #-------------------------------------------------------------------------- def player_elements_correct(element_set) # In case of non attribute if element_set == [] # return 100 return 100 end # The weakest one is returned in the attribute which is given * method element_rate # is defined in Game_Actor and the Game_Enemy class which are succeeded from this class weakest = -100 for i in element_set weakest = [weakest, $game_party.actors[@active_actor].element_rate(i)].max end return weakest end #-------------------------------------------------------------------------- # ● Event Melee Attack #-------------------------------------------------------------------------- def event_melee_attack(event_index) kind = event_melee_preconditions(event_index) case kind when 0 # Enemy Attacking @enemy_defending[event_index] = false # First on-target hit decision hit_rate = 100 for i in @enemy_states hit_rate *= $data_states[i].hit_rate / 100.0 end hit_result = (rand(100) < hit_rate) # In case of on-target hit if hit_result == true # Calculating the basic damage atk = [@enemy_atk[event_index] - $game_party.actors[@active_actor].pdef / 2, 0].max damage = atk * (20 + @enemy_str[event_index] ) / 20 # Attribute correction damage *= player_elements_correct([]) damage /= 100 # When the mark of the damage is correct if damage > 0 # Critical correction if rand(100) < 4 * @enemy_dex[event_index] / $game_party.actors[@active_actor].agi damage *= 2 end # Defense correction if @player_defending == true damage /= 2 end end # Dispersion if damage.abs > 0 amp = [damage.abs * 15 / 100, 1].max damage += rand(amp+1) + rand(amp+1) - amp end # Second on-target hit decision eva = 8 * $game_party.actors[@active_actor].agi / @enemy_dex[event_index] + $game_party.actors[@active_actor].eva hit = damage < 0 ? 100 : 100 - eva # Check evade cant_evade = false for i in $game_party.actors[@active_actor].states if $data_states[i].cant_evade cant_evade = true end end hit = cant_evade ? 100 : hit hit_result = (rand(100) < hit) end # In case of on-target hit if hit_result == true # State shocking cancellation # Note : I still can not get the states effects to work correctly # remove_states_shock # From HP damage subtraction damage = damage.abs $game_party.actors[@active_actor].hp -= damage hit_player(damage, @enemy_animation2_id[event_index]) if $game_party.actors[@active_actor].hp <= 0 player_dead end # State change # Note : I still can not get the states effects to work correctly # states_plus(@enemy_states) # states_minus(@enemy_states) end when 1 # Enemy Defening if @enemy_defending[event_index] != true @enemy_defending[event_index] = true $game_map.events[event_index].move_speed = $game_map.events[event_index].move_speed - 1 end when 2 # Enemy Escaping # Note : Could Add a Teleport Event to make the Event jump far away from player when 3 # No Action Taken end end #-------------------------------------------------------------------------- # ● Event Skill Attack #-------------------------------------------------------------------------- def event_skill_attack(event_index) # Check Percondisions of the Enemy skill_id = event_skill_preconditions(event_index) # If Condisions not meet if skill_id == 0 return end skill = $data_skills[skill_id] # Check Sp Cost if skill.sp_cost > @enemy_sp[event_index] return end @enemy_sp[event_index] -= skill.sp_cost # When the effective range of skill with friend of HP 1 or more, your own HP 0, # or the effective range of skill with the friend of HP 0, your own HP are 1 or more, if ((skill.scope == 3 or skill.scope == 4) and @enemy_hp == 0) or ((skill.scope == 5 or skill.scope == 6) and @enemy_hp >= 1) # メソッド終了 return end # Clearing the effective flag effective = false # When common event ID is effective, setting the effective flag effective |= skill.common_event_id > 0 # First on-target hit decision skill_hit = 100 for i in @enemy_states skill_hit *= $data_states[i].hit_rate / 100.0 end user_hit = 100 for i in @enemy_states user_hit *= $data_states[i].hit_rate / 100.0 end hit = skill_hit if skill.atk_f > 0 hit *= user_hit / 100 end hit_result = (rand(100) < hit) # In case of uncertain skill setting the effective flag effective |= hit < 100 # In case of on-target hit if hit_result == true # Calculating power power = skill.power + @enemy_atk[event_index] * skill.atk_f / 100 if power > 0 power -= $game_party.actors[@active_actor].pdef * skill.pdef_f / 200 power -= $game_party.actors[@active_actor].mdef * skill.mdef_f / 200 power = [power, 0].max end # Calculating magnification ratio rate = 20 rate += (@enemy_str[event_index] * skill.str_f / 100) rate += (@enemy_dex[event_index] * skill.dex_f / 100) rate += (@enemy_agi[event_index] * skill.agi_f / 100) rate += (@enemy_int[event_index] * skill.int_f / 100) # Calculating the basic damage damage = power * rate / 20 # Attribute correction damage *= player_elements_correct(skill.element_set) damage /= 100 # When the mark of the damage is correct, if damage > 0 # Defense correction if @player_defending == true damage /= 2 end end # Dispersion if skill.variance > 0 and damage.abs > 0 amp = [damage.abs * skill.variance / 100, 1].max damage += rand(amp+1) + rand(amp+1) - amp end # Second on-target hit decision eva = 8 * $game_party.actors[@active_actor].agi / @enemy_dex[event_index] + $game_party.actors[@active_actor].eva hit = damage < 0 ? 100 : 100 - eva * skill.eva_f / 100 cant_evade = false for i in $game_party.actors[@active_actor].states if $data_states[i].cant_evade cant_evade = true end end hit = cant_evade ? 100 : hit hit_result = (rand(100) < hit) # In case of uncertain skill setting the effective flag effective |= hit < 100 end # In case of on-target hit if hit_result == true # In case of physical attack other than power 0 if skill.power != 0 and skill.atk_f > 0 # State shocking cancellation # Note : I still can not get the states effects to work correctly # remove_states_shock # Setting the effective flag effective = true end # From HP damage subtraction last_hp = $game_party.actors[@active_actor].hp $game_party.actors[@active_actor].hp -= damage effective |= $game_party.actors[@active_actor].hp != last_hp # State change # Note : I still can not get the states effects to work correctly # effective |= states_plus(skill.plus_state_set) # effective |= states_minus(skill.minus_state_set) if skill.power == 0 # When power is 0 # Set Damage to Zero damage = 0 end hit_player(damage, skill.animation2_id) if $game_party.actors[@active_actor].hp <= 0 player_dead end end end #-------------------------------------------------------------------------- # ● Display Hit Animation #-------------------------------------------------------------------------- def player_dead if $game_party.all_dead? $game_temp.gameover = true end $scene = Scene_Menu.new end #-------------------------------------------------------------------------- # ● Display Hit Animation #-------------------------------------------------------------------------- def hit_player(damage, animation_id) if damage != 0 $game_player.jump(0, 0) $game_player.animation_id = animation_id @display.bitmap.clear @clear_counter = 0 @display.bitmap.font.name = $defaultfonttype # Unknown At This Time @display.bitmap.font.size = 32 @display.x = ($game_player.real_x - $game_map.display_x) / 4 @display.y = ($game_player.real_y - $game_map.display_y) / 4 @display.z = 500 @display.bitmap.font.color.set(255, 0, 0) @display.bitmap.draw_text(@display.bitmap.rect, damage.to_s, 1) end end #-------------------------------------------------------------------------- # ● Calculation of attribute correction # element_set : Attribute #-------------------------------------------------------------------------- def event_elements_correct(element_set, event_index) # In case of non attribute if element_set == [] # return 100 return 100 end # The weakest one is returned in the attribute which is given * method element_rate # is defined in Game_Actor and the Game_Enemy class which are succeeded from this class weakest = -100 for i in element_set # Note: I still can not get the states effects to work correctly weakest = [weakest, $data_enemies[@enemy_id[event_index]].element_rate(i)].max end return weakest end #-------------------------------------------------------------------------- # ● Player Melee Attack Preconditions #-------------------------------------------------------------------------- def player_melee_preconditions for i in 1..@event_counter # Check if Event is an Enemy if @enemy_id[i] == 0 next end if in_range?(i,1) player_melee_attack(i) next end end end #-------------------------------------------------------------------------- # ● Event Melee Attack #-------------------------------------------------------------------------- def player_melee_attack(event_index) # First on-target hit decision hit_rate = 100 for i in $game_party.actors[@active_actor].states hit_rate *= $data_states[i].hit_rate / 100.0 end hit_result = (rand(100) < hit_rate) # In case of on-target hit if hit_result == true # Calculating the basic damage atk = [$game_party.actors[@active_actor].atk - @enemy_pdef[event_index] / 2, 0].max damage = atk * (20 + $game_party.actors[@active_actor].str) / 20 # Attribute correction damage *= 100 #event_elements_correct($game_party.actors[@active_actor].element_set, event_index) damage /= 100 # When the mark of the damage is correct if damage > 0 # Critical correction if rand(100) < 4 * $game_party.actors[@active_actor].dex / @enemy_agi[event_index] damage *= 2 end # Defense correction if @enemy_defending== true damage /= 2 end end # Dispersion if damage.abs > 0 amp = [damage.abs * 15 / 100, 1].max damage += rand(amp+1) + rand(amp+1) - amp end # Second on-target hit decision eva = 8 * @enemy_agi[event_index] / $game_party.actors[@active_actor].dex + @enemy_eva[event_index] hit = damage < 0 ? 100 : 100 - eva # Check evade cant_evade = false for i in @enemy_states if $data_states[i].cant_evade cant_evade = true end end hit = cant_evade ? 100 : hit hit_result = (rand(100) < hit) end # In case of on-target hit if hit_result == true # State shocking cancellation # Note : I still can not get the states effects to work correctly # remove_states_shock # From HP damage subtraction damage = damage.abs @enemy_hp[event_index] -= damage # State change # Note : I still can not get the states effects to work correctly # states_plus($game_party.actors[@active_actor].states) # states_minus($game_party.actors[@active_actor].states) hit_event(event_index,damage, $game_party.actors[@active_actor].animation2_id) if @enemy_hp[event_index] <= 0 battle_spoils(event_index) end end end #-------------------------------------------------------------------------- # ● Player Skill Attack Preconditions #-------------------------------------------------------------------------- def player_skill_preconditions(index) if$game_party.actors[@active_actor].skill_learn?(@skill_hot_key[index]) # Set Skill skill = $data_skills[@skill_hot_key[index]] # Check Sp Cost if skill.sp_cost > $game_party.actors[@active_actor].sp return end # Set Sp $game_party.actors[@active_actor].sp -= skill.sp_cost # Check Skills Scope case skill.scope when 1 # One Enemy for i in 1..@event_counter # Check if Event is an Enemy if @enemy_id[i] == 0 next else case $data_classes[$game_party.actors[@active_actor].class_id].position when 0 if in_range?(i,1) player_skill_attack(skill, i) return end when 1 if in_range?(i,2) player_skill_attack(skill, i) return end when 2 if in_range?(i,5) player_skill_attack(skill, i) return end end end end when 2 # All Emenies for i in 1..@event_counter # Check if Event is an Enemy if @enemy_id[i] == 0 next else case $data_classes[$game_party.actors[@active_actor].class_id].position when 0 if in_range?(i,1) player_skill_attack(skill, i) return end when 1 if in_range?(i,2) player_skill_attack(skill, i) return end when 2 if in_range?(i,5) player_skill_attack(skill, i) return end end end end when 3 # One Ally # Note : I still can not get the states effects to work correctly and therefore # can not script this but these skill can skill be actived from the Main Menu when 4 # All Allies # Note : I still can not get the states effects to work correctly and therefore # can not script this but these skill can skill be actived from the Main Menu end else return end end #-------------------------------------------------------------------------- # ● Player Skill Attack #-------------------------------------------------------------------------- def player_skill_attack(skill, event_index) # When the effective range of skill with friend of HP 1 or more, your own HP 0, # or the effective range of skill with the friend of HP 0, your own HP are 1 or more, if ((skill.scope == 3 or skill.scope == 4) and @enemy_hp == 0) or ((skill.scope == 5 or skill.scope == 6) and @enemy_hp >= 1) return end # Clearing the effective flag effective = false # When common event ID is effective, setting the effective flag effective |= skill.common_event_id > 0 # First on-target hit decision skill_hit = 100 for i in $game_party.actors[@active_actor].states skill_hit *= $data_states[i].hit_rate / 100.0 end user_hit = 100 for i in $game_party.actors[@active_actor].states user_hit *= $data_states[i].hit_rate / 100.0 end hit = skill_hit if skill.atk_f > 0 hit *= user_hit / 100 end hit_result = (rand(100) < hit) # In case of uncertain skill setting the effective flag effective |= hit < 100 # In case of on-target hit if hit_result == true # Calculating power power = skill.power + $game_party.actors[@active_actor].atk * skill.atk_f / 100 if power > 0 power -= @enemy_pdef[event_index] * skill.pdef_f / 200 power -= @enemy_mdef[event_index] * skill.mdef_f / 200 power = [power, 0].max end # Calculating magnification ratio rate = 20 rate += ($game_party.actors[@active_actor].str * skill.str_f / 100) rate += ($game_party.actors[@active_actor].dex * skill.dex_f / 100) rate += ($game_party.actors[@active_actor].agi * skill.agi_f / 100) rate += ($game_party.actors[@active_actor].int * skill.int_f / 100) # Calculating the basic damage damage = power * rate / 20 # Attribute correction damage *= 100 #event_elements_correct(skill.element_set, event_index) damage /= 100 # When the mark of the damage is correct, if damage > 0 # Defense correction if @enemy_defending == true damage /= 2 end end # Dispersion if skill.variance > 0 and damage.abs > 0 amp = [damage.abs * skill.variance / 100, 1].max damage += rand(amp+1) + rand(amp+1) - amp end # Second on-target hit decision eva = 8 * @enemy_agi[event_index] / $game_party.actors[@active_actor].dex + @enemy_eva[event_index] hit = damage < 0 ? 100 : 100 - eva * skill.eva_f / 100 cant_evade = false for i in @enemy_states if $data_states[i].cant_evade cant_evade = true end end hit = cant_evade ? 100 : hit hit_result = (rand(100) < hit) # In case of uncertain skill setting the effective flag effective |= hit < 100 end # In case of on-target hit if hit_result == true # In case of physical attack other than power 0 if skill.power != 0 and skill.atk_f > 0 # State shocking cancellation # Note : I still can not get the states effects to work correctly # remove_states_shock # Setting the effective flag effective = true end # From HP damage subtraction last_hp = @enemy_hp[event_index] @enemy_hp[event_index] -= damage effective |= @enemy_hp[event_index] != last_hp # State change # Note : I still can not get the states effects to work correctly # effective |= states_plus(skill.plus_state_set) # effective |= states_minus(skill.minus_state_set) if skill.power == 0 # When power is 0 # Set Damage to Zero damage = 0 end hit_event(event_index, damage, skill.animation2_id) if @enemy_hp[event_index] <= 0 battle_spoils(event_index) end return end end #-------------------------------------------------------------------------- # ● Display Hit Animation #-------------------------------------------------------------------------- def hit_event(event_index, damage, animation_id) if damage != 0 $game_map.events[event_index].jump(0, 0) $game_map.events[event_index].animation_id = animation_id @display.bitmap.clear @clear_counter = 0 @display.bitmap.font.name = $defaultfonttype # Unknown At This Time @display.bitmap.font.size = 32 @display.x = ($game_map.events[event_index].real_x - $game_map.display_x) / 4 @display.y = ($game_map.events[event_index].real_y - $game_map.display_y) / 4 @display.z = 500 @display.bitmap.font.color.set(255, 0, 0) @display.bitmap.draw_text(@display.bitmap.rect, damage.to_s, 1) end end #-------------------------------------------------------------------------- # ● Spoils of Battle #-------------------------------------------------------------------------- def battle_spoils(event_index) $game_map.map.events[event_index].name = "Tot" @enemy_id[event_index] = 0 $game_map.events[event_index].erase $game_variables[13] += 1 $game_variables[11] += rand(3) + 1 treasures = [] if rand(100) < @enemy_treasure_prob[event_index] if @enemy_item_id[event_index] > 0 treasures.push($data_items[@enemy_item_id[event_index]]) end if @enemy_weapon_id[event_index]> 0 treasures.push($data_weapons[@enemy_weapon_id[event_index]]) end if @enemy_armor_id[event_index] > 0 treasures.push($data_armors[@enemy_armor_id[event_index]]) end end # トレジャーの数を 6 個までに限定 treasures = treasures[0..5] # EXP 獲得 for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.exp += @enemy_exp[event_index] end end # ゴールド獲得 $game_party.gain_gold(@enemy_gold[event_index] ) # トレジャー獲得 for item in treasures case item when RPG::Item $game_party.gain_item(item.id, 1) when RPG::Weapon $game_party.gain_weapon(item.id, 1) when RPG::Armor $game_party.gain_armor(item.id, 1) end end end end
falls die zweite auch benötigt wird, einfach posten. danke im voraus!
Ach btw: wenn ein gegner-event auf der map ist, es aber eigentlich erst später kommen sollte, denn greift mich ein unsichtabers event an. also das ist dann das event, was eigentlich erst später sein sollte und auch sichtbar sein sollte. es greift mich stattdessen ein unsichtbares etwas an, bevor der switch meinetwegen "monster kommt jetzt" auf ON ist. also praktisch bevor der gegner eigentlich zu sehen ist.
TWS: Fürs Protokoll. Problem wurde vom Threadersteller provisorisch gelöst.
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.