Ruby

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

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

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

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

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

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

事前インストールするもの。

# gem install nokogiri

スクリプト

#!/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)例

; 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
Last-modified: 2016-08-14 (日) 12:14:14