SASA 扩展SAMPFUNCS

框架 Sf

坐标、数学、内存、字符串与输入

sa · 扩展 SAMPFUNCS · 仅 SA-MP;需 SAMPFUNCS

共 82 条。命令参数、坐标转换、数学、内存/串、模块与剪贴板。调用见 Lua / Redux

命令 / 坐标 / 输入

SF_GET_PARAMS_OF_LAST_TRIGGERED_COMMAND · 0B35
Sf.GetCmdParams

返回指向字符串的指针,内容为控制台或 SAMP 聊天最后一条命令的参数。

0B35 SF_GET_PARAMS_OF_LAST_TRIGGERED_COMMAND
out: pointer
SF_COMMAND_RETURN · 0B43
Sf.CmdRet

标记命令回调结束,用作其返回语句。

0B43 SF_COMMAND_RETURN
SF_WORLD_COORDS_TO_WINDOW_SCREEN_COORDS · 0B55
Sf.From3DTo2DCoords

把世界 3D 坐标转为窗口屏幕坐标(像素)。

0B55 SF_WORLD_COORDS_TO_WINDOW_SCREEN_COORDS
in: worldCoordX, worldCoordY, worldCoordZ
out: screenCoordX, screenCoordY
SF_SET_BUTTON · 0B56
Sf.SetButton

设置游戏按键(非键盘键)的按下状态。

0B56 SF_SET_BUTTON
in: buttonId, behaviorValue
SF_GET_SCREEN_RESOLUTION · 0B5A
Sf.GetScreenRes

返回当前窗口分辨率(像素)。

0B5A SF_GET_SCREEN_RESOLUTION
out: width, height
SF_GET_CURSOR_COORD · 0B5E
Sf.GetCursorCoord

返回鼠标在窗口上的坐标(像素)。

0B5E SF_GET_CURSOR_COORD
out: windowScreenCoordX, windowScreenCoordY
SF_WINDOW_SCREEN_COORDS_TO_GAME_SCREEN_COORDS · 0B5F
Sf.FromWindowToGameScreenCoords

把窗口屏幕坐标转为对应的游戏屏幕坐标。

0B5F SF_WINDOW_SCREEN_COORDS_TO_GAME_SCREEN_COORDS
in: windowScreenCoordX, windowScreenCoordY
out: gameScreenCoordX, gameScreenCoordY
SF_GAME_SCREEN_COORDS_TO_WINDOW_SCREEN_COORDS · 0B60
Sf.FromGameToWindowScreenCoords

把游戏屏幕坐标转为对应的窗口屏幕坐标。

0B60 SF_GAME_SCREEN_COORDS_TO_WINDOW_SCREEN_COORDS
in: gameScreenCoordX, gameScreenCoordY
out: windowScreenCoordX, windowScreenCoordY
SF_HEX_TO_ARGB · 0B66
Sf.HexToArgb

0xAARRGGBB 颜色拆成各通道。

0B66 SF_HEX_TO_ARGB
in: color
out: alpha, red, green, blue
SF_ARGB_TO_HEX · 0B67
Sf.ArgbToHex

把 ARGB 通道合成 0xAARRGGBB

0B67 SF_ARGB_TO_HEX
in: alpha, red, green, blue
out: color
SF_WINDOW_SCREEN_COORDS_TO_WORLD_COORDS · 0B8F
Sf.From2DTo3DCoords

按指定深度把窗口屏幕坐标(像素)转为世界 3D 坐标。

0B8F SF_WINDOW_SCREEN_COORDS_TO_WORLD_COORDS
in: screenCoordX, screenCoordY, depth
out: worldCoordX, worldCoordY, worldCoordZ

脚本 / 计时 / 射线

SF_PAUSE_SCRIPT · 0BDE
Sf.PauseScript

把指定脚本的 isActive 设为 0。

0BDE SF_PAUSE_SCRIPT
in: scriptId
SF_RESUME_SCRIPT · 0BDF
Sf.ResumeScript

把指定脚本的 isActive 设为 1。

0BDF SF_RESUME_SCRIPT
in: scriptId
SF_PUSH_LOCAL_VARIABLES · 0BFA
Sf.PushLocalVars

把当前脚本(主脚本或函数)全部局部变量压栈保存,可用 SF_POP_LOCAL_VARIABLES 恢复。

0BFA SF_PUSH_LOCAL_VARIABLES
SF_POP_LOCAL_VARIABLES · 0BFB
Sf.PopLocalVars

SF_PUSH_LOCAL_VARIABLES 保存的值恢复当前脚本局部变量。

0BFB SF_POP_LOCAL_VARIABLES
SF_GET_TICK_COUNT · 0BFE
Sf.GetTickCount

返回系统已运行毫秒数。需要精确计时时代替 TIMERA/TIMERB

0BFE SF_GET_TICK_COUNT
out: tickCount
SF_PROCESS_LINE_OF_SIGHT · 0BFF
Sf.ProcessLineOfSight

按标志从向量起点到终点做碰撞检测。

0BFF SF_PROCESS_LINE_OF_SIGHT
in: fromCoordX, fromCoordY, fromCoordZ, toCoordX, toCoordY, toCoordZ, checkBuildings, checkCars, checkChars, checkObjects, checkParticles, seeThrough, ignoreCameras
out: colPointPtr, entityPtr

数学

SF_ABS · 0C00
Sf.Abs

返回数值绝对值(浮点或整数)。

0C00 SF_ABS
in: number
out: result
SF_RADIANS_TO_DEGREES · 0C01
Sf.RadToDeg

弧度转角度。

0C01 SF_RADIANS_TO_DEGREES
in: radians
out: degrees
SF_DEGREES_TO_RADIANS · 0C02
Sf.DegToRad

角度转弧度。

0C02 SF_DEGREES_TO_RADIANS
in: degrees
out: radians
SF_SIN · 0C03
Sf.Sin

返回指定弧度的正弦。

0C03 SF_SIN
in: radians
out: ratio
SF_ASIN · 0C04
Sf.ASin

返回指定比值的反正弦(弧度)。

0C04 SF_ASIN
in: ratio
out: radians
SF_COS · 0C05
Sf.Cos

返回指定弧度的余弦。

0C05 SF_COS
in: radians
out: ratio
SF_ACOS · 0C06
Sf.ACos

返回指定比值的反余弦(弧度)。

0C06 SF_ACOS
in: ratio
out: radians
SF_TAN · 0C07
Sf.Tan

返回指定弧度的正切。

0C07 SF_TAN
in: radians
out: ratio
SF_ATAN · 0C08
Sf.ATan

返回指定比值的反正切(弧度)。

0C08 SF_ATAN
in: ratio
out: radians
SF_POW · 0C09
Sf.Pow

求幂。

0C09 SF_POW
in: coefficient, exponent
out: power
SF_CEIL · 0C0A
Sf.Ceil

向上取整。

0C0A SF_CEIL
in: number
out: result
SF_FLOOR · 0C0B
Sf.Floor

向下取整。

0C0B SF_FLOOR
in: number
out: result

内存 / 数组

SF_READ_MEMORY_WITH_OFFSET · 0C0C
Sf.ReadMemoryWithOffset

按偏移从内存地址读取指定大小的值。

0C0C SF_READ_MEMORY_WITH_OFFSET
in: address, offset, size
out: value
SF_WRITE_MEMORY_WITH_OFFSET · 0C0D
Sf.WriteMemoryWithOffset

按偏移向内存地址写入指定大小的值。用在 if 里。

0C0D SF_WRITE_MEMORY_WITH_OFFSET
in: address, offset, size, value
SF_READ_ELEMENT_OF_4BYTES_ARRAY · 0C0E
Sf.ReadElementOf4BytesArray

读取数组指定下标元素的值。

0C0E SF_READ_ELEMENT_OF_4BYTES_ARRAY
in: array, index
out: value
SF_WRITE_ELEMENT_OF_4BYTES_ARRAY · 0C0F
Sf.WriteElementOf4BytesArray

向数组指定下标写入值。用在 if 里。

0C0F SF_WRITE_ELEMENT_OF_4BYTES_ARRAY
in: array, index, value
SF_MEMCPY · 0C10
Sf.MemCpy

按大小从源地址拷贝内存块到目标地址。用在 if 里。

0C10 SF_MEMCPY
in: destination, source, size
SF_MEMFILL · 0C11
Sf.MemFill

按字节用 value 填充指定大小内存块。用在 if 里。

0C11 SF_MEMFILL
in: address, byteValue, size
SF_MEMEQ · 0C12
Sf.MemEq

两块内存内容是否相同。用在 if 里。

0C12 SF_MEMEQ
in: addressA, addressB, size
SF_READ_ELEMENT_OF_SIZED_ARRAY · 0C1D
Sf.ReadElementOfSizedArray

读取定长数组下标元素,每元素大小限 1–4 字节。

0C1D SF_READ_ELEMENT_OF_SIZED_ARRAY
in: array, index, size
out: value
SF_WRITE_ELEMENT_OF_SIZED_ARRAY · 0C1E
Sf.WriteElementOfSizedArray

向定长数组指定下标写入值,每元素大小限 1–4。用在 if 里。

0C1E SF_WRITE_ELEMENT_OF_SIZED_ARRAY
in: array, index, size, value
SF_GET_ELEMENT_POINTER_OF_BUFFER_ARRAY · 0C1F
Sf.GetElementPointerOfBufferArray

返回定长缓冲数组中指定下标元素的指针。

0C1F SF_GET_ELEMENT_POINTER_OF_BUFFER_ARRAY
in: array, index, size
out: address
SF_WRITE_STRING_TO_ELEMENT_OF_BUFFER_ARRAY · 0C20
Sf.WriteStringToElementOfBufferArray

向定长缓冲数组指定下标写入字符串。

0C20 SF_WRITE_STRING_TO_ELEMENT_OF_BUFFER_ARRAY
in: array, index, size, string

字符串

SF_STRCPY · 0C13
Sf.StrCpy

把字符串从源拷到目标。

0C13 SF_STRCPY
in: destination, source
SF_STREQ · 0C14
Sf.StrEq

两字符串区分大小写是否相等。用在 if 里。

0C14 SF_STREQ
in: stringA, stringB
SF_STRCAT · 0C15
Sf.StrCat

appendedString 追加到 stringBuffer 末尾。

0C15 SF_STRCAT
in: stringBuffer, appendedString
SF_STRTOK · 0C16
Sf.StrTok

stringBuffer 中找分隔符,首次命中处写 null 并返回下一 token 指针。用作条件时未找到为假。

0C16 SF_STRTOK
in: stringBuffer, delimiters
out: token
SF_STRLEN · 0C17
Sf.StrLen

返回字符串长度。

0C17 SF_STRLEN
in: string
out: length
SF_STRSTR · 0C18
Sf.StrStr

返回源字符串中首次出现子串的指针。

0C18 SF_STRSTR
in: source, subString
out: matchAddress
SF_STRCSPN · 0C19
Sf.StrCspn

在字符串中查找 characterList 任一字符,返回首次出现下标;无匹配时返回字符串长度。

0C19 SF_STRCSPN
in: source, characterList
out: index
SF_ATOI · 0C1A
Sf.AtoI

把 ascii 字符串转为十进制整数。

0C1A SF_ATOI
in: ascii
out: integer
SF_ATOF · 0C1B
Sf.AtoF

把 ascii 字符串转为浮点数。

0C1B SF_ATOF
in: ascii
out: float
SF_ITOA · 0C1C
Sf.ItoA

把 baseN 整数转为 ascii 字符串写入 stringBuffer

0C1C SF_ITOA
in: integer, radix
out: stringBuffer
SF_STRIEQ · 0C21
Sf.StriEq

两字符串不区分大小写是否相等。用在 if 里。

0C21 SF_STRIEQ
in: stringA, stringB
SF_BIN_TO_HEX · 0C22
Sf.BintoHex

二进制转十六进制文本写入 stringBuffer。缓冲不够时条件为假。

0C22 SF_BIN_TO_HEX
in: binaryString, stringBuffer, bufferSize
SF_HEX_TO_BIN · 0C23
Sf.HextoBin

十六进制文本转二进制写入 stringBuffer。缓冲不够时条件为假。

0C23 SF_HEX_TO_BIN
in: hexString, stringBuffer, bufferSize
SF_STRNCPY · 0C24
Sf.StrnCpy

安全拷贝字符串到 stringBuffer,超出 bufferSize 会截断。

0C24 SF_STRNCPY
in: stringBuffer, source, bufferSize
SF_STRNEQ · 0C25
Sf.StrnEq

两区分大小写字符串前 length 个字符是否相同。用在 if 里。

0C25 SF_STRNEQ
in: stringA, stringB, length
SF_STRUPR · 0C26
Sf.StrUpr

把源字符串字母转为大写写入目标。

0C26 SF_STRUPR
in: source
out: destination
SF_STRNCAT · 0C27
Sf.StrnCat

安全把 appendedString 追加到 stringBuffer,总长超 bufferSize 会截断。

0C27 SF_STRNCAT
in: stringBuffer, appendedString, bufferSize
SF_STRLWR · 0C28
Sf.StrLwr

把源字符串字母转为小写写入目标。

0C28 SF_STRLWR
in: source
out: destination
SF_STRISTR · 0C29
Sf.StriStr

返回源字符串中首次不区分大小写出现子串的指针。

0C29 SF_STRISTR
in: source, subString
out: matchAddress
SF_STRCHR · 0C2A
Sf.StrChr

返回源字符串中首次出现指定 ascii 字符的指针。

0C2A SF_STRCHR
in: source, character
out: matchAddress
SF_STRPBRK · 0C2B
Sf.StrPBrk

在源字符串中查找 characterList 任一字符,返回首次出现指针。

0C2B SF_STRPBRK
in: source, characterList
out: matchAddress
SF_STRRCHR · 0C2C
Sf.StrRChr

返回源字符串中最后一次出现指定 ascii 字符的指针。

0C2C SF_STRRCHR
in: source, character
out: matchAddress
SF_STRREV · 0C2D
Sf.StrRev

反转源字符串字符顺序并写入目标。

0C2D SF_STRREV
in: source
out: destination
SF_STRSPN · 0C2E
Sf.StrSpn

查找源字符串中首个不在 characterList 中的字符下标;全匹配则返回串长。

0C2E SF_STRSPN
in: source, characterList
out: index
SF_STRTOL · 0C2F
Sf.StrTol

跳过源串前导空白,按 baseN 解析长整数;遇非数字停止,未扫描地址写入 unscannedAddress

0C2F SF_STRTOL
in: source, radix
out: unscannedAddress, longInteger

矩阵 / 四元数

SF_MATRIX_TO_QUAT · 0C30
Sf.MatrixToQuat

把矩阵结构转为四元数写入 quaternionBuffer

0C30 SF_MATRIX_TO_QUAT
in: matrix
out: quaternionBuffer
SF_QUAT_TO_MATRIX · 0C31
Sf.QuatToMatrix

把四元数结构转为矩阵写入 matrixBuffer

0C31 SF_QUAT_TO_MATRIX
in: quaternion
out: matrixBuffer
SF_AXES_TO_QUAT · 0C32
Sf.AxesToQuat

把旋转矩阵基向量转为四元数值。

0C32 SF_AXES_TO_QUAT
in: pitchVectorX, pitchVectorY, pitchVectorZ, rollVectorX, rollVectorY, rollVectorZ, yawVectorX, yawVectorY, yawVectorZ
out: quaternionW, quaternionX, quaternionY, quaternionZ
SF_QUAT_TO_AXES · 0C33
Sf.MathQuatToMatrixVectors

把四元数值转为旋转矩阵基向量。

0C33 SF_QUAT_TO_AXES
in: quaternionW, quaternionX, quaternionY, pitchVectorZ
out: pitchVectorX, pitchVectorY, pitchVectorZ, rollVectorX, rollVectorY, rollVectorZ, yawVectorX, yawVectorY, yawVectorZ

系统 / 模块 / 键 / 剪贴板

SF_STRING_POINTER · 0C3A
Sf.StrPtr

把指定字符串指针存入变量。

0C3A SF_STRING_POINTER
in: variable, string, unused
SF_STORE_OS_ENVIRONMENT_VARIABLE · 0C67
Sf.GetOsEnv

把 Windows 环境变量内容写入 buffer。用在 if 里。

0C67 SF_STORE_OS_ENVIRONMENT_VARIABLE
in: varName, stringBuffer, buffersize
SF_UNICODE_TO_ANSI · 0C68
Sf.UnicodeToAnsi

把 Unicode 转成 ANSI 写入 ansiStringBuffer。用在 if 里。

0C68 SF_UNICODE_TO_ANSI
in: unicodeString, ansiStringBuffer, bufferSize
SF_ANSI_TO_UNICODE · 0C69
Sf.AnsiToUnicode

ANSI 转 Unicode 写入缓冲。用在 if 里。

0C69 SF_ANSI_TO_UNICODE
in: ansiString, unicodeStringBuffer, buffersize
SF_GET_LOADED_MODULE · 0C70
Sf.GetModule

返回已加载模块 moduleName 的句柄。

0C70 SF_GET_LOADED_MODULE
in: moduleName
out: handle
SF_GET_MODULE_PROCEDURE · 0C71
Sf.GetModuleProc

返回 moduleHandlefunctionName 的函数指针。

0C71 SF_GET_MODULE_PROCEDURE
in: moduleHandle, functionName
out: functionPtr
SF_SET_KEY_STATUS · 0C72
Sf.SetKeyStatus

设置指定虚拟键码是否按下。

0C72 SF_SET_KEY_STATUS
in: keyCode, isPressed
SF_SET_CHARACTER_KEY_STATUS · 0C73
Sf.SetCharKeyStatus

设置以 ASCII 字符表示的虚拟键是否按下。

0C73 SF_SET_CHARACTER_KEY_STATUS
in: ascii, isPressed
SF_KEY_JUST_PRESSED · 0C89
Sf.KeyJustPressed

若指定虚拟键码刚被按下则为真。

0C89 SF_KEY_JUST_PRESSED
in: keyCode
SF_WRITE_TEXT_TO_CLIPBOARD · 0C8D
Sf.ClipboardWriteText

把文本写入剪贴板。

0C8D SF_WRITE_TEXT_TO_CLIPBOARD
in: text
SF_READ_DATA_FROM_CLIPBOARD · 0C8E
Sf.ClipboardReadData

从剪贴板复制原始二进制或文本到 buffer。用在 if 里。

0C8E SF_READ_DATA_FROM_CLIPBOARD
in: buffer, size
SF_GET_CLEO_LIBRARY_VERSION · 0C92
Sf.GetCleoLibVer

返回已安装的 CLEO 版本。

0C92 SF_GET_CLEO_LIBRARY_VERSION
out: version
SF_MAKE_SCRIPT_PRIVATE · 1337
Sf.MakeScriptPrivate

使执行本命令的脚本对其它脚本不可见。

1337 SF_MAKE_SCRIPT_PRIVATE
in: isPrivate

On this page