框架 Sf
坐标、数学、内存、字符串与输入
sa · 扩展 SAMPFUNCS · 仅 SA-MP;需 SAMPFUNCS
共 82 条。命令参数、坐标转换、数学、内存/串、模块与剪贴板。调用见 Lua / Redux。
命令 / 坐标 / 输入
返回指向字符串的指针,内容为控制台或 SAMP 聊天最后一条命令的参数。
0B35 SF_GET_PARAMS_OF_LAST_TRIGGERED_COMMAND
out: pointer标记命令回调结束,用作其返回语句。
0B43 SF_COMMAND_RETURN把世界 3D 坐标转为窗口屏幕坐标(像素)。
0B55 SF_WORLD_COORDS_TO_WINDOW_SCREEN_COORDS
in: worldCoordX, worldCoordY, worldCoordZ
out: screenCoordX, screenCoordY返回当前窗口分辨率(像素)。
0B5A SF_GET_SCREEN_RESOLUTION
out: width, height返回鼠标在窗口上的坐标(像素)。
0B5E SF_GET_CURSOR_COORD
out: windowScreenCoordX, windowScreenCoordY把窗口屏幕坐标转为对应的游戏屏幕坐标。
0B5F SF_WINDOW_SCREEN_COORDS_TO_GAME_SCREEN_COORDS
in: windowScreenCoordX, windowScreenCoordY
out: gameScreenCoordX, gameScreenCoordY把游戏屏幕坐标转为对应的窗口屏幕坐标。
0B60 SF_GAME_SCREEN_COORDS_TO_WINDOW_SCREEN_COORDS
in: gameScreenCoordX, gameScreenCoordY
out: windowScreenCoordX, windowScreenCoordY把 0xAARRGGBB 颜色拆成各通道。
0B66 SF_HEX_TO_ARGB
in: color
out: alpha, red, green, blue把 ARGB 通道合成 0xAARRGGBB。
0B67 SF_ARGB_TO_HEX
in: alpha, red, green, blue
out: color按指定深度把窗口屏幕坐标(像素)转为世界 3D 坐标。
0B8F SF_WINDOW_SCREEN_COORDS_TO_WORLD_COORDS
in: screenCoordX, screenCoordY, depth
out: worldCoordX, worldCoordY, worldCoordZ脚本 / 计时 / 射线
把指定脚本的 isActive 设为 0。
0BDE SF_PAUSE_SCRIPT
in: scriptId把指定脚本的 isActive 设为 1。
0BDF SF_RESUME_SCRIPT
in: scriptId把当前脚本(主脚本或函数)全部局部变量压栈保存,可用 SF_POP_LOCAL_VARIABLES 恢复。
0BFA SF_PUSH_LOCAL_VARIABLES用 SF_PUSH_LOCAL_VARIABLES 保存的值恢复当前脚本局部变量。
0BFB SF_POP_LOCAL_VARIABLES返回系统已运行毫秒数。需要精确计时时代替 TIMERA/TIMERB。
0BFE SF_GET_TICK_COUNT
out: tickCount按标志从向量起点到终点做碰撞检测。
0BFF SF_PROCESS_LINE_OF_SIGHT
in: fromCoordX, fromCoordY, fromCoordZ, toCoordX, toCoordY, toCoordZ, checkBuildings, checkCars, checkChars, checkObjects, checkParticles, seeThrough, ignoreCameras
out: colPointPtr, entityPtr数学
返回数值绝对值(浮点或整数)。
0C00 SF_ABS
in: number
out: result弧度转角度。
0C01 SF_RADIANS_TO_DEGREES
in: radians
out: degrees角度转弧度。
0C02 SF_DEGREES_TO_RADIANS
in: degrees
out: radians返回指定弧度的正弦。
0C03 SF_SIN
in: radians
out: ratio返回指定比值的反正弦(弧度)。
0C04 SF_ASIN
in: ratio
out: radians返回指定弧度的余弦。
0C05 SF_COS
in: radians
out: ratio返回指定比值的反余弦(弧度)。
0C06 SF_ACOS
in: ratio
out: radians返回指定弧度的正切。
0C07 SF_TAN
in: radians
out: ratio返回指定比值的反正切(弧度)。
0C08 SF_ATAN
in: ratio
out: radians求幂。
0C09 SF_POW
in: coefficient, exponent
out: power向上取整。
0C0A SF_CEIL
in: number
out: result向下取整。
0C0B SF_FLOOR
in: number
out: result内存 / 数组
按偏移从内存地址读取指定大小的值。
0C0C SF_READ_MEMORY_WITH_OFFSET
in: address, offset, size
out: value按偏移向内存地址写入指定大小的值。用在 if 里。
0C0D SF_WRITE_MEMORY_WITH_OFFSET
in: address, offset, size, value读取数组指定下标元素的值。
0C0E SF_READ_ELEMENT_OF_4BYTES_ARRAY
in: array, index
out: value向数组指定下标写入值。用在 if 里。
0C0F SF_WRITE_ELEMENT_OF_4BYTES_ARRAY
in: array, index, value按大小从源地址拷贝内存块到目标地址。用在 if 里。
0C10 SF_MEMCPY
in: destination, source, size按字节用 value 填充指定大小内存块。用在 if 里。
0C11 SF_MEMFILL
in: address, byteValue, size两块内存内容是否相同。用在 if 里。
0C12 SF_MEMEQ
in: addressA, addressB, size读取定长数组下标元素,每元素大小限 1–4 字节。
0C1D SF_READ_ELEMENT_OF_SIZED_ARRAY
in: array, index, size
out: value向定长数组指定下标写入值,每元素大小限 1–4。用在 if 里。
0C1E SF_WRITE_ELEMENT_OF_SIZED_ARRAY
in: array, index, size, value返回定长缓冲数组中指定下标元素的指针。
0C1F SF_GET_ELEMENT_POINTER_OF_BUFFER_ARRAY
in: array, index, size
out: address向定长缓冲数组指定下标写入字符串。
0C20 SF_WRITE_STRING_TO_ELEMENT_OF_BUFFER_ARRAY
in: array, index, size, string字符串
把字符串从源拷到目标。
0C13 SF_STRCPY
in: destination, source两字符串区分大小写是否相等。用在 if 里。
0C14 SF_STREQ
in: stringA, stringB把 appendedString 追加到 stringBuffer 末尾。
0C15 SF_STRCAT
in: stringBuffer, appendedString在 stringBuffer 中找分隔符,首次命中处写 null 并返回下一 token 指针。用作条件时未找到为假。
0C16 SF_STRTOK
in: stringBuffer, delimiters
out: token返回字符串长度。
0C17 SF_STRLEN
in: string
out: length返回源字符串中首次出现子串的指针。
0C18 SF_STRSTR
in: source, subString
out: matchAddress在字符串中查找 characterList 任一字符,返回首次出现下标;无匹配时返回字符串长度。
0C19 SF_STRCSPN
in: source, characterList
out: index把 ascii 字符串转为十进制整数。
0C1A SF_ATOI
in: ascii
out: integer把 ascii 字符串转为浮点数。
0C1B SF_ATOF
in: ascii
out: float把 baseN 整数转为 ascii 字符串写入 stringBuffer。
0C1C SF_ITOA
in: integer, radix
out: stringBuffer两字符串不区分大小写是否相等。用在 if 里。
0C21 SF_STRIEQ
in: stringA, stringB二进制转十六进制文本写入 stringBuffer。缓冲不够时条件为假。
0C22 SF_BIN_TO_HEX
in: binaryString, stringBuffer, bufferSize十六进制文本转二进制写入 stringBuffer。缓冲不够时条件为假。
0C23 SF_HEX_TO_BIN
in: hexString, stringBuffer, bufferSize安全拷贝字符串到 stringBuffer,超出 bufferSize 会截断。
0C24 SF_STRNCPY
in: stringBuffer, source, bufferSize两区分大小写字符串前 length 个字符是否相同。用在 if 里。
0C25 SF_STRNEQ
in: stringA, stringB, length把源字符串字母转为大写写入目标。
0C26 SF_STRUPR
in: source
out: destination安全把 appendedString 追加到 stringBuffer,总长超 bufferSize 会截断。
0C27 SF_STRNCAT
in: stringBuffer, appendedString, bufferSize把源字符串字母转为小写写入目标。
0C28 SF_STRLWR
in: source
out: destination返回源字符串中首次不区分大小写出现子串的指针。
0C29 SF_STRISTR
in: source, subString
out: matchAddress返回源字符串中首次出现指定 ascii 字符的指针。
0C2A SF_STRCHR
in: source, character
out: matchAddress在源字符串中查找 characterList 任一字符,返回首次出现指针。
0C2B SF_STRPBRK
in: source, characterList
out: matchAddress返回源字符串中最后一次出现指定 ascii 字符的指针。
0C2C SF_STRRCHR
in: source, character
out: matchAddress反转源字符串字符顺序并写入目标。
0C2D SF_STRREV
in: source
out: destination查找源字符串中首个不在 characterList 中的字符下标;全匹配则返回串长。
0C2E SF_STRSPN
in: source, characterList
out: index跳过源串前导空白,按 baseN 解析长整数;遇非数字停止,未扫描地址写入 unscannedAddress。
0C2F SF_STRTOL
in: source, radix
out: unscannedAddress, longInteger矩阵 / 四元数
把矩阵结构转为四元数写入 quaternionBuffer。
0C30 SF_MATRIX_TO_QUAT
in: matrix
out: quaternionBuffer把四元数结构转为矩阵写入 matrixBuffer。
0C31 SF_QUAT_TO_MATRIX
in: quaternion
out: matrixBuffer把旋转矩阵基向量转为四元数值。
0C32 SF_AXES_TO_QUAT
in: pitchVectorX, pitchVectorY, pitchVectorZ, rollVectorX, rollVectorY, rollVectorZ, yawVectorX, yawVectorY, yawVectorZ
out: quaternionW, quaternionX, quaternionY, quaternionZ把四元数值转为旋转矩阵基向量。
0C33 SF_QUAT_TO_AXES
in: quaternionW, quaternionX, quaternionY, pitchVectorZ
out: pitchVectorX, pitchVectorY, pitchVectorZ, rollVectorX, rollVectorY, rollVectorZ, yawVectorX, yawVectorY, yawVectorZ系统 / 模块 / 键 / 剪贴板
把指定字符串指针存入变量。
0C3A SF_STRING_POINTER
in: variable, string, unused把 Windows 环境变量内容写入 buffer。用在 if 里。
0C67 SF_STORE_OS_ENVIRONMENT_VARIABLE
in: varName, stringBuffer, buffersize把 Unicode 转成 ANSI 写入 ansiStringBuffer。用在 if 里。
0C68 SF_UNICODE_TO_ANSI
in: unicodeString, ansiStringBuffer, bufferSizeANSI 转 Unicode 写入缓冲。用在 if 里。
0C69 SF_ANSI_TO_UNICODE
in: ansiString, unicodeStringBuffer, buffersize返回已加载模块 moduleName 的句柄。
0C70 SF_GET_LOADED_MODULE
in: moduleName
out: handle返回 moduleHandle 中 functionName 的函数指针。
0C71 SF_GET_MODULE_PROCEDURE
in: moduleHandle, functionName
out: functionPtr设置指定虚拟键码是否按下。
0C72 SF_SET_KEY_STATUS
in: keyCode, isPressed设置以 ASCII 字符表示的虚拟键是否按下。
0C73 SF_SET_CHARACTER_KEY_STATUS
in: ascii, isPressed若指定虚拟键码刚被按下则为真。
0C89 SF_KEY_JUST_PRESSED
in: keyCode把文本写入剪贴板。
0C8D SF_WRITE_TEXT_TO_CLIPBOARD
in: text从剪贴板复制原始二进制或文本到 buffer。用在 if 里。
0C8E SF_READ_DATA_FROM_CLIPBOARD
in: buffer, size返回已安装的 CLEO 版本。
0C92 SF_GET_CLEO_LIBRARY_VERSION
out: version使执行本命令的脚本对其它脚本不可见。
1337 SF_MAKE_SCRIPT_PRIVATE
in: isPrivate