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

Project1

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

如何用脚本表达敌人能力的随机增减

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
跳转到指定楼层
1
发表于 2008-1-16 21:00:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
想写在事件里,生成随机能力后开始战斗

比如100号敌人的攻击力和速度随机增加值为10~100之间

生命随机增加100~1000之间,

19号状态有效度随机为A和F
版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
2
发表于 2008-1-17 00:25:49 | 只看该作者
  1. #==============================================================================
  2. # ■ Game_Enemy
  3. #------------------------------------------------------------------------------
  4. #  处理敌人的类。本类在 Game_Troop 类 ($game_troop) 的
  5. # 内部使用。
  6. #==============================================================================

  7. class Game_Enemy < Game_Battler
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对像
  10.   #     troop_id     : 循环 ID
  11.   #     member_index : 循环成员的索引
  12.   #--------------------------------------------------------------------------
  13.   def initialize(troop_id, member_index)
  14.     super()
  15.     @troop_id = troop_id
  16.     @member_index = member_index
  17.     troop = $data_troops[@troop_id]
  18.     @enemy_id = troop.members[@member_index].enemy_id
  19.     enemy = $data_enemies[@enemy_id]
  20.     @battler_name = enemy.battler_name
  21.     @battler_hue = enemy.battler_hue
  22.     @hp = maxhp
  23.     @sp = maxsp
  24.     @hidden = troop.members[@member_index].hidden
  25.     @immortal = troop.members[@member_index].immortal
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 获取敌人 ID
  29.   #--------------------------------------------------------------------------
  30.   def id
  31.     return @enemy_id
  32.     if self.id == 100
  33.       $data_enemies[100].maxhp = $data_enemies[100].maxhp + rand(100 - 1000 + 1)
  34.       $data_enemies[100].str = $data_enemies[100].str + rand(10 - 100 + 1)
  35.       $data_enemies[100].agi = $data_enemies[100].agi + rand(10 - 100 + 1)
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 获取索引
  40.   #--------------------------------------------------------------------------
  41.   def index
  42.     return @member_index

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
231 小时
注册时间
2007-12-17
帖子
541
3
 楼主| 发表于 2008-1-17 17:43:20 | 只看该作者
我就想临时在事件里对一个敌人的能力随机变一下
回复 支持 反对

使用道具 举报

Lv1.梦旅人

B

梦石
0
星屑
50
在线时间
26 小时
注册时间
2007-8-26
帖子
3693
4
发表于 2008-1-17 19:44:20 | 只看该作者
事件脚本
a = rand(1-1000)+1
$game_troop.enemies[0].maxhp += a
$game_troop.enemies[0].hp +=
$game_troop.enemies[0].maxhp

其他该会把!
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-7-27 17:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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