简单谈一下VC电驴的问题

王朝vc·作者佚名  2008-07-21
窄屏简体版  字體: |||超大  

看到论坛这个板块里N多人都在说VC的“加分”机制不厚道,“强烈要求去掉”云云。本人电驴子新手,总觉得“凡事总需研究,才会明白”,“加分”到底对不对,拿源代码说话。

OK,废话少说,先上代码:

代码

//VeryCD版,积分调整 added by kernel1983 2006.08.01

CString strBuffer = this->GetUserName(); //获得对方的Nick

if (

// strBuffer.Find(_T(”[VeryCD")) != -1 || strBuffer.Find(_T("[CHN]“)) != -1 ||

(thePrefs.UseCreditSystem() && credits->GetScoreRatio(GetIP())!=1) ||

(currequpfile->GetUpPriority() == PR_VERYHIGH) ||

(IsEmuleClient() && (GetAvailablePartCount() > 0) || (m_nDownloadState == DS_DOWNLOADING))||

IsFriend()

)

{

fBaseValue += 19900; //增加积分

}

这段代码是VC加到官版 CUpDownClient::GetScore() 方法里的,用做积分调整。顺便说一下,电驴里的“得分”和“评分”都是用这个方法来计算,用调用参数来区别。

这段代码很简单,主要的就是那个if语句,里面一共有6个互为“或”关系的逻辑语句,一一解释下:

1、strBuffer.Find(_T(”[VeryCD")) != -1

这个一看就知道,判断对方的nickname里是否有“[VeryCD”的tag,这也是网友们批评VC最多的地方2、strBuffer.Find(_T("[CHN]“)) != -1

道理同上,不过是判断对方的nickname里是否有“[CHN]”,也就是说,如果对方名字里只有[CHN],也能获得“加分”3、thePrefs.UseCreditSystem() && credits->GetScoreRatio(GetIP())!=1

判断对方是否使用信用系统,并且对自己有上传(上传下载比例不再是1)4、currequpfile->GetUpPriority() == PR_VERYHIGH

看共享的文件是不是“发布”级别,如果是“发布”就给对方“加分”5、IsEmuleClient() && (GetAvailablePartCount() > 0) || (m_nDownloadState == DS_DOWNLOADING)

这个还不是太明白,好像是说如果对方对于我要下载的文件,如果拥有超过1个文件分块,就给对方“加分”,或者如果我正在下载对方的文件,也给对方“加分”6、IsFriend()

既然我们是朋友,就加点分吧……上面简单分析了一下“加分”规则。

3、5两条是鼓励上传的,这没问题。

4、6两条见仁见智,我认为给朋友和发布级别的文件加分也是可以接受的,算是一种“偷懒”的解决方法。当然我知道,对于不同共享级别文件的排队顺序有更好的算法,对于朋友,xt的mod也有朋友通道这一方法。

问题出在1、2两条,nickname里只要有[VeryCD]或者[CHN]就有加分,这对于其他mod是不公平的,估计这也是VC被国外评做community mod的原因。

说下我的看法:

1、论坛上很多人说VC只给VC的mod加分,这种说法是片面的。VC的加分规则是在鼓励上传,同时也鼓励使用[VeryCD]或者[CHN]这两种tag,并没有限制只能用VC的mod。

2、关于community mod,我认为VC并不是只给自己的mod上传,不算严格的community mod。也不能因此就说VC是leecher。我比较同意某大虾的说法:只有吸血的人,没有吸血的mod.

3、VC作为一个商业公司,能够坚持开放源码,在国内这个大环境下,是值得表扬的(顺便BS一下国内某个不愿意开源的驴子)。

好了,大家都看明白了吧,其实很简单,如果还有不明白的可以相互交流一下。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航