Project1

标题: 有關異常狀態的排序、指定角色問題 [打印本页]

作者: 亂堂和樹    时间: 2014-12-1 23:13
标题: 有關異常狀態的排序、指定角色問題
各位大大們打擾了,我有一堆問題卻不知該怎麼發問,於是先挑這兩個....我可能比較容易理解的問題

問題1.
往常的異常狀態圖(如:中毒、混亂....等等),都是『橫式』擺列,有辦法可以做成『直式』的排列嗎?另外,可以問問作成直式後...
狀態圖與狀態圖的『間距』,以及...如何顯示『使用效果』中的『能力強化的回合數字』?


問題2.
由於我是用『ひきも記的RGSS3_SRPG Ver0.15a』,雖然作者有添加『魔法詠唱(前コモン)<技能前執行公用事件>』
但也由於...角色與敵人的資料很像又『再定義』,因此幾乎$game_party.members[X]...之類的指定角色方式都無法用再公用事件的『分歧條件的腳本』中


關於問題2,我個人覺得會比較複雜...畢竟選擇角色攻擊時,無法判別該事件是角色ID?啊...
有想過最簡單的做法就是...把攻擊換成該角色所學的技能,可問題來了...

『有哪個腳本可以給敵人ID,並且可以設定該技能或角色...攻擊某敵人ID時,啟動公用事件?』
如果能啟動分歧條件中的腳本就更好了QAQ...

作者: 三途亚梦    时间: 2014-12-2 01:06
本帖最后由 三途亚梦 于 2014-12-2 01:07 编辑

少年不要一贴多问哦~ 以后请注意~

1. 需要改脚本,你可以先搜索看看。

2. 抱歉……没太完整的看懂意思……
首先没看懂$game_actors[1].char是什么……

你先说你想要的效果,先别急着说自己的思路,也先别发表感想……
作者: 亂堂和樹    时间: 2014-12-2 03:07
三途亚梦 发表于 2014-12-2 01:06
少年不要一贴多问哦~ 以后请注意~

1. 需要改脚本,你可以先搜索看看。

好的...真是非常抱歉~"~..

關於第一個,我從發帖後就找了很久..沒有找到~"~
抱歉Orz...只能來問了

至於$game_actors[1].cha...就不用在意囉,是我在做嘗試...用腳本去給角色新ID,但是無法用

第二個問題簡單的問...其實就是
『如何給敵人固定ID,接著...角色的技能對應此ID而引發公用事件』

由於是SRPG腳本,普通的事件是無法做到的...(因為我方人員出擊後..ID排序會浮動)

作者: morningboo    时间: 2014-12-2 07:38
$game_troop.members[i].id
表示敌群第i号人物的ID
被攻击时执行事件可以在Game_Battler中想办法,user表示技能发动者,self表示技能承受者,其实就是伤害公式的妙用,你可以搜索看看
作者: 企鹅达达    时间: 2014-12-2 08:53
本帖最后由 企鹅达达 于 2014-12-2 10:53 编辑

  找到下面这段脚本,把红色部分改成 x,y+24*i 其中24可以换成你想要的间距
  #--------------------------------------------------------------------------
  # ● 绘制强化/弱化状态的图标
  #--------------------------------------------------------------------------
  def draw_actor_icons(actor, x, y, width = 96)
    icons = (actor.state_icons + actor.buff_icons)[0, width / 24]
    icons.each_with_index {|n, i| draw_icon(n, x + 24 * i, y) }
  end

至于加上状态剩余回合数,你可以在上面的脚本加上一个把Game_BattlerBase的@state_turns和@buff_turns转化为图标index的数组,然后在描画完状态图标之后再描画一次剩余回合数的图标,具体怎么做你自己考虑吧,因为你这种战斗系统需要改的脚本一定相当多,所以可以顺带当脚本练习 ^^
然后,如果你是指技能里面的附加回合数,这个数据储读取的方式如下:

load_data("Data/Items.rvdata2").effects[j].code
load_data("Data/Items.rvdata2").effects[j].data_id
load_data("Data/Items.rvdata2").effects[j].value1
load_data("Data/Items.rvdata2").effects[j].value2

其中 i 表示物品的id , j 表示 第几个序号的效果 , code 是使用效果的种类,具体参考下面的
  EFFECT_RECOVER_HP     = 11              # 恢复 HP
  EFFECT_RECOVER_MP     = 12              # 恢复 MP
  EFFECT_GAIN_TP        = 13              # 增加 TP
  EFFECT_ADD_STATE      = 21              # 附加状态
  EFFECT_REMOVE_STATE   = 22              # 解除状态
  EFFECT_ADD_BUFF       = 31              # 强化能力
  EFFECT_ADD_DEBUFF     = 32              # 弱化能力
  EFFECT_REMOVE_BUFF    = 33              # 解除能力强化
  EFFECT_REMOVE_DEBUFF  = 34              # 解除能力弱化
  EFFECT_SPECIAL        = 41              # 特殊效果
  EFFECT_GROW           = 42              # 能力提升
  EFFECT_LEARN_SKILL    = 43              # 学会技能
  EFFECT_COMMON_EVENT   = 44              # 公共事件

也就是说当code为31的时候,data_id为属性id,value1就是回合数了

如果是在默认系统里技能成功后“xx上升了”那里加上回合数,可以试试下面的脚本,
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Vocab
  3. #------------------------------------------------------------------------------
  4. #  定义了用语和信息。将部分资料定义为常量。用语部分来自于 $data_system 。
  5. #==============================================================================
  6.  
  7. module Vocab
  8.   # 能力强化/弱化
  9.   BuffAdd         = "%s的%s上升%s回合!"
  10.   DebuffAdd       = "%s的%s下降%s回合!"
  11. end
  12. #==============================================================================
  13. # ■ Window_BattleLog
  14. #------------------------------------------------------------------------------
  15. #  用来显示战斗信息的窗口
  16. #   此类窗口没有边框,归类为窗口只是为了方便。
  17. #==============================================================================
  18.  
  19. class Window_BattleLog < Window_Selectable
  20.   #--------------------------------------------------------------------------
  21.   # ● 显示能力强化/弱化
  22.   #--------------------------------------------------------------------------
  23.   def display_changed_buffs(target)
  24.     display_buffs2(target, target.result.added_buffs,Vocab::BuffAdd)
  25.     display_buffs2(target, target.result.added_debuffs, Vocab::DebuffAdd)
  26.     display_buffs(target, target.result.removed_buffs, Vocab::BuffRemove)
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 显示能力强化/弱化(个別)
  30.   #--------------------------------------------------------------------------
  31.   def display_buffs2(target, buffs, fmt)
  32.     buffs.each do |param_id|
  33.       replace_text(sprintf(fmt, target.name, Vocab::param(param_id), target.buff_turns[param_id].to_i))
  34.       wait
  35.     end
  36.   end
  37. end
  38. #encoding:utf-8
  39. #==============================================================================
  40. # ■ Game_Battler
  41. #------------------------------------------------------------------------------
  42. #  处理战斗者的类。Game_Actor 和 Game_Enemy 类的父类。
  43. #==============================================================================
  44.  
  45. class Game_Battler < Game_BattlerBase
  46.   def buff_turns
  47.     @buff_turns
  48.   end
  49. end


顺带一提,默认的va系统貌似
角色原来有1层5回合攻击强化,再附加一次3回合攻击强化的时候,会变成5回合2层攻击强化;
角色原来有1层3回合攻击强化,再附加一次5回合攻击强化的时候,会变成5回合2层攻击强化;
角色原来有1层3回合攻击弱化,再附加一次5回合攻击强化的时候,会彻底变成无强化,但是会显示攻击强化了5回合;
角色原来有1层5回合攻击弱化,再附加一个3回合攻击强化的时候,会彻底变成无强化,但是会显示攻击强化了5回合;
总的来说,也就是层数加1,回合数重置为较长的一个。这种系统加上回合数说明简直就是在玩弄玩家的智商

至于第二个问题,完全没看懂啊~复杂的战斗系统最讨厌了~~~~
作者: 亂堂和樹    时间: 2014-12-2 19:39
謝謝您們,晚一點來去測試看看@@




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