samp | open.mp 联机社区论坛
[wiki系列] openmp/samp 关键字:运算符 - 打印版本

+- samp | open.mp 联机社区论坛 (https://open-mp.cn)
+-- 板块: SA-MP (https://open-mp.cn/forumdisplay.php?fid=12)
+--- 板块: 教程 (https://open-mp.cn/forumdisplay.php?fid=17)
+--- 主题: [wiki系列] openmp/samp 关键字:运算符 (/showthread.php?tid=22)



[wiki系列] openmp/samp 关键字:运算符 - 小鸟unsigned - 03-21-2026

[wiki系列] openmp/samp 关键字:运算符



来自 SA-MP Wiki



目录





char



char 返回存放给定数量字符(打包字符串)所需的 cells 数量。 
即:存放给定字节数所需的 4 字节 cells 数量。

示例:

代码:
4 char

返回 1

代码:
3 char

返回 1(你不能拥有 3/4 个变量)。

代码:
256 char

返回 64(256 ÷ 4)。

此运算符通常用于变量声明:

代码:
new
    someVar[40 char];

会创建一个10 cells大小的数组。

更多关于打包字符串(packed strings)的细节,请阅读 pawn-lang.pdf



defined



检查一个符号(symbol)是否存在。通常用于 #if 语句:

代码:
new
    someVar = 5;
#if defined someVar
    printf("%d", someVar);
#else
    #error The variable 'someVar' isn't defined
#endif

最常见的用法是检查某个 #define 是否存在,并据此生成不同代码:

代码:
#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    return 1;
}
#else
public OnGameModeInit()
{
    return 1;
}
#endif



sizeof



返回数组元素(ELEMENTS)的数量:

代码:
new
    someVar[10];
printf("%d", sizeof (someVar));

输出:

代码:
10

二维数组示例:

代码:
new
    someVar[2][10];
printf("%d %d", sizeof (someVar), sizeof (someVar[]));

输出:

代码:
2 10



state



此关键字与 PAWN 自动机(autonoma)代码相关,因此本文不做介绍。



tagof



tagof 返回一个代表变量标签(tag)的数字:

代码:
new
    someVar,
    Float:someFloat;
printf("%d %d", tagof (someVar), tagof (someFloat));

输出:

代码:
-./,)),(-*,( -1073741820

这其实是一个轻微的显示 bug,但本质上代表:

代码:
0x80000000 0xC0000004

实际应用:检查变量是否为 Float



代码:
new Float: fValue = 6.9;
new tag = tagof (fValue);
if (tag == tagof (Float:))
    print("float");
else
    print("not a float");


#GTA# #圣安地列斯# #侠盗猎车手# #圣安地列斯联机# #samp# #gta联机# #gtasa联机# #openmp# #omp# #open.mp# #gtasa#

社区交流群: 673335567

论坛: https://open-mp.cn/