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

Project1

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

[已经过期] 怪物AI系统和嘲讽技能脚本求整合

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
161 小时
注册时间
2011-2-8
帖子
274
跳转到指定楼层
1
发表于 2011-8-11 20:20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
嘲讽的脚本在底下,敌人AI是很多个脚本拼起来了。。详见http://rpg.blue/thread-81986-1-1.html,这两个脚本同时存在的话,敌人AI系统里只有默认随机行(-1型)的怪物才会认嘲讽状态....求整合
  1. #==============================================================================
  2. # ○隠密&挑発 Ver1.00
  3. # for RGSS2
  4. # 西瓜 / Space not far
  5. # http://muspell.raindrop.jp/
  6. # 敵の攻撃の対象外になったり、また必ず対象になるステートを作れます。
  7. #==============================================================================

  8. # 隠密ステートにかかっていると、敵のターゲット選択の候補になりません。
  9. # 挑発ステートにかかっているアクターがいると、敵はそれ以外のアクターを
  10. # ターゲット選択の候補にしません。
  11. # なお、どちらの効果も対象が全体の場合は無意味です。

  12. # ●注意
  13. # ・スキルなどで隠密/挑発のステートを受けた場合、
  14. #  ターゲットが決定されるタイミングがターン開始時という仕様上、
  15. #  隠密/挑発の効果が反映されるのは次ターン以降になります。

  16. module SNF
  17.   DISAPPEAR_STATE_ID = 33 # 隠密ステートのID
  18.   PROVOKE_STATE_ID = 34 # 挑発ステートのID
  19.   
  20. end
  21. class Game_Unit
  22.   def random_target
  23.     disappear = false
  24.     provoke = false
  25.     roulette = [] # 配列の定義
  26.     for member in existing_members
  27.       # 挑発しているメンバーがいるか否か
  28.       if member.states.include?($data_states[SNF::PROVOKE_STATE_ID])
  29.         provoke = true
  30.       end
  31.     end
  32.     for member in existing_members # 生存しているメンバーの配列取得
  33.       member.odds.times do
  34.         # 隠密状態の場合ルーレットに追加されない
  35.         if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID])
  36.           disappear = true
  37.         elsif provoke
  38.           if member.states.include?($data_states[SNF::PROVOKE_STATE_ID])
  39.             roulette.push(member)
  40.           end
  41.         else
  42.           roulette.push(member) # odds回数だけ配列にメンバーを追加
  43.         end # if member.states.include?($data_states[SNF::DISAPPEAR_STATE_ID])
  44.       end
  45.     end # member.odds.times do
  46.     if roulette.size <= 0 and disappear
  47.       roulette = existing_members
  48.     end
  49.     return roulette.size > 0 ? roulette[rand(roulette.size)] : nil # ランダムに選ぶ
  50.   end
  51. end
复制代码
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2025-1-10 21:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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