魔劍工舖

關於部落格
RPG製作大師XP腳本為主要更新

RPG製作大師VX腳本為其次更新

RPG製作大師VX_Ace目前不考慮

RPG製作大師MV腳本完全沒打算

留言完建議重新整理看看是否顯示

目前不處理本舖外腳本的相關問題

其他相關事項請觀看規定注意事項

本舖未來的經營計畫與VA的支援




var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-37462754-1']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

  • 296198

    累積人氣

  • 10

    今日人氣

    0

    訂閱人氣

【腳本】腳本顏色網頁語法產生


使用方法
打開腳本編輯器,對腳本「Main」按下右鍵,選擇插入,會出現1個空白腳本
在空白腳本內貼上以下腳本:
RPG Maker XP  RPG Maker VX 均可適用
module Sword
#=======================================
#★ 魔劍工舖 - 腳本顏色網頁語法產生 1.00
# 轉貼腳本請著名出處:http://blog.yam.com/a870053jjkj/
# 如果採用在遊戲中,看你高興是否顯示腳本出處,但嚴禁說是自己寫的腳本!!
#=======================================
#● 使用者自定設置
Sword38_Retain = '0000FF' # 保留字網頁顏色設定
Sword38_Explanatory = '008000' # 註釋網頁顏色設定
Sword38_String = '800080' # 字串串網頁顏色設定
Sword38_Symbol = '0080C0' # 符號網頁顏色設定
Sword38_Numeric = '800000' # 數值網頁顏色設定
=begin
========================================
● 設置方法
【生成網頁語法】
Sword_Html.new(<<-Sword_END
腳本內容
Sword_END
========================================
詳細設置說明請參考:http://blog.yam.com/a870053jjkj/article/26727354
=end
  $Sword ? $Sword[38] = true : $Sword = {38=>true} # 腳本使用標誌
end
#=======================================
#■ 網頁語法輸出的類
class Sword_Html
  include Sword # 連接自定設置
  Sword_abc = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z)
  #-------------------------------------------------------------
  #● 開始處理
  def initialize(text)
    dump = '' ; @a = {'sword'=>0}
    while ((c = text.slice!(/./m)) != nil)
      (dump += '</font>' ; @a['+-'] = false) unless
      %w(+ - * % ^ & ! = ~ . , ; : ( ) / [ ] { } ? | < >).include?(c) if @a['+-'] # 符號結尾
      (dump += '</font>' ; @a['123'] = false) unless
      (%w(0 1 2 3 4 5 6 7 8 9 .) + Sword_abc).include?(c) if @a['123'] # 數字結尾
      e = symbol?(c)
      case c
      when '#' ; if effective? # 註釋
        c = '<font color=#' + Sword38_Explanatory + '>' + c ; @a['#'] = true ; end
      when "n" ; c = '<br>' ; (c = c + '</font>' ; @a['#'] = false) if @a['#'] # 換行
      when ' ' ; c = '&nbsp;' # 空白
      when '"' ; if effective? # 字符串(雙引號)
          (c = '<font color=#' + Sword38_String + '>' + c ; @a['"'] = true)
        elsif @a['"'] ; c = c + '</font>' ; @a['"'] = false ; end
      when "'" ; if effective? # 字符串(單引號)
          (c = '<font color=#' + Sword38_String + '>' + c ; @a["'"] = true)
        elsif @a["'"] ; c = c + '</font>' ; @a["'"] = false ; end
#~      when '/' ; if effective? # 正則表達式
#~          (c = '<font color=#' + Sword38_String + '>' + c ; @a["/"] = true)
#~        elsif @a['/'] ; c = c + '</font>' ; @a['/'] = false ; end

      when '+','-','*','%','^','&','!','=','~','.',',',';',':','(',')','[',']','{','}','?','/','|','<','>' # 符號
        if text[0..4] == 'begin' and c == '=' # 多行註釋(開始)的場合
          c = '<font color=#' + Sword38_Explanatory + '>=begin'
          text[0..4] = '' ; @a['#='] = true
        elsif text[0..2] == 'end' and c == '=' and @a['#='] # 多行註釋(結束)的場合
          c = '=end</font>' ; text[0..2] = '' ; @a['#='] = false
        elsif (c != '.' or ((not @a['123']) and c == '.')) # 符號的場合
          c = '&lt;' if c == '<' ; c = '&gt;' if c == '>'
          (c = '<font color=#' + Sword38_Symbol + '>' + c ; @a['+-'] = true) if
          effective? unless @a['+-']
        end
      when '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' # 數值
        (c = '<font color=#' + Sword38_Numeric + '>' + c ; @a['123'] = true) if
        effective? unless @a['123']
      else # 保留字
        if effective? ; case c
        when 'a'
          (c = 'alias' ; text[0..3] = '') if text[0..3] == 'lias'
          (c = 'and' ; text[0..1] = '') if text[0..1] == 'nd'
        when 'b', 'B'
          (c = 'begin' ; text[0..3] = '') if text[0..3] == 'egin'
          (c = 'break' ; text[0..3] = '') if text[0..3] == 'reak'
          (c = 'BEGIN' ; text[0..3] = '') if text[0..3] == 'EGIN'
        when 'c'
          (c = 'case' ; text[0..2] = '') if text[0..2] == 'ase'
          (c = 'class' ; text[0..3] = '') if text[0..3] == 'lass'
        when 'd'
          (c = 'def' ; text[0..1] = '') if text[0..1] == 'ef'
          (c = 'do' ; text[0] = '') if text[0] == 'o'
          (c = 'defined?' ; text[0..6] = '') if text[0..6] == 'efined?'
        when 'e', 'E'
          (c = 'else' ; text[0..2] = '') if text[0..2] == 'lse'
          (c = 'elsif' ; text[0..3] = '') if text[0..3] == 'lsif'
          (c = 'end' ; text[0..1] = '') if text[0..1] == 'nd'
          (c = 'ensure' ; text[0..4] = '') if text[0..4] == 'nsure'
          (c = 'END' ; text[0..1] = '') if text[0..1] == 'ND'
        when 'f'
          (c = 'false' ; text[0..3] = '') if text[0..3] == 'alse'
          (c = 'for' ; text[0..1] = '') if text[0..1] == 'or'
        when 'i'
          (c = 'if' ; text[0] = '') if text[0] == 'f'
          (c = 'in' ; text[0] = '') if text[0] == 'n'
        when 'm'
          (c = 'module' ; text[0..4] = '') if text[0..4] == 'odule'
        when 'n'
          (c = 'nil' ; text[0..1] = '') if text[0..1] == 'il'
          (c = 'not' ; text[0..1] = '') if text[0..1] == 'ot'
          (c = 'next' ; text[0..2] = '') if text[0..2] == 'ext'
        when 'o'
          (c = 'or' ; text[0] = '') if text[0] == 'r'
        when 'r'
          (c = 'return' ; text[0..4] = '') if text[0..4] == 'eturn'
          (c = 'redo' ; text[0..2] = '') if text[0..2] == 'edo'
          (c = 'rescue' ; text[0..4] = '') if text[0..4] == 'escue'
          (c = 'retry' ; text[0..3] = '') if text[0..3] == 'etry'
        when 's'
          (c = 'self' ; text[0..2] = '') if text[0..2] == 'elf'
          (c = 'super' ; text[0..3] = '') if text[0..3] == 'uper'
        when 't'
          (c = 'then' ; text[0..2] = '') if text[0..2] == 'hen'
          (c = 'true' ; text[0..2] = '') if text[0..2] == 'rue'
        when 'u'
          (c = 'unless' ; text[0..4] = '') if text[0..4] == 'nless'
          (c = 'until' ; text[0..3] = '') if text[0..3] == 'ntil'
          (c = 'undef' ; text[0..3] = '') if text[0..3] == 'ndef'
        when 'w'
          (c = 'when' ; text[0..2] = '') if text[0..2] == 'hen'
          (c = 'while' ; text[0..3] = '') if text[0..3] == 'hile'
        when 'y'
          (c = 'yield' ; text[0..3] = '') if text[0..3] == 'ield'
        end ; c = '<font color=#' + Sword38_Retain + '>' + c + '</font>' if
        %w(BEGIN class ensure nil self when END def false not super while alias defined? for
        or then yield and do if redo true begin else in rescue undef break elsif module retry
        unless case end next return until).include?(c) # 確認是否是保留字
        end
    end ; dump += c ; end
    text = dump
    text = '<br>' + text
    file = File.open('Sword_Html.htm', "w")
    Marshal.dump(text, file)
    file.close
  end
  #-------------------------------------------------------------
  #● 確認是否在不該變色的範圍中
  def effective?
    return (not (@a['"'] or @a["'"] or @a['#'] or @a['/'] or @a['#=']))
  end
  #-------------------------------------------------------------
  #● 確認是否為符號
  def symbol?(c)
    return ['+','-','*','%','^','&','!','=','~','.',',',';',':','(',')','[',']','{','}','?','/','|','<','>',' ',"n"].include?(c)
  end
end
 

 
設置方法
產生腳本變色網頁語法 (建議在本文腳本最下面插入這個設置方法來使用)
Sword_Html.new(<<-Sword_END
腳本內容
Sword_END
使用之前,請先注意以下幾點:
● 如果腳本內容中存在『Sword_END』時,則設置方法的兩個『Sword_END』必須修改
● 這個腳本產生出來的腳本可能會有問題,建議將產生出來的腳本測試一便看看是否有問題
● 腳本的內容越多,則可能會處理的越久才能完成
● 如果打開了這腳本產生出來的網頁檔,文字變亂碼時,請按瀏覽器的 [檢視] → [編碼] → [UTF-8]
● 如果要獲取網頁檔中的原始碼,請按滑鼠右鍵,選擇 [檢視原始檔]
  
 
 
使用者自定設置說明
Sword38_Retain = '0000FF'
設定保留字的文字顏色,你打開腳本編輯器,看到藍色字的內容
那就是保留字(像是if、true、self、nil、elsif...之類的),想知道有哪些保留字可看F1幫助說明
顏色的設置法和網頁的顏色設置法相同,共6個數字,左邊2個數字代表紅色
中間2個數字代表綠色,右邊2個數字代表藍色,顏色採用16進位制,所以00為0,FF為255
有關16進位的說明,可以參考進位制說明與設定  
 
Sword38_Explanatory = '008000'
設定註釋的文字顏色,你打開腳本編輯器,看到綠色字的內容
那就是註釋(# 符號右邊的內容或是『=begin』到『=end』之間的內容)
設置法和Sword38_Retain設置相同是採用網頁的顏色設置
 
Sword38_String = '800080'
設定字符串的文字顏色,你打開腳本編輯器,看到紫色字的內容
那就是字符串(被 ' 符號或是被 " 符號包圍住的內容為字符串)
設置法和Sword38_Retain設置相同是採用網頁的顏色設置
 
Sword38_Symbol = '0080C0'
設定符號的文字顏色,你打開腳本編輯器,看到淺藍色字的內容
那就是符號(像是 + - * / ? ! : [ ] ...等等符號)
設置法和Sword38_Retain設置相同是採用網頁的顏色設置
 
Sword38_Numeric = '800000'
設定數值的文字顏色,你打開腳本編輯器,看到紅色字的內容
那就是數值(如155、1659、1.55、0x7F)
設置法和Sword38_Retain設置相同是採用網頁的顏色設置
 
 
使用範例
假設要將金錢窗口給網頁語法化好了,複製所有的「Window_Gold」腳本的所有腳本
然後再使用這個腳本的最下面添加以下腳本:

Sword_Html.new(<<-Sword_END
#=================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  顯示金錢的視窗。
#=================================================

class Window_Gold < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化視窗
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  end
end
Sword_END
)

則你的遊戲資料夾就會出現一個檔案(使用成功的話...),名為「Sword_Html」,附檔名為「htm」
用滑鼠點2下打開看看..,會看到以下成果:
"e
#=================================================
# ■ Window_Gold
#------------------------------------------------------------------------------
#  顯示金錢的視窗。
#=================================================

class Window_Gold < Window_Base
  #--------------------------------------------------------------------------
  # ● 初始化視窗
  #--------------------------------------------------------------------------
  def initialize
    super(0, 0, 160, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  #--------------------------------------------------------------------------
  # ● 更新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    cx = contents.text_size($data_system.words.gold).width
    self.contents.font.color = normal_color
    self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)
    self.contents.font.color = system_color
    self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)
  end
end
第1行的內容看到無關的內容,這個是存檔就會冒出的東西,跳過就好...
如果內容發現亂碼,如「憿舐內?煾椙??蝒」之類的內容,就表示編碼不對
IE的話,按[檢視] → [編碼] → [Unicode (UTF-8)] ,因該就能正常顯示了
接著如果要獲取網頁的原始檔,按 [檢視] → [原始檔] 即可
 

相簿設定
標籤設定
相簿狀態