请教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
相关产品推荐
相关产品推荐

