[[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を参考にしてね。