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

Project1

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

【VX】请问如何制作嘲讽的状态。

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
93 小时
注册时间
2011-11-3
帖子
152
跳转到指定楼层
1
发表于 2011-12-23 13:47:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于嘲讽这个技能 就是 发动后 一定回合内 敌人全部攻击 状态被施加着
请问这个技能该怎么做好 我在资料库里没有发现这类的状态 请前辈们指教1!

Lv2.观梦者

梦石
0
星屑
448
在线时间
628 小时
注册时间
2011-9-27
帖子
3996
2
发表于 2011-12-23 13:56:16 | 只看该作者
本帖最后由 小白玩家 于 2011-12-23 13:58 编辑

VX版仇恨系统,使用方法见↓
http://rpg.blue/portal.php?mod=view&aid=40291
最关键的,它能实现嘲讽
嘲讽的实现:
怪物中了特定的状态后(默认20到23号状态),自动寻找与它有相同状态(20到23号)的角色,找到后就以该角色为目标,找不到就照原样(按照仇恨高低选择目标)行动。
使用方法:
1.创建4个状态,默认分别为20至23号(要改的话改脚本开头的常量)
2.4个状态设置成两两互斥(例如20号状态在右边状态栏里的21,22,23号状态全部设置成“-”)
3.设置n个回合xx%解除(注意:只有被嘲讽者和嘲讽者同时存在这个状态时,嘲讽才生效)
4.带有嘲讽效果的特技,数据库里设定附加状态20到23号状态其中一个,带公共事件:给使用者加上同一个状态,上状态的方法如下:脚本指令 $scene.active_battler.add_state(状态ID)
  1. =begin

  2. 設置方法

  3. 請在戰鬥畫面中使用(戰鬥事件或是在戰鬥畫面觸發的公共事件)

  4. 仇恨值變量  

  5. $game_actors[角色編號].current_action.hatred # 我方指定角色的仇恨值變量


  6. --------------------------------------------------------------------------------

  7. $game_party.actors.[我方順序].current_action.hatred # 我方指定隊伍位置的仇恨值變量
  8. --------------------------------------------------------------------------------

  9. $game_troop.enemies[敵人順序].current_action.hatred # 敵方指定隊伍位置的仇恨值變量


  10. --------------------------------------------------------------------------------


  11. ★以下是使用範例☆

  12. $game_actors[7].current_action.hatred = 10 # 我方隊伍中角色編號為7的角色仇恨值變為10

  13. $game_party.actors.[2].current_action.hatred += 5 # 我方第3個角色(0為第1個)仇恨值增加5

  14. $game_troop.enemies[4].current_action.hatred -= 3 # 敵方第4個角色仇恨值減少3
  15.   

  16. --------------------------------------------------------------------------------

  17.   

  18. 使用者自定設置說明

  19. 【1】Sword51_AddHatred = [仇恨值增加量]

  20. 【2】Sword51_AddHatred = [每少多少血, 仇恨值增加量]

  21. 設定被攻擊的角色對發動攻擊的角色增加的仇恨值多寡設定

  22. 使用設置法1表示一律增加 仇恨值增加量 的仇恨值

  23. 使用設置法2表示每受到 每少多少血 的血量,各增加 仇恨值增加量 的仇恨值


  24. 【1】Sword51_RedHatred = [仇恨值減少量]

  25. 【2】Sword51_RedHatred = [每少多少血, 仇恨值減少量]

  26. 設定攻擊者攻擊指定目標時,則對那個目標的仇恨減少(簡單來說就是報仇後仇恨降低)

  27. 使用設置法1表示一律增加 仇恨值增少量 的仇恨值

  28. 使用設置法2表示每受到 每少多少血 的血量,各增加 仇恨值增少量 的仇恨值


  29. Sword51_Max = 0
  30. 設定仇恨值最高的上限,如果設定0則表示無上限,仇恨值可以不斷的增加


  31. Sword51_SkillHatred[技能編號] = 額外增減量 NEW

  32. 當發動指定的技能時,敵方所有怪將對那技能發動者增加仇恨

  33. 可以製作出像是敵人看到某角色幫其他角色或自己補血時,敵人不是就白打了

  34. 所以用這個效果,快速增加使用指定技能的角色的仇恨,讓對手集中火力攻擊補血者

  35. 可自行添加多個Sword51_SkillHatred設置,不使用該效果也可以全數移除掉

  36. 技能編號:設定會額外增減仇恨值的技能編號,設定0則沒設定的技能都採用0號的設定

  37. 額外增減量:設定使用指定技能所增加的仇恨值,如果是扣仇恨值可以指定負數即可(全體扣除)


  38. Sword51_ItemHatred[物品編號] = 額外增減量 NEW

  39. 效果同Sword51_SkillHatred設置的相同,只不過這個是針對物品的效果

  40. 也就是看到使用指定物品的角色,則敵方所有怪對物品使用者的仇恨將會額外增加

  41. 可自行添加多個Sword51_ltemHatred設置,不使用該效果也可以全數移除掉

  42. 物品編號:設定會額外增減仇恨值的技能編號,設定0則沒設定的技能都採用0號的設定

  43. 額外增減量:設定使用指定技能所增加的仇恨值,如果是扣仇恨值可以指定負數即可(全體扣除)

  44. =end

  45. module Sword

  46. #=======================================

  47. #★ 魔劍工舖 - 仇恨系統 1.00 (VX)

  48. # http://blog.yam.com/a870053jjkj/

  49. #=======================================

  50.   Sword51_SkillHatred, Sword51_ItemHatred = [], []

  51. =begin

  52. ========================================

  53. ● 設置方法(限戰鬥畫面使用)

  54. 已方仇恨值變量(人物順序):$game_actors[角色編號].action.hatred

  55. 已方仇恨值變量(隊伍順序):$game_party.members[我方順序].action.hatred

  56. 敵方仇恨值變量(隊伍順序):$game_troop.members[敵人順序].action.hatred

  57. ========================================

  58. =end

  59. #=======================================

  60. #● 使用者自定設置

  61. Sword51_AddHatred = [10, 1] # 增加仇恨的數量 [增加量] 或 [每扣血量, 增加量]

  62. Sword51_RedHatred = [10, 1] # 減少仇恨的數量 [減少量] 或 [每扣血量, 減少量]

  63. Sword51_Max = 0 # 設定仇恨值的最大值,設0表示無限制

  64. #--------------------------------------------------------------

  65. #○ 技能仇恨增減表(Sword51_SkillHatred[技能編號] = 增減量)

  66. Sword51_SkillHatred[1] = 50

  67. #--------------------------------------------------------------

  68. #○ 物品仇恨增減表(Sword51_ItemHatred[物品編號] = 增減量)

  69. Sword51_ItemHatred[0] = 0

  70. #=======================================

  71.   $Sword ? $Sword[51] = true : $Sword = {51=>true} # 腳本使用標誌

  72. end

  73. #=======================================

  74. #■ 處理行動 (戰鬥中的行動) 的類別

  75. class Game_BattleAction

  76.   include Sword # 連接自動設置

  77.   attr_accessor :hatred # 仇恨值記錄表

  78.   #-------------------------------------------------------------

  79.   #● 初始化物件(戰鬥者)

  80.   #  定義一個資料表,負責儲存敵人對我方角色的仇恨值數值列表

  81.   alias sword51_initialize initialize

  82.   def initialize(battler) ; sword51_initialize(battler)

  83.     @hatred = Hash.new{|a, b| a[b] = 0} # 定義仇恨紀錄表

  84.   end

  85.   #-------------------------------------------------------------

  86.   #● 隨機目標

  87.   #  將預設的敵人目標選擇來計算誰的仇恨值最高,最高仇恨者為攻擊目標

  88.   alias sword51_decide_random_target decide_random_target

  89.   def decide_random_target

  90.     hatred = [0, 0] # 目前仇恨最高的角色紀錄

  91.     @hatred.each{|k, v| hatred[1] == v ? # 計算攻擊目標

  92.     (hatred = [k, v] if rand(2) == 1) : hatred = [k, v] if hatred[1] <= v}

  93.     if hatred[0] == 0 ; sword51_decide_random_target # 隨機目標

  94.     else ; $game_party.members.each_index{|i| next unless $game_party.members[i]

  95.       @target_index = i if $game_party.members[i].id == hatred[0]}

  96.     end ; @target_index

  97.   end

  98. end

  99. #=======================================

  100. #■ 處理戰鬥畫面的類別

  101. class Scene_Battle

  102.   include Sword # 連接自動設置

  103.   #-------------------------------------------------------------

  104.   #● 執行戰鬥行動:使用技能

  105.   #  使用指定技能就增加或減少仇恨值的處理

  106.   alias sword51_execute_action_skill execute_action_skill

  107.   def execute_action_skill

  108.     skill_id = @active_battler.action.skill.id

  109.     hatred = Sword51_SkillHatred[skill_id] ? Sword51_SkillHatred[skill_id] :
  110.                   (Sword51_SkillHatred[0] ? Sword51_SkillHatred[0] : nil)

  111.     $game_troop.members.each{|enemy| enemy.action.hatred[

  112.     @active_battler.id] += hatred} if hatred # 有使用指定技能時增加憤怒值

  113.     sword51_execute_action_skill

  114.   end

  115.   #-------------------------------------------------------------

  116.   #● 執行戰鬥行動:物品

  117.   #  使用指定物品就增加或減少仇恨值的處理

  118.   alias sword51_execute_action_item execute_action_item

  119.   def execute_action_item

  120.     item_id = @active_battler.action.item.id

  121.     hatred = Sword51_ItemHatred[item_id] ? Sword51_ItemHatred[item_id] :
  122.                   (Sword51_ItemHatred[0] ? Sword51_ItemHatred[0] : nil)

  123.     $game_troop.members.each{|enemy| enemy.action.hatred[

  124.     @active_battler.id] += hatred} if hatred # 有使用指定物品時增加憤怒值

  125.     sword51_execute_action_item

  126.   end

  127.   #-------------------------------------------------------------

  128.   #● 顯示攻擊動畫

  129.   #  在顯示動畫的時候,順便增加或減少敵人對我方角色的仇恨值

  130.   alias sword51_display_attack_animation display_attack_animation

  131.   def display_attack_animation(targets)

  132.     targets.each do |target| if target.hp_damage.is_a?(Numeric) ; if target.hp_damage > 0

  133.       ahatred = Sword51_AddHatred.size == 1 ? Sword51_AddHatred[0] :  # 計算仇恨增加值

  134.       target.hp_damage / Sword51_AddHatred[0] * Sword51_AddHatred[1]

  135.       rhatred = Sword51_RedHatred.size == 1 ? Sword51_RedHatred[0] : # 計算仇恨減少值

  136.       target.hp_damage / Sword51_RedHatred[0] * Sword51_RedHatred[1]

  137.       if @active_battler.is_a?(Game_Actor) # 攻擊者是同伴時

  138.         current = $Sword_VX ? target.action.hatred[@active_battler.id] :
  139.         target.action.hatred[@active_battler.id]

  140.         next if target.is_a?(Game_Actor) # 如果我方對我方行動的話就跳過該目標

  141.         current += ahatred ; current = [current, Sword51_Max].min if Sword51_Max > 0

  142.         $Sword_VX ? target.action.hatred[@active_battler.id] = current :
  143.         target.action.hatred[@active_battler.id] = current

  144.       else # 攻擊者是敵人時

  145.         troop = $game_troop.members.index(@active_battler)

  146.         current = $Sword_VX ? target.action.hatred[troop] : target.action.hatred[troop]

  147.         next if target.is_a?(Game_Enemy) # 如果敵方對敵方行動的話就跳過該目標

  148.         current += ahatred ; current = [current, Sword51_Max].min if Sword51_Max > 0

  149.         $Sword_VX ? target.action.hatred[troop] = current :
  150.         target.action.hatred[troop] = current

  151.       end ; @active_battler.action.hatred[target.id] -= rhatred

  152.       @active_battler.action.hatred[target.id] =
  153.       [@active_battler.action.hatred[target.id], 0].max # 控制底線下限

  154.     end ; end ; end

  155.     sword51_display_attack_animation(targets)

  156.     p $game_troop.members[0].action.hatred, $game_troop.members[1].action.hatred

  157.   end

  158. end
复制代码
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-1 10:37

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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