ZH TW UO Topic mobiles - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 範例 · Languages
客戶已知的角色、NPC、怪物和寵物。 Serial定義了一個特定的生物,body/type其圖形;這些是不同的意義。
| 主題 | 命令與解釋 |
|---|---|
| Players | UO.GetMobiles · UO.FindMobile |
| NPC | UO.IsNpc · UO.FindMobile |
| Monsters | UO.FindType · UO.FindMobile |
| Pets | UO.GetPetsCurrent · UO.GetPetsMax |
| Followers | UO.GetFollowers · UO.GetFollowersMax |
| Name / Serial / Body | UO.GetName · UO.GetSerial · UO.GetType |
| 座標 | UO.GetX · UO.GetY · UO.GetZ |
| Distance | UO.GetDistance |
| Notoriety | UO.Notoriety |
| Status | UO.GetStatus · UO.Alive · UO.Dead · UO.Hidden · UO.Poisoned · UO.Paralyzed |
| Rename | UO.Rename |
UO.GetMobile · UO.GetMobiles · UO.IsNpc
UO.Followers · UO.GetFollowers · UO.FollowersMax · UO.GetFollowersMax · UO.PetsCurrent · UO.GetPetsCurrent · UO.PetsMax · UO.GetPetsMax
UO.Notoriety · UO.GetNotoriety
UO.CanChangeName · UO.MobileCanBeRenamed · UO.Rename · UO.RenameMobile
每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。
var radius = 12;
var allyStatus = 2;
var anyBody = -1;
var maxHeight = 8;
dynamic nearestFirst = true;
dynamic includeMe = false;
dynamic livingOnly = true;
dynamic visibleOnly = true;
var allies = UO.GetMobiles(radius, allyStatus, anyBody, maxHeight, nearestFirst, includeMe, livingOnly, visibleOnly);
if (Truth(ArrayLength(allies) == 0))
{
return null;
}
UO.AddObject("leader", allies[0]);
UO.Follow(allies[0], 2, false);
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;var value = UO.GetNotoriety();
UO.Print("GetNotoriety: " + Convert.ToString(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.CanChangeName(object? id);檢查客戶端能夠重新命名 mobile 的已知標誌。
-
id- 必需的 serial/ID 具體對象: int、十六進位字串或別名 self, backpack, lasttarget, lastobject, lastcontainer、laststatus、finitem、lastcorpse 或名稱 AddObject。這不是 graphic/type。未指定的名稱被解析為 0;該指令不會開啟任何新目標。參數是必需的;為自己傳遞 self.
int 1 - 加載的mobile具有屬性IsRenamable。 int 0 - 屬性遺失,物件不是 mobile、未知或已刪除。這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取本機用戶端模型;無需向伺服器發出請求,無需等待或移動。
- 結果指的是閱讀的那一刻。在UO.Wait或其他操作之後,物件及其標誌可能會發生變化。
- 這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.CanChangeName("self");
UO.Print("CanChangeName: " + Convert.ToString(result));參數與執行流程:
- self 參數明確選擇其字元。狀態 - 僅1/0。
- 這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
var state = UO.CanChangeName("self");
if (Truth(state))
{
UO.Print("Rename permission flag is present");
}
else
{
UO.Print("Rename permission flag is absent");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- IsNpc 排除主體和未知客體。 target 儲存單一serial,而不是對不斷變化的lasttarget 的即時引用。
- 結果引用欄位IsRenamable。僅在客戶端收到適當的狀態後才會更新資料。
return RunScenario();
object? RunScenario()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.IsNPC(target)))
{
var state = UO.CanChangeName(target);
UO.Print("Selected mobile state 1/0: " + Convert.ToString(state));
}
else
{
UO.Print("No loaded mobile selected");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- UO.Wait(500) — 以毫秒為單位暫停。之後,單獨檢查mobile是否仍然存在。
- 比較兩個影像。可能會錯過中間的更改,並且這不是對伺服器事件的連續訂閱。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.IsNPC(target)))
{
var before = UO.CanChangeName(target);
await Delay(500);
if (Truth(UO.IsNPC(target)))
{
var after = UO.CanChangeName(target);
if (Truth(before != after))
{
UO.Print("Flag changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
}
}
else
{
UO.Print("Mobile left the local world");
}
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: id (Any)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.CanChangeName. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CanChangeName:bridge.CanChangeName(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
內部實作程式碼,不能作為獨立腳本執行。
public int CanChangeName(InjectionValue id) => bridge.CanChangeName(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Followers();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:佔用的寵物控制槽。
沒有參數。
int - 佔用寵物控制槽,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.Followers;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsCurrent/Followers 從其狀態type >= 3 報告佔用的控制時隙。一隻寵物可以佔據多個欄位;召喚和馴服生物的規則由伺服器設定。這不是可見的mobile的數量,不是ID寵物的列表,也不是附近動物的數量。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.Followers();
UO.Print("Followers: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.Followers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.Followers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.Followers();
var maximum = UO.PetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Followers]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Followers:bridge.Followers.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.Followers建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.FollowersMax();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:最大寵物控制插槽。
沒有參數。
int - 最大寵物控制槽位,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.FollowersMax;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsMax/FollowersMax 從狀態type >= 3 報告伺服器允許的總插槽限制,而非空閒插槽。佔用的槽位可能多於限制。將可用容量視為最大電流,以 0 取代負結果。團隊不釋放任何東西,不馴服或調用任何東西。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.FollowersMax();
UO.Print("FollowersMax: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.Followers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.Followers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.PetsCurrent();
var maximum = UO.FollowersMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [FollowersMax]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FollowersMax:bridge.FollowersMax.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.FollowersMax建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFollowers();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:佔用的寵物控制槽。
沒有參數。
int - 佔用寵物控制槽,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.Followers;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsCurrent/Followers 從其狀態type >= 3 報告佔用的控制時隙。一隻寵物可以佔據多個欄位;召喚和馴服生物的規則由伺服器設定。這不是可見的mobile的數量,不是ID寵物的列表,也不是附近動物的數量。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetFollowers();
UO.Print("GetFollowers: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.GetFollowers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.GetFollowers();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.GetFollowers();
var maximum = UO.PetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetFollowers]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Followers:bridge.Followers.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.Followers建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFollowersMax();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:最大寵物控制插槽。
沒有參數。
int - 最大寵物控制槽位,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.FollowersMax;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsMax/FollowersMax 從狀態type >= 3 報告伺服器允許的總插槽限制,而非空閒插槽。佔用的槽位可能多於限制。將可用容量視為最大電流,以 0 取代負結果。團隊不釋放任何東西,不馴服或調用任何東西。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetFollowersMax();
UO.Print("GetFollowersMax: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.Followers();
var maximum = UO.GetFollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.Followers();
var maximum = UO.GetFollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.PetsCurrent();
var maximum = UO.GetFollowersMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetFollowersMax]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FollowersMax:bridge.FollowersMax.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.FollowersMax建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetMobile(object? id);一一收集屬性的緊湊記錄ID。
-
id— 特定对象的串行/ID:int、十进制/十六进制字符串或设置别名self、backpack、lasttarget、lastobject 或名称AddObject。這不是graphic/type。
陣列 9 字段: [0] int serial, [1] string 姓名, [2] int X, [3] int Y, [4] int Z, [5] int HP, [6] int MaxHP, [7] int notoriety, [8] int 方向 0..7。對於未知的 ID 該數組還有 9 欄位:已傳輸 ID 已儲存,名稱為空,不可用的數字屬性等於 0。這不是完整的 Pascal 記錄 TMobile。
- 讀取客戶端已經下載的資料。該命令不會開啟容器、移動項目或從整個伺服器下載物件。
- 陣列 - 索引從 0 開始的陣列。保存在var,訪問前檢查ArrayLength。拍攝快照後,元素可能會從世界中消失:在採取行動之前檢查Exists(serial)。
- 拥有九个字段并不能确认角色的存在;使用Exists。該指令本身不會檢查 ID 屬於 Mobile。可能會傳回項目的名稱/座標和零字元屬性。
- 另一個角色的HP/MaxHP取決於伺服器發送的比例。 Z——高度,不是一层设备。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetMobile("self");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- ID=self。 [1] 是名稱,[5]/[6] 是當前和最大HP,而不是Mana。
- 該數組有固定的九個欄位。在進入世界之前,可以使用空名和0/0。
var mobile = UO.GetMobile("self");
UO.Print(mobile[1] + ": " + Convert.ToString(mobile[5]) + "/" + Convert.ToString(mobile[6]));參數與執行流程:
- lasttarget必須表示一個字元。 [2]/[3]/[4] - X/Y/Z世界。
- 首先,檢查物體是否存在。如果目標是袋子中的物品,則坐標指的是其阿甘。
return RunScenario();
object? RunScenario()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(target)))
{
var mobile = UO.GetMobile(target);
UO.Print(Convert.ToString(mobile[2]) + "," + Convert.ToString(mobile[3]) + "," + Convert.ToString(mobile[4]));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- [7] - 意指惡名,[8] - 方向0..7。沒有字段是type。
- 此指令讀取已知數據,不會指示角色或切換戰鬥模式。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(target)))
{
var mobile = UO.GetMobile(target);
UO.Print("Notoriety: " + Convert.ToString(mobile[7]));
UO.Print("Direction: " + Convert.ToString(mobile[8]));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: id (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetName:bridge.GetName(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetZ:bridge.GetZ(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetHP:bridge.GetHP(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetMaxHP:bridge.GetMaxHP(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety:bridge.GetNotoriety(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetDir:bridge.GetDir(id).
內部實作程式碼,不能作為獨立腳本執行。
case "getmobile":
{
int id = Arg(0);
return new InjectionValue(new[]
{
new InjectionValue(id), new InjectionValue(bridge.GetName(id)), new InjectionValue(bridge.GetX(id)),
new InjectionValue(bridge.GetY(id)), new InjectionValue(bridge.GetZ(id)), new InjectionValue(bridge.GetHP(id)),
new InjectionValue(bridge.GetMaxHP(id)), new InjectionValue(bridge.GetNotoriety(id)), new InjectionValue(bridge.GetDir(id))
});
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetMobiles();
dynamic UO.GetMobiles(object? distance);
dynamic UO.GetMobiles(object? distance, object? notoriety);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body, object? maxZ);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body, object? maxZ, object? nearest);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body, object? maxZ, object? nearest, object? includeSelf);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body, object? maxZ, object? nearest, object? includeSelf, object? aliveOnly);
dynamic UO.GetMobiles(object? distance, object? notoriety, object? body, object? maxZ, object? nearest, object? includeSelf, object? aliveOnly, object? visibleOnly);取得匹配載入字元/NPC的陣列ID。當腳本需要檢查多個目標、選擇自己的目標、計算環境或在操作之前新增自己的條件時,需要使用它。
-
distance— 單元格中的水平半徑(含):5 允許距離 0..5。距離為 max(abs(dx),abs(dy)),因此相鄰對角線也是 1。預設情況下或如果數字為負數,則採用UO.FindDistance()而非無限搜尋。 0 留下相同的 X/Y 單元。不是路線的長度;此參數不檢查障礙物和地板。 -
notoriety— 與從伺服器接收的角色的關係狀態: 0 - 未知, 1 — Innocent, 2 — Ally, 3 — Gray, 4 — Criminal, 5 — Enemy, 6 — Murderer, 7 - 刀槍不入。數字表示一種狀態; ”5|6" 或數字數組 - 以上任何一個。這不是衣服或班級的顏色。負數(通常 -1), 0xFFFF、「any」、空字串或空數組分別停用此過濾器。沒有有效數字的無效字串找不到任何人。狀態的順序不設定優先順序。篩選 5 選擇敵人,而不是自動選擇任何人 NPC/怪物;實際值取決於伺服器。 -
body- 角色身體的圖形/NPC,而不是特定角色的ID,也不是所穿盔甲的type。數字、十六進位字串、字串「0x0190|0x0191」或數字陣列。 0x0190 (400) - 人類男性; 0x0191 (401) - 女性人類。面具將兩個身體結合在一起。此清單不會自動包含其他種族、幽靈或變形;標準圖形體類型表。負數(預設為 -1)、0xFFFF、「任意」、空字串或單獨的空數組 - 任何主體。沒有有效數字的未知文字會產生空結果。 -
maxZ— 最大絕對值(目標的 Z - 自己角色的 Z),包含在內,以世界 Z 單位表示。這不是樓層數或 X/Y 單元格數。 maxZ=4 與 Z 玩家10 允許 Z 目標 6..14;0 要求高度完全相同。預設情況下/對於負數,採用UO.FindVertical()。在樓梯上,相等的 Z 可以消除所需的目標。即使 Z 值有很小的差異也不能證明地板的可及性。 -
nearest- true/1 將陣列從近到遠排序,若相等則依 serial 排序。 false/0 預設保留客戶端順序。這不是附加半徑或對一個物件的選擇。 - 如果所有其他過濾器和 Ignore 允許,
includeSelf- true/1 允許您啟用 self。 false/0 預設排除 self。包含並不能保證結果中存在self。 -
aliveOnly- true/1 排除具有 IsDead != 0 的手機; false/0預設不加入該條件。不將HP與零比較,不搜尋屍體物品,不保證目標被召喚後仍活著。 -
visibleOnly- true/1 根據當前狀態ClassicUO要求IsVisible=1;false/0 預設不新增條件。這是載入物件對客戶端的可見性,而不是牆壁/視線檢查。對於幾何檢查,有一個單獨的帶有座標的UO.CheckLOS;伺服器仍可能拒絕該操作。
陣列 - serial 手機。空數組意味著沒有匹配項;在目標[0]之前檢查ArrayLength。不是body/type,不是總計HP,不是1/0。無參形式仍適用FindDistance/FindVertical/Ignore,但不包括self。
- 本地搜尋:僅限已下載的手機。考虑Ignore; self 被排除在外,支持它的命令中显式的 includeSelf=true 除外。容器和物品不是移動設備。
- 這些條件一起適用 (AND)。 body/恶名内的有效替代方案通过OR组合。搜尋不會改變 FindItem、FindCount 和 GetFoundItems。
- 在 body/notoriety 中,具有有效数字的掩码恰好使用这些:“any|5”仍然将其限制为值5。有效数字旁边的空白/无效元素将被忽略。如果沒有限制,則單獨傳遞-1。不要将此规则应用于classMask:未知类名拒绝整个列表。
- 團隊不會打開世界區域,不會跑向球門,也不檢查路線的通行性。在選擇和伺服器處理之間,世界的狀態可能會發生變化。
- true和1的傳輸對於標誌來說是等效的,false和0也是如此。其他非零數也轉換為true,但8/9不是單獨的模式;使用透明true/false。
- 支援0..8位置參數。此指令中不存在classMask和顏色;此處不要保留參數AttackNearest的順序。
- 數組 - 快照ID。目標稍後可能會消失;重新檢查 Exists 搜尋和操作之間是否有等待。沒有任何東西會自行攻擊。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetMobiles(5, 2, -1, 8, true, false, true, true);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- nearestFirst=true使盟友[0]成為最接近的盟友。 Follow 包括背景行走;停止UO.Follow(0)。盟友的名字/職業不是由該命令決定的。
var radius = 12;
var allyStatus = 2;
var anyBody = -1;
var maxHeight = 8;
dynamic nearestFirst = true;
dynamic includeMe = false;
dynamic livingOnly = true;
dynamic visibleOnly = true;
var allies = UO.GetMobiles(radius, allyStatus, anyBody, maxHeight, nearestFirst, includeMe, livingOnly, visibleOnly);
if (Truth(ArrayLength(allies) == 0))
{
return null;
}
UO.AddObject("leader", allies[0]);
UO.Follow(allies[0], 2, false);
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 這裡nearest=false是合適的:計數器很重要。 ArrayLength 是手機數量,而不是堆疊中的物品數量。 Alarm 在日誌中列印一條通知。
return RunScenario();
object? RunScenario()
{
var enemies = UO.GetMobiles(5, "5|6", -1, 4, false, false, true, true);
var count = ArrayLength(enemies);
if (Truth(count == 1))
{
UO.Attack(enemies[0]);
}
else if (Truth(count > 1))
{
UO.Alarm();
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 距離=0 - 相同X/Y,maxZ=0 - 相同Z。 body僅限於兩個graphic。 includeSelf=true 允許self,但它仍必須匹配body 和aliveOnly。此範例報告同一方塊上的其他字元。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var sameCell = UO.GetMobiles(0, -1, "0x0190|0x0191", 0, false, true, true, false);
var i = 0;
var others = 0;
while (Truth(i < ArrayLength(sameCell)))
{
if (Truth(sameCell[i] != UO.GetSerial("self")))
{
others += 1;
}
i += 1;
}
if (Truth(others > 0))
{
UO.Alarm();
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)參數: distance (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)參數: distance (Any), notoriety (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)參數: distance (Any), notoriety (Any), body (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)參數: distance (Any), notoriety (Any), body (Any), maxZ (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)參數: distance (Any), notoriety (Any), body (Any), maxZ (Any), nearest (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)
UO.GetMobiles(distance, notoriety, body, maxZ, nearest, includeSelf) — UO.GetMobiles(Any,Any,Any,Any,Any,Any)
參數: distance (Any), notoriety (Any), body (Any), maxZ (Any), nearest (Any), includeSelf (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)
UO.GetMobiles(distance, notoriety, body, maxZ, nearest, includeSelf, aliveOnly) — UO.GetMobiles(Any,Any,Any,Any,Any,Any,Any)
參數: distance (Any), notoriety (Any), body (Any), maxZ (Any), nearest (Any), includeSelf (Any), aliveOnly (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)
UO.GetMobiles(distance, notoriety, body, maxZ, nearest, includeSelf, aliveOnly, visibleOnly) — UO.GetMobiles(Any,Any,Any,Any,Any,Any,Any,Any)
參數: distance (Any), notoriety (Any), body (Any), maxZ (Any), nearest (Any), includeSelf (Any), aliveOnly (Any), visibleOnly (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCompactSearchApi [GetMobiles]. -
InjectionScript.Runtime.InjectionApiUO.CompactGetMobiles:CompactGetMobiles(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values => CompactGetMobiles(values)Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetNotoriety();
int UO.GetNotoriety(object? id);從客戶端模型中讀取角色的聲譽。
-
id— 僅在指定單參數形式中的可選物件:serial 數字/十六進位字串、「self」、「lasttarget」或名稱 AddObject。這不是graphic/type。不爭論,就讀出了自己的性格。在讀取另一個物件之前,檢查UO.Exists;未知的名稱不會開啟範圍。
int — 0=unknown, 1=innocent, 2=ally, 3=gray, 4=criminal, 5=enemy, 6=murderer, 7=無懈可擊。這是狀態碼,不是 hue、業力或名譽。未知 mobile 給出 0.
- 讀取已經接收到的本地資料。該請求不會開啟狀態,也不會強制伺服器發送更新。死亡、地圖轉換或物件刪除後,兩次呼叫之間的值可能會改變。
- C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetNotoriety();
UO.Print("GetNotoriety: " + Convert.ToString(result));參數與執行流程:
- 不帶參數的呼叫指的是 self。角色的聲譽以價值儲存。
- Convert.ToString 轉換要輸出的數字,不改變結果的意義。
var value = UO.GetNotoriety();
UO.Print("GetNotoriety: " + Convert.ToString(value));參數與執行流程:
- 該值在沒有任何參數的情況下被讀取一次。角色的聲望用於顯示的計算或條件中。
- 數字閾值是腳本條件的範例,而不是新的客戶端限制。此欄位儲存上述伺服器單元和限制。
return RunScenario();
object? RunScenario()
{
var value = UO.GetNotoriety();
if (Truth(value == 3) || Truth(value == 4))
{
UO.Print("Gray or criminal notoriety");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 單一參數選擇物件lasttarget;其serial必須為客戶所知。圖文/type這裡就不轉了。
- 即使Exists為正,另一個物件的資料也可能是未知的。對於包中物品的座標,獲取的是容器的位置,而不是世界點。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
var targetValue = UO.GetNotoriety("lasttarget");
UO.Print("Selected value: " + Convert.ToString(targetValue));
}
else
{
UO.Print("Target is not loaded");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetNotoriety]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety:bridge.GetNotoriety(bridge.Self). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.GetNotoriety(bridge.Self)建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
參數: id (Any/Integer/String)
結果: int / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety:bridge.GetNotoriety(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "getnotoriety": return new InjectionValue(bridge.GetNotoriety(Arg(0)));參數: id (Any/Integer/String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.GetNotoriety. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety:bridge.GetNotoriety(id).
內部實作程式碼,不能作為獨立腳本執行。
public int GetNotoriety(int id) => bridge.GetNotoriety(id);參數: id (Any/Integer/String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.GetNotoriety. -
InjectionScript.Runtime.InjectionApiUO.GetNotoriety:GetNotoriety(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
內部實作程式碼,不能作為獨立腳本執行。
public int GetNotoriety(string id) => GetNotoriety(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetPetsCurrent();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:佔用的寵物控制槽。
沒有參數。
int - 佔用寵物控制槽,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.Followers;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsCurrent/Followers 從其狀態type >= 3 報告佔用的控制時隙。一隻寵物可以佔據多個欄位;召喚和馴服生物的規則由伺服器設定。這不是可見的mobile的數量,不是ID寵物的列表,也不是附近動物的數量。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetPetsCurrent();
UO.Print("GetPetsCurrent: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.GetPetsCurrent();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.GetPetsCurrent();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.GetPetsCurrent();
var maximum = UO.PetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetPetsCurrent]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Followers:bridge.Followers.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.Followers建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetPetsMax();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:最大寵物控制插槽。
沒有參數。
int - 最大寵物控制槽位,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.FollowersMax;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsMax/FollowersMax 從狀態type >= 3 報告伺服器允許的總插槽限制,而非空閒插槽。佔用的槽位可能多於限制。將可用容量視為最大電流,以 0 取代負結果。團隊不釋放任何東西,不馴服或調用任何東西。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.GetPetsMax();
UO.Print("GetPetsMax: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.Followers();
var maximum = UO.GetPetsMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.Followers();
var maximum = UO.GetPetsMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.PetsCurrent();
var maximum = UO.GetPetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [GetPetsMax]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FollowersMax:bridge.FollowersMax.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.FollowersMax建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsNPC(object? objID);根據顯式傳遞的 serial 檢查載入的 mobile。
-
objID- 必需的 serial/ID 具體對象: int、十六進位字串或別名 self, backpack, lasttarget, lastobject, lastcontainer、laststatus、finitem、lastcorpse 或名稱 AddObject。這不是 graphic/type。未指定的名稱被解析為 0;該指令不會開啟任何新目標。僅在 IsNpc 也沒有參數的註冊形式:使用 self.
int 1 - 已加載,未刪除 mobile。 int 0 - 未知物件serial 或遠端物件。 IsNPC這個名字並不意味著「僅限非玩家角色」:你自己的角色和其他玩家也會給出1。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取本機用戶端模型;無需向伺服器發出請求,無需等待或移動。
- 結果指的是閱讀的那一刻。在UO.Wait或其他操作之後,物件及其標誌可能會發生變化。
- 遊戲管理器將IsNpc和IsNPC視為同名變體;在C#源代碼中,使用公共形式的精確拼字。這個結果無法可靠地區分玩家和NPC;這種區分的規則取決於伺服器。
在 C# 中,名稱字元區分大小寫:UO.IsNPC 需要一個參數;不帶參數的形式 UO.IsNpc() 選擇 self。這兩個名稱都會檢查mobile,包括玩家,而不是專門檢查NPC。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.IsNPC(UO.Self());
UO.Print("IsNPC: " + Convert.ToString(result));參數與執行流程:
- 這個 C# 形式需要一個參數。自己的角色也給出1;這是對mobile的測試,而不僅僅是NPC的測試。
int mobile = UO.IsNPC(UO.Self());
UO.Print($"Self is a loaded mobile: {mobile != 0}");參數與執行流程:
- 序號取自lasttarget。只有當客戶端已知 mobile 時,座標才是唯讀的。
return RunScenario();
object? RunScenario()
{
string target = UO.GetSerial("lasttarget");
if (UO.IsNPC(target) == 0)
return false;
UO.Print($"Mobile coordinates: {UO.GetX(target)}, {UO.GetY(target)}, {UO.GetZ(target)}");
return true;
return null;
}參數與執行流程:
- 進入世界的角色是mobile,背包是一個物品。結果指的是本地閱讀的時刻。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
int character = UO.IsNPC(UO.Self());
int bag = UO.IsNPC(UO.Backpack());
UO.Print($"Character mobile flag: {character}; backpack mobile flag: {bag}");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: objID (Any)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsNpc:bridge.IsNpc(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "isnpc": return new InjectionValue(bridge.IsNpc(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsNpc();
int UO.IsNpc(object? id);-
id- 必需的 serial/ID 具體對象: int、十六進位字串或別名 self, backpack, lasttarget, lastobject, lastcontainer、laststatus、finitem、lastcorpse 或名稱 AddObject。這不是 graphic/type。未指定的名稱被解析為 0;該指令不會開啟任何新目標。僅在 IsNpc 也沒有參數的註冊形式:使用 self.
int 1 - 已加載,未刪除 mobile。 int 0 - 未知物件serial 或遠端物件。 IsNPC這個名字並不意味著「僅限非玩家角色」:你自己的角色和其他玩家也會給出1。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取本機用戶端模型;無需向伺服器發出請求,無需等待或移動。
- 結果指的是閱讀的那一刻。在UO.Wait或其他操作之後,物件及其標誌可能會發生變化。
- 遊戲管理器將IsNpc和IsNPC視為同名變體;在C#源代碼中,使用公共形式的精確拼字。這個結果無法可靠地區分玩家和NPC;這種區分的規則取決於伺服器。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.IsNpc();
UO.Print("IsNpc: " + Convert.ToString(result));參數與執行流程:
- 無參形式選擇self。結果1/0不是serial,無法將NPC與玩家區分開來。
int mobile = UO.IsNpc();
if (mobile != 0) UO.Print("Self is a loaded mobile");參數與執行流程:
- 預選lasttarget。首先,檢查物件的載入情況; mobile 分類並不能定義他的敵意。
return RunScenario();
object? RunScenario()
{
string target = UO.GetSerial("lasttarget");
if (UO.Exists(target) == 0)
UO.Print("Target is not loaded");
else
UO.Print(UO.IsNpc(target) != 0 ? "Mobile: NPC or player" : "Loaded item");
return null;
}參數與執行流程:
- 其他人的點擊量可以被伺服器標準化。該支票不要求提供完整的狀態。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
string target = UO.GetSerial("lasttarget");
if (UO.IsNpc(target) != 0)
UO.Print($"Known hits: {UO.GetHP(target)}/{UO.GetMaxHP(target)}");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.IsNpc. -
InjectionScript.Runtime.InjectionApiUO.IsNpc:IsNpc(bridge.Self). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
內部實作程式碼,不能作為獨立腳本執行。
public int IsNpc() => IsNpc(bridge.Self);參數: id (Integer/String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.IsNpc. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsNpc:bridge.IsNpc(id).
內部實作程式碼,不能作為獨立腳本執行。
public int IsNpc(int id) => bridge.IsNpc(id);參數: id (Integer/String)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.IsNpc. -
InjectionScript.Runtime.InjectionApiUO.IsNpc:IsNpc(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
內部實作程式碼,不能作為獨立腳本執行。
public int IsNpc(string id) => IsNpc(GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.MobileCanBeRenamed(object? mobID);檢查客戶端能夠重新命名 mobile 的已知標誌。
-
mobID- 必需的 serial/ID 具體對象: int、十六進位字串或別名 self, backpack, lasttarget, lastobject, lastcontainer、laststatus、finitem、lastcorpse 或名稱 AddObject。這不是 graphic/type。未指定的名稱被解析為 0;該指令不會開啟任何新目標。參數是必需的;為自己傳遞 self.
int 1 - 加載的mobile具有屬性IsRenamable。 int 0 - 屬性遺失,物件不是 mobile、未知或已刪除。這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取本機用戶端模型;無需向伺服器發出請求,無需等待或移動。
- 結果指的是閱讀的那一刻。在UO.Wait或其他操作之後,物件及其標誌可能會發生變化。
- 這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.MobileCanBeRenamed("self");
UO.Print("MobileCanBeRenamed: " + Convert.ToString(result));參數與執行流程:
- self 參數明確選擇其字元。狀態 - 僅1/0。
- 這是最後的伺服器權限,例如針對寵物的權限。此指令不會重新命名對象,也不保證伺服器會接受後續請求。
var state = UO.MobileCanBeRenamed("self");
if (Truth(state))
{
UO.Print("Rename permission flag is present");
}
else
{
UO.Print("Rename permission flag is absent");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- IsNpc 排除主體和未知客體。 target 儲存單一serial,而不是對不斷變化的lasttarget 的即時引用。
- 結果引用欄位IsRenamable。僅在客戶端收到適當的狀態後才會更新資料。
return RunScenario();
object? RunScenario()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.IsNPC(target)))
{
var state = UO.MobileCanBeRenamed(target);
UO.Print("Selected mobile state 1/0: " + Convert.ToString(state));
}
else
{
UO.Print("No loaded mobile selected");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- UO.Wait(500) — 以毫秒為單位暫停。之後,單獨檢查mobile是否仍然存在。
- 比較兩個影像。可能會錯過中間的更改,並且這不是對伺服器事件的連續訂閱。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var target = UO.GetSerial("lasttarget");
if (Truth(UO.IsNPC(target)))
{
var before = UO.MobileCanBeRenamed(target);
await Delay(500);
if (Truth(UO.IsNPC(target)))
{
var after = UO.MobileCanBeRenamed(target);
if (Truth(before != after))
{
UO.Print("Flag changed: " + Convert.ToString(before) + " -> " + Convert.ToString(after));
}
}
else
{
UO.Print("Mobile left the local world");
}
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: mobID (Any)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CanChangeName:bridge.CanChangeName(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "mobilecanberenamed": return new InjectionValue(bridge.CanChangeName(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Notoriety();從客戶端模型中讀取角色的聲譽。
沒有參數。
int — 0=unknown, 1=innocent, 2=ally, 3=gray, 4=criminal, 5=enemy, 6=murderer, 7=無懈可擊。這是狀態碼,不是 hue、業力或名譽。未知 mobile 給出 0.
- 讀取已經接收到的本地資料。該請求不會開啟狀態,也不會強制伺服器發送更新。死亡、地圖轉換或物件刪除後,兩次呼叫之間的值可能會改變。
- C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.Notoriety();
UO.Print("Notoriety: " + Convert.ToString(result));參數與執行流程:
- 不帶參數的呼叫指的是 self。角色的聲譽以價值儲存。
- Convert.ToString 轉換要輸出的數字,不改變結果的意義。
var value = UO.Notoriety();
UO.Print("Notoriety: " + Convert.ToString(value));參數與執行流程:
- 該值在沒有任何參數的情況下被讀取一次。角色的聲望用於顯示的計算或條件中。
- 數字閾值是腳本條件的範例,而不是新的客戶端限制。此欄位儲存上述伺服器單元和限制。
return RunScenario();
object? RunScenario()
{
var value = UO.Notoriety();
if (Truth(value == 3) || Truth(value == 4))
{
UO.Print("Gray or criminal notoriety");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 兩個不帶參數的呼叫都會讀取它們的目前值。 UO.Wait(1000) 在兩次拍攝之間提供以毫秒為單位的暫停。
- 所比較的變化是角色的聲譽。榜樣不會改變世界上的任何事情,也不會無止盡地等待。這一秒鐘內的事件可能會被錯過。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var before = UO.Notoriety();
await Delay(1000);
var after = UO.Notoriety();
if (Truth(before != after))
{
UO.Print("Before: " + Convert.ToString(before) + "; after: " + Convert.ToString(after));
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.RegisterCharacterGetterAliases [Notoriety]. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetNotoriety:bridge.GetNotoriety(bridge.Self). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
() => bridge.GetNotoriety(bridge.Self)建立 API: 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.PetsCurrent();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:佔用的寵物控制槽。
沒有參數。
int - 佔用寵物控制槽,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.Followers;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsCurrent/Followers 從其狀態type >= 3 報告佔用的控制時隙。一隻寵物可以佔據多個欄位;召喚和馴服生物的規則由伺服器設定。這不是可見的mobile的數量,不是ID寵物的列表,也不是附近動物的數量。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.PetsCurrent();
UO.Print("PetsCurrent: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.PetsCurrent();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.PetsCurrent();
var maximum = UO.FollowersMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.PetsCurrent();
var maximum = UO.PetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Followers:bridge.Followers.
內部實作程式碼,不能作為獨立腳本執行。
case "petscurrent": return new InjectionValue(bridge.Followers);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.PetsMax();幫助提前決定角色是否有足夠的空間容納下一個馴服或召喚的生物。 Followers 顯示佔用的控制槽位,FollowersMax 是其總限制。這不是附近動物的數量或移動命令Follow。 讀取角色的狀態計數器:最大寵物控制插槽。
沒有參數。
int - 最大寵物控制槽位,客戶端模型中的0..255。 0 可以是真實值、無資料或遺失/損壞的播放器。這是一個數量,不是bool、ID或type:1表示一個單位,而不是成功。該指令不會迭代對象,也不傳回數組。
- 例如,5 中的3 已被佔用 - 時隙 2 空閒。值4可以表示一個槽位有四個生物,一個槽位有四個生物,或其他一些組合。對於 2 的生物,「忙碌 < 最大值」檢查槽是不夠的:您需要最大值 - 目前 >= 2。特定生物的成本和限制由伺服器決定;不要用常數 5 取代 FollowersMax。
- 0並不能證明寵物遺失、死亡或釋放:可能為空或狀態尚未更新。計數器的增加只是控制權改變的附加標誌;它並不能決定哪個生物被馴服。也要檢查來自伺服器和寵物本身的訊息。這些位置並不等於馬厩中的位置。
- 此指令不帶參數。使用上面的確切簽名。
- 如果目前Player存在且尚未被銷毀,則在遊戲執行緒上讀取需要Player.FollowersMax;否則0。設備不排序,獎金不重新計算,狀態不要求,並且沒有等待更新。存在的鬼魂不等於被摧毀的玩家。
- PetsMax/FollowersMax 從狀態type >= 3 報告伺服器允許的總插槽限制,而非空閒插槽。佔用的槽位可能多於限制。將可用容量視為最大電流,以 0 取代負結果。團隊不釋放任何東西,不馴服或調用任何東西。
- CharacterStatus 在更新之前檢查所需的主體。 Weight 可用其自己的擴展狀態,插槽 - 與 type 3, Luck - 和 type 4, 伺服器 WeightMax - 和 type 5。沒有可選計數器的緊湊/舊包會留下其先前的快取。新玩家從頭開始;該通話並未證明收到新狀態。
- 這些函式負責註冊 API,不會在每次命令呼叫時重新執行。 C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
- 每次呼叫都會重新讀取本地資料。變數儲存快照;各個讀取可能會收到不同的伺服器更新。非零結果不會測試連線。零可以是一個值,也可以沒有資料。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.PetsMax();
UO.Print("PetsMax: " + Convert.ToString(result));參數與執行流程:
- 目前 - 忙碌,最大 - 限制,freeSlots - 差異。如果存在未知/零限製或不一致的數據,則該範例將終止,但不會斷言空間可用。此命令僅讀取最新狀態,不要求新的更新。
var current = UO.Followers();
var maximum = UO.PetsMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(current > maximum))
{
UO.Print("Follower status is unavailable or inconsistent");
return null;
}
var freeSlots = maximum - current;
UO.Print("Control slots: " + Convert.ToString(current) + "/" + Convert.ToString(maximum));
UO.Print("Free slots: " + Convert.ToString(freeSlots));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 先選擇所需的動物,使其ID位於lasttarget中。 requiredSlots=2 - 範例設置,將其替換為伺服器上該生物的實際成本。如果沒有足夠的空間,則不會設定目標並且不會呼叫技能。否則,目標的隊列在單一參數UseSkill(“Animal Taming”)之前準備好。開始嘗試並不能保證成功:技能、範圍、可馴服性和伺服器回應都很重要。
return RunScenario();
object? RunScenario()
{
var requiredSlots = 2;
var current = UO.Followers();
var maximum = UO.PetsMax();
if (Truth(UO.Self() == 0) || Truth(maximum <= 0) || Truth(maximum - current < requiredSlots))
{
UO.Print("Not enough known control slots");
return null;
}
var animal = UO.LastTarget();
if (Truth(animal == 0))
{
UO.Print("Select the animal first");
return null;
}
UO.WaitTargetObject(animal);
UO.UseSkill("Animal Taming");
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CanAddFollower 是一個完全宣告的使用者幫助器,而不是新的 UO 指令。如果有足夠的快取限制,則回傳1/true,否則回傳0/false。 extraSlots參數是添加生物的成本,而不是其type/ID。 2 - 範例;此功能不馴服或召喚。應在行動前立即重複檢查。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(CanAddFollower(2)))
{
UO.Print("Capacity check passed; verify the creature cost before acting");
}
else
{
UO.Print("Insufficient capacity or unavailable status");
}
return null;
}
dynamic CanAddFollower(dynamic extraSlots)
{
if (Truth(extraSlots < 0) || Truth(UO.Self() == 0))
{
return false;
}
var current = UO.PetsCurrent();
var maximum = UO.PetsMax();
if (Truth(maximum <= 0))
{
return false;
}
return extraSlots <= maximum - current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FollowersMax:bridge.FollowersMax.
內部實作程式碼,不能作為獨立腳本執行。
case "petsmax": return new InjectionValue(bridge.FollowersMax);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Rename(object? mobile, object? newName);請求更改角色/寵物名稱。
-
mobile— 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。 -
newName— 透過 ToString 發送文字;儲存為已傳送。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 順序是serial,然後是新名字。橋接器。 RenameMobile 呼叫GameActions。 Rename(serial,名稱)。 API 不會檢查 CanChangeName 或更改本地 Name 本身。
- 伺服器檢查重命名的權限。對於寵物,首先檢查MobileCanBeRenamed;該請求並不保證該名稱被接受。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Rename");
UO.Rename(UO.GetSerial("lasttarget"), "Companion");參數與執行流程:
- 請求更改角色/寵物名稱。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.MobileCanBeRenamed(id)))
{
UO.Rename(id, "Companion");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 順序是serial,然後是新名字。橋接器。 RenameMobile 呼叫GameActions。 Rename(serial,名稱)。 API 不會檢查 CanChangeName 或更改本地 Name 本身。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)) && Truth(UO.MobileCanBeRenamed(id)))
{
UO.Rename(id, "Guardian");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 伺服器檢查重命名的權限。對於寵物,首先檢查MobileCanBeRenamed;該請求並不保證該名稱被接受。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
RenamePet(UO.GetSerial("lasttarget"), "Companion");
return null;
}
void RenamePet(dynamic id, dynamic name)
{
if (Truth(UO.MobileCanBeRenamed(id)) && Truth(Len(name) > 0))
{
UO.Rename(id, name);
}
}
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: mobile (Any), newName (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RenameMobile:bridge.RenameMobile(Arg(0, bridge.LastTarget), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "rename": bridge.RenameMobile(Arg(0, bridge.LastTarget), Text(1)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.RenameMobile(object? mobID, object? newName);請求更改角色/寵物名稱。
-
mobID— 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。 -
newName— 透過 ToString 發送文字;儲存為已傳送。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 順序是serial,然後是新名字。橋接器。 RenameMobile 呼叫GameActions。 Rename(serial,名稱)。 API 不會檢查 CanChangeName 或更改本地 Name 本身。
- 伺服器檢查重命名的權限。對於寵物,首先檢查MobileCanBeRenamed;該請求並不保證該名稱被接受。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.RenameMobile");
UO.RenameMobile(UO.GetSerial("lasttarget"), "Companion");參數與執行流程:
- 請求更改角色/寵物名稱。
var id = UO.GetSerial("lasttarget");
if (Truth(UO.MobileCanBeRenamed(id)))
{
UO.RenameMobile(id, "Companion");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 順序是serial,然後是新名字。橋接器。 RenameMobile 呼叫GameActions。 Rename(serial,名稱)。 API 不會檢查 CanChangeName 或更改本地 Name 本身。
return RunScenario();
object? RunScenario()
{
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)) && Truth(UO.MobileCanBeRenamed(id)))
{
UO.RenameMobile(id, "Guardian");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 伺服器檢查重命名的權限。對於寵物,首先檢查MobileCanBeRenamed;該請求並不保證該名稱被接受。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
RenamePet(UO.GetSerial("lasttarget"), "Companion");
return null;
}
void RenamePet(dynamic id, dynamic name)
{
if (Truth(UO.MobileCanBeRenamed(id)) && Truth(Len(name) > 0))
{
UO.RenameMobile(id, name);
}
}
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: mobID (Any), newName (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RenameMobile:bridge.RenameMobile(Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1).
內部實作程式碼,不能作為獨立腳本執行。
case "renamemobile": bridge.RenameMobile(Arg(0), Text(1)); return InjectionValue.Unit;