d4server 发表于 2010-6-10 12:29:24

我有个插件可以做到玩家CMD下载与玩家自动下载达到一样的效果,玩家CMD下载东西照样可以下载,但对服务器没有一点影响,服务器的PING一点没有面,变的是玩家的PING

ghost4.12 发表于 2010-6-10 12:31:33

本帖最后由 ghost4.12 于 2010-6-10 12:48 编辑

R版
你可以看下这个问题
不知道有没有利用价值

我发现这些通过这些简单的代码测试
玩家链接服务器的时候 玩家与服务器之间的数据发送
服务器控制台发送的数据say 内容显示次数都不一样

say 3333333 在玩家进入和退出的时候都会执行很多次
会不会与你的补丁检测有些联系 导致误判public client_connect ( id )
{
        server_cmd("say 1111111")
        return PLUGIN_CONTINUE
}

public client_putinserver ( id )
{       
        server_cmd("say 2222222")
        return PLUGIN_CONTINUE
}

public client_command(id)
{
        server_cmd("say 3333333", id)
        return PLUGIN_HANDLED
} 这是控制台的信息

Rulzy 发表于 2010-6-10 13:17:57

client_command 肯定会执行很多次了,因为每一条客户端命令都会执行一次 client_command ,而玩家连接过程中是要发送几次命令的,进入游戏后也会发送几次命令的。

Rulzy 发表于 2010-6-10 13:21:22

本帖最后由 Rulzy 于 2010-6-10 13:24 编辑

procedure C_ClientCommand(Player: Pointer); cdecl;
var
Command: string;
Index, UserID: Integer;
AuthID: string;
BanTime: Integer;
begin
Command:=LowerCase(gEngFuncs.pfnCmd_Argv(0));
if Command='dlfile' then
begin
    Index:=gEngFuncs.pfnIndexOfEdict(Player);
    if (Index>=1) and (Index<=gpGlobals.maxClients) and gPlayers.InGame then
    begin
      UserID:=gEngFuncs.pfnGetPlayerUserId(Player);
      AuthID:=gEngFuncs.pfnGetPlayerAuthId(Player);
      BanTime:=Trunc(gEngFuncs.pfnCVarGetFloat('antidlfile_bantime'));
      if BanTime<0 then
      begin
      LogPrint('Kicked "%s<%d><%s><>" (address "%s") due to using "cmd dlfile" command.',
          .Name, UserID, AuthID, gPlayers.Address]);
      gEngFuncs.pfnClientPrintf(Player, print_console, 'You have been kicked due to using "cmd dlfile" command.'#10);
      gEngFuncs.pfnServerCommand(PChar(Format('kick #%d'#10, )));
      gEngFuncs.pfnServerExecute;
      end else begin
      LogPrint('Banned "%s<%d><%s><>" (address "%s") due to using "cmd dlfile" command.',
          .Name, UserID, AuthID, gPlayers.Address]);
      gEngFuncs.pfnClientPrintf(Player, print_console, 'You have been banned due to using "cmd dlfile" command.'#10);
      gEngFuncs.pfnServerCommand(PChar(Format('kick #%d'#10, )));
      gEngFuncs.pfnServerExecute;
      gEngFuncs.pfnServerCommand(PChar(Format('wait; addip %d %s; wait; writeip;'#10, .Address])));
      end;
      gpMetaGlobals.mres:=MRES_SUPERCEDE;
      Exit;
    end;
end;
gpMetaGlobals.mres:=MRES_IGNORED;
end;这是判断代码。只有玩家执行了 dlfile 命令,才有可能被踢的啊。如果说有误踢,可能在于判断gPlayers.InGame上,而没有使用 dlfile 命令的,又怎么会被踢呢?实在想不通。

ghost4.12 发表于 2010-6-10 13:26:55

哦明白了


其实R版 已经能捕获dlfile 已经很好了
只是不明白为什么会误踢呢?

ghost4.12 发表于 2010-6-10 13:29:06

是不是可以把 kick by console换成 让客户端自己 disconnect 呢?

Rulzy 发表于 2010-6-10 13:33:59

对了,单机建主,使用 metamod,不加载任何插件(addons/metamod/plugins.ini中没有加载任何插件),为什么不能选择队伍呢?有谁知道吗?我找了几个版本,客户端版本号都是2056。不知道大家使用的是什么版本的呢?使用 metamod 是否正常?另外问一下,为什么一定要使用 cstrike.exe ,而不用 hlds.exe 来建主呢?

wenwen 发表于 2010-6-10 13:36:08

支持!不急慢慢做!我用www的那个版本!

Rulzy 发表于 2010-6-10 13:37:14

是不是可以把 kick by console换成 让客户端自己 disconnect 呢?
ghost4.12 发表于 2010-6-10 13:29 http://www.dt-club.net/forum/images/common/back.gif也可以,不过可能效果没这么好,因为玩家自己断开连接,时间上要比从服务器上踢出要慢。与玩家的连接断开越快,对服务器的影响越小。

ghost4.12 发表于 2010-6-10 13:41:58

我有时候AMXX代码写错了也会导致不能选择队伍
进去就一直在定角落动不了
页: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
查看完整版本: [2010-10-18] CS1.5 开下载防 cmd dlfile 攻击补丁 V1.4 [开源]