AE86 发表于 2006-2-14 01:18:55

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

Post by Enigmaya
哈哈。。。好久不见了。。。忙什么呢? :p
据说他出差去了。。。。。。。 :eek:
外挂以前要和我比帖数多,现在我比他多了100多贴了。哈哈~~~哎,我要休息一个月了,相信外挂暂时追不上我…… :rolleyes:

Enigmaya 发表于 2006-2-14 02:17:09

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

Post by AE86
case 0: g_menuSettings = 0
              case 1: g_menuSettings = 100
              case 2: g_menuSettings = 200
              case 3: g_menuSettings = 300
              case 4: g_menuSettings = 400
我已经是最小100了。
如果有次数少点又要去改源码了。今天没有上班,明天回家一趟可能没这几天什么时间了。
HOLD-king 试下惩罚100局是什么效果嘛。
对了小E那个记录了IP如果是网吧的IP,那换图后即使那个曾经用此IP作弊的玩家走了,那么下一个进去的不就受罪了吗 :byebye:

....

是啊。。。这也是个问题。。。这几天玩,基本上换图之后进来的都不想惩罚,
下一版,光检查id算了,ip也检查,不过只是提示一下,之后op多注意一下就行了。。 这样应该是目前最好的解决办法了。

Post by AE86
据说他出差去了。。。。。。。 :eek:
外挂以前要和我比帖数多,现在我比他多了100多贴了。哈哈~~~哎,我要休息一个月了,相信外挂暂时追不上我…… :rolleyes:

:sweat:

AnthraX 发表于 2006-2-15 08:45:19

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

好东西啊 支持 支持 再支持!

zhongjia 发表于 2006-2-15 09:52:17

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

这两天一直想实现一个功能,我们现实的社会主义不是没有民主吗?想在我的娱乐插件里面实现一个民主的环境,由这个地图还剩下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会利用手中的权力打击报复、提前换地图等;其次,拉帮结派的人大为流行,把整个服务器搞得乌烟瘴气。

虽然如此,但民主依然是我的向往,各位高手对这个想法有什么好的建议?

zhongjia 发表于 2006-2-15 10:20:26

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

对是1.7版的
哈哈
不好意思
我在去看看
这几天忙别的去了
刚才我都要被7疯了(有人人什么都会还问我,晕死)



刚看过
还是我说的那个毛病
前面没有作弊人的ID
就是出来(,还想在来么?)


zhongjia答复:
我很仔细研究国Enigmaya的源代码,所以我有点发言权,这是一个bug造成的,我想Enigmaya还没有真正闹明白cs里面id是怎么工作的。下面是Enigmaya1.7的相关部分源代码:
get_players(players, num,"a");
new Msg;
for (new i=0; i<num+1; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername)
......
}
很显然这里cheatername数组不能用i来索引,而是用players,正确的写法应该是:
get_players(players, num,"a");
new Msg;
for (new i=0; i<num; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername])
......
}

点通这破论坛,这是我第4次回复了,我一拷贝对比的源代码就把我的浏览器搞死机,郁闷,这次再上不了,我不说话了我。

可能我说话比较冲,还请Enigmaya不要见怪,在amxx上你是我师父,跟你学习不少知识,说话直白一点,大家相互提高吧。

Enigmaya 发表于 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;
for (new i=0; i<num+1; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername)
......
}
很显然这里cheatername数组不能用i来索引,而是用players,正确的写法应该是:
get_players(players, num,"a");
new Msg;
for (new i=0; i<num; i++)
{
......
format(Msg,127,"%s,还想再来么?",cheatername])
......
}

点通这破论坛,这是我第4次回复了,我一拷贝对比的源代码就把我的浏览器搞死机,郁闷,这次再上不了,我不说话了我。

可能我说话比较冲,还请Enigmaya不要见怪,在amxx上你是我师父,跟你学习不少知识,说话直白一点,大家相互提高吧。

只说对了一半。。。当初刚开始写这个时老出问题,就是因为id没弄明白。。。以为和userid一样,写到后面才算弄懂,不过因为后来没有在这方面出问题了,而且见过别人这样用的,也就一直没改了。。。算是历史遗留问题了 ;)

有空。。你去看看我的其他插件吧。。。这个插件代码上我不认为有参考的价值的。

zhongjia 发表于 2006-2-15 15:03:15

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

Post by Enigmaya
不开服务器。。。没有发言权。。。不过说实话。。。既然大家是玩游戏,那么在意op干嘛。。。最好的op应该是最默默无闻的



只说对了一半。。。当初刚开始写这个时老出问题,就是因为id没弄明白。。。以为和userid一样,写到后面才算弄懂,不过因为后来没有在这方面出问题了,而且见过别人这样用的,也就一直没改了。。...

我自己在cs服务器上做过参数试验的,你这样子用0顺序到num+1来索引绝对有问题,不信你可以把i和players两个序列对应打印出来,你会发现绝大多数时候是对应的,但也有不对应的时候,players数组会出现中间不连续的情况,这才是cs真正的id 序列。楼上那位网友出现的状况就是刚好撞上了,我本东,你引西,当然引不到名字了。

至于userid嘛,那是另外一码事,风牛马不相及,谦虚一点,老老实实做做实验,才会有深刻体会。你应该不是程序员吧?写这些小模块测试参数可是程序员的基本功 :)

Enigmaya 发表于 2006-2-15 15:05:37

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

诺。。写这个插件的中途还专门测试了i与id的区别

#include <amxmodx>


public plugin_init(){
        register_plugin("testID","0.1","Enigmaya")
        register_concmd("start","cmd",0)
}

public cmd(id)
{
        new players,num;
        get_players(players,num);
        for(new i=0;i<num;i++)
                client_print(0,print_chat,"i %dID %d",i,players)

        return PLUGIN_HANDLED;
}

zhongjia 发表于 2006-2-15 15:09:09

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

那可能是你在测试时服务器上人气不旺,没有来来去去的变化,不够耐心,没有发现players序列的断裂,我的服务器正好满足了这个要求,被我抓住了好几次,所以我理解了,i != players,为什么我怀疑你这个i索引有问题呢,就是因为我用你原来代码的时候,发现很多时候惩罚往往张冠李戴,罚张三时结果李四在天上飘,所以我专门做了小模块测试了,也广泛阅读了amxx插件自身所带的那些真高手写的代码,人家都是用players序列索引的。

你照我上面给的代码改一下你的插件试试看,保证不会出现上面那个网友所说的问题 :)

Enigmaya 发表于 2006-2-15 15:19:21

回复: 【原创】娱乐型反作弊插件v1.1--2005-10-3

Post by zhongjia
我自己在cs服务器上做过参数试验的,你这样子用0顺序到num+1来索引绝对有问题,不信你可以把i和players两个序列对应打印出来,你会发现绝大多数时候是对应的,但也有不对应的时候,players数组会出现中间不连续的情况,这才是cs真正的id 序列。楼上那位网友出现的状况就是刚好撞上了,我本东,你引西,当然引不到名字了。

至于userid嘛,那是另外一码事,风牛马不相及,谦虚一点,老老实实做做实验,才会有深刻体会。你应该不是程序员吧?写这些小模块测试参数可是程序员的基本功 :)

看楼上吧。。。

确实阿。。我一开始就是把id当作useid的。。。后来用电脑测试一直出错。。。然后才发现和userid不一样,又后来,用get_players时就直接用了i。。。我去找找我见过直接用i的代码

骗你干嘛。。。老早就说了这是第一个插件。。。有很多东西都不太了解。。。在这样的基础上。。。

另外。。。谁给你说我是程序员了? 大学还没毕业呢。。。
而且不是只有程序员才会测试小模块,ok?

谦虚。。。我又怎么了。。。说实话也有错?
倒是我觉得你很不耿直, 你一直说我的ip精度有问题却从来不直接给我说。。。 :cold:

唉~~~
页: 38 39 40 41 42 43 44 45 46 47 [48] 49 50 51 52 53 54 55
查看完整版本: 【原创】娱乐型反作弊插件v1.1--2005-10-3