石器时代记录点的虚假人数

  无论什么游戏,包括石器时代私服,为了显示服务器在线人数很多,会加入虚拟人数。例如石器中,记录点会显示本线路的总在线玩家数。在早期的石器SF里,都是在setup.cf里进行虚拟人数的设置,计算公式为真实人数+自定义虚拟人数+每次和NPC对话的随机人数

  现在石器服务端拥有了LUA功能,可以通过LUA来动态全自动修改记录点的人数。咱们可以在netloopfunction.luaNetLoopFunction()函数内看到下一段代码(现在市面上大部分石器新服都带这段代码

	local playeronlinenum = 0

	if playeronlinenum > 800 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.7))
	elseif playeronlinenum > 700 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.6) + 150)
	elseif playeronlinenum > 600 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.55) + 200)
	elseif playeronlinenum > 500 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.5) + 300)
	elseif playeronlinenum > 400 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.5) + 400)
	elseif playeronlinenum > 350 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.4) + 400)
	elseif playeronlinenum > 300 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.3) + 400)
	elseif playeronlinenum > 250 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.2) + 400)
	elseif playeronlinenum > 200 then
		config.PlayerNum(getIntPart(playeronlinenum * 2.1) + 400)
	elseif playeronlinenum > 100 then
		config.PlayerNum(getIntPart(playeronlinenum * 1.9) + 200)
	elseif playeronlinenum > 50 then
		config.PlayerNum(getIntPart(playeronlinenum * 1.5) + 100)
	elseif playeronlinenum > 10 then
		config.PlayerNum(getIntPart(playeronlinenum * 1.3) + 50)
	else
		config.PlayerNum(getIntPart(playeronlinenum * 1.1) + 30)
	end
	
	if config.getGameservername() == "石器单号线" and other.getOnlinePlayer() < 0 then
		config.PlayerNum(3600)
	end

 我们可以看到这段代码里,搜索全部索引,凡是在神奇石器一线,并且在渔村的人如果为摆摊都将自动设定成摆摊状态,这个在早期用脱机挂渔村的时候为了让渔村看着热闹,而使用的一段代码。

  再看到playernum = playernum + 1 这句并没有放在if char.getInt(i, "地图号") == 2000 then内,所以这里计算的是在线的全部玩家数

之后下面的判断playernum数值,不同的数值都会乘不同的倍数。看到是乘的小数,会出现小数怎么办?看到getIntPart这个函数,这里是取整数。

  最后使用config.PlayerNum接口把记录点人数进行修改,这样每分钟都会进行检查并修改在线人数。

总结下,不要以为记录点的人数是真实值,事实上都是翻倍的。真实人数越多虚拟人数也就越多。为了制造气氛,现在假人,陪练等也是非常多的。让人看上去有很多人在玩的样子。


发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。