Skyrimの魔法について

372 :名無しさんの野望 :sage :2012/03/28(水) 03:29:17.45 ID:fD50d4m2
破壊:二連でハメ殺し 
回復:スタミナ回復で脳筋の友 
召喚:心臓でごちそう 
幻惑:Perk全振りでドラゴン以外敵無し 
変成: 

373 :名無しさんの野望 :sage :2012/03/28(水) 03:44:49.92 (p)ID:sENfnfeP(2)
変性は暗いダンジョンじゃ欠かせないだろ!!やめろよ!! 

昨日のコードほんとに速いか?

という一言がずーっと枕元でわんわんやってて寝付きが悪かった。
この例はほんとにいいのか?
なーんか最後までループ回っているようにしか思えないし、書き方はすっきりしたけどダメ臭がする。
試そう試そう。
timeitモジュールというやつがあるのでそれを使います。
例によってムダは多そうですが同じ分ムダしてるのでいいか。
想定するケースは、lang_list(ll)の最後尾、つまり優先順位が最下位の「kr」キーで探した場合。
回数指定無しの場合、デフォルトで100万回くるくるやるそうな。

まず昨日書いてたコードの断片:
setup='''
ll =  ['en','ja','es','fr','it','ru','nl','tw','cn','kr',]
a = {}
a['kr'] = u"かんこくごでもんく"
b = [x for x in ll if x in list(a.keys())][0]
'''
t = timeit.Timer(setup)
print(t.timeit())
従来こんな感じにしてますコード:
setup='''
ll =  ['en','ja','es','fr','it','ru','nl','tw','cn','kr',]
a = {}
a['kr'] = u"かんこくごでもんく"
for lang in ll:
    val = a.get(lang, None)
    if val:
        break
'''
t = timeit.Timer(setup)
print(t.timeit())

結果。
一つ目:15.1518477907
二つ目:5.40611083252
はーぜんぜんだめじゃんね。

探す目当てのキーをja(優先順位2位)にしてみると
一つ目:15.2410155481
二つ目:2.00092106678
あらら。顕著な差。

リストと辞書の定義をしているので、そこのコストはどんくらいかというと、

setup='''
ll =  ['en','ja','es','fr','it','ru','nl','tw','cn','kr',]
a = {}
a['kr'] = u"かんこくごでもんく"
'''
t = timeit.Timer(setup)
print(t.timeit())

代入部:0.855803181689
鼻毛ですね。
リストくるくるして見つかったらやめる、のほうがマシだった。視認性も良かった。
なーんだー
すっきりはしたんだけど。

辞書から決まった順番で値取りたい

追記:この例は致命的にダメでした(→昨日のコードほんとに速いか?)

多言語対応の一環。そう、あたしはまだこんなところで足踏みしていたのれす。

lang_list =  ['en','ja','es','fr','it','ru','nl','tw','cn','kr',]

a = {}
a['cn'] = u"ちゅごくごでもんく"
a['fr'] = u"ふらんすごでもんく"
a['tw'] = u"たいわんごでもんく"
a['ja'] = u"にぽんごでもんく"

こんなときに、aは辞書だから順番不定じゃん。
でもlang_listに定義してる順番で値を取りたい。
つまりlang_listの順番は、辞書aから取得したいキーの優先順位なのだわ。
英語(en)の値があるか見て、無ければ日本語(ja)、無ければスペイン語(es)……というような。この場合なら、日本語が優先順位いちばんめとして返ってくるというイメージです。
くるくる回せばいいんだけど、なんかアレな気がして、もうちっと気の利いた書き方があるんでないかと考えていたというわけです。
mapとかつかうのか?なんかかっこよくババンとやる方法が!?順序付き辞書とかか!?とかもう色々考えたよ。こんなちっさい仕掛けのためにさ。
おまけに使う予定はあんまりない。くるくる回す書き方にして前進んだらいいんだわ。愚かだわ。
でもおもいついたので書いとく。

k = [x for x in lang_list if x in list(a.keys())][0]
print(a[k])
>>> にぽんごでもんく

賢い使い方になっているのかは自信ないんだけど、さしあたりまとまった感じにはなった。
MongoDBのi18nは、決まった言語で値取りそこねるとNone返すので、いやNoneじゃなくて最大限努力してなんか保存されてる値を返したいんだというときには、なんかこんなことやんないとだめかなって。

リスト内包表記の、最も単純なカタチはいいんですが、後ろにもういっこforだのifだの並べたやつの読解が苦手で往生してたんです。
そこに関しては得心がいったというか、やっぱこうなんというか、自分に需要のある何かを通してでないと理解むつかしいですね。具体例がないと。

Python type()

>>> dict
<type 'dict'>
>>> type(dict)
<type 'type'>

あたりまえー

なんでかしんないけど、しばしばtypes()とtypoする

Skyrim Nexusの広告が邪魔だ

なにがイラッとするかって、スクリーンショット拡大した時の上に広告がかぶるのが許せない。
nexus_remove_ad
解凍して出てきたファイルをchromeさんのウインドウにドラッグドロップ。
おわり。
あ、Chrome用です。IEとかFFとかそういうブラウザは仕事か検証でもない限り使わないです。。。

中でやってることは以下のとおり。中身コピペして自分で作ってもおなじ。

manifest.json

{
    "name" : "Nexus Ad eraser",
    "version" : "1.0",
    "description" : "Nexusの邪魔な広告を消し去ります^^",
    "content_scripts": [
        {
          "matches": ["http://skyrim.nexusmods.com/*"],
          "js" : ["main.js"]
        }
    ]
}

main.js

(function (d, func) {
    var h = d.getElementsByTagName('head')[0];
    var s1 = d.createElement("script");
    s1.setAttribute("src", "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js");
    s1.addEventListener('load', function() {
        var s2 = d.createElement("script");
        s2.textContent = "jQuery.noConflict();(" + func.toString() + ")(jQuery);";
        h.appendChild(s2);
    }, false);
    h.appendChild(s1);
})(document, function($) {
    // ここにメインの処理を書く
    $("#ad-right").remove();
    $("#horizontal-ad").remove();
});

PlayerFactionをつけると口が悪くなる

オトモNPCつくって遊んでます。
従者になっていない状態で、
間抜けー!
だんごっ鼻!
と、どばきんさんに酷い罵声を浴びせる子がいたんですね。
例によって某掲示板で話を聞いてみて発覚したんですが、誤操作だと思うのですけれどもPlayerFactionがついてて、どうもこれだと。
罵られることに喜びを覚えるタイプの方はPlayerFaction。これです。
#変な動作しても責任は取れません

Skyrimの地名が覚えられない

記憶チップの不足に悩まされています。
のでメモ。町の名前の対応表。

ウインドヘルム   イーストマーチ
ファルクリース   ファルクリース
ソリチュード    ハーフィンガル
モーサル      ハイヤルマーチ
ドーンスター    ペイル
マルカルス     リーチ
リフテン      リフト
ホワイトラン    ホワイトラン
ウィンターホールド ウィンターホールド

休戦交渉みたいなクエの時に、リーチとか、右側の名前で会話が進むのね。
話し聞いてて最初「どこのこと言ってんの君ら?」状態だったんですが、それぞれの街に別名がついてたってことなのねー
どういう使い分けがされているのかはよくわからず。
モーサル=ハイヤルマーチなんて連想できないよ!

なーんか重いなーと思って

アクセス統計のデータ古いのウン万件飛ばしたったwwwwwwwwwwww
ちょっとかるくなったかな。景気のいいDELETE文叩けちゃってちょっと嬉しい。
仕事ならもっと慎重にやるけど、んーこのへんだろ妙に重たいテーブルあるなー いっけー! どーん!
いやーいいです。なんならバックアップとっておいてINSERTしなおしてまた消すとかしても良かった。

昨日のあの記事見てEmacs使い始める人っていない気はする。
キーバインドややこしいからねー。なんであんな変態チックな操作を要求するんだろうね。

SKYRIMのPapyrus記述にEmacsを使おうという変な人へ

おねーさんです。
2chでEmacsのことぼやいてたついでに、導入方法メモしときます。
SkyrimのCreation Kit(以下CK)でPapyrus書く人はあんまりいないっぽいので誰に役立つかよくわかんないですけど。
CKじたいはとても難しくて、話題を追っかけて咀嚼するにも青息吐息です。

前説:
あたしゃ単に「Emacs使えるとカッコよさそう」というだけの理由でEmacs使ってるだけのヘタレにわか三流マーさんなので、あんま詳しいこときかれてもわかんないす。
カッコいいというかカッコだらけでした本当にありがとうございました。
こっちの界隈はいろいろ詳しいハッカーさんたくさんいる世界なので、あちこちググっていい感じになっていただければ幸いでございます。
あたしに訊かれてもわかんないからな。
あたしに訊かれてもわかんないからな。
大事なことなので二回いいました。
まあなんだ使うだけならLispわかんなくても使えます。
CommonLispの本とか買いましたが、なにこれつまんねっつうて放置してます。あたしLisp書けません。ErlangもHaskellも書けません。なんとか生きてます。
はい。

最初:
これが

完成図:

こんな絵になります。スクリプトの内容は見なかったことにして欲しい。まだあたしはハローワールドレベルです。
色味に関しては好みあると思うので、.emacsをそれぞれでいじってもらえればいいんでないかなと思います。
色分けされて見えるだけで、だいぶ読みやすくて捗ります。コーディングそのものは捗ってないです。

“SKYRIMのPapyrus記述にEmacsを使おうという変な人へ” の続きを読む