找回密码
 现在就去注册!
搜索
热搜: 活动 交友 discuz
查看: 2018|回复: 1

(过时)TTKDAA V1(Tatako AIV1)使用

[复制链接]

72

主题

39

回帖

291万

积分

官方人员

积分
2915373
发表于 2025-3-29 15:06:12 | 显示全部楼层 |阅读模式

过时,请查看最新的TTKDAA V2帖子


导言:

Tatako的AI反自动瞄准检测(简称为TTKDAA)是由云驱动的检测。我们开设了官方的AI服务器(简称官推),也公开了服务端和一些技术细节,在此帖子。
TTKDAA如何工作?


客户端(反作弊程序) ——网络发送瞄准数据——> 服务端(使用AI模型评估外挂概率)——网络发回评估结果——> 客户端(反作弊程序)警报作弊者

服务器需要算力支持,所以你需要:
自行下载服务端部署AI推理服务器 / 购买官方或第三方开设的AI推理服务


高版本(> 1.12)服务器请勿使用Tatako作为客户端,你应该使用 https://github.com/tjshtqwq/TTKDAAClient
拥有攻击冷却的服务器不要使用Tatako AI。



1、在Tatako插件中设置。

注意:以下为由河众开发组自行开设的推理服务器(简称官推)进行的收费,如果您不想购买请跳过这里
Tatako一直公益,由我进行开发。如果您可以购买或捐助我(和整个开发组),我(和整个开发组)将不胜感激
令牌申请:[email protected] / [email protected]
令牌价格:(单位:人民币,外币按照当天汇率兑换)
令牌派发:0.1CNY,附赠1000请求配额。

* 如何判断您的服务器需要多少配额?
    TTKDAA需要20游戏刻(正常为1秒)的瞄准数据进行检测。在持续攻击且玩家转头的时候,1秒会消耗一次请求。
    但是玩家不是每时每刻都在攻击,所以正常很难做到1秒一次请求。
    日活10人的竞技场服务器一天大约需要消耗几千到几万次请求。
* 如果认为官推价格过贵(服务器玩家过多),如何才能使用低价的服务?
1、如果您的服务器是公益服务器,那么价格会比商业服务器的价格低50%以上(没有额外打折的情况下)。
    2、如果您有服务器运行Windows 7或Windows Server 2008以上版本的系统,或拥有Windows兼容层,可自行下载服务端部署AI推理服务
    3、查看帖子查看免费获取官推的渠道(如果你没有Windows服务器或不会使用Windows兼容层

官推 请求配额价格
商业服务器:
每10000请求 1CNY
每30000请求 2.5CNY
每50000请求 3.5CNY
每100000请求 5CNY
公益服务器(可联系我获得免费的令牌,根据您的服务器玩家数量附赠一些请求配额):
每10000请求 0.5CNY
每30000请求 1CNY
每50000请求 1.5CNY
每100000请求 2CNY
接受的支付方式:微信支付,支付宝,银行卡转账
公益服务器可额外获得获得最高80%的优惠。大量购买可继续降低价格。
商业服定义:通过充值可以获取在游戏中的任何优势(包括间接的)。形式包括但不限于直接加成,额外套装等。
服务器地址:http://ttkdaa.hezhongkj.top/predict
请在config.yml文件中设置您的服务器地址和令牌。
向我提供无污染的AI数据,帮助我改进模型,可1:0.5(商业服务器)或1:1(公益服务器)获得免费的请求配额。

2、自行部署:
前往https://bbs.hezhongkj.top/down/ttkdaa_server.zip下载服务端并解压缩,运行run_server.exe,等待启动后使用help命令查看命令用法
你可以配置config.ini,包括启用cuda,配置端口和ip等。
不会的可以找我寻求帮助。你可以使用服务端的WebUI Panel功能方便的管理。
默认配置:

  1. [server]
  2. host = 0.0.0.0
  3. port = 55555
  4. index_info = Hezhong technology ttkdaa server
  5. # 启动面板?
  6. panel = True
  7. # panel_url指定面板地址,例如设置为114514,则访问地址为:地址:端口/114514
  8. panel_url = panel
  9. max_memory = 2048
  10. # 内存警告阈值。单位:MByte。默认2048M
  11. clean_memory = 1000
  12. # 每几次请求清理内存。默认1000
  13. [prediction]
  14. # True if you want to use GPU, ONLY NVIDIA GPU AND YOU MUST INSTALL CUDA AND CUDNN!!!
  15. # 如果要使用GPU,设置为True。只能用Nvidia的GPU!你要安装Cuda和Cudnn!
  16. # GPU的跑分可能不高,但并发可以
  17. cuda = False
  18. model = model.ttkdaa

  19. encrypted = True
  20. # 加密模型?
  21. key = 114514
  22. # 安全密钥,长度32字节
  23. [auth]
  24. user = admin
  25. password = admin
复制代码

注意:你可以使用GPU推理,但是目前只支持NVIDIA GPU。你需要安装CUDA和CUDNN才可以使用GPU。
CUDA 下载:https://developer.nvidia.com/cuda-toolkit
CUDNN 下载:https://developer.nvidia.com/cudnn
下载需要NVIDIA账户,自行注册。

注意:使用一台带有Windows 7及以上系统的计算机。不支持Windows XP等系统。
原则上不支持Linux,如果你希望在Linux上使用推理服务器,请使用Wine。请在网络上自行查找Wine安装使用教程。不要通过除了Wine以外的方式在Linux上使用推理服务器。
如果你使用MacOS,请你使用其他办法兼容(可以使用虚拟机)或购买一台云服务器。


允许使用TTKDAA服务端向外开设推理服务并收费,但要求:
禁止冒充TTKDAA开发者(我)进行收费,在进行收费前请告知你的用户此项目的所有者及官方论坛和群聊。
最高收费不能超过25CNY每十万次请求

广告:没有服务器部署服务端?立即注册雨云:[https://www.rainyun.com/tjshawa_](或优惠码tjshawa),首月5折,多地区云服务器/游戏云低价使用!
无论是开网站,Minecraft服务器,部署推理服务(GPU打赢复活赛了),又或是加速ip,都可以来!(河众论坛和主站均托管于此,稳定运行1年未因服务器原因炸掉)
(注册后绑定微信了私信发我可以免费送令牌,至少也给20000次)



















72

主题

39

回帖

291万

积分

官方人员

积分
2915373
 楼主| 发表于 2025-3-29 15:06:44 | 显示全部楼层
请求方式:
HTTP协议,不支持SSL,POST方式。
地址:服务器地址/predict,注意最后没有斜杠。
例如:http://ttkdaa.hezhongkj.top/predict
提交data和token。
data为提交的数据,为100维浮点数组。data为一个浮点数组,格式为:
deltaPitch * 20 + joltPitch * 20 + angle * 20 + joltYaw * 20 + deltaYaw * 20
(加号代表拼接数组,* 20代表这是一个20维浮点数组。相当于把五个包含20个浮点数据的数组拼接在一起。)
(也就代表拼接后的数组的前20维是20gt的deltaPitch数据,21-40维为20gt的joltPitch数据)
注意你不应该在玩家没有转头或移动的情况下收集数据。我们推荐在玩家战斗后的5gt内收集数据,5gt后不要再继续收集,直到下一次攻击。如果玩家在持续攻击,那么可以一直收集数据。

下载Tatako的AimS代码参考使用: AimS.java (7.24 KB, 下载次数: 2)


所有数据都是非负的,使用abs。
deltaPitch:一个tick内pitch的变化。
deltaYaw:一个tick内yaw的变化。
joltPitch:一个tick内pitch的加速度。计算:
  1. Math.abs(deltaPitch - lastDeltaPitch)
复制代码
joltYaw:一个tick内yaw的加速度。计算与pitch相同。
angle:玩家实现相对于目标判定箱中心的角度。
  1. Vector playerLookDir = data.getPlayer().getEyeLocation().getDirection();
  2. Vector playerEyeLoc = data.getPlayer().getEyeLocation().toVector();
  3. Vector entityLoc = target.getLocation().toVector();
  4. Vector playerEntityVec = entityLoc.subtract(playerEyeLoc);
  5. double angle = playerLookDir.angle(playerEntityVec);
复制代码
请求示范:
  1. package com.tjshawa.tatako.check.impl.combat.aim;

  2. import com.google.gson.Gson;
  3. import java.io.*;
  4. import java.net.HttpURLConnection;
  5. import java.net.URL;
  6. import java.util.List;

  7. public class AimbotDetector {
  8.     private static final Gson gson = new Gson();

  9.     private static class DetectionRequest {
  10.         List<Double> data;
  11.         String token; // 新增token字段

  12.         DetectionRequest(List<Double> data, String token) {
  13.             this.data = data;
  14.             this.token = token; // 初始化token
  15.         }
  16.     }


  17.     // 响应体数据结构
  18.     public static class DetectionResponse {
  19.         String message;
  20.         double predicted;
  21.     }

  22.     public static DetectionResponse predict(List<Double> data, String token, final String SERVER_URL) {
  23.         // 构建请求对象
  24.         DetectionRequest request = new DetectionRequest(data, token);
  25.         
  26.         // 创建HTTP连接
  27.         HttpURLConnection connection = null;
  28.         try {
  29.             URL url = new URL(SERVER_URL);
  30.             connection = (HttpURLConnection) url.openConnection();
  31.             connection.setRequestMethod("POST");
  32.             connection.setRequestProperty("Content-Type", "application/json");
  33.             connection.setRequestProperty("Accept", "application/json");
  34.             connection.setDoOutput(true);
  35.             connection.setConnectTimeout(5000);
  36.             connection.setReadTimeout(10000);

  37.             // 发送序列化请求
  38.             try (OutputStream os = connection.getOutputStream();
  39.                  OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8")) {
  40.                 gson.toJson(request, osw);
  41.             }

  42.             // 处理响应
  43.             int status = connection.getResponseCode();
  44.             if (status == 200) {
  45.                 try (InputStream is = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(is, "UTF-8")) {
  46.                     DetectionResponse response = gson.fromJson(isr, DetectionResponse.class);
  47.                     return response;
  48.                 }
  49.             }
  50.         } catch (Exception e) {
  51.             e.printStackTrace();
  52.         } finally {
  53.             if (connection != null) {
  54.                 connection.disconnect();
  55.             }
  56.         }
  57.         return null;
  58.     }
  59. }
复制代码






您需要登录后才可以回帖 登录 | 现在就去注册!

本版积分规则

Archiver|手机版|小黑屋|Hezhong |网站地图

GMT+8, 2026-6-21 03:51 , Processed in 0.108945 second(s), 31 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表