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
再建一个“自动切换模式”,名称任意,建好后再“编辑源代码”,粘贴下边内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[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。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
@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
呢度是要取两张图片的数字,就是开始的一个,删到边个的一个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
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 |