[[Ruby]]

「なんのことだかわかんない」って人のために説明するわね。

スカイリム(Skyrim)って洋ゲーがあるの。まぁ詳しくはググッてくれていいけど、何年も前に出た、まぁ今となっては「枯れた」ものといえるわね。

重要なのはこのゲーム、コンソールモードがあって「ちょっと○○のイベント確認したい」みたいな、やりこみプレイむけの特殊なチートキャラを簡単につくれる事。~
たとえば、 ''隠密能力を100倍に引き上げる指環'' とか作れるので、これを使って敵をスルーして現地にスパっと調査にいけるのよね。おかげさまで、やりこみプレイ好きのわたしは何年も楽しんでるってわけ。

問題は、この底上げや技能つけのために必要なチートキーの調査なのよね。きちんと英語で研究されているファンサイトがあるけど、ひとつひとつキーを打ち込んでいたら大変でしょう?

だから、 ''特定スキルツリーのあるURLをいれると、そのスキルツリーを全部オンにしてくれる'' コマンドを生成するスクリプトを作ってみたの。

なお、インストールが必要なのは以下だけ。

* 事前インストールするもの。 [#nec6e39d]

 # gem install nokogiri

* スクリプト [#ad012582]

 #!/usr/bin/ruby -EUTF-8
 
 require 'nkf'
 require 'nokogiri'
 require 'open-uri'
 
 # UESP Skyrim Skills
 class SSpell
  def initialize
    @name = nil
    @id = nil
    @comment = nil
  end
  attr_accessor :name,:id,:comment
 end
 
 # UESPの該当URLを並べて設定してください
 urls = [ "http...Alteration","http..Illusion","http..Conjuration" ]
 
 ss = []
 
 d = nil
 save_name = nil
 urls.each{|url|
   open(url) do |u|
     d = u.readlines
   end

  doc = Nokogiri.HTML(NKF.nkf("-w",d.join("")))
  doc.xpath("//table[@class='wikitable sortable']").each{|e|
    c = e.inner_text
    if c =~ /Spell\ Name/
    else
      doc2 = Nokogiri.HTML(e.inner_html)
      doc2.xpath("//tr").each{|e2|
        doc3 = Nokogiri.HTML(e2.inner_html)
        i = 0
        c = SSpell.new
        kk = [0,2,3]
        doc3.xpath("//td").each{|e3|
          print "#{i}:#{e3.inner_text}\n"
          if i == kk[1]
            c.comment = e3.inner_text.clone
          elsif i == kk[2]
            c.id = e3.inner_text.clone
          elsif i == 0
            if e3.inner_text !~ /^\d+$/
              c.name = e3.inner_text.clone
            else
              c.name = save_name.clone
              kk = [0,1,2]
            end
          end
          i += 1
        }
        if c.id != nil
          ss.push(c)
          save_name = c.name.clone
        end
      }
    end
  }
 }
 
 sx = []
 ss.each{|hs|
  x = <<EOM
 ; #{hs.name}
 ; #{hs.comment}
 player.addperk #{hs.id}
 ;
 EOM
   sx.push(x)
 }
 
 File.write("spellperk.txt",sx.join("\n"))


* 出力ファイル(spellperk.txt)例 [#je1e628f]

 ; Novice Alteration
 ; Cast Novice level Alteration spells for half magicka.
 player.addperk 000f2ca6
 ;
 
 :
 :
 :
  
 ; Twin Souls
 ; You can have two atronachs or reanimated zombies.[1]
 
 player.addperk 000d5f1c
 ;


うん、こんな感じかな?

実際のURLは迷惑がかかるかもなので、ここには載せないわ。本当にやってみたい方は自己責任で調べてみる事になるけど、くれぐれもよその善意のサイトさんに迷惑をかけないでね。

出てきたテキストファイルの使い方については、Skyrim関係のwikiを参考にしてね。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS