Project1

标题: 請問關於更改菜單裡的狀態欄,如何添加屬性?? [打印本页]

作者: a000b1745    时间: 2013-3-19 03:30
标题: 請問關於更改菜單裡的狀態欄,如何添加屬性??
請問關於更改菜單裡的狀態欄,如何添加屬性??

我希望能多命中率、迴避率、魔法迴避率、會心率、會心迴避率、受攻擊率。
附上兩張圖片對比~

01.png (222.69 KB, 下载次数: 36)

原版

原版

02.png (224.64 KB, 下载次数: 37)

02.png

作者: j433463    时间: 2013-3-19 19:09
菜单上显示讯息只是增加一些 draw_text 而已,问题是命中率,会心率那些 X 的部份从哪得来?这个要是有,一切都简单了。
作者: a000b1745    时间: 2013-3-19 19:15
  #--------------------------------------------------------------------------
  # ● 繪制基本信息
  #--------------------------------------------------------------------------
  def draw_basic_info(x, y)
    draw_actor_level(@actor, x, y + line_height * 0)
    draw_actor_icons(@actor, x, y + line_height * 1)
    draw_actor_hp(@actor, x, y + line_height * 2)
    draw_actor_mp(@actor, x, y + line_height * 3)
  end
  #--------------------------------------------------------------------------
  # ● 繪制能力值
  #--------------------------------------------------------------------------
  def draw_parameters(x, y)
    6.times {|i| draw_actor_param(@actor, x, y + line_height * i, i + 2) }
  end

對這段一整個下午都在東改西改...哈哈根本不能運行...

我試圖找出了計算那些屬性的公式的"關鍵字"去搜索默認腳本...
def hit;  xparam(0);  end    # 成功幾率        HIT rate
def eva;  xparam(1);  end    # 閃避幾率        EVAsion rate
def mev;  xparam(4);  end    # 閃避魔法幾率    Magic EVasion rate
def cri;  xparam(2);  end    # 必殺幾率        CRItical rate
def cev;  xparam(3);  end    # 閃避必殺幾率    Critical EVasion rate
def tgr;  sparam(0);  end    # 受到攻擊的幾率        TarGet Rate

現在還在努力...我定是**寫法錯了...



作者: j433463    时间: 2013-3-19 21:22
我也觉得您应该知道怎么用 draw 描绘讯息,应该是不知道怎么调出 hit 等的值而出现错误讯息吧?试试 actor.hit 或 actor.xparam(0) 这样。
作者: a000b1745    时间: 2013-3-19 23:06
休息下...太挫折了{:2_272:}

作者: j433463    时间: 2013-3-19 23:37
a000b1745 发表于 2013-3-19 23:06
休息下...太挫折了

晕.....@@|||

因为您给的那些没有按照顺序排列,还包含了 xparam 和 sparam 两种,所以也不能用 6.times 递回来做,只能单项来做,

反正也没别的脚本会用到,何不直接在 6.times 下面用 draw_text 来搞定:

    change_color(system_color)
    draw_text(x + 180, y, 120, line_height, "成功率")
    change_color(normal_color)
    draw_text(x + 300, y, 36, line_height, @actor.xparam(0), 2)
    change_color(system_color)
    draw_text(x + 180, y + line_height * 1, 120, line_height, "回避率")
    change_color(normal_color)
    draw_text(x + 300, y + line_height * 1, 36, line_height, @actor.xparam(1), 2)
    change_color(system_color)
    draw_text(x + 180, y + line_height * 2, 120, line_height, "回避魔法率")
    change_color(normal_color)
    draw_text(x + 300, y + line_height * 2, 36, line_height, @actor.xparam(4), 2)
     change_color(system_color)
    draw_text(x + 180, y + line_height * 3, 120, line_height, "会心率")
    change_color(normal_color)
    draw_text(x + 300, y + line_height * 3, 36, line_height, @actor.xparam(2), 2)
     change_color(system_color)
    draw_text(x + 180, y + line_height * 4, 120, line_height, "会心回避率")
    change_color(normal_color)
    draw_text(x + 300, y + line_height * 4, 36, line_height, @actor.xparam(3), 2)
     change_color(system_color)
    draw_text(x + 180, y + line_height * 5, 120, line_height, "受击率")
    change_color(normal_color)
    draw_text(x + 300, y + line_height * 5, 36, line_height, @actor.sparam(0), 2)


x + 180 是中文字的 X 座标位置,x + 300 是数字的 X 座标位置,实际正确调整您自己来做吧。

本来是想照搬 6.times 的方式,但没按顺序,直接做没有传递 @actor 参数,不能用 actor.xparam(0) 所以用 @actor.xparam(0) 了,

我想这样应该可以做出来了吧。

作者: a000b1745    时间: 2013-3-19 23:45
"还包含了 xparam 和 sparam 两种"
沒錯!! 因為我記得之前你也答過一篇物品圖鑑的問題,你說同一類的比較好做...
如果是把"受击率"放棄
會不會更好做些?
作者: j433463    时间: 2013-3-19 23:51
没必要吧,因为物品图鉴要考虑到将来使用上更改的问题,所以一般尽可能朝简洁通用方便修改的程式码方向去做,

您现在只是改状态页的显示,固定只会有那一页受影响,用前面说的方式做就可以了,管它易读性什么的,这样反而更省事。
作者: a000b1745    时间: 2013-3-20 00:21
謝謝你呀大獅子~ 這兩天被腳本折磨 卻也受益良多了!!{:2_276:}
作者: j433463    时间: 2013-3-20 01:02
呃?原本的?如果您要改 6.times 的數字位置,請到 Window_Base 的 def draw_actor_param 去改,
其實我在 6 樓的那些就是取自 def draw_actor_param 的內容,您仔細比對一下就能明白了。


我個人是比較傾向從實作中學習的那一型,沒有人有系統地教我 RM 和 RGSS 這些知識,
只有藉實作來加速加深加快學習,從幫助回應解決帖子問題中,對我的實作經驗提升作用很大,
所以不需要感謝,這是互利的事情,當我解決一個沒處理過的問題,我就多了一些經驗,
可以說,憑著這些經驗,我才能在短短兩三個月從腳本菜鳥到有信心做好我的遊戲,
應該說謝謝的是我,你們都是好主顧,我的工資(經驗和好人卡)都是靠你們賺到的。
作者: a000b1745    时间: 2013-3-20 03:51
j433463 发表于 2013-3-20 01:02
呃?原本的?如果您要改 6.times 的數字位置,請到 Window_Base 的 def draw_actor_param 去改,
其實我在  ...

我又把你給我的寫法運行,結果常常出現小數點出現6.33333等等的狀況,

參考其他腳本的寫法自己弄弄 改良下變成這樣寫法^_^  .舉迴避率做例子!!

    change_color(system_color)
    draw_text(x + 95, y + line_height * 2, 120, line_height, "物攻迴避")
    change_color(normal_color)
    draw_text(x + 155, y + line_height * 2, 36, line_height, sprintf("%.1f", @actor.xparam(1) * 100).to_i, 2)

其實  sprintf("%.1f", @actor.xparam(1) * 100).to_f   好像也可以,只是四捨五入數值變不精準了。

作者: j433463    时间: 2013-3-20 04:29
呵呵,本來就是想讓您自己決定要怎麼改,我直接寫出算式的話,若不合您的意,那反而給您帶來修改的麻煩,

您的例子中,我覺得 to_f 比較接近四捨五入,但它不會針對整個小數後面的數字去進行,只對取到的下一位做,

譬如 p sprintf("%.1f", 6.333553 * 100).to_f 的結果是 633.4,因為 5 入進一,但 p sprintf("%.1f", 6.333453 * 100).to_f 結果則是 633.3,

按理它的結果應該也是 633.4 的,可是它似乎只認為 4 捨而不是 5 入,換句話說,它只看 633.35 或 633.34 而做了不同的四捨五入判定,

但 .3 或 .4 差別應該可以接受的,至少比 to_i 或 ceil 或 floor 取整數好得多,那樣差別更大,用 %.0f 後再取整也比 to_i 好吧。
作者: a000b1745    时间: 2013-3-20 04:39
真的,照你說的似乎更好些了!!
(明明要睡了...還是很不甘心在下面那兩個問答徘徊...↓
http://rpg.blue/thread-299358-1-1.html
http://rpg.blue/thread-293254-1-1.html
我的怪物有200隻.  不弄懂自己手動添加特徵會很可怕的...= =
作者: eric4514    时间: 2013-3-20 21:27
...新手一個...看不懂...




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