|
楼主 |
发表于 2006-2-15 14:47:06
|
显示全部楼层
来自 中国–四川–成都
回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3
Post by zhongjia
这两天一直想实现一个功能,我们现实的社会主义不是没有民主吗?想在我的娱乐插件里面实现一个民主的环境,由这个地图还剩下3分钟要结束的时候,玩家投票选举下一个地图的op,功能很容易实现
new a = get_timeleft() 取得当前地图还剩下的时间,分钟数
在插件里面很容易获得玩家ip,通过write_file可以写以下格式到user.ini文件中,下一个地图就自动以ip的形式指定op了。
"123.45.67.89" "" "abcdefijmnopqrstuz" "de"
民主投票流程:
1、想当下一个地图的玩家在线提出op申请
2、当还剩下3分钟时进行投票选举
3、宣告结果,写user.ini文件
写了这个插件,但实践证明民主看起来大家投票很简单,其实最复杂,尤其是在一群小人之中实现民主简直太难了。首先,当前op会利用手中的权力打击报复、提前换地图等;其次,拉帮结派的人大为流行,把整个服务器搞得乌烟瘴气。
虽然如此,但民主依然是我的向往,各位高手对这个想法有什么好的建议?
不开服务器。。。没有发言权。。。不过说实话。。。既然大家是玩游戏,那么在意op干嘛。。。最好的op应该是最默默无闻的
Post by zhongjia
我很仔细研究国Enigmaya的源代码,所以我有点发言权,这是一个bug造成的,我想Enigmaya还没有真正闹明白cs里面id是怎么工作的。下面是Enigmaya1.7的相关部分源代码:
get_players(players, num,"a");
new Msg[128];
for (new i=0; i<num+1; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername)
......
}
很显然这里cheatername数组不能用i来索引,而是用players,正确的写法应该是:
get_players(players, num,"a");
new Msg[128];
for (new i=0; i<num; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername[players])
......
}
点通这破论坛,这是我第4次回复了,我一拷贝对比的源代码就把我的浏览器搞死机,郁闷,这次再上不了,我不说话了我。
可能我说话比较冲,还请Enigmaya不要见怪,在amxx上你是我师父,跟你学习不少知识,说话直白一点,大家相互提高吧。
只说对了一半。。。当初刚开始写这个时老出问题,就是因为id没弄明白。。。以为和userid一样,写到后面才算弄懂,不过因为后来没有在这方面出问题了,而且见过别人这样用的,也就一直没改了。。。算是历史遗留问题了 ;)
有空。。你去看看我的其他插件吧。。。这个插件代码上我不认为有参考的价值的。 |
|