You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请教Pawn语言MySQL插件中mysql_tquery的格式说明符i/ii的作用

SA-MP 游戏内MySQL异步查询参数解析

以下是游戏内的自杀功能实现函数:

forward killPlayer(playerid);
public killPlayer(playerid)
{
    new query[128];
    if(GetPVarInt(playerid, "commitSuicide") == 1) 
    {
        mysql_format(MainPipeline, query, sizeof(query), "INSERT INTO `kills` (`id`, `killerid`, `killedid`, `date`, `weapon`) VALUES (NULL, %d, %d, NOW(), '/kill')", GetPlayerSQLId(playerid), GetPlayerSQLId(playerid));
        mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);
        SetPVarInt(playerid, "commitSuicide", 0);
        SetHealth(playerid, 0);
    }
    else
        return SendClientMessageEx(playerid, COLOR_RED, "You have taken damage during the 10 seconds, therefore you couldn't commit suicide.");
    return 1;
}

疑问1:下述代码行中的"i"有什么作用?

mysql_tquery(MainPipeline, query, "OnQueryFinish", "i", SENDDATA_THREAD);

疑问2:下述代码中的"ii"有什么作用?

PlayerInfo[playerid][pAccount] += amount;
mysql_format(MainPipeline, szQuery, sizeof(szQuery), "UPDATE `accounts` SET `Bank`=%d WHERE `id` = %d", PlayerInfo[playerid][pAccount], GetPlayerSQLId(playerid));
mysql_tquery(MainPipeline, szQuery, "OnQueryFinish", "ii", SENDDATA_THREAD, playerid);

解析

这里的i和ii是SA-MP MySQL插件(R40版本)中异步查询回调的参数格式说明符,作用是告知插件如何解析传递给回调函数的额外参数:

  • 单个i:表示向OnQueryFinish回调传递了1个整数类型的额外参数,对应代码里的SENDDATA_THREAD(整数常量),插件会按整数类型将该参数传递给回调函数使用。
  • 双ii:表示向OnQueryFinish回调传递了2个整数类型的额外参数,对应代码里的SENDDATA_THREAD和playerid,插件会按顺序将这两个整数参数传递给回调函数。

这类格式符用于定义回调参数的类型和数量,每个字符对应一个参数的类型:i代表整数,s代表字符串,f代表浮点数,多个字符则对应多个参数的类型序列。

内容的提问来源于stack exchange,提问作者Bojack Horseman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:01:01