Any / vae /com3d /_CM3D2_Toolkit_PR2 /src /[CM3D2]texとmenuのパス修正.ahk
kitou's picture
Upload 646 files
4d3af08
raw
history blame
4.36 kB
#NoTrayIcon
FileEncoding, UTF-8-RAW
#SingleInstance OFF
file_paths := ""
Loop, %0% {
path := %A_Index%
file_paths = %file_paths%%path%|
}
if (file_paths == "") {
default_path := GetDefaultPath()
FileSelectFile, paths, 7, %default_path%, .tex or .menuファイルを選択してください, 対応ファイル(*.tex;*.menu)
if (ErrorLevel == 1) {
ExitApp
}
StringSplit, $, paths, `n
if (2 < $0) {
Loop, Parse, paths, `n, `r
{
if (A_LoopField == "") {
continue
}
if (A_Index == 1) {
dir := A_LoopField
}
else {
file_paths = %file_paths%%dir%\%A_LoopField%|
}
}
}
else {
file_paths := paths
file_paths := RTrim(file_paths, "`n`r")
}
}
file_paths := RTrim(file_paths, "|")
Loop, Parse, file_paths, |
{
file_path := A_LoopField
file := FileOpen(file_path, "r")
type := ReadString(file)
if (type == "CM3D2_TEX") {
file.Seek(4, 1)
top_len := file.Pos
file.Seek(0)
file.RawRead(top_raw, top_len)
path := ReadString(file)
end_len := file.Length - file.Pos
file.RawRead(end_raw, end_len)
file.Close()
if (RegExMatch(file_path, "\\GameData\\texture[^\\]*\\texture\\") != 0) {
SplitPath, file_path, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
new_path := RegExReplace(OutDir . "\" . OutNameNoExt . ".png", "^.+\\GameData(\\texture[^\\]*\\texture\\)", "$1")
new_path = assets%new_path%
StringReplace, new_path, new_path, \, /, All
MsgBox, %path%`n↓`n%new_path%
}
else {
SplitPath, file_path, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
InputBox, new_path, , %OutFileName%のテクスチャパスを入力してください, , 800, 130, , , , , assets/texture/texture/
if (ErrorLevel != 0) {
ExitApp
}
}
file := FileOpen(file_path, "w")
file.RawWrite(top_raw, top_len)
WriteString(file, new_path)
file.RawWrite(end_raw, end_len)
file.Close()
}
else if (type == "CM3D2_MENU") {
file.Seek(4, 1)
top_len := file.Pos
file.Seek(0)
file.RawRead(top_raw, top_len)
path := ReadString(file)
end_len := file.Length - file.Pos
file.RawRead(end_raw, end_len)
file.Close()
if (RegExMatch(file_path, "\\GameData\\menu[^\\]*\\menu\\") != 0) {
SplitPath, file_path, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
new_path := RegExReplace(OutDir . "\" . OutNameNoExt . ".txt", "^.+\\GameData(\\menu[^\\]*\\menu\\)", "$1")
new_path = assets%new_path%
StringReplace, new_path, new_path, \, /, All
MsgBox, %path%`n↓`n%new_path%
}
else {
SplitPath, file_path, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
InputBox, new_path, , %OutFileName%のテクスチャパスを入力してください, , 800, 130, , , , , assets/menu/menu/
if (ErrorLevel != 0) {
ExitApp
}
}
file := FileOpen(file_path, "w")
file.RawWrite(top_raw, top_len)
WriteString(file, new_path)
file.RawWrite(end_raw, end_len)
file.Close()
}
}
ExitApp
GetStringLength(string) {
count = 0
Loop, Parse, string
{
count += 1
if (RegExMatch(A_LoopField, "^[^\x01-\x7E]$") != 0) {
count += 2
}
}
return count
}
ReadString(file, size=-1) {
if (size <= -1) {
size := 0
chars := Object()
Loop {
char := file.ReadUChar()
chars[A_Index] := char
if (char < 128) {
break
}
}
num := GetMaxIndex(chars)
Loop, %num% {
char := chars[A_Index]
multi := 256 ** (A_Index - 1)
size += char * multi
if (1 < A_Index) {
size -= (multi / 2) * (char + 1)
}
}
}
string := ""
count = 0
Loop, 9999 {
if (size <= count) {
break
}
s := file.Read(1)
string := string . s
count += GetStringLength(s)
if (GetStringLength(s) == 0) {
pos := file.Pos
MsgBox, ファイルの読み込みに失敗しました(場所: %pos%)`n終了します
ExitApp
}
}
return string
}
WriteString(file, string) {
len := GetStringLength(string)
if (128 <= len) {
temp := Mod(len, 128) + 128
file.WriteChar(temp)
temp := len / 128
file.WriteChar(temp)
}
else {
file.WriteChar(len)
}
file.Write(string)
}
GetMaxIndex(obj) {
value := obj.MaxIndex()
if (value == "") {
return 0
}
return value
}
GetDefaultPath() {
RegRead, path, HKEY_CURRENT_USER, Software\KISS\カスタムメイド3D2, InstallPath
if (ErrorLevel == 0) {
path = %path%GameData\
}
else {
path := A_ScriptDir
}
return path
}