Skip to content

API CLng zh tw

Codex edited this page Sep 23, 2026 · 1 revision

CLng

ClassicUO / Basic IDE

Home · API · Basic

將數值四捨五入為整數,例如算出的延遲或物品數量上限。

完整語法

CLng(value:Any) -> Integer

參數

  • value — 必須提供一個 Integer/Decimal 或數字 String。文字使用小數點和可選指數,不受介面語言影響;此處 "0x0EED" 不是數字字串。無效文字、Array、Object、Unit 轉成 0。先以 IsNumeric 檢查輸入。

傳回值

Integer,有號 32 位元:正好一半時朝遠離零的方向取整,2.5 -> 3、-2.5 -> -3。CInt 和 CLng 實作相同,CLng 不產生 64 位元值。請用有限值,取整結果必須在 -2147483648..2147483647。這不是 Boolean。

行為

  • 本機計算,不發封包、不選目標、不執行遊戲動作。BasicDouble 先用固定文化格式解析數字文字。本引擎規則不完全等同 VB.NET。Decimal 儲存 double;CInt/CLng 的中點向遠離零取整。

內部函式:從呼叫到結果

本機計算,不發封包、不選目標、不執行遊戲動作。BasicDouble 先用固定文化格式解析數字文字。本引擎規則不完全等同 VB.NET。Decimal 儲存 double;CInt/CLng 的中點向遠離零取整。

1. BasicDouble

必須提供一個 Integer/Decimal 或數字 String。文字使用小數點和可選指數,不受介面語言影響;此處 "0x0EED" 不是數字字串。無效文字、Array、Object、Unit 轉成 0。先以 IsNumeric 檢查輸入。

Decimal / double

專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs; 函式 BasicDouble.

2. Register

將數值四捨五入為整數,例如算出的延遲或物品數量上限。

Integer,有號 32 位元:正好一半時朝遠離零的方向取整,2.5 -> 3、-2.5 -> -3。CInt 和 CLng 實作相同,CLng 不產生 64 位元值。請用有限值,取整結果必須在 -2147483648..2147483647。這不是 Boolean。

專案原始碼: external/InjectionScript/src/InjectionScript/Runtime/InjectionApi.cs; 函式 Register.

範例

CLng — 1

# CLng1
#
# 將數值四捨五入為整數例如算出的延遲或物品數量上限#
# Integer有號 32 位元正好一半時朝遠離零的方向取整2.5 -> 3-2.5 -> -3CInt  CLng 實作相同CLng 不產生 64
# 位元值請用有限值取整結果必須在 -2147483648..2147483647這不是 BooleanSUB Main()
    # value=2.5Main 傳回 Integer 3採用遠離零取整而不是取偶數的 2RETURN CLng(2.5)
END SUB

參數與執行說明:

  • value=2.5。Main 傳回 Integer 3,採用遠離零取整,而不是取偶數的 2。

CLng — 2

# CLng2
#
# 將數值四捨五入為整數例如算出的延遲或物品數量上限#
# Integer有號 32 位元正好一半時朝遠離零的方向取整2.5 -> 3-2.5 -> -3CInt  CLng 實作相同CLng 不產生 64
# 位元值請用有限值取整結果必須在 -2147483648..2147483647這不是 BooleanSUB Main()
    # offset=-2.5 是有正負號的座標偏移Main 傳回 -3範例只計算不移動角色VAR offset = -2.5
    RETURN CLng(offset)
END SUB

參數與執行說明:

  • offset=-2.5 是有正負號的座標偏移。Main 傳回 -3;範例只計算,不移動角色。

CLng — 3

# CLng3
#
# 將數值四捨五入為整數例如算出的延遲或物品數量上限#
# Integer有號 32 位元正好一半時朝遠離零的方向取整2.5 -> 3-2.5 -> -3CInt  CLng 實作相同CLng 不產生 64
# 位元值請用有限值取整結果必須在 -2147483648..2147483647這不是 BooleanSUB Main()
    # ReadDelay 接收 secondsText="0.35"IsNumeric 檢查格式CDbl 讀取秒數無效文字NaN 或不在 0.1..5 秒內的值傳回 -1有效值乘
    # 1000 後取整Main 傳回 350 毫秒函式準備下一步可用的延遲本身不等待RETURN ReadDelay("0.35")
END SUB

SUB ReadDelay(secondsText)
    IF NOT IsNumeric(secondsText) THEN
        RETURN -1
    END IF
    VAR seconds = CDbl(secondsText)
    IF CStr(seconds) = "NaN" OR seconds < 0.1 OR seconds > 5 THEN
        RETURN -1
    END IF
    RETURN CLng(seconds * 1000)
END SUB

參數與執行說明:

  • ReadDelay 接收 secondsText="0.35"。IsNumeric 檢查格式,CDbl 讀取秒數。無效文字、NaN 或不在 0.1..5 秒內的值傳回 -1;有效值乘 1000 後取整,Main 傳回 350 毫秒。函式準備下一步可用的延遲,本身不等待。

Русский · English · Українська · Français · Deutsch · Italiano · Español · 繁體中文 · 日本語 · 한국어

Clone this wiki locally