设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2266|回复: 7
打印 上一主题 下一主题

[已经过期] 菜鸟求教!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-6-29
帖子
21
跳转到指定楼层
1
发表于 2010-10-26 09:08:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
敌人备注里面 <move=4>
                      <scope=11>
                      <face=sbjface,1>
是什么意思?

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
2
发表于 2010-10-26 09:14:02 | 只看该作者
回复 mmmzxc 的帖子

你用的脚本发出来
回复 支持 反对

使用道具 举报

Lv2.观梦者

铃铃塔的守护者

梦石
0
星屑
626
在线时间
961 小时
注册时间
2010-10-24
帖子
2768

贵宾

3
发表于 2010-10-26 22:35:23 | 只看该作者
敌人备注?!敌人有备注吗?在哪里?在哪里?
(ARPG吗?)

魔法麻将独立游戏制作中,欢迎热情的测试员与UI设计师合作开发~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-6-29
帖子
21
4
 楼主| 发表于 2010-10-26 23:56:40 | 只看该作者
回复 px.凤翔九天 的帖子
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-6-29
帖子
21
5
 楼主| 发表于 2010-10-26 23:58:36 | 只看该作者
回复 saturnfjh 的帖子
#==============================================================================
# ■ Scene_Map
#------------------------------------------------------------------------------
#  マップ画面の処理を行うクラスです。
#==============================================================================

class Scene_Map < Scene_Base
  #--------------------------------------------------------------------------
  # ● 敵ターン更新
  #--------------------------------------------------------------------------
  def update_turn_enemy
    for event in @unit_list
      next unless event.enemy_flag          # エネミーユニットでなければ次へ
      next if event.unit.dead?              # 死んでいれば次へ
      next if event.unit.restriction > 1    # 行動不能なら次へ
      return if event.moving?               # 移動中ならば終了
      @event = event
      unless @event.action_end or @event.move_end
        focus_event(@event)
        @status_window.refresh(@event)
        wait(20)
        @event.unit.make_action             # 行動の決定
      end
      # 移動が終わっていなければ移動する
      unless @event.move_end
        if @event.move_target != nil ? update_enemy_move_target : update_enemy_move
          @event.move_end = true
          Graphics.frame_reset  # フレームスキップ対策
          return
        else
          @event.move_end = true if @event.move_end
        end
      end
      # 行動処理
      unless @event.action_end
        if update_enemy_action
          @event.action_end = true
          Graphics.frame_reset  # フレームスキップ対策
          return
        else
          @event.action_end = true if @event.move_end
        end
      end
      return unless @event.action_end and @event.move_end
    end
    change_turn   # 味方ターンへ戻す
  end
  #--------------------------------------------------------------------------
  # ● 移動処理
  #--------------------------------------------------------------------------
  def update_enemy_move
    # 行動対象が味方なら味方、敵なら敵を移動目標にする
    target = @event.get_near_enemy(@event.unit.action.for_friend?)
    return true if target.empty?                   # 対象がいなければ終了
    # 行動前でなおかつ最優先対象が行動範囲内にいるなら移動を後回しにする
    unless @event.action_end
      attack_dist = 1                           # 攻撃が届く距離を計算
      if @event.unit.action.skill?
        attack_dist = @event.unit.action.skill.attack_dist +
          @event.unit.action.skill.effect_dist
      end
      if @event.get_distance(target[0]) <= attack_dist
        return false
      end
    end
    make_movable_cell                         # 移動可能範囲を作成
    # 逃走移動
    if @event.unit.hp * 100 / @event.unit.maxhp <= @event.away_hp
      # 対象の中で一番近くにいるものを選ぶ
      d = 1024
      for event in target
        if @event.get_distance(event) < d
          d = @event.get_distance(event)
          enemy = event
        end
      end
      # 一番近い敵との距離が一番遠くなるセルをテーブルから選択
      scope_dist = enemy.get_distance(@event)
      for pos in @movable_cell.keys
        if @movable_cell[pos] != ""
          d = enemy.get_distance_cell(pos[0], pos[1])
          if d > scope_dist
            scope_dist = d
            x = pos[0]
            y = pos[1]
          end
        end
      end
    # 接近移動
    else
      # 接近目標に攻撃が届く移動可能なセルがあるか調べる
      attack_dist = 1                           # 攻撃が届く距離を計算
      if @event.unit.action.skill?
        attack_dist = @event.unit.action.skill.attack_dist +
          @event.unit.action.skill.effect_dist
      end
      for event in target
        for pos in @movable_cell.keys
          if @movable_cell[pos] != ""
            d = event.get_distance_cell(pos[0], pos[1])
            if d <= attack_dist
              x = pos[0]
              y = pos[1]
              break
            end
          end
        end
        break if x != nil
      end
      if x == nil
        # 対象との距離が一番短くなるセルをテーブルから選択
        scope_dist = target[0].get_distance(@event)
        for pos in @movable_cell.keys
          if @movable_cell[pos] != ""
            d = target[0].get_distance_cell(pos[0], pos[1])
            if d < scope_dist
              scope_dist = d
              x = pos[0]
              y = pos[1]
            end
          end
        end
      end
    end
    # 移動ルートを作成する
    if x != nil
      make_move_route(x, y)
      $game_player.set_auto_move(x, y)
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 移動目標への移動処理
  #--------------------------------------------------------------------------
  def update_enemy_move_target
    # すでに到着していれば終了
    return true if @event.x == @event.move_target[0] and @event.y == @event.move_target[1]
    make_movable_cell       # 移動可能範囲を作成
    # 目標との距離が一番短くなるセルをテーブルから選択
    dist = 1024
    for pos in @movable_cell.keys
      if @movable_cell[pos] != ""
        d = (pos[0] - @event.move_target[0]).abs + (pos[1] - @event.move_target[1]).abs
        if d < dist
          dist = d
          x = pos[0]
          y = pos[1]
        end
      end
    end
    # 移動ルートを作成する
    if x != nil
      make_move_route(x, y)
      $game_player.set_auto_move(x, y)
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ● 行動処理
  #--------------------------------------------------------------------------
  def update_enemy_action
    check_attack_cell                 # 攻撃可能セルを調べる
    check_effect_cell                 # 効果範囲の作成
    # 効果範囲内に一番多くの対象がいる攻撃可能セル選ぶ
    max = 0
    maxhp = 99999
    for pos in @attack_cell
      n = 0
      hp = 99999
      for pos2 in @effect_cell
        enemy = unit_xy(pos[0] + pos2[0], pos[1] + pos2[1])
        next if enemy == nil                    # 誰もいなければ次のセルへ
        # 行動対象が味方の場合
        if @event.unit.action.for_friend?
          next unless enemy.enemy_flag
          # スキルの効果が適用されない相手なら次へ
          if @event.unit.action.skill?
            next unless enemy.unit.skill_effective?(@event.unit, @event.unit.action.skill)
          end
        # 行動対象が敵の場合
        else
          next if enemy.id == @event.id
          next if enemy.enemy_flag
        end
        n += 1
        hp = enemy.unit.hp if enemy.unit.hp < hp
      end
      if n > max or (n == max and hp < maxhp)
        x = pos[0]
        y = pos[1]
        max = n
        maxhp = hp
      end
    end
    return false if max == 0
    $game_player.set_auto_move(x, y)
    enemy = unit_xy(x, y)
    @status_window.refresh(enemy) if enemy != nil
    wait(10)
    attack(x, y)
    return true
  end
end
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-6-29
帖子
21
6
 楼主| 发表于 2010-10-27 00:02:43 | 只看该作者
我是菜鸟破解的“士兵甲” 但看不懂脚本!
声明 我破解是为咯自己娱乐 决不乱发别人的劳动成果。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
719
在线时间
684 小时
注册时间
2009-5-29
帖子
461
7
发表于 2010-10-27 08:26:51 | 只看该作者
回复 mmmzxc 的帖子


    明显不是和这个脚本有关…… 你找找 class Game_Enemy ,看看是哪个脚本重新定义过 enemy的 note
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-6-29
帖子
21
8
 楼主| 发表于 2010-10-28 01:47:06 | 只看该作者
回复 saturnfjh 的帖子用最土的办法试出来咯 <move=3>移动步数
<scope=15>巡视范围
<face=sbjface1,3>
文件  图片名 第3个


   
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-13 13:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表