samp吧 关注:15,529贴子:401,400
  • 4回复贴,共1

让你的KOOK连接到SA-MP

只看楼主收藏回复

起因是看到国内有一个KOOK社交平台和国外Discord相似,并且Discord已经有连接SA-MP的插件。能够把SA-MP的消息由机器人发送到指定频道。对此就基于此功能让KOOK机器人可以把消息发送到指定频道,做了个简易版。
非常感谢智子提供了解决乱码问题,没有他就没有了现在的
首先需要下载智子提供的GBK转UTF8 inc文件
https://github.com/SelendisAlex/GBKToUTF8
以及需要
#include <requests>
https://github.com/Southclaws/pawn-requests
#include <strlib>
https://github.com/oscar-broman/strlib


IP属地:广东1楼2025-03-16 21:09回复
    创建你的机器人
    设置你的机器人连接模式为websocket
    点击服务器管理 - 创建消息接收管道 你要对你的频道进行创建然后复制回调地址保存
    代码
    #include <a_samp>
    #include <strlib>
    #include <GBKToUTF8>
    #include <requests>
    /*
    定义要发送的频道
    */
    new RequestsClient:joinserver; //比如谁加入了服务器
    KOOK_MessageID()
    {
    joinserver = RequestsClient("把你的回调地址放在这里");
    }
    main()
    {
    KOOK_MessageID(); //频道ID
    }
    KOOK_Message(RequestsClient:client, const string[])
    {
    new utf8Text[128];
    GbkToUtf8(utf8Text, string);
    RequestJSON(
    client,
    "",
    HTTP_METHOD_POST,
    "OnPostJson",
    JsonObject(
    "content", JsonString(utf8Text)
    ),
    RequestHeaders("Content-Type", "application/json")
    );
    }
    forward OnPostJson(Request:id, E_HTTP_STATUS:status, Node:node);
    public OnPostJson(Request:id, E_HTTP_STATUS:status, Node:node)
    {
    if(status == HTTP_STATUS_OK)
    {
    printf("发送成功!");
    }
    else
    {
    printf("发送失败");
    }
    }
    public OnplayerConnect(playerid)
    {
    new name[MAX_PLAYER_NAME + 1], string[128];
    GetPlayerName(playerid, name, sizeof(name));
    format(string, sizeof(string), "*** %s 进入了服务器", name);
    KOOK_Message(joinserver, string);
    }


    IP属地:广东2楼2025-03-16 21:13
    收起回复

      你可以对你的机器人做任何事情比如监管管理员操作,玩家发的广告等等。
      我把代码放到了Git
      https://github.com/siwode1/kook-sa-mp-/blob/main/test.pwn


      IP属地:广东3楼2025-03-16 21:14
      回复
        强的


        IP属地:广东来自Android客户端4楼2025-03-16 21:17
        回复