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

Project1

 找回密码
 注册会员
搜索

有關魔劍工舖的任務系統腳本出錯問題

查看数: 2081 | 评论数: 8 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-1-16 20:04

正文摘要:

在魔劍工舖找到的任務系統腳本不知為何總出現了 "188行 出現SyntaxError" 字句,求各大神幫幫忙看看是甚麼問題。 謝謝!!!! (ps任務系統腳本其實有很多,理論上我也不必執著於用這個, 但因為這腳本無論是排 ...

回复

cht94512 发表于 2018-2-24 22:44:30
mori13 发表于 2018-2-24 01:39
抱歉没注意看到已经更新了。毕竟编辑并不会提醒_(:з」∠)_
98行那个啊,原本是
中间有个逗号没有加斜杠

是沒有出錯了,不過控制碼依然有問題
這個腳本真難搞呀…Orz

点评

我是用一個新的工程來做測試的,還是同樣有問題,應該不是腳本衝突,除非它是跟內置的腳本有衝突……  发表于 2018-2-28 00:21
控制码有问题,会不会是与别的脚本冲突了,比如其他的对话框脚本?  发表于 2018-2-27 19:27
明白呀,辛苦大大啦 ><  发表于 2018-2-25 21:06
Orz毕竟偶不是原作者呢  发表于 2018-2-25 01:05
mori13 发表于 2018-2-24 01:39:40

抱歉没注意看到已经更新了。毕竟编辑并不会提醒_(:з」∠)_
98行那个啊,原本是
  1. Rege = '([dA-Za-z一-龥-+*/_$!?`~!@#$%^&*()_=\|'."<>?/;:{}]+)'
复制代码

中间有个逗号没有加斜杠
所以应该是
  1. Rege = '([dA-Za-z一-龥-+*/_$!?`~!@#$%^&*()_=\|\'."<>?/;:{}]+)'
复制代码

就不会出错了
cht94512 发表于 2018-2-20 00:14:46
本帖最后由 cht94512 于 2018-2-20 00:26 编辑


感謝大大呀!我試了一下是顯示得到,太好了。

原網址在
https://a870053jjkj.tian.yam.com/posts/24625069
目前還是可以上的,大大可以參考一下。

控制碼這個可能是在另一個腳本補足了,但同樣地把這個放進去又有error
這次是第98行有syntax error,相信是 " "在中間重覆了的問題,不知如何搞……

RUBY 代码复制
  1. module Sword
  2. #=======================================
  3. #★ 魔劍工舖 - 控制碼轉換(3)
  4. # http://blog.yam.com/a870053jjkj/article/28082241
  5. #=======================================
  6. =begin
  7. ● 所需腳本
  8. 魔劍工舖整合腳本:http://blog.yam.com/a870053jjkj/article/25751998(非必要)
  9. ========================================
  10. ● 設置腳本
  11. 轉換控制碼:字符串.code_explain(清空描繪標誌&)
  12. 轉換關鍵字:字符串.critical_word
  13. 檢查關鍵字:字符串.critical_word?
  14. 產生位圖:字符串.bitmap_explain(寬度, 高度, 間隔距離, 字體){塊}
  15. 位圖資料變量:$Sword46
  16. 記憶控制碼:$game_system.swordM_save[編號] = '文字內容'
  17. 引用對象資料:$game_system.swordM_data = 對象
  18. ========================================
  19. ● 控制碼
  20. ○ 內容控制碼(code_explain中有效)
  21.  V[變數編號] : 顯示指定變數編號的數值,可當成其他控制碼的參數用
  22.  TXT[檔案名稱] : 顯示指定的txt的所有內容
  23.  TXT[檔案名稱][索引] : 顯示指定的txt指定索引的內容
  24.  L[編號] : 此控制碼視同指定編號的[設定記憶]的設置內容
  25.  SW[開關編號] : 顯示指定開關編號目前的狀態文字,依設置S46_Switche而定
  26.  SW[開關編號][內容] : 當指定的開關為ON時,就顯示內容,為OFF則啥都不顯示
  27.  N[角色編號] : 顯示指定角色編號的角色名稱
  28.  CI[角色編號] : 顯示指定角色編號的職業名稱
  29.  CN[職業編號] : 顯示指定職業編號的職業名稱
  30.  SN[技能編號] : 顯示指定技能編號的技能名稱
  31.  IN[物品編號] : 顯示指定物品編號的物品名稱
  32.  WN[武器編號] : 顯示指定武器編號的武器名稱
  33.  AN[防具編號] : 顯示指定防具編號的防具名稱
  34.  EN[敵人編號] : 顯示指定敵人編號的敵人名稱
  35.  TN[狀態編號] : 顯示指定狀態編號的狀態名稱
  36.  MN[屬性編號] : 顯示指定屬性編號的屬性名稱
  37.  TY[能力位置] : 顯示S0_Ability設定指定位置-1的能力值名稱
  38.  GV : 顯示目前玩家持有的金錢
  39.  EQ[角色編號,部位] : 顯示角色編號裝備的名稱,部位-0武、1盾、2頭、3身、4飾
  40.  MA[地圖編號] : 顯示指定地圖編號的地圖名稱,設置0表示目前的地圖
  41.  NN[角色編號] : 顯示指定角色編號的戰鬥圖檔案名稱(VX:頭像檔案名稱)
  42.  NS[技能編號] : 顯示指定技能編號的圖標檔案名稱(VX:該圖標索引號)
  43.  NI[物品編號] : 顯示指定物品編號的圖標檔案名稱(VX:該圖標索引號)
  44.  NW[武器編號] : 顯示指定武器編號的圖標檔案名稱(VX:該圖標索引號)
  45.  NA[防具編號] : 顯示指定防具編號的圖標檔案名稱(VX:該圖標索引號)
  46.  NT[狀態編號] : 顯示指定狀態編號的圖標索引號(VX專用)
  47. <<<<< 需要有使用$game_system.swordM_data存入對象資料才可使用以下控制碼 >>>>>
  48.  DA[函數名稱] : 顯示指定對象中的函數返回值,能用的函數名稱請參考F1幫助文檔
  49.  EF : 顯示該對象中的屬性名稱,會自動使用公共設定來附加C控制碼
  50.  SS : 顯示該對象中的狀態名稱,會自動使用公共設定來附加C控制碼
  51. ----------------------------------------------------------------
  52. ○ 描繪控制碼(bitmap_explain中有效)
  53.  C[色碼] : 變更文字顏色,使用方式和對話框的C控制碼相同
  54.  C[紅,綠,藍] : 變更文字顏色,指定三原色來組合顏色(單一顏色可設定0~255的數值)
  55.  C[紅,綠,藍,透] : 變更文字顏色,指定三原色來組合顏色+不透明度,其他同上
  56.  C[#紅綠藍] : 變更文字顏色,指定三原色來組合顏色(方式同網頁16進位顏色設定)
  57.  C[#紅綠藍透] : 變更文字顏色,指定三原色來組合顏色+不透明度,其他同上
  58.  C : 還原顏色,回到未使用C控制碼(不含自己)的狀況
  59. ------以上任一個C控制碼如果連續2個放置一起時,則視同為漸層顏色------
  60.  F : 回到文字原始的字型狀態,簡單來說就是用過的控制碼都將在此失效
  61.  FN[字體名稱] : 變更指定的字體,如果指定的字體不存在則不會變更字體
  62.  FN : 還原成原本的字體
  63.  FS[大小] : 變更文字的大小,有可能會影響該行的高度
  64.  FS : 還原成原本的文字大小
  65.  FH[位置] : 在文字哪個位置旁附加陰影,位置對應鍵盤數字九宮格,0為不顯示
  66.  FH : 取消附加陰影,效果同FH[0]
  67.  B : 將文字變更為粗體,在使用一次會恢復原狀
  68.  I : 將文字變更為斜體,在使用一次會恢復原狀
  69.  U : 將文字附加底線,在使用一次會恢復原狀
  70.  S : 將文字附加刪除線,在使用一次會恢復原狀
  71.  BS[路徑] : 顯示指定路徑的圖片,起始路徑為遊戲所在資料夾,不需副檔名
  72.  BS[路徑,色相] : 和上面的效果相同,只是可以設定該圖片的色相而已
  73.  CO[寬度,高度] : 描繪一個指定大小的方形
  74.  X[像素] : 描繪的位置往右指定像素的距離,正數為向右移;負數為向左移
  75.  Y[像素] : 描繪的位置往下指定像素的距離,正數為向下移;負數為向上移
  76. =end
  77. #=======================================
  78. #● 功能設定
  79. S46_Switche = ['開', '關'] # 設定控制碼「SW」顯示的內容 ([ON,OFF)
  80. S46_NilText = 24 # 當該行無任何內容時,視同該行的最大高度為多少
  81. #--------------------------------------------------------------
  82. #○ 關鍵字添加修改設置
  83. # 找到指定內容,就在內容前後附加內容,與就是在 {} 之間放置
  84. # 設置法1:  '追蹤內容'=>['前附加內容', '後附加內容'],
  85. # 設置法2:  '追蹤內容'=>['新的內容'],
  86. S46_Chase = {
  87.   '你好'=>['c[6]', 'c[0]'],
  88.   '阻止他'=>['fs[32]', 'fs[22]'],
  89.   '英文'=>['English']
  90. } # 設置結束
  91. #=======================================
  92.   BEGIN{$Sword ? $Sword[46] = 3 : $Sword = {46=>3}} # 腳本使用標誌
  93.   ($Sword_VX = defined?(RPG::Weather) ? false : true) if $Sword_VX.nil?
  94. end
  95. #=======================================
  96. #■ 字符串
  97. class String
  98.   Rege = '([dA-Za-z一-龥-+*/_$!?`~!@#$%^&*()_=\|'."<>?/;:{}]+)' # 可匹配內容
  99.   #-------------------------------------------------------------
  100.   #● 控制碼內容轉換(清除描繪控制碼標誌)
  101.   def code_explain(no_depict = false)
  102.     text, @def_depth = self.dup, true
  103.     text = code_explain_update(text) while @def_depth
  104.     (return no_depict ? text.code_explain_updateX : text) unless $scene # 遊戲尚未正式開始就中斷
  105.     data = $game_system.swordM_data
  106.     text.gsub!(/\[Dd][Aa][#{String::Rege}]/){eval("data.#{$1}")} if data # 函數返回值
  107.     text.gsub!(/\[Ss][Ww][(d+)][#{Rege}]/){$game_switches[$1.to_i] ? $2 : ''} # 開關自訂
  108.     text.gsub!(/\[Ss][Ww][(d+)]/){$game_switches[$1.to_i] ?
  109.     Sword::S46_Switche[0] : Sword::S46_Switche[1]} # 開關設定內容
  110.     text.gsub!(/\[Nn][(d+)]/){$game_actors[$1.to_i] != nil ?
  111.     $game_actors[$1.to_i].name : ''} # 角色名稱
  112.     text.gsub!(/\[Cc][Ii][(d+)]/){$game_actors[$1.to_i] != nil ?
  113.     $data_classes[$game_actors[$1.to_i].class_id].name : ''} # 角色的職業名稱
  114.     text.gsub!(/\[Cc][Nn][(d+)]/){$data_classes[$1.to_i] != nil ?
  115.     $data_classes[$1.to_i].name : ''} # 職業名稱
  116.     text.gsub!(/\[Ss][Nn][(d+)]/){$data_skills[$1.to_i] != nil ?
  117.     $data_skills[$1.to_i].name : ''} # 技能名稱
  118.     text.gsub!(/\[Ii][Nn][(d+)]/){$data_items[$1.to_i] != nil ?
  119.     $data_items[$1.to_i].name : ''} # 物品名稱
  120.     text.gsub!(/\[Ww][Nn][(d+)]/){$data_weapons[$1.to_i] != nil ?
  121.     $data_weapons[$1.to_i].name : ''} # 武器名稱
  122.     text.gsub!(/\[Aa][Nn][(d+)]/){$data_armors[$1.to_i] != nil ?
  123.     $data_armors[$1.to_i].name : ''} # 防具名稱
  124.     text.gsub!(/\[Ee][Nn][(d+)]/){$data_enemies[$1.to_i] != nil ?
  125.     $data_enemies[$1.to_i].name : ''} # 敵人名稱
  126.     text.gsub!(/\[Tt][Nn][(d+)]/){$data_states[$1.to_i] != nil ?
  127.     $data_states[$1.to_i].name : ''} # 狀態名稱
  128.     text.gsub!(/\[Mm][Nn][(d+)]/){$data_system.elements[$1.to_i] != nil ?
  129.     $data_system.elements[$1.to_i] : ''} # 屬性名稱
  130.     text.gsub!(/\[Nn][Nn][(d+)]/){$game_actors[$1.to_i] != nil ?
  131.     $game_actors[$1.to_i].character_name : ''} # 角色圖片名稱
  132.     text.gsub!(/\[Nn][Ss][(d+)]/){$data_skills[$1.to_i] != nil ?
  133.     ($Sword_VX ? $data_skills[$1.to_i].icon_index :
  134.     $data_skills[$1.to_i].icon_name) : ''} # 技能圖片名稱
  135.     text.gsub!(/\[Nn][Ii][(d+)]/){$data_items[$1.to_i] != nil ?
  136.     ($Sword_VX ? $data_items[$1.to_i].icon_index :
  137.     $data_items[$1.to_i].icon_name) : ''} # 物品圖片名稱
  138.     text.gsub!(/\[Nn][Ww][(d+)]/){$data_weapons[$1.to_i] != nil ?
  139.     ($Sword_VX ? $data_weapons[$1.to_i].icon_index :
  140.     $data_weapons[$1.to_i].icon_name) : ''} # 武器圖片名稱
  141.     text.gsub!(/\[Nn][Aa][(d+)]/){$data_armors[$1.to_i] != nil ?
  142.     ($Sword_VX ? $data_armors[$1.to_i].icon_index :
  143.     $data_armors[$1.to_i].icon_name) : ''} # 防具圖片名稱
  144.     text.gsub!(/\[Tt][Yy][(d+)]/){Sword::S0_Ability[$1.to_i]} #
  145.     text.gsub!(/\[Nn][Tt][(d+)]/){$data_states[$1.to_i] != nil ?
  146.     $data_states[$1.to_i].icon_index : ''} if $Sword_VX # 狀態圖片索引號
  147.     text.gsub!(/\[Ee][Qq][(d+),(d+)]/) do case $2.to_i # 角色目前裝備編號
  148.     when 0 ; $game_actors[$1.to_i].weapon_id != 0 ?  
  149.       $data_weapons[$game_actors[$1.to_i].weapon_id].name : '' # 武器
  150.     when 1 ; $game_actors[$1.to_i].armor1_id != 0 ?
  151.       $data_armors[$game_actors[$1.to_i].armor1_id].name : '' # 盾
  152.     when 2 ; $game_actors[$1.to_i].armor2_id != 0 ?
  153.       $data_armors[$game_actors[$1.to_i].armor2_id].name : '' # 頭部防具
  154.     when 3 ; $game_actors[$1.to_i].armor3_id != 0 ?
  155.       $data_armors[$game_actors[$1.to_i].armor3_id].name : '' # 身體防具
  156.     when 4 ; $game_actors[$1.to_i].armor4_id != 0 ?
  157.       $data_armors[$game_actors[$1.to_i].armor4_id].name : '' # 裝飾品
  158.     end ; end
  159.     text.gsub!(/\[Mm][Aa][(d+)]/){a = $1.to_i == 0 ? $game_map.map_id : $1.to_i
  160.     xv = $Sword_VX ? 'v' : 'x' ; load_data("Data/MapInfos.r#{xv}data")[a].name} # 地圖名
  161.     text.gsub!(/\[Gg][Vv]/){$game_party.gold} # 目前金錢
  162.     text.gsub!(/\[Ss][Cc][(d+)]/){Sword::S0_Scope[$1.to_i]} # 攻擊目標用語
  163.     text.gsub!(/\[Ee][Ff]/) do # 屬性控制碼
  164.       set, v = '', 0
  165.       if XPVX.data_element_set(data).empty?
  166.         color = Sword::S0_SetX[0]
  167.         set = "x01#{color.red.to_i},#{color.green.to_i},#{
  168.         color.blue.to_i},#{color.alpha.to_i}]" + Sword::S0_SetX[1]
  169.       else
  170.         XPVX.data_element_set(data).each do |i|
  171.           break if v >= Sword::S0_Set[0]
  172.           next if Sword::S0_SetX[2].include?(i)
  173.           v += 1
  174.           color = Sword::S0_Set[i] ? Sword::S0_Set[i] : nil
  175.           set += color ? " x01#{color.red.to_i},#{color.green.to_i},#{
  176.           color.blue.to_i},#{color.alpha.to_i}]" +
  177.           $data_system.elements[i] + "x001]" : ' ' + $data_system.elements[i]
  178.         end
  179.         set[0] = '' unless set.empty?
  180.       end
  181.       set
  182.     end
  183.     text.gsub!(/\[Ss][Ss]/) do # 狀態控制碼
  184.       set, v, state_set, color = '', 0, XPVX.data_state_set(data), Sword::S0_Plus
  185.       state_set.each do |states|
  186.         states.each do |i|
  187.           break if v >= Sword::S0_StatuMax
  188.           next if Sword::S0_StatuX[2].include?(i)
  189.           set += " x01#{color.red.to_i},#{color.green.to_i},#{
  190.           color.blue.to_i},#{color.alpha.to_i}]" + $data_states[i].name + "x001]"
  191.         end
  192.         color = Sword::S0_Minus
  193.       end
  194.       set[0] = '' unless set.empty?
  195.       if set.empty?
  196.         color = Sword::S0_StatuX[0]
  197.         set = "x01#{color.red.to_i},#{color.green.to_i},#{
  198.         color.blue.to_i},#{color.alpha.to_i}]" + Sword::S0_StatuX[1]
  199.       end
  200.       set
  201.     end
  202.     no_depict ? text.code_explain_updateX : text
  203.   end
  204.   def code_explain_updateX
  205.     az = '([dA-Za-z][dA-Za-z])'
  206.     [/\[Aa][Ll][(d+)]/, /\[Bb][Ss][#{Rege} ?, ?(d+)]/, /\[Bb][Ss][#{Rege}]/,
  207.     /\[Cc][Oo][(d+) ?, ?(d+)]/, /\[Cc][(d+)]/,
  208.     /\[Cc][(d+) ?, ?(d+) ?, ?(d+)(?: ?, ?(d+)|)]/,
  209.     /\[Cc][##{az}#{az}#{az}(?:#{az}|)]/,
  210.     /\[Cc]/, /\[Bb]/, /\[Ii]/, /\[Uu]/, /\[Ss]/, /\[Ff][Nn][#{Rege}]/,
  211.     /\[Ff][Nn]/, /\[Ff][Ss][(d+)]/, /\[Ff][Ss]/, /\[Ff][Hh][(d+)]/,
  212.     /\[Ff][Hh]/, /\[Ff]/, /\[Xx][(-?d+)]/, /\[Yy][(-?d+)]/].each{
  213.     |sxp| self.gsub!(sxp){''}} # 清除描繪控制碼
  214.     self
  215.   end
  216.   #-------------------------------------------------------------
  217.   #● 處理重複性質的控制碼(字符串)
  218.   def code_explain_update(text)
  219.     @def_depth = false # 將執行此方法用的標誌關閉
  220.     text.gsub!(/\[Tt][Xx][Tt][([0-龥]+)][([0-龥]+)]/) do @def_depth = true
  221.       tex, a, i = '', $2, true ; b = open("#{$1}.txt").read.split(/nn/); b.each do |sin|
  222.       if (/[#{a}]n/ =~ sin) == (i ? 3 : 0) ; tex = sin.sub(/[#{a}]n/, '') ; break
  223.       else ; tex = '' ; i = nil ; end ; end ; tex ; end
  224.     text.gsub!(/\[Tt][Xx][Tt][([0-龥]+)]/){@def_depth = true ; open("#{$1}.txt").read}
  225.     return text unless $scene # 遊戲尚未正式開始就中斷
  226.     text.gsub!(/\[Vv][(d+)]/){@def_depth = true ; $game_variables[$1.to_i]}
  227.     text.gsub!(/\[Ll][(d+)]/){@def_depth = true # 記憶控制碼
  228.     $game_system.swordM_save[$1.to_i] != nil ? $game_system.swordM_save[$1.to_i] : ''}
  229.   text ; end
  230.   #-------------------------------------------------------------
  231.   #● 關鍵字轉換
  232.   def critical_word
  233.     text = self.dup
  234.     Sword::S46_Chase.each{|key, value| value.size == 1 ? text.gsub!(/#{key}/){value[0]} :
  235.     text.gsub!(/#{key}/){value[0] + key + value[1]}}
  236.   text ; end
  237.   #-------------------------------------------------------------
  238.   #● 描繪位圖(寬度, 高度, 間隔距離, 字體)
  239.   def bitmap_explain(width, height, distance = 0, font = nil)
  240.     bitmap = Bitmap.new(width, height)
  241.     # 轉換內容控制碼的內容, X座標, Y座標, 行數, 單行資料, 最大資料
  242.     text, x, y, br, row, max = self.dup, 0, 0, 0, [[0, 0, []]], [0, 0]
  243.     # 字體表, 底線, 刪除線, 顏色紀錄, 陰影位置, 圖片表, VX預設陰影紀錄用
  244.     font_n, font_u, font_s, gradually, shadow, picture, vshadow = [], false, false, nil, 0, [], nil
  245.     font ? bitmap.font = font : font = bitmap.font.dup  # 未設定字體時,產生預設字體
  246.     text.gsub!(/\[Aa][Ll][(d+)]/){"x08#{$1}]"}
  247.     text.gsub!(/\[Bb][Ss][#{Rege} ?, ?(d+)]/){
  248.     picture << [$1, $2.to_i] ; "x05#{picture.size - 1}]"}
  249.     text.gsub!(/\[Bb][Ss][#{Rege}]/){picture << [$1, 0] ; "x05#{picture.size - 1}]"}
  250.     text.gsub!(/\[Cc][Oo][(d+) ?, ?(d+)]/){"x06#{$1},#{$2}]"}
  251.     text.gsub!(/\[Cc][(d+)]/){color = Window_Base.new(-33, -33, 33, 33).text_color($1.to_i)
  252.     "x01#{color.red.to_i},#{color.green.to_i},#{color.blue.to_i},#{color.alpha.to_i}]"}
  253.     text.gsub!(/\[Cc][(d+) ?, ?(d+) ?, ?(d+)(?: ?, ?(d+)|)]/){alpha = $4 ? $4.to_i : 255
  254.     "x01#{$1},#{$2},#{$3},#{alpha}]"}
  255.     az = '([dA-Za-z][dA-Za-z])'
  256.     text.gsub!(/\[Cc][##{az}#{az}#{az}(?:#{az}|)]/){alpha = $4 ? $4.to_i(16) : 255
  257.     "x01#{$1.to_i(16)},#{$2.to_i(16)},#{$3.to_i(16)},#{alpha}]"}
  258.     text.gsub!(/\[Cc]/){"x001]"}
  259.     text.gsub!(/\[Bb]/){"x002]"}
  260.     text.gsub!(/\[Ii]/){"x003]"}
  261.     text.gsub!(/\[Uu]/){"x004]"}
  262.     text.gsub!(/\[Ss]/){"x005]"}
  263.     text.gsub!(/\[Ff][Nn][#{Rege}]/){font_n << $1 ; "x02#{font_n.size - 1}]"}
  264.     text.gsub!(/\[Ff][Nn]/){"x006]"}
  265.     text.gsub!(/\[Ff][Ss][(d+)]/){"x03#{$1}]"}
  266.     text.gsub!(/\[Ff][Ss]/){"x007]"}
  267.     text.gsub!(/\[Ff][Hh][(d+)]/){"x04#{$1}]"}
  268.     text.gsub!(/\[Ff][Hh]/){"x040]"}
  269.     text.gsub!(/\[Ff]/){"x000]"}
  270.     text.gsub!(/\[Xx][(-?d+)]/){"x07X#{$1}]"}
  271.     text.gsub!(/\[Yy][(-?d+)]/){"x07Y#{$1}]"}
  272.     while ((c = text.slice!(/./m)) != nil) ; case c
  273.     when "n" ; max[0] = x if x > max[0] # 換行
  274.       row[br][1] += Sword::S46_NilText if row[br][1] == 0 # 該行無內容可能就附加隱藏高度
  275.       row[br][1] += distance # 增加間隔距離
  276.       row[br][0] = x ; x = 0 ; y += row[br][1] ; br += 1 ; row[br] = [0, 0, []] # 換行
  277.     when "x00" ; text.sub!(/(d+)]/, '')
  278.       case $1
  279.       when '0' ; bitmap.font.color, gradually, bitmap.font.bold, bitmap.font.italic, font_u, font_s,
  280.         bitmap.font.name, bitmap.font.size, shadow =
  281.         font.color, nil, font.bold, font.italic, false, false, font.name, font.size, 0
  282.         (bitmap.font.shadow = vshadow ; vshadow = nil) if $Sword_VX and vshadow != nil
  283.       when '1' ; bitmap.font.color, gradually = font.color, nil # 還原顏色
  284.         (bitmap.font.shadow = vshadow ; vshadow = nil) if $Sword_VX and vshadow != nil
  285.       when '2' ; bitmap.font.bold = ! bitmap.font.bold # 粗細體互換
  286.       when '3' ; bitmap.font.italic = ! bitmap.font.italic # 斜直體互換
  287.       when '4' ; font_u = ! font_u # 底線附加或解除
  288.       when '5' ; font_s = ! font_s # 刪除線附加或解除
  289.       when '6' ; bitmap.font.name = font.name # 還原字體
  290.       when '7' ; bitmap.font.size = font.size # 還原大小
  291.       end
  292.     when "x01" ; text.sub!(/(d+),(d+),(d+),(d+)]/, '') # 變更文字顏色
  293.       gradually = nil if gradually.is_a?(Color) # 取消漸層色
  294.       gradually ? gradually = Color.new($1.to_i, $2.to_i, $3.to_i, $4.to_i) :
  295.       bitmap.font.color = Color.new($1.to_i, $2.to_i, $3.to_i, $4.to_i)
  296.       gradually = true if (/x01/ =~ text) == 0 unless gradually # 設定漸層判斷標誌
  297.     when "x02" ; text.sub!(/(d+)]/, '') # 變更字體
  298.       bitmap.font.name = font_n[$1.to_i] if Font.exist?(font_n[$1.to_i])
  299.     when "x03" ; text.sub!(/(d+)]/, '') ; bitmap.font.size = $1.to_i # 變更大小
  300.     when "x04" ; text.sub!(/(d+)]/, '') ; shadow = $1.to_i # 變更陰影位置
  301.     when "x05" ; text.sub!(/(d+)]/, '') ; # 描繪圖片
  302.       cache = Bitmap.new(picture[$1.to_i][0])
  303.       cache.hue_change(picture[$1.to_i][1]) # 色相處理
  304.       rect = Rect.new(0, 0, cache.width, cache.height)
  305.       bitmap.blt(x, y, cache, rect)
  306.       row[br][2] << [1, picture[$1.to_i], Rect.new(x, y, rect.width, rect.height)]
  307.       x += rect.width
  308.       row[br][1] = rect.height if rect.height > row[br][1]
  309.       max[1] = rect.height if rect.height > max[1]
  310.     when "x06" ; text.sub!(/(d+),(d+)]/, '') ; # 描繪矩形
  311.       bitmap.fill_rect(x, y, $1.to_i, $2.to_i, bitmap.font.color)
  312.       row[br][2] << [2, nil, Rect.new(x, y, $1.to_i, $2.to_i)]
  313.       x += $1.to_i
  314.       row[br][1] = $2.to_i if $2.to_i > row[br][1] ; max[1] = $2.to_i if $2.to_i > max[1]
  315.     when "x07" ; text.sub!(/([XY])(-?d+)]/, '') ; $1 == 'X' ? x += $2.to_i : y += $2.to_i # 移動
  316.     when "x08" ; text.sub!(/(d+)]/, '') ; align = $1.to_i
  317.     else ; cx, cy = bitmap.text_size(c).width, bitmap.text_size(c).height
  318.       (x = 0 ; y += cy) if x + cx >= width # 自動換行
  319.       if shadow > 0 # 陰影文字的場合
  320.         color_dup = bitmap.font.color.dup
  321.         bitmap.font.color = Color.new(0, 0, 0)
  322.         bitmap.draw_text(x - 1, y + 1, cx, cy, c) if [1, 5].include?(shadow)
  323.         bitmap.draw_text(x, y + 1, cx, cy, c) if [2, 5].include?(shadow)
  324.         bitmap.draw_text(x + 1, y + 1, cx, cy, c) if [3, 5].include?(shadow)
  325.         bitmap.draw_text(x - 1, y, cx, cy, c) if [4, 5].include?(shadow)
  326.         bitmap.draw_text(x + 1, y, cx, cy, c) if [6, 5].include?(shadow)
  327.         bitmap.draw_text(x - 1, y - 1, cx, cy, c) if [7, 5].include?(shadow)
  328.         bitmap.draw_text(x, y - 1, cx, cy, c) if [8, 5].include?(shadow)
  329.         bitmap.draw_text(x + 1, y - 1, cx, cy, c) if [9, 5].include?(shadow)
  330.         bitmap.font.color = color_dup
  331.       end
  332.       if gradually # 描繪漸層文字的場合
  333.         (vshadow = bitmap.font.shadow ; bitmap.font.shadow = false) if
  334.         $Sword_VX and vshadow == nil # 取消陰影
  335.         grad = [(gradually.red - bitmap.font.color.red) / cy,
  336.         (gradually.green - bitmap.font.color.green) / cy,
  337.         (gradually.blue - bitmap.font.color.blue) / cy,
  338.         (gradually.alpha - bitmap.font.color.alpha) / cy]
  339.         col = [bitmap.font.color.red, bitmap.font.color.green,
  340.         bitmap.font.color.blue, bitmap.font.color.alpha]
  341.         colr = col.dup
  342.         cy.times{|i| bitmap.font.color =
  343.         Color.new(col[0] += grad[0], col[1] += grad[1], col[2] += grad[2], col[3] += grad[3]).dup
  344.         bitmap.draw_text(x, y, cx, cy - i, c)}
  345.         bitmap.font.color = Color.new(colr[0], colr[1], colr[2], colr[3])
  346.       else ; bitmap.draw_text(x, y, cx, cy, c) # 描繪文字
  347.       end
  348.       bitmap.fill_rect(x, y + cy - 1, cx, 1, bitmap.font.color) if font_u # 描繪底線
  349.       bitmap.fill_rect(x, y + cy / 2, cx, 1, bitmap.font.color) if font_s # 描繪刪除線
  350.       row[br][2] << [0, c, Rect.new(x, y, cx, cy)]
  351.       x += cx
  352.       row[br][1] = cy if cy > row[br][1] ; max[1] = cy if cy > max[1]
  353.     end ; yield bitmap ; end
  354.     $Sword46 = [[max[0], max[1] + y + cy], row]
  355.     GC.start
  356.     bitmap
  357.   end
  358. end
  359. #=======================================
  360. #■ 系統
  361. class Game_System
  362.   attr_accessor(:swordM_save) # 記憶控制碼
  363.   attr_accessor(:swordM_data) # 讀取的數據資料
  364.   #-------------------------------------------------------------
  365.   #● 初始化狀態
  366.   alias sword46_initialize initialize
  367.   def initialize ; sword46_initialize
  368.     @swordM_save, @swordM_data = [], nil
  369.   end
  370. end
mori13 发表于 2018-2-19 20:42:25
本帖最后由 mori13 于 2018-2-19 21:05 编辑
cht94512 发表于 2018-2-19 19:22
還是不行呀
其實這個腳本本身已經設置了一些任務,測試時只需在事件的腳本打
"$game_party.swor ...


偶测试了下。之前error改的那个位置一直都没被用到。按偶说的改了之后其实已经是正常了。但是稍微上面那点
while ((c = text.slice!(/./m)) != nil)
我打出这个c来看...根本没有出现00,01啊之类的场合呢
即便给c赋个值,让他们运行,文字也依旧没有出现
不知道是不是没有上面说的控制码转换脚本的问题

----------------------------
找到了bug,在422行的y坐标,居然是负的!_(:з」∠)_负的显示出来乃怎么可能看得见,也许是之前有设定但是失效了
改成0就能看见了,但是依旧有问题,怀疑还是和控制码转换脚本有关,以及和部分斜杠缺少有关
_(:з」∠)_比如换行的“\n”都变成"n"了,恐怕不止这里哦


魔剑工铺的那个网站打不开QWQ没法找到原来的脚本呢
其实感觉说白了还是转载出来导致各种格式的问题,以及各种斜杠缺失

以下附上偶改了能正常显示了的代码,但是控制码转换好像都是失效的,不知道该怎么修复呢_(Xз」∠)_

代码框

评分

参与人数 2星屑 +100 +2 收起 理由
RyanBern + 100 + 1 认可答案
cht94512 + 1 认可答案

查看全部评分

cht94512 发表于 2018-2-19 19:22:08
mori13 发表于 2018-2-16 11:19
好的。那么乃试试把/\[(d+),(d+)/改成/\[(\d+)\,(\d+)/ ,也就是不只是在 [ 前加 \ ,在“d”,“,”前 ...

還是不行呀
其實這個腳本本身已經設置了一些任務,測試時只需在事件的腳本打
"$game_party.sword_assignment(1, 1)
$game_party.sword_assignment(2, 2)
$game_party.sword_assignment(3, 3)
$game_party.sword_assignment(4, 4)
$scene = Sword_Assignment.new"
就可以看到全部任務了。
mori13 发表于 2018-2-16 11:19:13
cht94512 发表于 2018-2-15 12:52
很感謝大大的幫忙。
這樣是可以解決error問題,但開出來顯示不了任務的資料頁面。
請看圖。 ...

好的。那么乃试试把/\[(d+),(d+)/改成/\[(\d+)\,(\d+)/ ,也就是不只是在 [ 前加 \ ,在“d”,“,”前都加
“\”。因为偶并不会添加任务...不太会测试呢
mori13 发表于 2018-1-29 22:53:32
应该是/\[(d+),(d+)/ 吧,下面几个都是这样吧

点评

意思是在/[(d+)之类的前面加个\ 变成/\[(d+)这种就可以了  发表于 2018-1-29 22:54
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-7-19 16:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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