zhongjia 发表于 2006-2-15 15:22:59

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

给你摘一段votekick.sma里面的代码看看?

    get_players( g_nMenuPlayers, nNum )
......
    for( i = nStart; i < nEnd; i++ )
    {
      j = g_nMenuPlayers
      get_user_name( j, szUserName, 31 )
......
    }

这里,人家为什么要用j而不是直接用i呢?很显然嘛! :)

zhongjia 发表于 2006-2-15 15:25:21

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

Post by Enigmaya
看楼上吧。。。

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

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

另外。。。谁给你说我...

好了,我不说话了,高手过招点到为止,我心不坏可嘴巴坏,说多了伤人,我闪~~

zhongjia 发表于 2006-2-15 15:28:34

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

再给你看一段weaponarena.sma里面的源代码:

get_players(playersList, playersFound, "a")
for (new i = 0; i < playersFound; i++) {
if (giveIfHasnt(playersList)) {
   switch (get_cvar_num("weaponarena_unlimitedammo")) {
    case 0: giveAmmo(playersList)
    case 2: giveAmmo(playersList)
   }
}

zhongjia 发表于 2006-2-15 15:31:44

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

再给你看大名鼎鼎的魔兽3里面的源代码:

get_players(players, numplayers, "ae", teamname)
......   
for (new i=0; i<numplayers; ++i){
targetid=players
get_user_origin(targetid, targetorigin)
......

zhongjia 发表于 2006-2-15 15:33:04

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

还要找吗?要参考就参考那些经得起考验的源代码

Enigmaya 发表于 2006-2-15 15:54:46

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

最先发现amxx的DOC文档作的很好,于是从amxx的DOC文档看起。。。


get_players(players, num)
new i
for (i=0; i<num; i++)
{
       。。。
       //Set this player's health
         set_user_health(players, Health)
。。。

但我没明白为什么要这样,于是去找其他的代码看。。。
JGHG的sentrygun插件
        for(new i = 1; i <= g_MAXPLAYERS; i++) {
                if (!is_user_connected(i) || !is_user_bot(i) || !is_user_alive(i))
                        continue

                sentry_build(i)
                asked++
        }
教程里面本身有些东西就有点嗦,于是认为这就是更简便的方法。。。
然后又去测试了一下,我又没服务器。。。就在本机上和电脑测试。。。也没出什么问题,

所以就这样用了。。。虽然从这之后这个插件不断有bug,但从来没想过这里有问题。。。后来写其他插件才发现原来的理解有问题,但是这里觉得好像也能工作正常于是就默认了,也懒得改了。。。

这样说。。。你清楚了吧。。。如果不介意。。。顺便解释一下第2段代码的用法吧。。。我想听听你的理解。


真不该删掉原来2楼的申明。。。 :confused:

zhongjia 发表于 2006-2-15 15:54:56

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

看楼上吧。。。

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

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

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

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

唉~~~
zhongjia:
我上次的确是说了3遍,还是点通这破论坛,我一拷贝你我对比的源代码就把我的浏览器搞死掉,生气了我就不说了,这点纯属误会啊,你都那么爽快告诉我相关的很多参数,我至于那么不耿直藏私吗?
你ip精度的问题归根结底也就是这个索引误解所引起的。涉及到了ip索引、惩罚索引、名字索引等等很多,说句老实话,我常看源代码,看你写的代码的确很痛苦。
我大学刚毕业的时候跟你一样的毛病,想到哪写到哪,没有统一的规划,在北京做石油勘探CGMTOOLS项目开发的时候,天天被高手扁,现在改了很多。

zhongjia 发表于 2006-2-15 16:54:16

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

我正好也有你所说的sentrygun的源代码,这里是指的是bot的索引,非在线的用户,或许对机器人这么写可以吧,不过我觉得不应该提倡这样的写法,还是得利用get_players提出bot数组,然后再索引,这样程序代码的可读性强一些。

Enigmaya 发表于 2006-2-15 17:00:52

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

Post by zhongjia
我正好也有你所说的sentrygun的源代码,这里是指的是bot的索引,非在线的用户,或许对机器人这么写可以吧,不过我觉得不应该提倡这样的写法,还是得利用get_players提出bot数组,然后再索引,这样程序代码的可读性强一些。

我没骗你吧。。。
你想想如果你刚入门。。。看到这2种方法。。。而且简单测试之后发现都可以。。你选哪个?

zhongjia 发表于 2006-2-16 13:47:42

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

请教Enigmaya一个问题:

在sma的自己写的函数中,return PLUGIN_HANDLED和return PLUGIN_CONTINUE有什么区别?

在捡枪事件中,我用return PLUGIN_HANDLED返回,服务器运行一会就会崩溃,而改成return PLUGIN_CONTINUE就没事,还请指点一二。
页: 39 40 41 42 43 44 45 46 47 48 [49] 50 51 52 53 54 55
查看完整版本: 【原创】娱乐型反作弊插件v1.1--2005-10-3