Project1

标题: 关于技能横向展示的脚本 [打印本页]

作者: orangepower    时间: 2012-10-22 21:19
标题: 关于技能横向展示的脚本
本来是一个在主站整合里面找到的VX脚本,效果是技能横向展示。
现在想用在VA,但是不太会改,在VA区询问了一下还是没有结果,我自己修改了总是出错。
后来反思了一下发现,VA里面技能画面有不同,所以可能脚本不太适合了。
自己是脚本盲不会修改,所以放这里讨论下具体修改是要怎样。
除了语法,可能显示的位置啥也要修改?我用在VA主要问题出在100行后,貌似是有些不匹配。
下面是VX上显示的效果:



然后是VX原本的脚本

  1. module SNF
  2.   SKILL_NOCOST = "---"
  3.   
  4.   SKILL_NOTE = true
  5.   
  6.   SKILL_SCOPE_DETAILD = {0 => "---",
  7.                          1 => "敵單體",
  8.                          2 => "敵全體",
  9.                          3 => "随机目标",
  10.                          4 => "随机目标",
  11.                          5 => "敌二体随机",
  12.                          6 => "敌三体随机",
  13.                          7 => "我方單體",
  14.                          8 => "我方全體",
  15.                          9 => "瀕死單體",  
  16.                          10 =>"瀕死全體",
  17.                          11 =>"使用者本身"}
  18.   
  19.   SKILL_NONELEMENT = "—"   
  20.   SKILL_ELEMENTPOINT = "/"
  21.   
  22.   SKILL_SCOPE_WORD = "對象"
  23.   SKILL_ELEMENTS_WORD = "屬性"
  24.   SKILL_NOTE_WORD = "簡介"

  25.   
  26. end

  27. class Window_Base < Window
  28.   def draw_item_name2(item, x, y, enabled = true)
  29.     if item != nil
  30.      
  31.       draw_icon(item.icon_index, x, y, enabled)
  32.       self.contents.font.color = normal_color
  33.       self.contents.font.color.alpha = enabled ? 255 : 128
  34.       self.contents.draw_text(x + 24, y, 256, WLH, item.name)
  35.     end
  36.   end
  37. end

  38. class Window_Skill < Window_Selectable
  39.   def initialize(x, y, width, height, actor)
  40.     super(x, y, width, height)
  41.     @actor = actor
  42.     @column_max = 1
  43.     self.index = 0
  44.     refresh
  45.   end
  46.   def draw_item(index)
  47.     skill = @data[index]
  48.     if skill != nil
  49.     rect = item_rect(index)
  50.     self.contents.clear_rect(rect)
  51.     skill = @data[index]
  52.       enabled = @actor.skill_can_use?(skill)
  53.       draw_item_name2(skill, rect.x, rect.y, enabled)
  54.       scope = skill_memo_scan(skill, 0)
  55.       scope = SNF::SKILL_SCOPE_DETAILD[skill.scope] if scope.size ==0
  56.       element = skill_memo_scan(skill, 1)
  57.       if element.size ==0
  58.         rect.width -= 4
  59.         skill_element = skill.element_set
  60.         element = ""
  61.         for i in 0...skill_element.size
  62.           if element == ""
  63.             element = $data_system.elements[skill_element[i]]
  64.           else
  65.             element += SNF::SKILL_ELEMENTPOINT
  66.             element += $data_system.elements[skill_element[i]]
  67.           end
  68.         end
  69.         element = SNF::SKILL_NONELEMENT if element == ""
  70.       end
  71.       note = skill_memo_scan(skill, 2)
  72.       skill_x = 0
  73.       skill_x += 64 unless SNF::SKILL_NOTE
  74.       skill_y = 0 + 24 * index
  75.       if @actor.calc_mp_cost(skill) == 0
  76.         cost = SNF::SKILL_NOCOST
  77.       else
  78.         cost = @actor.calc_mp_cost(skill)
  79.       end
  80.       self.contents.draw_text(skill_x + 216, skill_y, 40, 24, cost, 2)
  81.       self.contents.draw_text(skill_x + 256, skill_y, 96, 24, scope, 2)
  82.       self.contents.draw_text(skill_x + 368, skill_y, 128, 24, element, 2)
  83.       self.contents.draw_text(skill_x + 448, skill_y, 64, 24, note, 2) if SNF::SKILL_NOTE
  84.     end
  85.   end
  86.   def skill_memo_scan(skill, type)
  87.     case type
  88.       when 0
  89.         memo = skill.note.scan(/<#{SNF::SKILL_SCOPE_WORD}:(\S+)>/)
  90.       when 1
  91.         memo = skill.note.scan(/<#{SNF::SKILL_ELEMENTS_WORD}:(\S+)>/)
  92.       when 2
  93.         memo = skill.note.scan(/<#{SNF::SKILL_NOTE_WORD}:(\S+)>/)
  94.       else
  95.     end
  96.     return memo
  97.   end
  98. end
  99. class Scene_Skill < Scene_Base
  100.   def show_target_window(right)
  101.     @skill_window.active = false
  102.     width_remain = 544 - @target_window.width
  103.     @target_window.x = right ? width_remain : 0
  104.     @target_window.visible = true
  105.     @target_window.active = true
  106.   end
  107.     end
复制代码

作者: tjjlb    时间: 2012-10-22 22:02
真是一个好脚本啊
界面优化了
作者: orangepower    时间: 2012-10-22 23:31
tjjlb 发表于 2012-10-22 22:02
真是一个好脚本啊
界面优化了

呃但是要是VA能用就好了...
作者: tjjlb    时间: 2012-10-23 00:20
orangepower 发表于 2012-10-22 23:31
呃但是要是VA能用就好了...

额,是啊




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