NyaNya (12681) の日記

2003 年 03 月 29 日
午後 05:17

(りね)複数PC間でキャラ情報ファイル共有

Lineageを複数PCでプレイするときに使うと幸せになれるかもしれません。

作成した背景:
リネでは、「所持アイテムの並び順」と「ショートカット登録内容」を
クライアント側で(ファイルとして)保存していたりします。
んで、この情報が無かったり古かったりすると悲しいことになるので、
ネットカフェとかで遊ぶ時には、その情報ファイルを持ち歩いているわけで。
まぁ決まりきった作業なのでバッチにしてしまえ、と。

使用例:
家のPCからFDへコピー -> ネットカフェでHDDへコピー -> リネで遊ぶ
-> HDDからFDにコピー -> HDD掃除 -> 家のPCにコピー -> リネで遊ぶ

お約束:
・言うまでもないですが無保証なので、使う人は自己責任で。
・改造はご自由に。てか、改造しないと使えない環境もあるし。
・使いたい人は、この日記にコメント付けてね♪

補足とか注意点とか:
・WSHを使ってますので、素のWin95では使えないはず。
・WSHを使ってますので、素のWinNT4.0では使えません。
 が、どーせリネが動かないので関係ないね :-p
・Win98SEとWin2Kでは動かしました。
・リネのインストールフォルダを"C:\Program Files\Lineage\"、
 FDのドライブを"A:\"と決め打ちしています。
・vbsとbatとtxtは、全て同じフォルダに入れる。てかFDに入れて持ち運ぼう。
・ファイル名が全部"00"で始まっているのは、並び替えをする時の都合です。
・見れば分かると思うけど、実行するのはバッチファイルね。
 vbsを直接実行しても怒られるだけです。引数が必要なので。
・上書き確認とかは一切していないので、間違って新しいファイルを消しちゃうかも。
・複数サーバで同じ名前のキャラ使った場合は、うまくいきません。
 てか、それは「リネの仕様」なのでどーしよーも無いです。

足りない機能とか希望とか:
・ファイル上書き時にタイムスタンプチェックした方が良いかも。
・リネフォルダはレジストリを漁れば取れたような。
・FDドライブは決め打ちしてるけど、「カレントフォルダ」にした方が良いかも。
 でないと、他のリムーバブルメディアが使いづらい・・・
・リストファイル名を引数に渡せると便利かも。複数鯖対応に使えるかも。
・フォルダ名を引数に渡せると便利かも。複数環境のリムーバブルメディアとか・・・


-- 00CPYDEL.vbs
'00CPYDEL.vbs
' リストされたファイルをFDHDD間でコピー、HDDのファイル削除
'引数
' FD2HDD FD->HDDへコピー
' HDD2FD HDD->FDへコピー
' DELHDD HDD内のファイルを削除

Option Explicit

Dim strListFile
Dim strFDDir
Dim strHDDDir

Dim fsoList 'リストファイル処理用
Dim fpList
Dim strChaName 'キャラ名格納用
Dim strExt : strExt = ".inv" ' 拡張子

'キャラ名リストファイル名
strListFile = ".\00List.txt"
'FDのフォルダ
strFDDir = "A:\"
'HDDのフォルダ
strHDDDir = "C:\Program Files\Lineage\"

Const cintFD2HDD = 1
Const cintHDD2FD = 2
Const cintDELHDD = 4
Dim intArgs

Dim objArgs
Dim intIndex

intArgs = 0
Set objArgs = wscript.Arguments
for intIndex = 0 to objArgs.Count - 1
Select Case objArgs(intIndex)
Case "FD2HDD"
intArgs = intArgs + cintFD2HDD
Case "HDD2FD"
intArgs = intArgs + cintHDD2FD
Case "DELHDD"
intArgs = intArgs + cintDELHDD
End Select
Next

If intArgs = 0 Then
WScript.Echo "正しい引数を指定してください"
WScript.Quit
End If

If (intArgs And cintFD2HDD) 0 And (intArgs And cintHDD2FD) 0 Then
WScript.Echo "FD2HDD と HDD2FD を同時に指定する事は出来ません"
WScript.Quit
End If

'リストファイルを開く
Set fsoList = CreateObject("Scripting.FileSystemObject")
Set fpList = fsoList.OpenTextFile(strListFile, 1) 'ForReading(1):読みこみ専用 ForWriting(2):書込み専用 ForAppending(8):追加書込み

wscript.echo "FD側フォルダ[" + strFDDir + "]"
wscript.echo "HDD側フォルダ[" + strHDDDir + "]"
wscript.echo ""

Do While Not fpList.AtEndOfStream
strChaName = fpList.ReadLine 'リストから1行取得
'wscript.echo "キャラ名:" + strChaName 'DEBUG

If (intArgs And cintFD2HDD) 0 Then
wscript.echo "(FD->HDD)[" + strChaName + strExt + "]コピー中..."
fsoList.CopyFile strFDDir + strChaName + strExt, strHDDDir
End If
If (intArgs And cintHDD2FD) 0 Then
wscript.echo "(HDD->FD)[" + strChaName + strExt + "]コピー中..."
fsoList.CopyFile strHDDDir + strChaName + strExt, strFDDir
End If
If (intArgs And cintDELHDD) 0 Then
wscript.echo "[" + strChaName + strExt + "]削除中..."
fsoList.DeleteFile strHDDDir + strChaName + strExt
End If
Loop

'fsoList.CloseTextFile()
'Set fpList = Null
'Set fsoList = Null

wscript.echo ""
wscript.echo "処理終了!"
[EOF]


-- 00FDからHDDへコピー.bat
@cscript 00CPYDEL.vbs FD2HDD
[EOF]

-- 00HDDからFDへコピー.bat
@cscript 00CPYDEL.vbs HDD2FD DELHDD
[EOF]

-- 00HDDからFDへコピーしたあとHDD掃除.bat
@cscript 00CPYDEL.vbs HDD2FD DELHDD
[EOF]

-- 00HDD内のファイル掃除.bat
@cscript 00CPYDEL.vbs DELHDD
[EOF]

-- 00List.txt
キャラ名1
キャラ名2
キャラ名3
・・・(以下1行1キャラ名で気が済むまで並べる)
キャラ名n
[EOF]
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs

処理中...