RPG-Maker Quartier

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!
Aktuelle Zeit: Di Mär 03, 2020 0:41

Alle Zeiten sind UTC + 1 Stunde



Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
Offline
Gnu-Hirte
Gnu-Hirte
Benutzeravatar
Beiträge: 451
Alter: 25
Wohnort: Konohagakure
 Betreff des Beitrags: SCRIPT ERROR [RMXP]
BeitragVerfasst: So Mär 27, 2011 19:49 
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.

_________________
Bild


Nach oben
 Profil ICQ  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde


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.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de