Project1

标题: 怎么让二刀流只拿一个武器? [打印本页]

作者: 暗黑    时间: 2012-7-1 18:49
标题: 怎么让二刀流只拿一个武器?
本帖最后由 暗黑 于 2012-7-6 18:03 编辑

话说,二刀流用所谓的双手武器(比如矛啊……)果然还是一手一个……怎么能让他只拿一个……?
作者: fxwd    时间: 2012-7-1 19:03
二刀流MS是VX的?LZ发错区了?
作者: 暗黑    时间: 2012-7-1 19:21
fxwd 发表于 2012-7-1 19:03
二刀流MS是VX的?LZ发错区了?

没发错啊……二刀流就是双持武器嘛,因为双持双手容易搞混,所以说二刀流了
作者: 若阿蟬    时间: 2012-7-1 19:45
在要雙手持的武器上設置一個禁用盾就可以了
作者: 渊静    时间: 2012-7-1 19:51
楼上的方法似乎是无效的,还是可以双持。
作者: yychchhh    时间: 2012-7-1 19:58
把二刀流那个人拿的武器都附加双手使用!
作者: lirn    时间: 2012-7-1 20:57
二刀流是两个把刀,不是两只手拿一把刀
作者: salor44    时间: 2012-7-1 21:19
在双手武器上設置一個禁用盾和禁用武器吧
作者: thomaskkkk    时间: 2012-7-1 21:22
本帖最后由 thomaskkkk 于 2012-7-1 21:24 编辑

雙持武器是區分 雙手持有的武器和角色能雙手各持武器,後者是合乎裝備盾
有些遊戲甚至是用盾攻擊

需要雙手只拿一個的話,就要從武器欄設定而不是角色。
作者: 暗黑    时间: 2012-7-2 12:46
salor44 发表于 2012-7-1 21:19
在双手武器上設置一個禁用盾和禁用武器吧

那个-  -禁用盾的话还是能拿两个武器,禁用武器的话,一个都装备不上去。


‘‘──暗黑于2012-7-2 12:46补充以下内容:

话说貌似没有这个功能呐……
’’
作者: 暗黑    时间: 2012-7-2 12:49
thomaskkkk 发表于 2012-7-1 21:22
雙持武器是區分 雙手持有的武器和角色能雙手各持武器,後者是合乎裝備盾
有些遊戲甚至是用盾攻擊

不知道能不能把武器加上“反双持”……让本来可以双持的角色变成不能双持……
作者: thomaskkkk    时间: 2012-7-2 20:56
本帖最后由 thomaskkkk 于 2012-7-2 20:58 编辑
暗黑 发表于 2012-7-2 12:49
不知道能不能把武器加上“反双持”……让本来可以双持的角色变成不能双持…… ...


那麼那武器乾脆無法裝備吧,在角色的特性指明無法裝備「類型」。

而「類型」方面可稱呼「特殊武器」

然後,所有的職業的特性欄啟用「特殊武器」,

這樣就一了百了,特定角色無法使用。
作者: 暗黑    时间: 2012-7-2 23:00
thomaskkkk 发表于 2012-7-2 20:56
那麼那武器乾脆無法裝備吧,在角色的特性指明無法裝備「類型」。

而「類型」方面可稱呼「特殊武器」

额,你误会了,我是想让一个角色既可以拿两把剑也可以只用一把长矛。(只能用一个长矛,而不是一手一个)
作者: thomaskkkk    时间: 2012-7-2 23:24
本帖最后由 thomaskkkk 于 2012-7-2 23:45 编辑
暗黑 发表于 2012-7-2 23:00
额,你误会了,我是想让一个角色既可以拿两把剑也可以只用一把长矛。(只能用一个长矛,而不是一手一个) ...


要用腳本改。



雙持武器TWO-HAND WEAPON

二刀流TWO-HAND WEAPONS

已測試兩把雙持武器無法二刀流,

單持TWO-HAND WEAPON仍然可以裝備ONE-HAND WEAPON。

即使是雙手盾,也沒辦法和雙手劍疊在一起。

似乎VX本來是無法讓雙持武器佔用副手位置。



要用腳本改。
作者: 佣兵    时间: 2012-7-3 01:15
嗯,怎么说,偶有一个好笨的想法,就是把你需要的角色设计成一种“自由战士”职业,拥有随便变更职业的技能,那么你想要用两把剑的时候换可以双持特性的职业,想拿一把矛的时候就换战士~~~~~
作者: 暗黑    时间: 2012-7-3 07:17
thomaskkkk 发表于 2012-7-2 23:24
要用腳本改。

囧……关键是怎么改,我来这就是求脚本的。
作者: 笔名:玥阳    时间: 2012-7-6 07:45
用这个脚本,设置“二刀流”的被动技,并在该技能设置有“二刀流”的状态,就可以让角色有二刀流的状态
不过想消除二刀流的状态时,要让角色遗忘技能,才能确实消除二刀流的状态
  1. #==============================================================================
  2. # ■ UMSSSS
  3. # 来源:http://www002.upp.so-net.ne.jp/usagimask/vxace_material.htm
  4. # 制作者のメルアド:[email protected]
  5. #------------------------------------------------------------------------------
  6. # ▼ウサギマスクが制作したゲームシステムの基本设定を扱うモジュールです。
  7. #   ※ UMSSSS は UsagiMaskSystemScriptSynthesisSetting の略です(ぇ
  8. #------------------------------------------------------------------------------
  9. # 使用方法不难,就是添加一个技能类型叫做"被动技能"
  10. # 这可以在UseSimplePassiveName = "被动技能" 这边调整成你想要的字串
  11. # 然后添加一个状态,在状态增加你想要的功能(如最大生命+50%之类的)
  12. # 在技能那边新增技能,类型 被动技能,使用对象使用者,无法使用,
  13. # 然后附加状态100%(怕附加不上去的可以加到1000%)
  14. # 然后让角色学会就会有效果了
  15. # 只是这个的能力局限于状态能够得到的效果
  16. #
  17. # 测试结果,有两个装备技时,会彼此冲突,后来发现是该武器免疫装备技得状态(汗)
  18. #
  19. # 测试心得
  20. # 1.禁用技能的指令,对 被动技能无效, 被动技能依旧可以发动
  21. # 2.如果免疫 被动技能的状态,疑似会让该状态永久消失
  22. #==============================================================================
  23. class UMSSSS
  24.   
  25.   # 简易パッシブスキルとして使用するスキルタイプの名称
  26.   UseSimplePassiveName = "被动技能"
  27.   
  28. end
  29. #==============================================================================
  30. # ■ RPG::Skill
  31. #------------------------------------------------------------------------------
  32. #  スキルのデータクラス。
  33. #==============================================================================
  34. class RPG::Skill < RPG::UsableItem
  35.   def real_note
  36.     return @note.clone
  37.   end
  38.   def simple_passive?
  39.     s_name = $data_system.skill_types[@stype_id]
  40.     return s_name == UMSSSS::UseSimplePassiveName
  41.   end
  42. end
  43. #==============================================================================
  44. # ■ Game_BattlerBase
  45. #------------------------------------------------------------------------------
  46. #  バトラーを扱う基本のクラスです。主に能力値计算のメソッドを含んでいます。こ
  47. # のクラスは Game_Battler クラスのスーパークラスとして使用されます。
  48. #==============================================================================
  49. class Game_BattlerBase
  50.   alias ums_simple_passive_skill_state_resist_set state_resist_set
  51.   alias ums_simple_passive_skill_recover_all recover_all
  52.   #--------------------------------------------------------------------------
  53.   # ● 无効化するステートの配列を取得
  54.   #--------------------------------------------------------------------------
  55.   def state_resist_set
  56.     result = ums_simple_passive_skill_state_resist_set
  57.     if self.actor?
  58.       result += @passive_m_states unless @passive_m_states.nil?
  59.     end
  60.     return result
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   # ● 全回复
  64.   #--------------------------------------------------------------------------
  65.   def recover_all
  66.     ums_simple_passive_skill_recover_all
  67.     check_simple_passive if self.actor?
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 无効化する能力强化の配列を取得
  71.   #--------------------------------------------------------------------------
  72.   def buff_resist_set
  73.     return []
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 无効化する能力弱体の配列を取得
  77.   #--------------------------------------------------------------------------
  78.   def debuff_resist_set
  79.     return []
  80.   end
  81. end
  82. #==============================================================================
  83. # ■ Game_Battler
  84. #------------------------------------------------------------------------------
  85. #  スプライトや行动に関するメソッドを追加したバトラーのクラスです。このクラス
  86. # は Game_Actor クラスと Game_Enemy クラスのスーパークラスとして使用されます。
  87. #==============================================================================
  88. class Game_Battler < Game_BattlerBase
  89.   alias ums_simple_passive_skill_remove_state remove_state
  90.   alias ums_simple_passive_skill_add_buff add_buff
  91.   alias ums_simple_passive_skill_add_debuff add_debuff
  92.   alias ums_simple_passive_skill_item_effect_add_buff item_effect_add_buff
  93.   alias ums_simple_passive_skill_item_effect_add_debuff item_effect_add_debuff
  94.   #--------------------------------------------------------------------------
  95.   # ● ステートの解除
  96.   #--------------------------------------------------------------------------
  97.   def remove_state(state_id)
  98.     if self.actor?
  99.       return if passive_plus_states.include?(state_id)
  100.     end
  101.     ums_simple_passive_skill_remove_state(state_id)
  102.   end
  103.   #--------------------------------------------------------------------------
  104.   # ● 能力强化
  105.   #--------------------------------------------------------------------------
  106.   def add_buff(param_id, turns)
  107.     if self.actor?
  108.       return if buff_resist_set.include?(param_id)
  109.     end
  110.     ums_simple_passive_skill_add_buff(param_id, turns)
  111.   end
  112.   #--------------------------------------------------------------------------
  113.   # ● 能力弱体
  114.   #--------------------------------------------------------------------------
  115.   def add_debuff(param_id, turns)
  116.     if self.actor?
  117.       return if debuff_resist_set.include?(param_id)
  118.     end
  119.     ums_simple_passive_skill_add_debuff(param_id, turns)
  120.   end
  121.   #--------------------------------------------------------------------------
  122.   # ● 使用効果[能力强化]
  123.   #--------------------------------------------------------------------------
  124.   def item_effect_add_buff(user, item, effect)
  125.     if self.actor?
  126.       return if buff_resist_set.include?(effect.data_id)
  127.     end
  128.     ums_simple_passive_skill_item_effect_add_buff(user, item, effect)
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 使用効果[能力弱体]
  132.   #--------------------------------------------------------------------------
  133.   def item_effect_add_debuff(user, item, effect)
  134.     if self.actor?
  135.       return if debuff_resist_set.include?(effect.data_id)
  136.     end
  137.     ums_simple_passive_skill_item_effect_add_debuff(user, item, effect)
  138.   end
  139. end
  140. #==============================================================================
  141. # ■ Game_Actor
  142. #------------------------------------------------------------------------------
  143. #  アクターを扱うクラスです。このクラスは Game_Actors クラス($game_actors)
  144. # の内部で使用され、Game_Party クラス($game_party)からも参照されます。
  145. #==============================================================================
  146. class Game_Actor < Game_Battler
  147.   alias ums_simple_passive_skill_setup setup
  148.   alias ums_simple_passive_skill_learn_skill learn_skill
  149.   alias ums_simple_passive_skill_forget_skill forget_skill
  150.   #--------------------------------------------------------------------------
  151.   # ● セットアップ
  152.   #--------------------------------------------------------------------------
  153.   def setup(actor_id)
  154.     ums_simple_passive_skill_setup(actor_id)
  155.     check_simple_passive
  156.   end
  157.   #--------------------------------------------------------------------------
  158.   # ● スキルを覚える
  159.   #--------------------------------------------------------------------------
  160.   def learn_skill(skill_id)
  161.     ums_simple_passive_skill_learn_skill(skill_id)
  162.     skill = $data_skills[skill_id]
  163.     unless skill.nil?
  164.       check_simple_passive if skill.simple_passive?
  165.     end
  166.   end
  167.   #--------------------------------------------------------------------------
  168.   # ● スキルを忘れる
  169.   #--------------------------------------------------------------------------
  170.   def forget_skill(skill_id)
  171.     ums_simple_passive_skill_forget_skill(skill_id)
  172.     skill = $data_skills[skill_id]
  173.     unless skill.nil?
  174.       remove_simple_passive(skill) if skill.simple_passive?
  175.     end
  176.   end
  177.   #--------------------------------------------------------------------------
  178.   # ● 简易パッシブスキルの取得
  179.   #--------------------------------------------------------------------------
  180.   def simple_passive_skills
  181.     return skills.select {|v| v.simple_passive?}
  182.   end
  183.   #--------------------------------------------------------------------------
  184.   # ● 简易パッシブスキルのチェック
  185.   #--------------------------------------------------------------------------
  186.   def check_simple_passive
  187.     # 変数初期化
  188.     @passive_p_states = []
  189.     @passive_m_states = []
  190.     @passive_i_buff = []
  191.     @passive_i_debuff = []
  192.     # データ取得
  193.     p_states = []
  194.     m_states = []
  195.     i_buff = []
  196.     i_debuff = []
  197.     for skill in simple_passive_skills
  198.       for effect in skill.effects
  199.         p_states << effect.data_id if effect.code == 21
  200.         m_states << effect.data_id if effect.code == 22
  201.         i_buff << effect.data_id if effect.code == 33
  202.         i_debuff << effect.data_id if effect.code == 34
  203.       end
  204.     end
  205.     # データ整理
  206.     del_states = p_states & m_states
  207.     p_states -= del_states
  208.     m_states -= del_states
  209.     del_buff = i_buff & i_debuff
  210.     i_buff -= del_buff
  211.     i_debuff -= del_buff
  212.     # データ反映
  213.     @passive_p_states = p_states
  214.     @passive_m_states = m_states
  215.     @passive_i_buff = i_buff
  216.     @passive_i_debuff = i_debuff
  217.     @result.clear
  218.     for s in p_states
  219.       add_state(s)
  220.     end
  221.     for s in m_states
  222.       remove_state(s)
  223.     end
  224.     for b in i_buff
  225.       erase_buff(b) if buff?(b)
  226.     end
  227.     for d in i_debuff
  228.       erase_buff(d) if debuff?(d)
  229.     end
  230.   end
  231.   #--------------------------------------------------------------------------
  232.   # ● 简易パッシブスキルを无効化
  233.   #--------------------------------------------------------------------------
  234.   def remove_simple_passive(skill)
  235.     check_simple_passive
  236.     for effect in skill.effects
  237.       if effect.code == 21
  238.         remove_state(effect.data_id)
  239.       end
  240.     end
  241.   end
  242.   #--------------------------------------------------------------------------
  243.   # ● 简易パッシブスキルで常时付加するステート
  244.   #--------------------------------------------------------------------------
  245.   def passive_plus_states
  246.     return @passive_p_states
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   # ● 无効化する能力强化の配列を取得
  250.   #--------------------------------------------------------------------------
  251.   def buff_resist_set
  252.     return @passive_i_buff
  253.   end
  254.   #--------------------------------------------------------------------------
  255.   # ● 无効化する能力弱体の配列を取得
  256.   #--------------------------------------------------------------------------
  257.   def debuff_resist_set
  258.     return @passive_i_debuff
  259.   end
  260. end
  261. #==============================================================================
  262. # ■ Window_Command
  263. #------------------------------------------------------------------------------
  264. #  一般的なコマンド选択を行うウィンドウです。
  265. #==============================================================================
  266. class Window_Command < Window_Selectable
  267.   alias ums_simple_passive_skill_add_command add_command
  268.   #--------------------------------------------------------------------------
  269.   # ● コマンドの追加
  270.   #     name    : コマンド名
  271.   #     symbol  : 対応するシンボル
  272.   #     enabled : 有効状态フラグ
  273.   #     ext     : 任意の拡张データ
  274.   #--------------------------------------------------------------------------
  275.   def add_command(name, symbol, enabled = true, ext = nil)
  276.     if self.is_a?(Window_ActorCommand)
  277.       return if name == UMSSSS::UseSimplePassiveName
  278.     end
  279.     ums_simple_passive_skill_add_command(name, symbol, enabled, ext)
  280.   end
  281. end
  282. #==============================================================================
  283. # ■ Window_Selectable
  284. #------------------------------------------------------------------------------
  285. #  カーソルの移动やスクロールの机能を持つウィンドウクラスです。
  286. #==============================================================================
  287. class Window_Selectable < Window_Base
  288.   alias ums_simple_passive_skill_process_ok process_ok
  289.   #--------------------------------------------------------------------------
  290.   # ● 决定ボタンが押されたときの処理
  291.   #--------------------------------------------------------------------------
  292.   def process_ok
  293.     if self.is_a?(Window_SkillList)
  294.       if item.is_a?(RPG::Skill)
  295.         return if item.simple_passive?
  296.       end
  297.     end
  298.     ums_simple_passive_skill_process_ok
  299.   end
  300. end
  301. #==============================================================================
  302. # ■ Window_SkillList
  303. #------------------------------------------------------------------------------
  304. #  スキル画面で、使用できるスキルの一覧を表示するウィンドウです。
  305. #==============================================================================
  306. class Window_SkillList < Window_Selectable
  307.   alias ums_simple_passive_skill_enable? enable?
  308.   #--------------------------------------------------------------------------
  309.   # ● スキルを许可状态で表示するかどうか
  310.   #--------------------------------------------------------------------------
  311.   def enable?(item)
  312.     if item.is_a?(RPG::Skill)
  313.       return true if item.simple_passive?
  314.     end
  315.     return ums_simple_passive_skill_enable?(item)
  316.   end
  317. end
复制代码

作者: 暗黑    时间: 2012-7-6 16:38
笔名:玥阳 发表于 2012-7-6 07:45
用这个脚本,设置“二刀流”的被动技,并在该技能设置有“二刀流”的状态,就可以让角色有二刀流的状态
不 ...

话说,解除状态和遗忘技能都不能消除二刀流状态。
作者: 笔名:玥阳    时间: 2012-7-7 10:47
嘛……
我让原本不会二刀流的角色学会“二刀流”的被动技,
再遗忘“二刀流”的被动技,就会变成平常得武器+盾。

如果真得不行,或许是脚本冲突?


作者: 暗黑    时间: 2012-7-7 16:51
笔名:玥阳 发表于 2012-7-7 10:47
嘛……
我让原本不会二刀流的角色学会“二刀流”的被动技,
再遗忘“二刀流”的被动技,就会变成平常得武器 ...

在新工程一样不行,你成功了?怎么弄的?……我是在技能里设置反二刀流,利用公共事件遗忘技能……然后再加到武器上,不过不管用。
作者: Auxggest    时间: 2012-7-7 17:12
VX里面MS可以?
勾选双手武器····VA还没深入主要
作者: 笔名:玥阳    时间: 2012-7-8 10:41
嘛……这是我做好得工程,应该符合你的需求吧?

http://webhd.xuite.net/_oops/roy340zzza/7lv
作者: shalicheng2    时间: 2012-7-8 10:42
实际数据库定义是双手武器,对外设定上是二刀流就行了


‘‘──shalicheng2于2012-7-8 10:42补充以下内容:

实际数据库定义是双手武器,对外设定上是二刀流就行了
’’
作者: 暗黑    时间: 2012-7-8 15:32
笔名:玥阳 发表于 2012-7-8 10:41
嘛……这是我做好得工程,应该符合你的需求吧?

http://webhd.xuite.net/_oops/roy340zzza/7lv  ...

=  =……第一次下载,下到了个不知道是什么的东西,111KB。第二次说过期不存在……话说能发过来么……[email protected]
作者: lbw2129    时间: 2012-7-8 16:30
双持和双手是两个不同概念  二刀流是双持 意思是拿2把武器 双手武器在武器里设置 如果禁止拿盾 就是双手武器
我以前做的一个游戏 是拿剑就可以拿盾 拿斧头就变成二刀流双持斧头
作者: 暗黑    时间: 2012-7-9 19:07
lbw2129 发表于 2012-7-8 16:30
双持和双手是两个不同概念  二刀流是双持 意思是拿2把武器 双手武器在武器里设置 如果禁止拿盾 就是双手武 ...

双持双手不一样我当然知道,话说,拿剑可以拿盾,拿斧子可以双持怎么做到的
作者: lbw2129    时间: 2012-7-10 16:08
在斧头上设置允许双刀流就可以了
作者: 暗黑    时间: 2012-7-10 17:09
lbw2129 发表于 2012-7-10 16:08
在斧头上设置允许双刀流就可以了

斧头卸下来不就变不回单刀了嘛……




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1