无论什么游戏,包括石器时代私服,为了显示服务器在线人数很多,会加入虚拟人数。例如石器中,记录点会显示本线路的总在线玩家数。在早期的石器SF里,都是在setup.cf里进行虚拟人数的设置,计算公式为真实人数+自定义虚拟人数+每次和NPC对话的随机人数。
现在石器服务端拥有了LUA功能,可以通过LUA来动态全自动修改记录点的人数。咱们可以在netloopfunction.lua的NetLoopFunction()函数内看到下一段代码(现在市面上大部分石器新服都带这段代码)
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接口把记录点人数进行修改,这样每分钟都会进行检查并修改在线人数。
总结下,不要以为记录点的人数是真实值,事实上都是翻倍的。真实人数越多虚拟人数也就越多。为了制造气氛,现在假人,陪练等也是非常多的。让人看上去有很多人在玩的样子。
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。