新问题!CSO 自动更新编写问题 (源马来自n3大发的文章)

Home Home
引用 | 编辑 zsx123665
2012-05-24 14:09
楼主
推文 x0
Help,我在这看到n3大大所发的文章感到兴趣,在加上LS版主也希望增 ..

访客只能看到部份内容,免费 加入会员



献花 x0
引用 | 编辑 ebolaman
2012-05-24 21:49
1楼
  
增加什么功能?

我之前设计是 利用 FTP 自动检查更新,但之前除错功能设计的不是很好



错误应该是这行 :

            'Copy file
            My.Computer.FileSystem.CopyFile(dataDir & "CS_Update" & cData.listUpdate(l), curDir & cData.listUpdate(l), True)

动作就是把 已经下载解压的档案复制到 目前资料夹下的 目录更新

cData.listUpdate(l) 应该是一串 Path

很有可能是找不到档案或资料夹路径 才会发生错误



可是为什么 Win7 没有错误 WinXP 就有错误

很有可能是因为先前解压动作失败,导致要复制时,来源档案 (Source files) 不存在,到这步骤才错

因为是利用 WinRAR 去帮忙解压缩,总归原因可能是 WinRAR 找不到下载回来的暂时 RAR 档案

详细情况就不知道



有时间的话有可能我会把整个 专案 重修一次

如果希望增加什么额外的功能可以说一下

献花 x1
引用 | 编辑 zsx123665
2012-05-25 08:41
2楼
  
现在问题又多一个,就是它更新时会跑出"2"?
我判断可能是他侦测重复档案时会跳出,而下载的新档却不能取代旧档
请帮我看看,专案有更新

献花 x0
引用 | 编辑 ebolaman
2012-05-25 23:53
3楼
  
下面是引用 zsx123665 于 2012-05-25 08:41 发表的 : 到引言文
现在问题又多一个,就是它更新时会跑出"2"?
我判断可能是他侦测重复档案时会跳出,而下载的新档却不能取代旧档
请帮我看看,专案有更新



打开 专案的 frm_main.vb

找到 local_new_dl() 这个函数


里面有一行 (应该是第 355 行,可以点 Edit -> Go to)

MsgBox(cData.listHash.Count)

▲ 把这一行删掉就可以解决跑出 "2" 的讯息视窗



这应该是我之前 Debug 忘记删除掉的指令

以前程式码风格写的很糟糕... >_<

献花 x1
引用 | 编辑 zsx123665
2012-05-26 00:06
4楼
  
下面是引用 ebolaman 于 2012-05-25 23:53 发表的 : 到引言文




打开 专案的 frm_main.vb

找到 local_new_dl() 这个函数


里面有一行 (应该是第 355 行,可以点 Edit -> Go to)

MsgBox(cData.listHash.Count)

▲ 把这一行删掉就可以解决跑出 "2" 的讯息视窗



这应该是我之前 Debug 忘记删除掉的指令

以前程式码风格写的很糟糕... >_<



可否教我如何写vb 因为我还是初学者(有买书读过,但是不懂 = =)
虽然我朋友认识n3,而且也留过言请他教我,但是他因为要考试,所以无法上
and 能否写出一个比较完美的游戏启动器给我们 @@?
或者给我一些简单的专案让我研究
顺带一提,n3的自动更新你知道它是哪的FTP吗??

献花 x0
引用 | 编辑 n3ph223172
2012-05-26 03:14
5楼
  
其实,搞自动更新的功能,会卡太久。。

献花 x0
引用 | 编辑 zsx123665
2012-05-26 10:17
6楼
  
下面是引用 n3ph223172 于 2012-05-26 03:14 发表的 : 到引言文
其实,搞自动更新的功能,会卡太久。。



是n3大 @@
Hi ^^
其实我记得你们CSO-NST UE 有成功过,只是我算初学,所以很多不懂的地方
期盼n3大您指导我。

献花 x1
引用 | 编辑 ebolaman
2012-05-26 13:23
7楼
  
n3 讲的没错

这个启动器每次都要上网检查更新版本,而且我做的不是很好,FTP 下载常会当掉

所以我看干脆这样好了,把这个启动器改的简单一点,就用 HTTP 直接检查版本数据,版本不同直接提示是否更新,然后使用者自行连到官网下载,而不要透过启动器


另外,这个启动器只是在模拟 "CSO" 的启动器

如果是 CS 其他版本 (现在到底有哪几个开发版本? 我只知道 BTE),如果要有自己的游戏风格的话

就该设计另外一套启动器


如果真的要让启动器做得很好

还要考虑到游戏本身的档案配置,周遭的环境,游戏的需求...等等

献花 x2
引用 | 编辑 zsx123665
2012-05-26 15:43
8楼
  
那好吧 我自己设计完美的
我有一本vb2010的书,看过后比较懂了,谢谢您们的帮忙

献花 x0
引用 | 编辑 n3ph223172
2012-05-26 16:06
9楼
  
其实我碰CSO,不单单只有台服,总共6大服都有碰(韩、日、台、陆、新马、印尼)
而我BTE负责的是破解素材还有其他东西
每当我破解韩服的时候
其实,因为VPN关系我等了很久
但我也发现到了CSO更新的原理
开启启动器后,会先从伺服器接受更新资讯
进而更新ClientRegistry.blob
然后我发现到的是,CSO不是一次就把更新下载完
如果太久没更新,更新的时候常常会说:cstrike_tw.nar下载中(3个)之类的
所以我认为更新那个档案,其实就是告知启动器要下载哪些档案
所以我认为如果要在弄一个
不要弄索引档(index.txt)在FTP之上
先设定启动器要在FTP上接受哪个资讯档案,资讯档案内容最好是加密,进而告知启动器要下载哪些
这个资讯档案可能这样:
[update1]
mp.dll
client.dll
hw.dll

[update2]
mp.dll
client.dll
hw.dll
GameUI.dll
cstrike\models\v_ak47.mdl

先下载第一个更新的档案,在继续第二个
又或者采用打包的方式:
[update1]
CS:BTE_Update1.bte

[update2]
CS:BTE_Update2.bte

之类的
最好可以搞个独立解压程序之类的
不然也可改成rar,然而下载出来的档案单档请直接放对应目录,如果是打包的就放游戏主目录等候解压
之类的其实都可以

献花 x0
引用 | 编辑 ebolaman
2012-05-26 17:15
10楼
  
下面是引用 n3ph223172 于 2012-05-26 16:06 发表的 : 到引言文
其实我碰CSO,不单单只有台服,总共6大服都有碰(韩、日、台、陆、新马、印尼)
而我BTE负责的是破解素材还有其他东西
每当我破解韩服的时候
其实,因为VPN关系我等了很久
但我也发现到了CSO更新的原理
.......


OK

也就是说,把之前的 index.txt 改成

直接告知启动器 "必须" 更新哪些档案



这样做的话,必须在客户端(使用者) 的 CS 资料夹内存放 "目前版本" 的资讯

程式上 FTP 检查,发现与最新版本不同的话

才来寻找对应的版本  ,的更新档案


例如 :

使用者 v1.0
伺服器的 index.txt 如下 :

复制程式
[Update]
Version = 1.1

\mp.dll
\cstrike\addons\plugins\test.amxx


[Update]
Version = 1.0

\hw.dll


[Update]
Version = 0.9

\maps\de_test.bsp
\maps\de_test.nav




如果使用者已经 v1.1 就无须更新

v1.0 就要下载更新

假如是 v0.8 那么就 v0.9, v1.0, v1.1 一个一个顺序地更新



有版本资讯的话,就不用像以前设计的,每次开程式都要检查档案的 MD5



解压的过程是呼叫 WinRAR 来帮忙解压,这部分我到时候看看可不可以找到 解压程式码,设置一个 自己的执行档来帮忙解压

应该可以避免掉有些 作业系统 找不到 WinRAR 的问题


最近学业也非常忙碌,我看可能要等到暑假才能好好做这个启动器了

献花 x1
引用 | 编辑 zsx123665
2012-05-26 17:28
11楼
  
我想要让它侦测 Dtat/ver.txt 的md5 与Ftp是否符合
若不符合下载 http://sites.google.com/site/whwnsuntea/Files/LS_Upgrade.exe  到启动器路径

新启动器载点 

献花 x0
引用 | 编辑 n3ph223172
2012-05-26 17:42
12楼
  
下面是引用 ebolaman 于 2012-05-26 17:15 发表的 : 到引言文


OK
也就是说,把之前的 index.txt 改成
直接告知启动器 "必须" 更新哪些档案
.......
说的没有错
但,如果要采这样单档制的话
其实所谓的压缩也就没必要了
如果今天要像CSO那样,cstrike.nar.187719655(之类的自订封装格式)
其实压缩才有这必要
复制程式
[Update]
Version = 1.1

\cstrike.bte1001

[Update]
Version = 1.0

\cstrike.bte1002
其实就类似这样
同时要比对一下压缩档内的档案是否与客户端上的相同,如果不相同,则这更新将在执行一次
不过我想没必要这样
毕竟CSO单机版又不是CSO,有商业性,有版权等,没必要什么东西禁止修改
然后如果缺少档案,在一次执行更新,但还要先检查你的版本是几版的,这其实弄起来比较麻烦,我自己现在打文章,其实我也打的头花花的,不晓得怎么说明
大致上就是这样子吧

献花 x0
引用 | 编辑 zsx123665
2012-05-27 05:18
13楼
  
下面是引用 n3ph223172 于 2012-05-26 17:42 发表的 : 到引言文

说的没有错
但,如果要采这样单档制的话
其实所谓的压缩也就没必要了
如果今天要像CSO那样,cstrike.nar.187719655(之类的自订封装格式)
其实压缩才有这必要
复制程式
[Update]
Version = 1.1

\cstrike.bte1001

[Update]
Version = 1.0

\cstrike.bte1002
其实就类似这样
同时要比对一下压缩档内的档案是否与客户端上的相同,如果不相同,则这更新将在执行一次
不过我想没必要这样...



您们说的都已经超乎我的逻辑了 表情,我只有想到简单的ver.txt的md6与index的md5比较
您们却想到了更好的办法(其实我也有想到过表情 只是我不确定能否做出来,所以我没提出这建议)

献花 x1
引用 | 编辑 A2737612
2013-01-02 10:32
14楼
  
拿去看看

献花 x0
引用 | 编辑 iamboss123
2014-01-12 13:46
15楼
  
直接下更新包 自己替换呗

献花 x0