KCCacheProxy,是一个本地缓存舰C服务器端文件,并能无人管理自动更新。
无意中系github发现呢个玩具,设计理念同我预想差唔多?。
我之前一直用nginx反代舰C的缓存,定时导出缓存加try_files固定化,本来打算试下写个php来实现自动版本更新,但因为时间唔够用(就是懒?)就没搞了。
一,下载地址
https://github.com/Tibowl/KCCacheProxy
二,下载选择
releases下边有几个下载项,DOWN边个?
KCCacheProxy-x.x.x.Setup.exe,体积很大的GUI,唔好玩的,我唔用。
linux同mac唔使讲了。
KCCacheProxy-win.zip,呢度就用佢,就DOWN佢得了,其它唔使理了。
minimum-cache.zip,唔使理。
源码,如果你有兴趣的话。
三,使用方法
人家已经给了详细的方法(英文):https://github.com/Tibowl/KCCacheProxy/wiki/Installation-and-setup
我的方法,一共两部分。
㈠代理端
1,首先DOWN佐KCCacheProxy-win.zip返来,然后随便揾个地方放。
2,DOWN现成的缓存,打开上边Installation-and-setup页面,唔使向下拉,就系开头,见到“MEGA”的连接,打开佢。(呢步可以跳过,MEGA要出国,而且每6小时内只能免费下载3G数据)
3,直接运行x:\abcd\KCCacheProxy-win\proxy-win.exe,就得了,冇事就直接最少化。
PS:WIN10用户注意,CMD类的命令行窗口,你用鼠标点了一下里边的话,可能会导致“暂停”了,呢阵要按下回车先可以继续。
㈡浏览器端
呢度用chrome同埋代理切换插件switchyomega,其它浏览器自己睇相应的说明。
如果你以前未用过,你依家完全可以直接用作者提供的文件来恢复备份。
https://raw.githubusercontent.com/Tibowl/KCCacheProxy/master/misc/OmegaOptions.bak
作者的备份里边其实就是一个HTTP代理连接proxy-win的,另一个是舰C所有服务器地址的自动切换的规则。
一般玩舰C应该知道自己的服务器IP,所以规则自己写就得了,下边放一个我自己咸鱼湾的。(仅供参考)
先新建一个“代理服务器”,名为“KC”,默认直连,HTTP代理localhost,端口8081
再建一个“自动切换模式”,名称任意,建好后再“编辑源代码”,粘贴下边内容
[SwitchyOmega Conditions]
@with result
@note POST直连 - 佐伯湾
UrlWildcard: http://203.104.209.55/kcsapi/* +direct
@note KCS - 佐伯湾
UrlWildcard: http://203.104.209.55/kcs/* +KC
@note KCS2 - 佐伯湾
UrlWildcard: http://203.104.209.55/kcs2/* +KC
@note Gadget - 登陆服务器
UrlWildcard: http://203.104.209.7/* +KC
*.dmm.com +netch
* +direct
提醒,呢度有个“netch”,因为DMM需要日本机场先可以正常登陆,而203.104.209.7,依家因为俾DDOS,同样限制日本先可以正常读。
KCCacheProxy自带佐203.104.209.7的登陆文件缓存,如果你连203.104.209.7返回403的话,会自动调用登陆缓存。
所以,用佐KCCacheProxy之后,除佐DMM一定要日本IP先可以登陆之外,所有地区都可以直接玩舰C了。
四,config.json
依家可以正常玩了,不过要改设置的话,先关游戏,再关闭proxy-win,最后先可以打开\KCCacheProxy-win\config.json
作者写的配置说明:https://github.com/Tibowl/KCCacheProxy/wiki/Configuration
直接拉到最下,睇“config.json settings”就得了。
呢度要改的有几个:
"hostname": "0.0.0.0",(等局域网里边D机都可以连上来)
"verifyCache": true,(验证缓存文件是否有效,作者都建议打开)
"gameVersionOverwrite": "false",(false就是网页版,kca就是安卓版,但我未试过)
其它唔使改了。
五,其它问题
proxy-win.exe目前未支持设置上游代理,有需要可以用“netch”,使用进程模式来解决。
# 舰C用, 0
proxy-win.exe
另外,由于目前下载/更新舰C服务器文件时是阻塞等待状态,非异步,网络唔好果阵俾D耐性,除非过佐5分钟仲系冇反映再F5吧。
六,删除活动用的垃圾
活动用的地图,BOSS立绘之类的,都是一次性,活动过佐就冇用的了,留来多余。
新建一个.bat文件,放系KCCacheProxy-win目录下边,同cache文件夹是同一级的。
呢个脚本是用来删除活动地图、黑板图之类的。
只要改第四行的eventmapno就行,例如8月刚完的呢次活动是48。
呢个48点来,你自己睇“cache\kcs2\resources\map\”下边的048。
@echo off
setlocal enabledelayedexpansion
set eventmapno=48
echo 删除EVENT !eventmapno!
set delobjcount=5
set delobj[0]=cache\kcs2\resources\map\0!eventmapno!
set delobj[1]=cache\kcs2\resources\gauge\image!eventmapno!
set delobj[2]=cache\kcs2\img\sally\event_maesetsu
set delobj[3]=cache\kcs2\resources\area\sally\0!eventmapno!.png
set delobj[4]=cache\kcs2\resources\area\airunit\0!eventmapno!.png
set objposition=0
:loopbegin
if %objposition% equ %delobjcount% goto end
for /f "usebackq delims== tokens=1-2" %%i in (`set delobj[%objposition%]`) do (
if exist %%j (
if exist %%j\nul (
rd /s /q %%j
echo 删除文件夹 %%j
) else (
del /q %%j
echo 删除文件 %%j
)
)
)
set /a objposition=%objposition%+1
goto loopbegin
:end
for /f "delims=" %%i in ('dir /b /a-d /s "cache\kcs2\resources\gauge\0!eventmapno!*.json"') do (
echo %%i
del /q %%i
)
for /f "delims=" %%i in ('dir /b /a-d /s "cache\kcs2\img\battle_result\battle_result_event_e*"') do (
echo %%i
del /q %%i
)
pause
新建一个.vbs文件,放系KCCacheProxy-win目录下边,同cache文件夹是同一级的。
呢个脚本是用来删一次性BOSS的,例如:cache\kcs2\resources\ship\full\1976_2155_aadxxunpltkw.png
但是冇理由一个个搜索来删,梗是要批量,所以你自己用图片浏览器来睇,一般睇“cache\kcs2\resources\ship\full\”里边就得了,
图片名“1976_2155_aadxxunpltkw.png”,呢度取第一个“_”之前的1976
呢度是要取两张图片的数字,就是开始的一个,删到边个的一个。
shipindexbegin=1945
shipindexend=1950
folder="cache\kcs2\resources\ship"
ix=0
dim files()
Function FilesTree(sPath)
on error resume next
Set oFso = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFso.GetFolder(sPath)
Set oSubFolders = oFolder.SubFolders
Set oFiles = oFolder.Files
For Each oFile In oFiles
if oFso.GetExtensionName(oFile.Path)="png" then
ReDim Preserve files(ix)
files(ix) = oFile.Path
ix=ix+1
end if
Next
For Each oSubFolder In oSubFolders
FilesTree(oSubFolder.Path)
Next
Set oFolder = Nothing
Set oSubFolders = Nothing
Set oFso = Nothing
End Function
FilesTree(folder)
id=0
sub doing1()
for each f in files
set fso=CreateObject("Scripting.FileSystemObject")
set file1=fso.GetFile(f)
fn1=fso.GetFileName(file1)
stra=split(fn1, "_")
for inow=shipindexbegin to shipindexend
if instr(stra(0) , inow) > 0 then
id=id+1
'MsgBox fn1 & "=" & stra(0)
fso.DeleteFile(f)
end if
next
set fn1=Nothing
set file1=Nothing
set fso=Nothing
next
end sub
doing1()
if id>0 then
msgbox "删除数量:" & id
else
msgbox "没有符合要求的文件"
end if