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

Project1

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

敌人等级终极设定教程+范例

 关闭 [复制链接]

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
跳转到指定楼层
1
发表于 2006-11-18 18:15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
其实就是给敌人新建了等级属性,在队伍里的事件设置里为敌人设置等级(设置完后加完全回复哦,否则,血不满哦)。具体内容看范例吧,脚本部分很简单,事件部分也很简单{/hx}。
首先设置Game_Enemy哦。具体的可以自己根据需要更改

  1. #==============================================================================
  2. # ■ Game_Enemy
  3. #------------------------------------------------------------------------------
  4. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
  5. # 内部使用。
  6. #==============================================================================
  7. $a1 = rand(10)    #更改能力用的随机数变量
  8. $a2 = rand(5)     #更改能力用的随机数变量
  9. $a3 = rand(2)     #更改能力用的随机数变量
  10. class Game_Enemy < Game_Battler
  11.   attr_accessor   :level                    # 水平
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     troop_id     : 循环 ID
  15.   #     member_index : 循环成员的索引
  16.   #--------------------------------------------------------------------------
  17.   def initialize(troop_id, member_index)
  18.     super()
  19.     @troop_id = troop_id
  20.     @member_index = member_index
  21.     troop = $data_troops[@troop_id]
  22.     @enemy_id = troop.members[@member_index].enemy_id
  23.     enemy = $data_enemies[@enemy_id]
  24.         
  25.    
  26.     @level = 1                  #初始等级的设定
  27.    

  28.     @battler_name = enemy.battler_name
  29.     @battler_hue = enemy.battler_hue
  30.     @hp = maxhp
  31.     @sp = maxsp
  32.     @hidden = troop.members[@member_index].hidden
  33.     @immortal = troop.members[@member_index].immortal
  34.   end
  35.   
  36.   
  37.   #--------------------------------------------------------------------------
  38.   # ● 更改水品
  39.   #     level : 新的等级
  40.   #--------------------------------------------------------------------------
  41.   def level
  42.     return @level
  43.   end
  44.   
  45.   
  46.   #--------------------------------------------------------------------------
  47.   # ● 获取敌人 ID
  48.   #--------------------------------------------------------------------------
  49.   def id
  50.     return @enemy_id
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取索引
  54.   #--------------------------------------------------------------------------
  55.   def index
  56.     return @member_index
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取名称
  60.   #--------------------------------------------------------------------------
  61.   def name
  62.     return $data_enemies[@enemy_id].name
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取基本 MaxHP
  66.   #--------------------------------------------------------------------------
  67.   def base_maxhp
  68.     return ($data_enemies[@enemy_id].maxhp + $a1) * @level
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 获取基本 MaxSP
  72.   #--------------------------------------------------------------------------
  73.   def base_maxsp
  74.     return ($data_enemies[@enemy_id].maxsp + $a1) * @level
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取基本力量
  78.   #--------------------------------------------------------------------------
  79.   def base_str
  80.     return ($data_enemies[@enemy_id].str + $a2) * @level
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 获取基本灵巧
  84.   #--------------------------------------------------------------------------
  85.   def base_dex
  86.     return ($data_enemies[@enemy_id].dex + $a2) * @level
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取基本速度
  90.   #--------------------------------------------------------------------------
  91.   def base_agi
  92.     return ($data_enemies[@enemy_id].agi + $a2) * @level
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 获取基本魔力
  96.   #--------------------------------------------------------------------------
  97.   def base_int
  98.     return ($data_enemies[@enemy_id].int + $a2) * @level
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 获取基本攻击力
  102.   #--------------------------------------------------------------------------
  103.   def base_atk
  104.     return ($data_enemies[@enemy_id].atk + $a2) * @level
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 获取基本物理防御
  108.   #--------------------------------------------------------------------------
  109.   def base_pdef
  110.     return ($data_enemies[@enemy_id].pdef + $a2) * @level
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 获取基本魔法防御
  114.   #--------------------------------------------------------------------------
  115.   def base_mdef
  116.     return ($data_enemies[@enemy_id].mdef + $a2) * @level
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 获取基本回避修正
  120.   #--------------------------------------------------------------------------
  121.   def base_eva
  122.     return ($data_enemies[@enemy_id].eva + $a3) * @level
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 普通攻击 获取攻击方动画 ID
  126.   #--------------------------------------------------------------------------
  127.   def animation1_id
  128.     return $data_enemies[@enemy_id].animation1_id
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 普通攻击 获取对像方动画 ID
  132.   #--------------------------------------------------------------------------
  133.   def animation2_id
  134.     return $data_enemies[@enemy_id].animation2_id
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 获取属性修正值
  138.   #     element_id : 属性 ID
  139.   #--------------------------------------------------------------------------
  140.   def element_rate(element_id)
  141.     # 获取对应属性有效度的数值
  142.     table = [0,200,150,100,50,0,-100]
  143.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  144.     # 状态能防御本属性的情况下效果减半
  145.     for i in @states
  146.       if $data_states[i].guard_element_set.include?(element_id)
  147.         result /= 2
  148.       end
  149.     end
  150.     # 过程结束
  151.     return result
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 获取属性有效度
  155.   #--------------------------------------------------------------------------
  156.   def state_ranks
  157.     return $data_enemies[@enemy_id].state_ranks
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 属性防御判定
  161.   #     state_id : 状态 ID
  162.   #--------------------------------------------------------------------------
  163.   def state_guard?(state_id)
  164.     return false
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 获取普通攻击属性
  168.   #--------------------------------------------------------------------------
  169.   def element_set
  170.     return []
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 获取普通攻击的状态变化 (+)
  174.   #--------------------------------------------------------------------------
  175.   def plus_state_set
  176.     return []
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取普通攻击的状态变化 (-)
  180.   #--------------------------------------------------------------------------
  181.   def minus_state_set
  182.     return []
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 获取行动
  186.   #--------------------------------------------------------------------------
  187.   def actions
  188.     return $data_enemies[@enemy_id].actions
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 获取 EXP
  192.   #--------------------------------------------------------------------------
  193.   def exp
  194.     for actor in $game_party.actors
  195.       if actor.level > @level + 5 or actor.level < @level - 5
  196.         return $data_enemies[@enemy_id].exp + $a3
  197.       elsif actor.level > @level + 15
  198.         return ($data_enemies[@enemy_id].exp + $a3) / 10
  199.       else
  200.         return (($data_enemies[@enemy_id].exp + $a3) * @level) / 2
  201.       end
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 获取金钱
  206.   #--------------------------------------------------------------------------
  207.   def gold
  208.     for actor in $game_party.actors
  209.       if actor.level > @level + 5 or actor.level < @level - 5
  210.         return $data_enemies[@enemy_id].gold + $a3
  211.       elsif actor.level > @level + 15
  212.         return ($data_enemies[@enemy_id].gold + $a3) / 10
  213.       else
  214.         return (($data_enemies[@enemy_id].gold + $a3) * @level) / 2
  215.       end
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 获取物品 ID
  220.   #--------------------------------------------------------------------------
  221.   def item_id
  222.     return $data_enemies[@enemy_id].item_id
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 获取武器 ID
  226.   #--------------------------------------------------------------------------
  227.   def weapon_id
  228.     return $data_enemies[@enemy_id].weapon_id
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 获取放具 ID
  232.   #--------------------------------------------------------------------------
  233.   def armor_id
  234.     return $data_enemies[@enemy_id].armor_id
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 获取宝物出现率
  238.   #--------------------------------------------------------------------------
  239.   def treasure_prob
  240.     return $data_enemies[@enemy_id].treasure_prob
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 取得战斗画面 X 坐标
  244.   #--------------------------------------------------------------------------
  245.   def screen_x
  246.     return $data_troops[@troop_id].members[@member_index].x
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 取得战斗画面 Y 坐标
  250.   #--------------------------------------------------------------------------
  251.   def screen_y
  252.     return $data_troops[@troop_id].members[@member_index].y
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 取得战斗画面 Z 坐标
  256.   #--------------------------------------------------------------------------
  257.   def screen_z
  258.     return screen_y
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● 逃跑
  262.   #--------------------------------------------------------------------------
  263.   def escape
  264.     # 设置击中标志
  265.     @hidden = true
  266.     # 清除当前行动
  267.     self.current_action.clear
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 变身
  271.   #     enemy_id : 变身为的敌人 ID
  272.   #--------------------------------------------------------------------------
  273.   def transform(enemy_id)
  274.     # 更改敌人 ID
  275.     @enemy_id = enemy_id
  276.     # 更改战斗图形
  277.     @battler_name = $data_enemies[@enemy_id].battler_name
  278.     @battler_hue = $data_enemies[@enemy_id].battler_hue
  279.     # 在生成行动
  280.     make_action
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 生成行动
  284.   #--------------------------------------------------------------------------
  285.   def make_action
  286.     # 清除当前行动
  287.     self.current_action.clear
  288.     # 无法行动的情况
  289.     unless self.movable?
  290.       # 过程结束
  291.       return
  292.     end
  293.     # 抽取现在有效的行动
  294.     available_actions = []
  295.     rating_max = 0
  296.     for action in self.actions
  297.       # 确认回合条件
  298.       n = $game_temp.battle_turn
  299.       a = action.condition_turn_a
  300.       b = action.condition_turn_b
  301.       if (b == 0 and n != a) or
  302.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  303.         next
  304.       end
  305.       # 确认 HP 条件
  306.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  307.         next
  308.       end
  309.       # 确认等级条件
  310.       if $game_party.max_level < action.condition_level
  311.         next
  312.       end
  313.       # 确认开关条件
  314.       switch_id = action.condition_switch_id
  315.       if switch_id > 0 and $game_switches[switch_id] == false
  316.         next
  317.       end
  318.       # 符合条件 : 添加本行动
  319.       available_actions.push(action)
  320.       if action.rating > rating_max
  321.         rating_max = action.rating
  322.       end
  323.     end
  324.     # 最大概率值作为 3 合计计算(0 除外)
  325.     ratings_total = 0
  326.     for action in available_actions
  327.       if action.rating > rating_max - 3
  328.         ratings_total += action.rating - (rating_max - 3)
  329.       end
  330.     end
  331.     # 概率合计不为 0 的情况下
  332.     if ratings_total > 0
  333.       # 生成随机数
  334.       value = rand(ratings_total)
  335.       # 设置对应生成随机数的当前行动
  336.       for action in available_actions
  337.         if action.rating > rating_max - 3
  338.           if value < action.rating - (rating_max - 3)
  339.             self.current_action.kind = action.kind
  340.             self.current_action.basic = action.basic
  341.             self.current_action.skill_id = action.skill_id
  342.             self.current_action.decide_random_target_for_enemy
  343.             return
  344.           else
  345.             value -= action.rating - (rating_max - 3)
  346.           end
  347.         end
  348.       end
  349.     end
  350.   end
  351. end
复制代码

然后,更改Window_Help,让其等级显示出来。

  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #==============================================================================

  6. class Window_Help < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 640, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 设置文本
  16.   #     text  : 窗口显示的字符串
  17.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  18.   #--------------------------------------------------------------------------
  19.   def set_text(text, align = 0)
  20.     # 如果文本和对齐方式的至少一方与上次的不同
  21.     if text != @text or align != @align
  22.       # 再描绘文本
  23.       self.contents.clear
  24.       self.contents.font.color = normal_color
  25.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  26.       @text = text
  27.       @align = align
  28.       @actor = nil
  29.     end
  30.     self.visible = true
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置角色
  34.   #     actor : 要显示状态的角色
  35.   #--------------------------------------------------------------------------
  36.   def set_actor(actor)
  37.     if actor != @actor
  38.       self.contents.clear
  39.       draw_actor_name(actor, 4, 0)
  40.       draw_actor_state(actor, 140, 0)
  41.       draw_actor_hp(actor, 284, 0)
  42.       draw_actor_sp(actor, 460, 0)
  43.       @actor = actor
  44.       @text = nil
  45.       self.visible = true
  46.     end
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 设置敌人
  50.   #     enemy : 要显示名字和状态的敌人
  51.   #--------------------------------------------------------------------------
  52.   def set_enemy(enemy)
  53.    
  54.     lv = enemy.level.to_s
  55.    
  56.    
  57.     text = "等级" + lv + "  " + enemy.name
  58.     state_text = make_battler_state_text(enemy, 112, false)
  59.     if state_text != ""
  60.       text += "  " + state_text
  61.     end
  62.     set_text(text, 1)
  63.   end
  64. end
复制代码

就此,脚本部分大功告成,然后就是事件部分啦。
将下边的设置放在队伍的事件设置里,后边的数值自己随便改(别太BT哦,否则,玩家会疯掉的)。然后,在脚本插入完,还要给敌人完全回复一下,以便血魔补满。

  1. $game_troop.enemies[0].level = 10
  2. $game_troop.enemies[1].level = 6
  3. $game_troop.enemies[2].level = 5
  4. $game_troop.enemies[3].level = 8
  5. $game_troop.enemies[4].level = 12
  6. $game_troop.enemies[5].level = 9
  7. $game_troop.enemies[6].level = 15
  8. $game_troop.enemies[7].level = 7
  9. $a1 = rand(10)
  10. $a2 = rand(5)
  11. $a3 = rand(2)
复制代码



代码部分做了更新,不会出现敌人每回合能力变化了,增加3个全局变量进行了控制,终于正常了。{/dk}

工程下载:
FTP工程完美版:加入了敌人血量以区分等级差异:
ftp://[email protected]/尚� ... 级终极设定.rar


              [本贴由 絮儿 于 2007-6-30 14:25:32 进行了编辑]
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
2
 楼主| 发表于 2006-11-18 18:15:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
其实就是给敌人新建了等级属性,在队伍里的事件设置里为敌人设置等级(设置完后加完全回复哦,否则,血不满哦)。具体内容看范例吧,脚本部分很简单,事件部分也很简单{/hx}。
首先设置Game_Enemy哦。具体的可以自己根据需要更改

  1. #==============================================================================
  2. # ■ Game_Enemy
  3. #------------------------------------------------------------------------------
  4. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
  5. # 内部使用。
  6. #==============================================================================
  7. $a1 = rand(10)    #更改能力用的随机数变量
  8. $a2 = rand(5)     #更改能力用的随机数变量
  9. $a3 = rand(2)     #更改能力用的随机数变量
  10. class Game_Enemy < Game_Battler
  11.   attr_accessor   :level                    # 水平
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     troop_id     : 循环 ID
  15.   #     member_index : 循环成员的索引
  16.   #--------------------------------------------------------------------------
  17.   def initialize(troop_id, member_index)
  18.     super()
  19.     @troop_id = troop_id
  20.     @member_index = member_index
  21.     troop = $data_troops[@troop_id]
  22.     @enemy_id = troop.members[@member_index].enemy_id
  23.     enemy = $data_enemies[@enemy_id]
  24.         
  25.    
  26.     @level = 1                  #初始等级的设定
  27.    

  28.     @battler_name = enemy.battler_name
  29.     @battler_hue = enemy.battler_hue
  30.     @hp = maxhp
  31.     @sp = maxsp
  32.     @hidden = troop.members[@member_index].hidden
  33.     @immortal = troop.members[@member_index].immortal
  34.   end
  35.   
  36.   
  37.   #--------------------------------------------------------------------------
  38.   # ● 更改水品
  39.   #     level : 新的等级
  40.   #--------------------------------------------------------------------------
  41.   def level
  42.     return @level
  43.   end
  44.   
  45.   
  46.   #--------------------------------------------------------------------------
  47.   # ● 获取敌人 ID
  48.   #--------------------------------------------------------------------------
  49.   def id
  50.     return @enemy_id
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● 获取索引
  54.   #--------------------------------------------------------------------------
  55.   def index
  56.     return @member_index
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 获取名称
  60.   #--------------------------------------------------------------------------
  61.   def name
  62.     return $data_enemies[@enemy_id].name
  63.   end
  64.   #--------------------------------------------------------------------------
  65.   # ● 获取基本 MaxHP
  66.   #--------------------------------------------------------------------------
  67.   def base_maxhp
  68.     return ($data_enemies[@enemy_id].maxhp + $a1) * @level
  69.   end
  70.   #--------------------------------------------------------------------------
  71.   # ● 获取基本 MaxSP
  72.   #--------------------------------------------------------------------------
  73.   def base_maxsp
  74.     return ($data_enemies[@enemy_id].maxsp + $a1) * @level
  75.   end
  76.   #--------------------------------------------------------------------------
  77.   # ● 获取基本力量
  78.   #--------------------------------------------------------------------------
  79.   def base_str
  80.     return ($data_enemies[@enemy_id].str + $a2) * @level
  81.   end
  82.   #--------------------------------------------------------------------------
  83.   # ● 获取基本灵巧
  84.   #--------------------------------------------------------------------------
  85.   def base_dex
  86.     return ($data_enemies[@enemy_id].dex + $a2) * @level
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # ● 获取基本速度
  90.   #--------------------------------------------------------------------------
  91.   def base_agi
  92.     return ($data_enemies[@enemy_id].agi + $a2) * @level
  93.   end
  94.   #--------------------------------------------------------------------------
  95.   # ● 获取基本魔力
  96.   #--------------------------------------------------------------------------
  97.   def base_int
  98.     return ($data_enemies[@enemy_id].int + $a2) * @level
  99.   end
  100.   #--------------------------------------------------------------------------
  101.   # ● 获取基本攻击力
  102.   #--------------------------------------------------------------------------
  103.   def base_atk
  104.     return ($data_enemies[@enemy_id].atk + $a2) * @level
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   # ● 获取基本物理防御
  108.   #--------------------------------------------------------------------------
  109.   def base_pdef
  110.     return ($data_enemies[@enemy_id].pdef + $a2) * @level
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 获取基本魔法防御
  114.   #--------------------------------------------------------------------------
  115.   def base_mdef
  116.     return ($data_enemies[@enemy_id].mdef + $a2) * @level
  117.   end
  118.   #--------------------------------------------------------------------------
  119.   # ● 获取基本回避修正
  120.   #--------------------------------------------------------------------------
  121.   def base_eva
  122.     return ($data_enemies[@enemy_id].eva + $a3) * @level
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 普通攻击 获取攻击方动画 ID
  126.   #--------------------------------------------------------------------------
  127.   def animation1_id
  128.     return $data_enemies[@enemy_id].animation1_id
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 普通攻击 获取对像方动画 ID
  132.   #--------------------------------------------------------------------------
  133.   def animation2_id
  134.     return $data_enemies[@enemy_id].animation2_id
  135.   end
  136.   #--------------------------------------------------------------------------
  137.   # ● 获取属性修正值
  138.   #     element_id : 属性 ID
  139.   #--------------------------------------------------------------------------
  140.   def element_rate(element_id)
  141.     # 获取对应属性有效度的数值
  142.     table = [0,200,150,100,50,0,-100]
  143.     result = table[$data_enemies[@enemy_id].element_ranks[element_id]]
  144.     # 状态能防御本属性的情况下效果减半
  145.     for i in @states
  146.       if $data_states[i].guard_element_set.include?(element_id)
  147.         result /= 2
  148.       end
  149.     end
  150.     # 过程结束
  151.     return result
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 获取属性有效度
  155.   #--------------------------------------------------------------------------
  156.   def state_ranks
  157.     return $data_enemies[@enemy_id].state_ranks
  158.   end
  159.   #--------------------------------------------------------------------------
  160.   # ● 属性防御判定
  161.   #     state_id : 状态 ID
  162.   #--------------------------------------------------------------------------
  163.   def state_guard?(state_id)
  164.     return false
  165.   end
  166.   #--------------------------------------------------------------------------
  167.   # ● 获取普通攻击属性
  168.   #--------------------------------------------------------------------------
  169.   def element_set
  170.     return []
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # ● 获取普通攻击的状态变化 (+)
  174.   #--------------------------------------------------------------------------
  175.   def plus_state_set
  176.     return []
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 获取普通攻击的状态变化 (-)
  180.   #--------------------------------------------------------------------------
  181.   def minus_state_set
  182.     return []
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # ● 获取行动
  186.   #--------------------------------------------------------------------------
  187.   def actions
  188.     return $data_enemies[@enemy_id].actions
  189.   end
  190.   #--------------------------------------------------------------------------
  191.   # ● 获取 EXP
  192.   #--------------------------------------------------------------------------
  193.   def exp
  194.     for actor in $game_party.actors
  195.       if actor.level > @level + 5 or actor.level < @level - 5
  196.         return $data_enemies[@enemy_id].exp + $a3
  197.       elsif actor.level > @level + 15
  198.         return ($data_enemies[@enemy_id].exp + $a3) / 10
  199.       else
  200.         return (($data_enemies[@enemy_id].exp + $a3) * @level) / 2
  201.       end
  202.     end
  203.   end
  204.   #--------------------------------------------------------------------------
  205.   # ● 获取金钱
  206.   #--------------------------------------------------------------------------
  207.   def gold
  208.     for actor in $game_party.actors
  209.       if actor.level > @level + 5 or actor.level < @level - 5
  210.         return $data_enemies[@enemy_id].gold + $a3
  211.       elsif actor.level > @level + 15
  212.         return ($data_enemies[@enemy_id].gold + $a3) / 10
  213.       else
  214.         return (($data_enemies[@enemy_id].gold + $a3) * @level) / 2
  215.       end
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 获取物品 ID
  220.   #--------------------------------------------------------------------------
  221.   def item_id
  222.     return $data_enemies[@enemy_id].item_id
  223.   end
  224.   #--------------------------------------------------------------------------
  225.   # ● 获取武器 ID
  226.   #--------------------------------------------------------------------------
  227.   def weapon_id
  228.     return $data_enemies[@enemy_id].weapon_id
  229.   end
  230.   #--------------------------------------------------------------------------
  231.   # ● 获取放具 ID
  232.   #--------------------------------------------------------------------------
  233.   def armor_id
  234.     return $data_enemies[@enemy_id].armor_id
  235.   end
  236.   #--------------------------------------------------------------------------
  237.   # ● 获取宝物出现率
  238.   #--------------------------------------------------------------------------
  239.   def treasure_prob
  240.     return $data_enemies[@enemy_id].treasure_prob
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 取得战斗画面 X 坐标
  244.   #--------------------------------------------------------------------------
  245.   def screen_x
  246.     return $data_troops[@troop_id].members[@member_index].x
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 取得战斗画面 Y 坐标
  250.   #--------------------------------------------------------------------------
  251.   def screen_y
  252.     return $data_troops[@troop_id].members[@member_index].y
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 取得战斗画面 Z 坐标
  256.   #--------------------------------------------------------------------------
  257.   def screen_z
  258.     return screen_y
  259.   end
  260.   #--------------------------------------------------------------------------
  261.   # ● 逃跑
  262.   #--------------------------------------------------------------------------
  263.   def escape
  264.     # 设置击中标志
  265.     @hidden = true
  266.     # 清除当前行动
  267.     self.current_action.clear
  268.   end
  269.   #--------------------------------------------------------------------------
  270.   # ● 变身
  271.   #     enemy_id : 变身为的敌人 ID
  272.   #--------------------------------------------------------------------------
  273.   def transform(enemy_id)
  274.     # 更改敌人 ID
  275.     @enemy_id = enemy_id
  276.     # 更改战斗图形
  277.     @battler_name = $data_enemies[@enemy_id].battler_name
  278.     @battler_hue = $data_enemies[@enemy_id].battler_hue
  279.     # 在生成行动
  280.     make_action
  281.   end
  282.   #--------------------------------------------------------------------------
  283.   # ● 生成行动
  284.   #--------------------------------------------------------------------------
  285.   def make_action
  286.     # 清除当前行动
  287.     self.current_action.clear
  288.     # 无法行动的情况
  289.     unless self.movable?
  290.       # 过程结束
  291.       return
  292.     end
  293.     # 抽取现在有效的行动
  294.     available_actions = []
  295.     rating_max = 0
  296.     for action in self.actions
  297.       # 确认回合条件
  298.       n = $game_temp.battle_turn
  299.       a = action.condition_turn_a
  300.       b = action.condition_turn_b
  301.       if (b == 0 and n != a) or
  302.          (b > 0 and (n < 1 or n < a or n % b != a % b))
  303.         next
  304.       end
  305.       # 确认 HP 条件
  306.       if self.hp * 100.0 / self.maxhp > action.condition_hp
  307.         next
  308.       end
  309.       # 确认等级条件
  310.       if $game_party.max_level < action.condition_level
  311.         next
  312.       end
  313.       # 确认开关条件
  314.       switch_id = action.condition_switch_id
  315.       if switch_id > 0 and $game_switches[switch_id] == false
  316.         next
  317.       end
  318.       # 符合条件 : 添加本行动
  319.       available_actions.push(action)
  320.       if action.rating > rating_max
  321.         rating_max = action.rating
  322.       end
  323.     end
  324.     # 最大概率值作为 3 合计计算(0 除外)
  325.     ratings_total = 0
  326.     for action in available_actions
  327.       if action.rating > rating_max - 3
  328.         ratings_total += action.rating - (rating_max - 3)
  329.       end
  330.     end
  331.     # 概率合计不为 0 的情况下
  332.     if ratings_total > 0
  333.       # 生成随机数
  334.       value = rand(ratings_total)
  335.       # 设置对应生成随机数的当前行动
  336.       for action in available_actions
  337.         if action.rating > rating_max - 3
  338.           if value < action.rating - (rating_max - 3)
  339.             self.current_action.kind = action.kind
  340.             self.current_action.basic = action.basic
  341.             self.current_action.skill_id = action.skill_id
  342.             self.current_action.decide_random_target_for_enemy
  343.             return
  344.           else
  345.             value -= action.rating - (rating_max - 3)
  346.           end
  347.         end
  348.       end
  349.     end
  350.   end
  351. end
复制代码

然后,更改Window_Help,让其等级显示出来。

  1. #==============================================================================
  2. # ■ Window_Help
  3. #------------------------------------------------------------------------------
  4. #  特技及物品的说明、角色的状态显示的窗口。
  5. #==============================================================================

  6. class Window_Help < Window_Base
  7.   #--------------------------------------------------------------------------
  8.   # ● 初始化对像
  9.   #--------------------------------------------------------------------------
  10.   def initialize
  11.     super(0, 0, 640, 64)
  12.     self.contents = Bitmap.new(width - 32, height - 32)
  13.   end
  14.   #--------------------------------------------------------------------------
  15.   # ● 设置文本
  16.   #     text  : 窗口显示的字符串
  17.   #     align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
  18.   #--------------------------------------------------------------------------
  19.   def set_text(text, align = 0)
  20.     # 如果文本和对齐方式的至少一方与上次的不同
  21.     if text != @text or align != @align
  22.       # 再描绘文本
  23.       self.contents.clear
  24.       self.contents.font.color = normal_color
  25.       self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
  26.       @text = text
  27.       @align = align
  28.       @actor = nil
  29.     end
  30.     self.visible = true
  31.   end
  32.   #--------------------------------------------------------------------------
  33.   # ● 设置角色
  34.   #     actor : 要显示状态的角色
  35.   #--------------------------------------------------------------------------
  36.   def set_actor(actor)
  37.     if actor != @actor
  38.       self.contents.clear
  39.       draw_actor_name(actor, 4, 0)
  40.       draw_actor_state(actor, 140, 0)
  41.       draw_actor_hp(actor, 284, 0)
  42.       draw_actor_sp(actor, 460, 0)
  43.       @actor = actor
  44.       @text = nil
  45.       self.visible = true
  46.     end
  47.   end
  48.   #--------------------------------------------------------------------------
  49.   # ● 设置敌人
  50.   #     enemy : 要显示名字和状态的敌人
  51.   #--------------------------------------------------------------------------
  52.   def set_enemy(enemy)
  53.    
  54.     lv = enemy.level.to_s
  55.    
  56.    
  57.     text = "等级" + lv + "  " + enemy.name
  58.     state_text = make_battler_state_text(enemy, 112, false)
  59.     if state_text != ""
  60.       text += "  " + state_text
  61.     end
  62.     set_text(text, 1)
  63.   end
  64. end
复制代码

就此,脚本部分大功告成,然后就是事件部分啦。
将下边的设置放在队伍的事件设置里,后边的数值自己随便改(别太BT哦,否则,玩家会疯掉的)。然后,在脚本插入完,还要给敌人完全回复一下,以便血魔补满。

  1. $game_troop.enemies[0].level = 10
  2. $game_troop.enemies[1].level = 6
  3. $game_troop.enemies[2].level = 5
  4. $game_troop.enemies[3].level = 8
  5. $game_troop.enemies[4].level = 12
  6. $game_troop.enemies[5].level = 9
  7. $game_troop.enemies[6].level = 15
  8. $game_troop.enemies[7].level = 7
  9. $a1 = rand(10)
  10. $a2 = rand(5)
  11. $a3 = rand(2)
复制代码



代码部分做了更新,不会出现敌人每回合能力变化了,增加3个全局变量进行了控制,终于正常了。{/dk}

工程下载:
FTP工程完美版:加入了敌人血量以区分等级差异:
ftp://[email protected]/尚� ... 级终极设定.rar


              [本贴由 絮儿 于 2007-6-30 14:25:32 进行了编辑]
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521

Lv1.梦旅人

梦石
0
星屑
5
在线时间
0 小时
注册时间
2006-11-18
帖子
1
3
发表于 2006-11-18 22:07:35 | 只看该作者
好長喔-                           -
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
4
 楼主| 发表于 2006-11-19 21:38:33 | 只看该作者
以下引用nickdkk于2006-11-18 14:07:35的发言:

好長喔-                           -

修改的地方很少啦,就几行而已,只是发的完整的才那么长的。
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521
回复 支持 反对

使用道具 举报

Lv2.观梦者


  • 更新完成啦

梦石
0
星屑
774
在线时间
6267 小时
注册时间
2006-6-7
帖子
8462
5
发表于 2006-11-19 21:40:18 | 只看该作者
哇哈哈 看懂了前面20行-_-||
这写技术含量的东西理解起来也真不容易
回复 支持 反对

使用道具 举报

Lv1.梦旅人

彩色的银子

梦石
0
星屑
50
在线时间
190 小时
注册时间
2006-6-13
帖子
1361

贵宾

6
发表于 2006-11-20 05:33:17 | 只看该作者
-___-`|||能力居然直接加rand...............
好象这样会在战斗中一直变化的说~~~~
你可以放个显血的脚本的说~~~~会一直变的说~~``orz........-______________-
-.-
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风雪夜不归人

梦石
0
星屑
50
在线时间
276 小时
注册时间
2006-3-7
帖子
6721

贵宾

7
发表于 2006-11-20 18:34:43 | 只看该作者
............怎么样让它不直接显示等级.....而只是显示........啊,头晕啊~~多做点注释吧= =|||
有些人,到了七八月份就会诈尸。
宫斗,是女生永远的爱。
冷门,是本人不变的欲。
作弊,是玩家自由的痛。
练级,是橙光割舍的情。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
8
 楼主| 发表于 2006-11-20 19:21:32 | 只看该作者
以下引用神思于2006-11-19 21:33:17的发言:

-___-`|||能力居然直接加rand...............
好象这样会在战斗中一直变化的说~~~~
你可以放个显血的脚本的说~~~~会一直变的说~~``orz........-______________-

啊哦,我犯了魔力宝贝曾经出现的一个错误了,{/dk}
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22552
在线时间
2340 小时
注册时间
2005-10-15
帖子
1160

开拓者

9
发表于 2006-11-20 19:33:21 | 只看该作者
这么设定太麻烦了……

我贴我的
module RPG
  class Enemy
    def name
      name = @name.split(/@/)[0]
      return name != nil ? name.split(/,/)[0].to_s : ""
    end
    def treasure2
      name = @name.split(/@/)[0]
      return name != nil ? name.split(/,/)[1].to_s : ""
    end
    def treasure3
      name = @name.split(/@/)[0]
      return name != nil ? name.split(/,/)[2].to_s : ""
    end
    def treasure4
      name = @name.split(/@/)[0]
      return name != nil ? name.split(/,/)[3].to_s : ""
    end
    def level
      level = @name.split(/@/)[1]
      return [[level.to_i, 1].max, 99].min
    end
    def name=(str)
      @name[self.name] != nil ? @name[self.name] = str : @name = str
    end
  end
end
class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ● 获取等级
  #--------------------------------------------------------------------------
  def level
    return $data_enemies[@enemy_id].level
  end
end
class Game_Battler
  #--------------------------------------------------------------------------
  # ● 应用通常攻击效果
  #     attacker : 攻击者 (battler)
  #--------------------------------------------------------------------------
  def attack_effect(attacker)
      .....
      # 计算攻击倍率
      rate = attacker.str * 100
      rate += rate * attacker.level / 50
      rate /= 2000
      .....
  end
  #--------------------------------------------------------------------------
  # ● 应用特技效果
  #     user  : 特技的使用者 (battler)
  #     skill : 特技
  #     rate_mod : 倍率修正
  #--------------------------------------------------------------------------
  def skill_effect(user, skill, rate_mod = 1.0)
    ......
    # 如果是物理攻击命中受状态影响
    if skill.atk_f > 0
      hit *= user.hit / 100
      hit = 100 if user.aura?
    # 非确定命中的情况受等级差影响
    elsif hit != 100
      hit += user.level - self.level
    end
    ......
      # 计算倍率
      rate = user.str * skill.str_f
      rate += user.dex * skill.dex_f
      rate += user.agi * skill.agi_f
      rate += user.int * skill.int_f
      rate += rate * user.level / 50
      rate /= 2000
    ......
  end
end

无非就是改一些东西而已...让level去参与伤害的计算,真要让level改变原始能力值太难了
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
10
 楼主| 发表于 2006-11-20 19:39:23 | 只看该作者
以下引用SailCat于2006-11-20 11:33:21的发言:

这么设定太麻烦了……

   ......
无非就是改一些东西而已...让level去参与伤害的计算,真要让level改变原始能力值太难了

更新后的可以了应该,你那个会跟特殊战斗脚本冲突的。
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-22 13:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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