ZH TW UO Topic targeting - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 範例 · Languages
使用目標遊標和預設響應WaitTarget進行手動響應。設定預期目標和執行操作是不同的操作。
| 主題 | 命令與解釋 |
|---|---|
| Target | UO.Target |
| TargetID | UO.TargetID |
| TargetToObject | UO.TargetToObject |
| TargetToTile | UO.TargetToTile |
| TargetToXYZ | UO.TargetToXYZ |
| TargetByResource | UO.TargetByResource |
| WaitTarget | UO.WaitTarget |
| WaitTargetObject | UO.WaitTargetObject |
| WaitTargetType | UO.WaitTargetType |
| WaitTargetTile | UO.WaitTargetTile |
| WaitTargetXYZ | UO.WaitTargetXYZ |
| WaitTargetSelf | UO.WaitTargetSelf |
| LastTarget | UO.LastTarget |
| CancelTarget | UO.CancelTarget |
| Client Target Response | UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.WaitForClientTargetResponse · UO.ClientTargetResponse |
UO.Target · UO.TargetID · UO.Targeting · UO.TargetPresent · UO.TargetToObject · UO.TargetToTile · UO.TargetToXYZ · UO.TargetByResource · UO.LastTarget · UO.LastTargetX · UO.LastTargetY · UO.LastTile · UO.TicksTarget
UO.WaitTarget · UO.WaitTargetObject · UO.WaitTargetType · UO.WaitTargetObjectType · UO.WaitTargetTile · UO.WaitTargetXYZ · UO.WaitTargetSelf · UO.WaitTargetGround · UO.WaitTargetLast · UO.WaitForTarget · UO.IsWaitTargetActive · UO.CancelTarget · UO.CancelWaitTarget
UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.ClientTargetResponse · UO.ClientTargetResponsePresent · UO.WaitForClientTargetResponse
每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelTarget();取消活動遊標並清除準備好的十字線響應。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 已發送到伺服器的回覆不會被撤回。
- 本機回呼目標被取消;對於活動伺服器目標,會傳送目標取消。
- 此佇列對於客戶端來說是公共的:它的清除適用於所有流程的準備回應。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.CancelTarget");
UO.CancelTarget();參數與執行流程:
- 沒有爭論。
- 對self的待處理回應被刪除。
UO.WaitTargetSelf();
UO.CancelTarget();參數與執行流程:
- 1445/1690/0 是世界上新點的範例。
- 在設定新目標之前,舊的答案將會被刪除。
return RunScenario();
object? RunScenario()
{
UO.CancelTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}參數與執行流程:
- UO.Wait=1000 ms 是此範例的限制。
- 檢查的是剩餘隊列,不是技能成功。如果沒有伺服器十字線,下一個外部命令將不會收到舊的回應。
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()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelTarget();
}
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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.CancelTarget. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetWaitTargetQueue:bridge.GetWaitTargetQueue(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelTarget:bridge.CancelTarget(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("Targeting cancelled").
內部實作程式碼,不能作為獨立腳本執行。
public void CancelTarget()
{
var waitTargetQueue = bridge.GetWaitTargetQueue();
if (waitTargetQueue.Length > 0 || bridge.IsTargeting() != 0)
{
bridge.CancelTarget();
SystemMessage("Targeting cancelled");
}
else
SystemMessage("Error: no target to cancel");
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelWaitTarget();清除準備好的十字準線響應。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 已發送到伺服器的回覆不會被撤回。
- 開啟的遊標保持活動狀態;稍後可以手動處理。
- 此佇列對於客戶端來說是公共的:它的清除適用於所有流程的準備回應。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.CancelWaitTarget");
UO.CancelWaitTarget();參數與執行流程:
- 沒有爭論。
- 對self的待處理回應被刪除。
UO.WaitTargetSelf();
UO.CancelWaitTarget();參數與執行流程:
- 1445/1690/0 是世界上新點的範例。
- 在設定新目標之前,舊的答案將會被刪除。
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}參數與執行流程:
- UO.Wait=1000 ms 是此範例的限制。
- 檢查的是剩餘隊列,不是技能成功。如果沒有伺服器十字線,下一個外部命令將不會收到舊的回應。
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()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelWaitTarget:bridge.CancelWaitTarget().
內部實作程式碼,不能作為獨立腳本執行。
case "cancelwaittarget": bridge.CancelWaitTarget(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestObjectTarget();開啟本地十字準線以手動選擇項目或角色。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 該運行時的先前結果將會重設。該命令立即返回,無需等待單擊。
- 結果在WaitForClientTargetResponse或ClientTargetResponsePresent之後讀取ClientTargetResponse。
- 停止正在運行的過程會刪除最近幀中屬於它的範圍。如果另一個請求已經替換了遊標,則取消它不受影響。
- 一個客戶端介面十字準線不能同時用於兩個獨立的手動選擇。在處理完前一個請求之前,請勿啟動新請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.ClientRequestObjectTarget");
UO.ClientRequestObjectTarget();參數與執行流程:
- 5000 — 按一下等待逾時(以毫秒為單位)。新的查詢會重置先前的結果。
- 五個欄位的陣列指示選定的物件。結果[0]是serial,而不是type。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
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;參數與執行流程:
- CancelTarget取消本地選擇;回呼返回空結果。
- ClientTargetResponsePresent 給出1,但陣列的長度為0。在未檢查長度的情況下請勿訪問結果[0]。
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
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;參數與執行流程:
- 回應包含五個欄位;serial 在結果[0]中。超时和取消不会产生可用的serial。
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()
{
UO.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var result = UO.ClientTargetResponse();
if (((object? [])result).Length != 5 || Convert.ToInt32(result[0]) == 0)
return false;
UO.AddObject("selected_object", result[0]);
UO.Print($"Saved object: {UO.GetName(result[0])}");
return true;
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(false).
內部實作程式碼,不能作為獨立腳本執行。
case "clientrequestobjecttarget": bridge.RequestClientTarget(false); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestTileTarget();開啟本地十字線以手動選擇點/圖塊或物件。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 該運行時的先前結果將會重設。該命令立即返回,無需等待單擊。
- 結果在WaitForClientTargetResponse或ClientTargetResponsePresent之後讀取ClientTargetResponse。
- 停止正在運行的過程會刪除最近幀中屬於它的範圍。如果另一個請求已經替換了遊標,則取消它不受影響。
- 一個客戶端介面十字準線不能同時用於兩個獨立的手動選擇。在處理完前一個請求之前,請勿啟動新請求。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.ClientRequestTileTarget");
UO.ClientRequestTileTarget();參數與執行流程:
- 結果[1] - graphic,結果[2]/[3]/[4] - X/Y/Z。世界圖塊serial的結果[0]等於0。
- 類型、座標和 serial 是單獨的字段。該數組中沒有靜態層索引。
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
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;參數與執行流程:
- 對於單元格,X/Y/Z 位於字段2/3/4 中。全球商店字串; graphic 和 serial 不取代此處的座標。
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var selection = (object? [])UO.ClientTargetResponse();
if (selection.Length != 5)
return false;
UO.SetGlobal("route.x", Convert.ToString(selection[2]));
UO.SetGlobal("route.y", Convert.ToString(selection[3]));
UO.SetGlobal("route.z", Convert.ToString(selection[4]));
return true;
return null;
}參數與執行流程:
- CancelTarget 覆蓋本地遊標。取消後出現回調並不代表選擇成功。
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()
{
UO.ClientRequestTileTarget();
await WaitAsync(1000);
UO.CancelTarget();
if (UO.ClientTargetResponsePresent() != 0)
{
var result = (object? [])UO.ClientTargetResponse();
UO.Print($"Response after cancel: {result.Length} fields");
}
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(true).
內部實作程式碼,不能作為獨立腳本執行。
case "clientrequesttiletarget": bridge.RequestClientTarget(true); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponse();將最後一個本地ClientRequest*的結果複製到陣列中。
沒有參數。
五個數組 int: [0]=serial 目的 (0 在地面/靜態), [1]=graphic/type, [2]=X, [3]=Y, [4]=Z。在選擇之前、透過新請求重設之後、或在取消或不適當的選擇時傳回空數組。沒有任何 hue、地圖、靜態圖層索引和土地/靜態屬性。這不是具有命名字段的對象。
- 讀取不會消耗結果:可以再次讀取結果。新的 ClientRequest* 取代了它。
- 在存取索引之前始終檢查ArrayLength(結果)=5。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.ClientTargetResponse();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 5000 — 按一下等待逾時(以毫秒為單位)。新的查詢會重置先前的結果。
- 五個欄位的陣列指示選定的物件。結果[0]是serial,而不是type。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
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;參數與執行流程:
- 結果[1] - graphic,結果[2]/[3]/[4] - X/Y/Z。世界圖塊serial的結果[0]等於0。
- 類型、座標和 serial 是單獨的字段。該數組中沒有靜態層索引。
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
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;參數與執行流程:
- CancelTarget取消本地選擇;回呼返回空結果。
- ClientTargetResponsePresent 給出1,但陣列的長度為0。在未檢查長度的情況下請勿訪問結果[0]。
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()
{
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponse:bridge.ClientTargetResponse().
內部實作程式碼,不能作為獨立腳本執行。
case "clienttargetresponse":
return new InjectionValue(bridge.ClientTargetResponse().Select(value => new InjectionValue(value)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponsePresent();檢查是否收到對最後一個本地選擇請求的回應。
沒有參數。
int 1 — 回呼已回應,包括取消; 0 - 新選擇尚未完成。值 1 不保證物件的存在:取消時,ClientTargetResponse 傳回一個空數組。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 不指示伺服器視線的存在,也不描述WaitTarget隊列。
- 讀取結果不會重設該標誌;它被下一個ClientRequest*重設。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.ClientTargetResponsePresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- CancelTarget取消本地選擇;回呼返回空結果。
- ClientTargetResponsePresent 給出1,但陣列的長度為0。在未檢查長度的情況下請勿訪問結果[0]。
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
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;參數與執行流程:
- 檢查響應的準備及其內容。屬性 1 不是 serial 物件。
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
if (UO.ClientTargetResponsePresent() == 0)
return false;
var response = (object? [])UO.ClientTargetResponse();
return response.Length == 5 && Convert.ToInt32(response[0]) != 0;
return null;
}參數與執行流程:
- 輪詢時間限制為五秒。如果沒有回應,則遊標被取消; X/Y/Z 欄位僅從完整回應中讀取。
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()
{
UO.ClientRequestTileTarget();
for (int attempt = 0; attempt < 50; attempt++)
{
if (UO.ClientTargetResponsePresent() != 0)
{
var response = (object? [])UO.ClientTargetResponse();
if (response.Length == 5)
UO.Print($"Selected tile: {response[2]},{response[3]},{response[4]}");
return null;
}
await WaitAsync(100);
}
UO.CancelTarget();
UO.Print("Selection timed out");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponsePresent:bridge.ClientTargetResponsePresent().
內部實作程式碼,不能作為獨立腳本執行。
case "clienttargetresponsepresent": return new InjectionValue(bridge.ClientTargetResponsePresent());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.IsWaitTargetActive();檢查準備好的回應是否保留在目標佇列中。
沒有參數。
int 1 - 存在未取消的物件、方塊的延遲目標或取消下一個瞄準; 0 - 隊列為空。它沒有打開的遊標;對於遊標,使用 TargetPresent/Targeting。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取整個客戶端佇列。如果多個過程同時運行,則每個過程的回應都會被考慮在內。
- 零僅表示沒有待處理的回應。它並不確認在伺服器上成功使用技能或咒語。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.IsWaitTargetActive();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 預計在 WaitTargetSelf 之後和伺服器目標 1 之前。
- CancelWaitTarget 清空隊列;下一個測試給出0。
UO.WaitTargetSelf();
UO.Print(Convert.ToString(UO.IsWaitTargetActive()));
UO.CancelWaitTarget();參數與執行流程:
- 該檢查沒有參數。 UO.Wait=50毫秒,最大20期望。
- 如果答案仍然存在,則取消。單獨新增對伺服器操作結果的檢查。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var attempts = 0;
while (Truth(UO.IsWaitTargetActive()) && Truth(attempts < 20))
{
await Delay(50);
attempts = attempts + 1;
}
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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;參數與執行流程:
- 第一行顯示延遲響應,第二行顯示視線狀態。
- 沒有遊標的佇列和沒有佇列的遊標都是可以的;這些值不可互換。
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()
{
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
UO.Print("Cursor: " + Convert.ToString(UO.TargetPresent()));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.Waiting:Waiting().
內部實作程式碼,不能作為獨立腳本執行。
case "iswaittargetactive": return new InjectionValue(Waiting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTarget();讀取最後儲存的目標物件的serial。
沒有參數。
int - serial/ID,不是type,也不是bool。 0 表示不存在目標物件;地面和靜態也有 serial 0,儘管可以儲存座標。所有 32 位元均被保留。要檢查非零 ID,請使用 != 0,而不是 > 0,或 == true。
- 無參數。不開啟瞄準器,不選擇新目標,不攻擊或發送資料包。 LastTarget與LastAttack和LastStatus不同。正常選擇self不會取代最後一個目標;顯式的ClientMarkChar可以改變它。
- 在SetEntity,已知實體被保留。 X/Y;對於容器中的項目,這可能是內容的座標。 SetLand/SetStatic拯救所選點的世界X/Y。物件的後續移動/移除不會更改已儲存的座標。對於目前位置,請使用GetX/GetY(serial)。
- Clear 和 World.Clear 清晰錄製,包括儲存腳本時。顯式設定中的未知serial不會繼承之前的X/Y:它們會變成0。這不能保證目標存在於伺服器上。
- 透過單獨的指令讀取serial和X/Y不是原子的。對於目標物件LastTile儲存網路X/Y=65535;這不是已儲存的物件位置。對於地面/靜態LastTile(1)/(2),讀取所選的X/Y。不帶括號的lasttarget是內建即時值,除非被變數覆蓋。
- World.Clear 调用ClearWorldState:重置活动回调、保存的目标和重播数据包。正常重置會保存歷史記錄。內部TargetLast僅將儲存的資料包傳送到活動伺服器目標;如果沒有歷史記錄或本地回調,它不會發送任何內容並保存目標。活动的客户端回调接收 null 一次作为取消:当响应为空时,ClientTargetResponsePresent 变为 1。完成選擇後不會再通知。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.LastTarget();
UO.Print("LastTarget: " + Convert.ToString(result));參數與執行流程:
- value 是指令的唯一結果;HEX 顯示ID,轉換。 ToString 為座標。該呼叫不會選擇任何內容。
var value = UO.LastTarget();
UO.Print("Saved value: " + Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");參數與執行流程:
- id — 已儲存serial。 Exists 檢查GetX/GetY 之前是否存在物件。保存的座標和當前座標可能有所不同。使用serial=0,範例會列印所選點,但0本身並不證明該點已被選擇。
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 最小值/最大值指定助手結果的可接受範圍,而不是API參數。助手已完全定義; -1是它自己超出範圍的標誌。對於 ID,檢查儲存任何非零 serial,包括最高有效位,而不是範圍。
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 value = ReadTargetValue();
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue()
{
var value = UO.LastTarget();
if (Truth(value == 0))
{
return -1;
}
return value;
}
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.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "lasttarget": return new InjectionValue(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetX();讀取選擇最後一個目標時儲存的 X 座標。
沒有參數。
int是X保存的坐标,不是屏幕像素。清除之前/之后或对于未知物体 - 0;真实坐标0也可以。不是bool。对于地面/静态,它也适用于 LastTarget()=0。
- 無參數。不開啟瞄準器,不選擇新目標,不攻擊或發送資料包。 LastTarget與LastAttack和LastStatus不同。正常選擇self不會取代最後一個目標;顯式的ClientMarkChar可以改變它。
- 在SetEntity,已知實體被保留。 X/Y;對於容器中的項目,這可能是內容的座標。 SetLand/SetStatic拯救所選點的世界X/Y。物件的後續移動/移除不會更改已儲存的座標。對於目前位置,請使用GetX/GetY(serial)。
- Clear 和 World.Clear 清晰錄製,包括儲存腳本時。顯式設定中的未知serial不會繼承之前的X/Y:它們會變成0。這不能保證目標存在於伺服器上。
- 透過單獨的指令讀取serial和X/Y不是原子的。對於目標物件LastTile儲存網路X/Y=65535;這不是已儲存的物件位置。對於地面/靜態LastTile(1)/(2),讀取所選的X/Y。不帶括號的lasttarget是內建即時值,除非被變數覆蓋。
- World.Clear 调用ClearWorldState:重置活动回调、保存的目标和重播数据包。正常重置會保存歷史記錄。內部TargetLast僅將儲存的資料包傳送到活動伺服器目標;如果沒有歷史記錄或本地回調,它不會發送任何內容並保存目標。活动的客户端回调接收 null 一次作为取消:当响应为空时,ClientTargetResponsePresent 变为 1。完成選擇後不會再通知。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.LastTargetX();
UO.Print("LastTargetX: " + Convert.ToString(result));參數與執行流程:
- value 是指令的唯一結果;HEX 顯示ID,轉換。 ToString 為座標。該呼叫不會選擇任何內容。
var value = UO.LastTargetX();
UO.Print("Saved value: " + Convert.ToString(value));參數與執行流程:
- id — 已儲存serial。 Exists 檢查GetX/GetY 之前是否存在物件。保存的座標和當前座標可能有所不同。使用serial=0,範例會列印所選點,但0本身並不證明該點已被選擇。
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 最小值/最大值指定助手結果的可接受範圍,而不是API參數。助手已完全定義; -1是它自己超出範圍的標誌。對於 ID,檢查儲存任何非零 serial,包括最高有效位,而不是範圍。
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 value = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetX();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
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.LastTargetX. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
public int LastTargetX() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetX : bridge.GetX(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetY();讀取選擇最後一個目標時儲存的 Y 座標。
沒有參數。
int是Y保存的坐标,不是屏幕像素。清除之前/之后或对于未知物体 - 0;真实坐标0也可以。不是bool。对于地面/静态,它也适用于 LastTarget()=0。
- 無參數。不開啟瞄準器,不選擇新目標,不攻擊或發送資料包。 LastTarget與LastAttack和LastStatus不同。正常選擇self不會取代最後一個目標;顯式的ClientMarkChar可以改變它。
- 在SetEntity,已知實體被保留。 X/Y;對於容器中的項目,這可能是內容的座標。 SetLand/SetStatic拯救所選點的世界X/Y。物件的後續移動/移除不會更改已儲存的座標。對於目前位置,請使用GetX/GetY(serial)。
- Clear 和 World.Clear 清晰錄製,包括儲存腳本時。顯式設定中的未知serial不會繼承之前的X/Y:它們會變成0。這不能保證目標存在於伺服器上。
- 透過單獨的指令讀取serial和X/Y不是原子的。對於目標物件LastTile儲存網路X/Y=65535;這不是已儲存的物件位置。對於地面/靜態LastTile(1)/(2),讀取所選的X/Y。不帶括號的lasttarget是內建即時值,除非被變數覆蓋。
- World.Clear 调用ClearWorldState:重置活动回调、保存的目标和重播数据包。正常重置會保存歷史記錄。內部TargetLast僅將儲存的資料包傳送到活動伺服器目標;如果沒有歷史記錄或本地回調,它不會發送任何內容並保存目標。活动的客户端回调接收 null 一次作为取消:当响应为空时,ClientTargetResponsePresent 变为 1。完成選擇後不會再通知。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.LastTargetY();
UO.Print("LastTargetY: " + Convert.ToString(result));參數與執行流程:
- value 是指令的唯一結果;HEX 顯示ID,轉換。 ToString 為座標。該呼叫不會選擇任何內容。
var value = UO.LastTargetY();
UO.Print("Saved value: " + Convert.ToString(value));參數與執行流程:
- id — 已儲存serial。 Exists 檢查GetX/GetY 之前是否存在物件。保存的座標和當前座標可能有所不同。使用serial=0,範例會列印所選點,但0本身並不證明該點已被選擇。
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 最小值/最大值指定助手結果的可接受範圍,而不是API參數。助手已完全定義; -1是它自己超出範圍的標誌。對於 ID,檢查儲存任何非零 serial,包括最高有效位,而不是範圍。
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 value = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetY();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
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.LastTargetY. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
public int LastTargetY() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetY : bridge.GetY(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.LastTile();
int UO.LastTile(object? index);讀取最後儲存的圖塊目標。
-
index- 選修的 int 0..3: 0=graphic, 1=X, 2=Y, 3=Z。超出範圍 - 0。如果沒有索引,則傳回整個記錄的行。
不含參數 string "graphic X Y Z" 帶小數字段;一個字段的索引 - int。缺失/短的條目以零填充。
- NormalizeLastTile 將缺少的欄位補充為四個。該行不包含map/hue/serial。值 0 可以表示真實的 graphic/座標或無字段。
- 此指令僅讀取已儲存的圖塊目標;不建立目標或選擇新儲存格。 WaitTargetTile("lasttile") 使用單獨的記錄存在檢查。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.LastTile();
UO.Print("LastTile: " + Convert.ToString(result));參數與執行流程:
- 讀取最後儲存的圖塊目標。
UO.Print(UO.LastTile());參數與執行流程:
- NormalizeLastTile 將缺少的欄位補充為四個。該行不包含map/hue/serial。值 0 可以表示真實的 graphic/座標或無字段。
return RunScenario();
object? RunScenario()
{
UO.Print(UO.LastTile(1));
UO.Print(UO.LastTile(2));
UO.Print(UO.LastTile(3));
return null;
}參數與執行流程:
- 此指令僅讀取已儲存的圖塊目標;不建立目標或選擇新儲存格。 WaitTargetTile("lasttile") 使用單獨的記錄存在檢查。
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 graphic = UO.LastTile(0);
var x = UO.LastTile(1);
var y = UO.LastTile(2);
var z = UO.LastTile(3);
UO.Print(Convert.ToString(graphic) + " " + Convert.ToString(x) + " " + Convert.ToString(y) + " " + Convert.ToString(z));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: string / String.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge.LastTile()). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile().
內部實作程式碼,不能作為獨立腳本執行。
public string LastTile()
{
int[] tileInfo = NormalizeLastTile(bridge.LastTile());
return $"{tileInfo[0]} {tileInfo[1]} {tileInfo[2]} {tileInfo[3]}";
}參數: index (Any)
結果: int / Integer.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(index). -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge?.LastTile()).
內部實作程式碼,不能作為獨立腳本執行。
public int LastTile(InjectionValue index)
{
var i = NumberConversions.ToInt(index);
if (i < 0 || i > 3)
return 0;
return NormalizeLastTile(bridge?.LastTile())[i];
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Target();
void UO.Target(object? @object);
void UO.Target(object? targetKey, object? target);
void UO.Target(object? targetKey, object? target, object? targetType, object? @type, object? x, object? y, object? z);取消/設定預期目標或發送明確的目標資料包。
-
object— 一個參數:serial/別名透過 WaitTargetObject 放置。沒有參數 - CancelTarget。 -
targetKey— ID 目標查詢的 int 參數的 2/7 形式,通常為 UO.TargetID()。它直接傳遞到包中,而不是按鍵。 -
target— 表格2:serial/別名或「lasttile」。形狀7:serial物件;「ground」離開serial=0。 - 僅
targetType- 7 形式:協議類型目標,通常為 0 物件、1 圖塊。可簡化為 byte。 -
type- 僅形式 7: graphic 以及圖塊/未知物體的世界座標; graphic/X/Y 減少到 ushort, Z 到 sbyte。對於已知的實體橋,將它們替換為實際的實體欄位。 -
x- 僅形式 7: graphic 以及圖塊/未知物體的世界座標; graphic/X/Y 減少到 ushort, Z 到 sbyte。對於已知的實體橋,將它們替換為實際的實體欄位。 -
y- 僅形式 7: graphic 以及圖塊/未知物體的世界座標; graphic/X/Y 減少到 ushort, Z 到 sbyte。對於已知的實體橋,將它們替換為實際的實體欄位。 -
z- 僅形式 7: graphic 以及圖塊/未知物體的世界座標; graphic/X/Y 減少到 ushort, Z 到 sbyte。對於已知的實體橋,將它們替換為實際的實體欄位。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 沒有/只有一個參數的表單沿著 ExecuteLegacyManualAlias 並控制佇列。 2/7 形式直接呼叫Target 並發送一個Send_TargetObject,而不是下一個目標的佇列。
- 在2形式中,「lasttile」取儲存的目標圖塊的graphic/X/Y/Z;它的缺席會顯示一則訊息。未知的物件別名也會顯示一則訊息。 7 與 targetType=0 試解析 serial;其他型態剩下serial=0。
- Bridge.Target 不檢查活動遊標/匹配targetKey;透過當前ID。不要使用先前請求中的舊密鑰。該調用不會等待伺服器接受。
- 2/7參數的明確形式直接傳送封包:負數serial變為0,targetKey減少為uint;此分支不會清除本地遊標/佇列或更新TicksTarget。 TargetToObject/TargetToTile 使用不同的路徑來實現客戶的主動目標。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Target");
UO.Target();參數與執行流程:
- 取消/設定預期目標或發送明確的目標資料包。
UO.Target("self");
UO.Print(UO.Waiting());
UO.Target();參數與執行流程:
- 沒有/只有一個參數的表單沿著 ExecuteLegacyManualAlias 並控制佇列。 2/7 形式直接呼叫Target 並發送一個Send_TargetObject,而不是下一個目標的佇列。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.Target(UO.TargetID(), "self");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- Bridge.Target 不檢查活動遊標/匹配targetKey;透過當前ID。不要使用先前請求中的舊密鑰。該調用不會等待伺服器接受。
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.TargetPresent()))
{
UO.Target(UO.TargetID(), "ground", 1, 0, UO.GetX(), UO.GetY(), UO.GetZ());
}
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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
內部實作程式碼,不能作為獨立腳本執行。
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;參數: object (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
內部實作程式碼,不能作為獨立腳本執行。
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;參數: targetKey (Any), target (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetKey). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.Target: lasttile is unavailable"). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out int serial).
內部實作程式碼,不能作為獨立腳本執行。
public void Target(InjectionValue targetKey, InjectionValue target)
{
int key = NumberConversions.ToInt(targetKey);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
if (selector.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
{
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length >= 4)
bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]);
else
SystemMessage("UO.Target: lasttile is unavailable");
return;
}
if (TryGetObject(target, out int serial))
bridge.Target(key, serial, 0, 0, 0, 0, 0);
else
SystemMessage($"UO.Target: invalid target '{selector}'");
}參數: targetKey (Any), target (Any), targetType (Any), type (Any), x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetType). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out serial). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target ( NumberConversions.ToInt(targetKey), serial, targetTypeValue, ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z) ). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
內部實作程式碼,不能作為獨立腳本執行。
public void Target
(
InjectionValue targetKey,
InjectionValue target,
InjectionValue targetType,
InjectionValue type,
InjectionValue x,
InjectionValue y,
InjectionValue z
)
{
int targetTypeValue = NumberConversions.ToInt(targetType);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
int serial = 0;
if (targetTypeValue == 0 && !selector.Equals("ground", StringComparison.OrdinalIgnoreCase))
TryGetObject(target, out serial);
bridge.Target
(
NumberConversions.ToInt(targetKey),
serial,
targetTypeValue,
ResolveType(type),
NumberConversions.ToInt(x),
NumberConversions.ToInt(y),
NumberConversions.ToInt(z)
);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetByResource(object? objID, object? resource);在 graphic 搜尋項目,準備給定目標並使用找到的項目。
-
objID— 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。 -
resource— 圖形/type 要搜尋的項目,ResolveType 允許;這不是 Pascal API 中的資源欄位編號。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 在此實作中,FindType(ResolveType(Resource), -1, 0, -1, true) 搜尋項目。如果找到! = 0,則先橋接.WaitTargetObject(ObjID),然後橋接.UseObject(找到)。
- 未發現任何內容 - 未安裝或使用任何內容。該命令不發送單獨的資源目標資料包;範圍=0 從以下位置選擇項目 RootContainer=Player.Serial,包括庫存內容/設備; recursive=true 被傳遞給bridge,但是這個scope0分支本身使用 RootContainer.
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.TargetByResource");
UO.TargetByResource("self", "0x0E21");參數與執行流程:
- 在 graphic 搜尋項目,準備給定目標並使用找到的項目。
UO.TargetByResource("self", "0x0E21");參數與執行流程:
- 在此實作中,FindType(ResolveType(Resource), -1, 0, -1, true) 搜尋項目。如果找到! = 0,則先橋接.WaitTargetObject(ObjID),然後橋接.UseObject(找到)。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.TargetByResource("lasttarget", "0x0E21");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 未發現任何內容 - 未安裝或使用任何內容。該命令不發送單獨的資源目標資料包;範圍=0 從以下位置選擇項目 RootContainer=Player.Serial,包括庫存內容/設備; recursive=true 被傳遞給bridge,但是這個scope0分支本身使用 RootContainer.
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()
{
UO.TargetByResource("self", "0x0E21");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: objID (Any), resource (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(found).
內部實作程式碼,不能作為獨立腳本執行。
case "targetbyresource":
{
int found = bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true);
if (found != 0) { bridge.WaitTargetObject(Arg(0)); bridge.UseObject(found); }
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetID();讀取目前目標遊標的ID。
沒有參數。
遊標的int - 32 位元ID,而非最後一個物件的serial。如果沒有遊標,則回傳0。若最高有效位被置位,則int為負; Int2Hex 保存其位。實數cursorID=0 和本地範圍也可以給出0:檢查TargetPresent 的活動。在此客戶端中,未使用空ID的特殊非空替換。
- LastTarget/GetSerial("lasttarget") 指所選對象,TargetID 指目標請求。這些值不能互相替換。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.TargetID();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 沒有爭論。
- Int2Hex 可讓您查看 ID 的所有位,包括最高有效位。
if (Truth(UO.TargetPresent()))
{
UO.Print(UO.Int2Hex(UO.TargetID()));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 遊標 — 視線的 ID,物體的 object — serial。
- 在TargetToObject中,傳遞的是object,而不是遊標。
return RunScenario();
object? RunScenario()
{
var cursor = UO.TargetID();
var targetSerial = UO.GetSerial("lasttarget");
UO.Print("Cursor: " + UO.Int2Hex(cursor));
UO.Print("Object: " + targetSerial);
return null;
}參數與執行流程:
- 1000 — 等待逾時(以毫秒為單位)。
- 發生的符號就是結果WaitForTarget;不檢查遊標符號。
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.WaitForTarget(1000)))
{
var cursor = UO.TargetID();
UO.Print("Request: " + UO.Int2Hex(cursor));
}
else
{
UO.Print("No cursor arrived");
}
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。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTargetCursorId:bridge.GetTargetCursorId().
內部實作程式碼,不能作為獨立腳本執行。
case "targetid": return new InjectionValue(bridge.GetTargetCursorId());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetPresent();檢查客戶端是否有活動的目標選擇遊標。
沒有參數。
int 1 - TargetManager.IsTargeting 已安裝; 0 - 無活動遊標。本地回調目標也被考慮。這不是 serial 或隊列狀態 WaitTarget。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取狀態一次;不等待遊標出現。
- 若要在遊戲操作後等待伺服器十字準線,請使用WaitForTarget。對於本地 ClientRequest* - WaitForClientTargetResponse 的結果。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.TargetPresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 沒有爭論。
- 顯示1或0。
UO.Print(Convert.ToString(UO.TargetPresent()));參數與執行流程:
- 透過活動遊標檢查條件。
- 該客戶端中的CancelTarget也會清除準備好的回應。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.CancelTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- UseSkill請求技能,WaitForTarget等待3000毫秒。
- TargetToObject 僅回應活動伺服器目標;如果逾時,則不會執行該分支。
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()
{
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("self");
}
}
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。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.IsTargeting:IsTargeting().
內部實作程式碼,不能作為獨立腳本執行。
case "targetpresent": return new InjectionValue(IsTargeting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToObject(object? objID);立即回應已經活動的伺服器目標serial物件。
-
objID— Serial/ID 項目或字元、數字或十六進位/十進位字串, self/backpack/lasttarget/lastobject 或已儲存的名稱 AddObject。這不是 type。在對命名物件進行操作之前,請檢查 Exists;未解析的別名給出 serial 0.
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 如果沒有活動伺服器遊標,它不會執行任何操作,也不會建立延遲回應。初步準備,請使用WaitTargetObject/WaitTargetTile/WaitTargetXYZ。
- 本地ClientRequest*和其他回調瞄準點不由此指令處理。
- 伺服器判斷目標是否有效。對於記憶體不足的 serial,發送 ID 時圖形/座標欄位為零。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.TargetToObject");
UO.TargetToObject("self");參數與執行流程:
- 參數定義角色本身。
- 沒有任何內容添加到未來範圍隊列中。
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("self");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 3000 — 最長等待時間(以毫秒為單位);請求視線的動作必須事先執行。
- 僅在視線出現後才呼叫命令;遊戲操作可能會因伺服器故障而結束。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CancelTarget 關閉舊的視線並清理隊列。
- 如果沒有新的範圍,挑戰就不會產生預期。隊列輸出保持0,除非另一個腳本已更改它。
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()
{
UO.CancelTarget();
UO.TargetToObject("self");
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: objID (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToObject:bridge.TargetToObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "targettoobject": bridge.TargetToObject(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToTile(object? tile, object? x, object? y, object? z);立即使用圖塊座標回應已活動的伺服器目標。
-
tile- 图形/type 平铺,0..65535,而不是 serial。零表示沒有指定圖形的座標目標。 -
x— 目前地圖上的世界 X 座標,0..65535。這不是螢幕像素或阿甘座標。 -
y— 目前地圖上的世界 Y 座標,0..65535。 -
z- 遊戲點的高度,用於網路目標使用 -128..127。這不是地板或設備層。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 如果沒有活動伺服器遊標,它不會執行任何操作,也不會建立延遲回應。初步準備,請使用WaitTargetObject/WaitTargetTile/WaitTargetXYZ。
- 本地ClientRequest*和其他回調瞄準點不由此指令處理。
- graphic=0 的目標需要十字線;物體視線不接受地面。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.TargetToTile");
UO.TargetToTile(0x0CCA, 1445, 1690, 0);參數與執行流程:
- 這些參數給出了真實點的範例:將座標和 graphic 替換為所需值。
- 沒有任何內容添加到未來範圍隊列中。
if (Truth(UO.TargetPresent()))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 3000 — 最長等待時間(以毫秒為單位);請求視線的動作必須事先執行。
- 僅在視線出現後才呼叫命令;遊戲操作可能會因伺服器故障而結束。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CancelTarget 關閉舊的視線並清理隊列。
- 如果沒有新的範圍,挑戰就不會產生預期。隊列輸出保持0,除非另一個腳本已更改它。
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()
{
UO.CancelTarget();
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: tile (Any), x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "targettotile":
bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToXYZ(object? x, object? y, object? z);立即使用圖塊座標回應已活動的伺服器目標。
-
x— 目前地圖上的世界 X 座標,0..65535。這不是螢幕像素或阿甘座標。 -
y— 目前地圖上的世界 Y 座標,0..65535。 -
z- 遊戲點的高度,用於網路目標使用 -128..127。這不是地板或設備層。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 如果沒有活動伺服器遊標,它不會執行任何操作,也不會建立延遲回應。初步準備,請使用WaitTargetObject/WaitTargetTile/WaitTargetXYZ。
- 本地ClientRequest*和其他回調瞄準點不由此指令處理。
- graphic=0 的目標需要十字線;物體視線不接受地面。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.TargetToXYZ");
UO.TargetToXYZ(1445, 1690, 0);參數與執行流程:
- 這些參數給出了真實點的範例:將座標和 graphic 替換為所需值。
- 沒有任何內容添加到未來範圍隊列中。
if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 3000 — 最長等待時間(以毫秒為單位);請求視線的動作必須事先執行。
- 僅在視線出現後才呼叫命令;遊戲操作可能會因伺服器故障而結束。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToXYZ(1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- CancelTarget 關閉舊的視線並清理隊列。
- 如果沒有新的範圍,挑戰就不會產生預期。隊列輸出保持0,除非另一個腳本已更改它。
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()
{
UO.CancelTarget();
UO.TargetToXYZ(1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "targettoxyz":
bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Targeting();檢查客戶端是否有活動的目標選擇遊標。
沒有參數。
int 1 - TargetManager.IsTargeting 已安裝; 0 - 無活動遊標。本地回調目標也被考慮。這不是 serial 或隊列狀態 WaitTarget。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 讀取狀態一次;不等待遊標出現。
- 若要在遊戲操作後等待伺服器十字準線,請使用WaitForTarget。對於本地 ClientRequest* - WaitForClientTargetResponse 的結果。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.Targeting();
UO.Print("Targeting: " + Convert.ToString(result));參數與執行流程:
- 沒有爭論。
- 顯示1或0。
UO.Print(Convert.ToString(UO.Targeting()));參數與執行流程:
- 透過活動遊標檢查條件。
- 該客戶端中的CancelTarget也會清除準備好的回應。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Targeting()))
{
UO.CancelTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- UseSkill請求技能,WaitForTarget等待3000毫秒。
- TargetToObject 僅回應活動伺服器目標;如果逾時,則不會執行該分支。
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()
{
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.Targeting()))
{
UO.TargetToObject("self");
}
}
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.IsTargeting. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting().
內部實作程式碼,不能作為獨立腳本執行。
public int IsTargeting() => bridge.IsTargeting();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksTarget();透過 WaitTargetObject/WaitTargetTile 及其呼叫 shell 讀取目標的上次設定時間戳。
沒有參數。
int — 準備時UO.Timer的值,以運行時開始後的十分之一秒為單位。在第一次此類訓練之前 - 0。這是一個標記,不是等待時間,不是毫秒,也不是ID目標。
- 立即 TargetToObject/TargetToTile/TargetToXYZ 不准備隊列,也不更新此標記。
- 有些搜尋指令直接透過橋給出答案; TicksTarget 不是任何目標變更的通用時間。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
var result = UO.TicksTarget();
UO.Print("TicksTarget: " + Convert.ToString(result));參數與執行流程:
- 沒有爭論; WaitTargetSelf 更新高程。
- 時間戳以十分之一秒為單位。
UO.WaitTargetSelf();
var stamp = UO.TicksTarget();
UO.Print(Convert.ToString(stamp));
UO.CancelWaitTarget();參數與執行流程:
- UO.Wait=250 毫秒。
- 由於標記的離散性,過去通常是2或3,而不是250。
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.WaitTargetObject("self");
await Delay(250);
var elapsed = UO.Timer() - UO.TicksTarget();
UO.Print("Tenths: " + Convert.ToString(elapsed));
UO.CancelWaitTarget();
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));參數與執行流程:
- 你的角色的selfId - int serial。
- 數字形式與字串形式一樣更新標記; TicksTarget沒有參數。
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 selfId = UO.Hex2Int(UO.GetSerial("self"));
UO.WaitTargetObject(selfId);
UO.Print(Convert.ToString(UO.TicksTarget()));
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: int / Integer.
呼叫時:
內部實作程式碼,不能作為獨立腳本執行。
public int TicksTarget() => ticksTarget;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForClientTargetResponse(object? maxWaitTimeMS);等待本地選擇ClientRequestObjectTarget/ClientRequestTileTarget完成。
-
maxWaitTimeMS— 最長時間(以毫秒為單位)。 0和負值給予一次檢查,無需無限期等待。
int 1 - 已收到回應,包括取消; 0 - 逾時已過。對於1,仍然檢查ClientTargetResponse的長度。使用 0 遊標本身不會自動關閉。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 等待在腳本線程中以最多 25 ms 的間隔發生,並透過停止腳本來中斷。
- 如果沒有先前的 ClientRequest*,新選擇將不會開始。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.WaitForClientTargetResponse(5000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 5000 — 按一下等待逾時(以毫秒為單位)。新的查詢會重置先前的結果。
- 五個欄位的陣列指示選定的物件。結果[0]是serial,而不是type。
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
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;參數與執行流程:
- 結果[1] - graphic,結果[2]/[3]/[4] - X/Y/Z。世界圖塊serial的結果[0]等於0。
- 類型、座標和 serial 是單獨的字段。該數組中沒有靜態層索引。
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
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;參數與執行流程:
- 超時以毫秒為單位指定。成功的等待意味著回應,必須單獨檢查回應的內容。
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()
{
UO.ClientRequestTileTarget();
int ready = UO.WaitForClientTargetResponse(3000);
if (ready == 0)
{
UO.CancelTarget();
UO.Print("Selection timed out");
return false;
}
var response = (object? [])UO.ClientTargetResponse();
if (response.Length != 5)
return false;
UO.Print($"Tile coordinates: {response[2]}, {response[3]}, {response[4]}");
return true;
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: maxWaitTimeMS (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitForClientTargetResponse:bridge.WaitForClientTargetResponse(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "waitforclienttargetresponse": return new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForTarget(object? maxWaitTimeMS);等待活動目標遊標在超時時間內出現。
-
maxWaitTimeMS— 最長等待時間(以毫秒為單位)。零和負值會立即進行檢查;這不是無休止的等待。
int 1 — 驗證期間遊標處於活動狀態; 0 - 無遊標逾時。本地回調目標也滿足此測試。這並不是確認已準備好的WaitTarget的使用:自動回應可能在檢查之前就已經用完遊標了。
該命令的結果是一個數字標誌: 1 表示滿足條件, 0 - 未實現。後 var 結果=命令(...)檢查是否(結果!= 0) 或 if (結果 == 0)。儲存一次呼叫的結果:重複呼叫可以再次執行該操作或讀取已經變更的狀態。
- 檢查在腳本執行緒中暫停最多 25 毫秒來執行,並且可以透過停止來中斷。
- 該方法本身不會建立十字準線或選擇目標。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.WaitForTarget(3000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- MaxWaitTimeMS=3000,則選擇 self。
- WaitTargetSelf 未預設:此範例明確回答。
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- MaxWaitTimeMS=0.
- 準備好 - 1 或 0;沒有長時間的停頓。
return RunScenario();
object? RunScenario()
{
var ready = UO.WaitForTarget(0);
UO.Print(Convert.ToString(ready));
return null;
}參數與執行流程:
- 500 - 半秒。
- 沒有視線可能意味著操作失敗或正在自動處理:檢查遊戲日誌。
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.WaitForTarget(500) == 0))
{
UO.CancelWaitTarget();
UO.Print("Cursor did not arrive");
}
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。
參數: maxWaitTimeMS (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitUntilTargeting:bridge.WaitUntilTargeting(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "waitfortarget": return new InjectionValue(bridge.WaitUntilTargeting(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTarget(object? target);
void UO.WaitTarget(object? target, object? @type);
void UO.WaitTarget(object? target, object? @type, object? color);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest, object? maxZ);將serial放入下一個目標請求的佇列中,或使用過濾器選擇目標。
-
target— 允許正數 serial/alias 直接設置,其他參數被忽略。 0或-1啟用搜尋;另一個數位哨兵取消下一個目標。 -
type- 可選graphic/type或型別遮罩; -1無限制。命名型別由ResolveType/ParseTypeMask解析。 -
color- 可選 hue:-1 或 0xFFFF,無限制。 -
distance— 可選的單元格內最大距離;預設為GetFindDistance。解析ResolveCompactDistance允許根據搜尋設定使用特殊值。 -
notoriety- 可選號碼/遮罩惡名。非空遮罩限制移動候選人;如果沒有它,手機和world物品都會被考慮。 -
nearest- 可選bool,預設true:依距離排序,然後是serial。 -
maxZ— 可選最大絕對值(Z-selfZ),預設GetFindVertical。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 搜尋時,排除self、serial=0、常規忽略清單和選定的命名type過濾器;重複項被刪除。直接正值serial不會通過這些過濾器。
- 搜尋僅讀取載入的物件。沒有匹配/無效哨兵 - 訊息和 CancelNextTarget。成功的選擇呼叫WaitTargetObject並更新TicksTarget。 WaitTarget本身不使用該物品,不打開目標,也不等待伺服器處理它。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTarget");
UO.WaitTarget("self");參數與執行流程:
- 將serial放入下一個目標請求的佇列中,或使用過濾器選擇目標。
UO.WaitTarget("self");參數與執行流程:
- 搜尋時,排除self、serial=0、常規忽略清單和選定的命名type過濾器;重複項被刪除。直接正值serial不會通過這些過濾器。
return RunScenario();
object? RunScenario()
{
UO.WaitTarget(0, -1, -1, 10, 3, true, 20);
return null;
}參數與執行流程:
- 搜尋僅讀取載入的物件。沒有匹配/無效哨兵 - 訊息和 CancelNextTarget。成功的選擇呼叫WaitTargetObject並更新TicksTarget。 WaitTarget本身不使用該物品,不打開目標,也不等待伺服器處理它。
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()
{
UO.WaitTarget("lasttarget");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: target (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}參數: target (Any), type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}參數: target (Any), type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}參數: target (Any), type (Any), color (Any), distance (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}參數: target (Any), type (Any), color (Any), distance (Any), notoriety (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest) — UO.WaitTarget(Any,Any,Any,Any,Any,Any)
參數: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest, maxZ) — UO.WaitTarget(Any,Any,Any,Any,Any,Any,Any)
參數: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
呼叫時執行已儲存的處理函式 delegate。註冊方法在建立 API 時建立此 delegate。
內部實作程式碼,不能作為獨立腳本執行。
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetGround(object? @type);
void UO.WaitTargetGround(object? @type, object? color);在 graphic/hue 搜尋項目並將其放入下一個目標的隊列中。
-
type- 圖形/type int,十六進位字串或名為type 的集合。這不是 serial 商品。 -
color- 可選int hue;預設 -1 - 任何顏色。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 範圍:ground/容器選擇器1,無遞歸搜尋。 Bridge.FindType回傳找到的serial;當serial>0bridge.WaitTargetObject被呼叫時。這些方法不會直接更新運行時TicksTarget。
- 沒有項目 - 訊息和 CancelNextTarget。搜尋可能會改變一般FindItem/FoundItems;該指令不使用找到的項目,也不等待遊標。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetGround");
UO.WaitTargetGround("0x0E21");參數與執行流程:
- 在 graphic/hue 搜尋項目並將其放入下一個目標的隊列中。
UO.WaitTargetGround("0x0E21");參數與執行流程:
- 範圍:ground/容器選擇器1,無遞歸搜尋。 Bridge.FindType回傳找到的serial;當serial>0bridge.WaitTargetObject被呼叫時。這些方法不會直接更新運行時TicksTarget。
return RunScenario();
object? RunScenario()
{
UO.WaitTargetGround("0x0E21", -1);
return null;
}參數與執行流程:
- 沒有項目 - 訊息和 CancelNextTarget。搜尋可能會改變一般FindItem/FoundItems;該指令不使用找到的項目,也不等待遊標。
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()
{
UO.WaitTargetGround("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround:WaitTargetGround(type, new InjectionValue(-1)).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetGround(InjectionValue type) => WaitTargetGround(type, new InjectionValue(-1));參數: type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("No ground item found. Next target request will be canceled"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(item).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetGround(InjectionValue type, InjectionValue color)
{
int item = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (item <= 0)
{
SystemMessage("No ground item found. Next target request will be canceled");
bridge.CancelNextTarget();
}
else
bridge.WaitTargetObject(item);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetLast();透過別名 lasttarget 準備對下一個伺服器目標的回應。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 團隊只準備回應:它本身不使用物品、技能或咒語。下一個伺服器目標在處理客戶端訊框時接收準備好的目標。
- 連續的呼叫形成一個公共的客戶端隊列。物件和座標目標一次處理一個;本地選擇視窗ClientRequest*/Info/container不消耗它。
- CancelWaitTarget 清除佇列。 TerminateAll 徹底清潔;停止仍在運作的過程也會使其自身的待處理回應無效。完成一個簡短的程序通常不會取消準備好的目標。
- 發送回應並不保證伺服器上的操作:它會檢查物件的範圍、可存取性、可見性和操作規則。要進行控制,請使用遊戲結果和日誌。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetLast");
UO.WaitTargetLast();參數與執行流程:
- 沒有爭論;使用lasttarget。
- 該命令本身不會打開瞄準器並執行動作。
UO.WaitTargetLast();參數與執行流程:
- 對於該技能,lasttarget 必須解析為已載入的角色。
- Exists檢查消除未知物體;物件類型和技能有效性的選擇仍然是腳本條件。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.CancelWaitTarget();
UO.WaitTargetLast();
UO.UseSkill("Anatomy");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- IsWaitTargetActive 檢查響應隊列。
- CancelWaitTarget 取消準備而不關閉已開啟的自訂十字準線。
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()
{
UO.WaitTargetLast();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetLast. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("lasttarget").
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetLast() => WaitTargetObject("lasttarget");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObject(object? objID);
void UO.WaitTargetObject(object? id1, object? id2);準備一個或兩個連續的 serial 對伺服器目標的回應。
-
objID / id1 / id2— 項目或字元、數字或十六進位/十進位字串的序號/ID、self/backpack/lasttarget/lastobject 或儲存的名稱AddObject。這不是type。在對命名物件進行操作之前,請檢查Exists;未解析的別名給出 serial 0。單一參數指定一個目標。數字和字串形式以相同的方式更新TicksTarget。 -
objID— 項目或字元、數字或十六進位/十進位字串的序號/ID、self/backpack/lasttarget/lastobject 或儲存的名稱AddObject。這不是type。在對命名物件進行操作之前,請檢查Exists;未解析的別名給出 serial 0。單一參數指定一個目標。數字和字串形式以相同的方式更新TicksTarget。 -
id1— Serial/ID 項目或字元、數字或十六進位/十進位字串, self/backpack/lasttarget/lastobject 或已儲存的名稱 AddObject。這不是 type。在對命名物件進行操作之前,請檢查 Exists;未解析的別名給出 serial 0。形式的第一個目標是兩條線。 -
id2— Serial/ID 項目或字元、數字或十六進位/十進位字串, self/backpack/lasttarget/lastobject 或已儲存的名稱 AddObject。這不是 type。在對命名物件進行操作之前,請檢查 Exists;未解析的別名給出 serial 0。表格的第二個目的是使用兩條線;適用於下一個單獨的範圍。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 團隊只準備回應:它本身不使用物品、技能或咒語。下一個伺服器目標在處理客戶端訊框時接收準備好的目標。
- 連續的呼叫形成一個公共的客戶端隊列。物件和座標目標一次處理一個;本地選擇視窗ClientRequest*/Info/container不消耗它。
- CancelWaitTarget 清除佇列。 TerminateAll 徹底清潔;停止仍在運作的過程也會使其自身的待處理回應無效。完成一個簡短的程序通常不會取消準備好的目標。
- 發送回應並不保證伺服器上的操作:它會檢查物件的範圍、可存取性、可見性和操作規則。要進行控制,請使用遊戲結果和日誌。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetObject");
UO.WaitTargetObject("self");參數與執行流程:
- id="self" - 你的角色的serial。 CancelWaitTarget 刪除之前準備的答案。
- UseSkill 請求技能;他的伺服器瞄準器接收到一個準備好的目標。
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");參數與執行流程:
- objectId - 範例serial:替換為您的。這不是graphic/type。
- 這裡目標剛剛準備好。腳本的下一步應該調用實際期望目標的操作。
return RunScenario();
object? RunScenario()
{
var objectId = 0x40001234;
if (Truth(UO.Exists(objectId)))
{
UO.WaitTargetObject(objectId);
UO.Print("Object target prepared");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 源和目標是預先定義的名稱AddObject。 GetSerial 傳回與 id1/id2 形式相符的行。
- 第一個伺服器瞄準器使用第一,第二個瞄準器使用第二。僅適用於具有兩個連續瞄準鏡的動作;在採取另一個行動之前清除不必要的第二個目標。
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 first = UO.GetSerial("source");
var second = UO.GetSerial("destination");
if (Truth(UO.Exists(first)) && Truth(UO.Exists(second)))
{
UO.CancelWaitTarget();
UO.WaitTargetObject(first, second);
}
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。
參數: objID (Any/String)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "waittargetobject": WaitTargetObject(Arg(0)); return InjectionValue.Unit;參數: objID (Any/String)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetObject(string id) => WaitTargetObject(GetObject(id));參數: id1 (String), id2 (String)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id1), GetObject(id2)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id1).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetObject(string id1, string id2) => WaitTargetObject(GetObject(id1), GetObject(id2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObjectType(object? id, object? @type);
void UO.WaitTargetObjectType(object? id, object? @type, object? color);準備兩個連續的目標:一個給定的物件和一個在地面上找到的物件。
-
id— 序列/ID 物件:int,數字/十六進位字串或已建立的別名,例如「lasttarget」。這不是graphic/type。在採取行動之前檢查裝載的物體。 -
type- 第二項的圖形/type,int/十六進位/命名為type。 -
color- 第二科目可選hue; -1 預設為任意。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 允許第一個 serial 到 GetObject;第二個查找FindType(type,顏色,1,-1,false)。如果兩者都是正數,則呼叫bridge.WaitTargetObject(first,second)。目標的順序保持不變。
- 如果至少有一個目標缺失/非積極 - 訊息和 CancelNextTarget,則兩個目標均未設定。該分支不更新TicksTarget,也不使用該項目。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetObjectType");
UO.WaitTargetObjectType("self", "0x0E21");參數與執行流程:
- 準備兩個連續的目標:一個給定的物件和一個在地面上找到的物件。
UO.WaitTargetObjectType("self", "0x0E21");參數與執行流程:
- 允許第一個 serial 到 GetObject;第二個查找FindType(type,顏色,1,-1,false)。如果兩者都是正數,則呼叫bridge.WaitTargetObject(first,second)。目標的順序保持不變。
return RunScenario();
object? RunScenario()
{
UO.WaitTargetObjectType("lasttarget", "0x0E21", -1);
return null;
}參數與執行流程:
- 如果至少有一個目標缺失/非積極 - 訊息和 CancelNextTarget,則兩個目標均未設定。該分支不更新TicksTarget,也不使用該項目。
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()
{
UO.WaitTargetObjectType("self", "0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: id (Any), type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType:WaitTargetObjectType(id, type, new InjectionValue(-1)).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetObjectType(InjectionValue id, InjectionValue type)
=> WaitTargetObjectType(id, type, new InjectionValue(-1));參數: id (Any), type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetObjectType: object or ground item not found"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(first, second).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetObjectType(InjectionValue id, InjectionValue type, InjectionValue color)
{
int first = GetObject(id);
int second = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (first <= 0 || second <= 0)
{
SystemMessage("UO.WaitTargetObjectType: object or ground item not found");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetObject(first, second);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetSelf();透過別名 self 準備對下一個伺服器目標的回應。
沒有參數。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 團隊只準備回應:它本身不使用物品、技能或咒語。下一個伺服器目標在處理客戶端訊框時接收準備好的目標。
- 連續的呼叫形成一個公共的客戶端隊列。物件和座標目標一次處理一個;本地選擇視窗ClientRequest*/Info/container不消耗它。
- CancelWaitTarget 清除佇列。 TerminateAll 徹底清潔;停止仍在運作的過程也會使其自身的待處理回應無效。完成一個簡短的程序通常不會取消準備好的目標。
- 發送回應並不保證伺服器上的操作:它會檢查物件的範圍、可存取性、可見性和操作規則。要進行控制,請使用遊戲結果和日誌。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetSelf");
UO.WaitTargetSelf();參數與執行流程:
- 沒有爭論;使用self。
- 該命令本身不會打開瞄準器並執行動作。
UO.WaitTargetSelf();參數與執行流程:
- 對於該技能,self 必須解析為已載入的角色。
- Exists檢查消除未知物體;物件類型和技能有效性的選擇仍然是腳本條件。
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("self")))
{
UO.CancelWaitTarget();
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- IsWaitTargetActive 檢查響應隊列。
- CancelWaitTarget 取消準備而不關閉已開啟的自訂十字準線。
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()
{
UO.WaitTargetSelf();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetSelf. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("self").
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetSelf() => WaitTargetObject("self");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetTile(object? selector);
void UO.WaitTargetTile(object? x, object? y, object? z);
void UO.WaitTargetTile(object? @type, object? x, object? y, object? z);準備帶有可選圖塊圖形的座標目標。
-
selector- 僅以單一參數形式:字串「lasttile」重複儲存的點。 -
type- 圖形/type 平鋪,0..65535,而非 serial。零表示沒有指定圖形的座標目標。以四個參數的形式出現; x/y/z 形式等於 0。 -
x— 目前地圖上的世界 X 座標,0..65535。這不是螢幕像素或阿甘座標。 -
y— 目前地圖上的世界 Y 座標,0..65535。 -
z- 遊戲點的高度,用於網路目標使用 -128..127。這不是地板或設備層。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 團隊只準備回應:它本身不使用物品、技能或咒語。下一個伺服器目標在處理客戶端訊框時接收準備好的目標。
- 連續的呼叫形成一個公共的客戶端隊列。物件和座標目標一次處理一個;本地選擇視窗ClientRequest*/Info/container不消耗它。
- CancelWaitTarget 清除佇列。 TerminateAll 徹底清潔;停止仍在運作的過程也會使其自身的待處理回應無效。完成一個簡短的程序通常不會取消準備好的目標。
- 發送回應並不保證伺服器上的操作:它會檢查物件的範圍、可存取性、可見性和操作規則。要進行控制,請使用遊戲結果和日誌。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetTile");
UO.WaitTargetTile("lasttile");參數與執行流程:
- x=1445, y=1690, z=0;缺失的type等於0。
- 这就是世界的重点。此指令不會移動角色或將物品放入口中。
UO.CancelWaitTarget();
UO.WaitTargetTile(1445, 1690, 0);參數與執行流程:
- type=0x0CCA — 圖形範例;使用所選圖塊的真實type。 x/y/z 是它的世界位置。
- 圖形和座標必須描述所需的地圖物件;伺服器檢查目標的有效性。
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetTile(0x0CCA, 1445, 1690, 0);
return null;
}參數與執行流程:
- 選擇器只允許最後一個字串,不區分大小寫。單參數形式的另一個字串或數字會導致錯誤。
- 使用 TargetManager 中圖塊的最後欄位。在第一次選擇之前,它們可以為零:首先在遊戲中選擇所需的點。三個或四個參數允許您明確設定它。
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()
{
UO.WaitTargetTile("lasttile");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: selector (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled."). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetTile(InjectionValue selector)
{
string name = selector.Kind == InjectionValueKind.String
? (selector.String ?? string.Empty).Trim()
: string.Empty;
if (!name.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
throw new NativeSubrutineException("UO.WaitTargetTile(one argument) accepts only 'lasttile'.");
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length < 4)
{
SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled.");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]);
ticksTarget = Timer();
}參數: x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), x, y, z).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetTile(InjectionValue x, InjectionValue y, InjectionValue z)
=> WaitTargetTile(new InjectionValue(0), x, y, z);參數: type (Any), x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(x). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetTile(InjectionValue type, InjectionValue x, InjectionValue y, InjectionValue z)
{
bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z));
ticksTarget = Timer();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetType(object? @type);
void UO.WaitTargetType(object? @type, object? color);在 graphic/hue 搜尋項目並將其放入下一個目標的隊列中。
-
type- 圖形/type int,十六進位字串或名為type 的集合。這不是 serial 商品。 -
color- 可選int hue;預設 -1 - 任何顏色。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 範圍:帶有遞歸搜尋的背包。 Bridge.FindType回傳找到的serial;當serial>0bridge.WaitTargetObject被呼叫時。這些方法不會直接更新運行時TicksTarget。
- 沒有項目 - 訊息和 CancelNextTarget。搜尋可能會改變一般FindItem/FoundItems;該指令不使用找到的項目,也不等待遊標。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetType");
UO.WaitTargetType("0x0E21");參數與執行流程:
- 在 graphic/hue 搜尋項目並將其放入下一個目標的隊列中。
UO.WaitTargetType("0x0E21");參數與執行流程:
- 範圍:帶有遞歸搜尋的背包。 Bridge.FindType回傳找到的serial;當serial>0bridge.WaitTargetObject被呼叫時。這些方法不會直接更新運行時TicksTarget。
return RunScenario();
object? RunScenario()
{
UO.WaitTargetType("0x0E21", -1);
return null;
}參數與執行流程:
- 沒有項目 - 訊息和 CancelNextTarget。搜尋可能會改變一般FindItem/FoundItems;該指令不使用找到的項目,也不等待遊標。
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()
{
UO.WaitTargetType("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), -1). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetType(InjectionValue type) => WaitTargetType(ResolveType(type), -1);參數: type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), NumberConversions.ToInt(color)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
內部實作程式碼,不能作為獨立腳本執行。
public void WaitTargetType(InjectionValue type, InjectionValue color)
=> WaitTargetType(ResolveType(type), NumberConversions.ToInt(color));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetXYZ(object? x, object? y, object? z);為下一個伺服器視線準備一個座標目標graphic=0。
-
x— 目前地圖上的世界 X 座標,0..65535。這不是螢幕像素或阿甘座標。 -
y— 目前地圖上的世界 Y 座標,0..65535。 -
z- 遊戲點的高度,用於網路目標使用 -128..127。這不是地板或設備層。
void - 無回傳值。使用單獨的線路撥打電話;請勿用作 true/false、serial 或 type。元資料object?對於相容的形式不會改變實際結果void。
- 團隊只準備回應:它本身不使用物品、技能或咒語。下一個伺服器目標在處理客戶端訊框時接收準備好的目標。
- 連續的呼叫形成一個公共的客戶端隊列。物件和座標目標一次處理一個;本地選擇視窗ClientRequest*/Info/container不消耗它。
- CancelWaitTarget 清除佇列。 TerminateAll 徹底清潔;停止仍在運作的過程也會使其自身的待處理回應無效。完成一個簡短的程序通常不會取消準備好的目標。
- 發送回應並不保證伺服器上的操作:它會檢查物件的範圍、可存取性、可見性和操作規則。要進行控制,請使用遊戲結果和日誌。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.WaitTargetXYZ");
UO.WaitTargetXYZ(1445, 1690, 0);參數與執行流程:
- X=1445,Y=1690,Z=0。圖形等於0。
- 當伺服器座標視線出現時,將發送回應。
UO.WaitTargetXYZ(1445, 1690, 0);參數與執行流程:
- X/Y/Z 是從您自己的角色中讀取的。
- 這是一個座標目標,而不是角色的 serial 上的 object 目標。對於後者你需要WaitTargetSelf。
return RunScenario();
object? RunScenario()
{
var x = UO.GetX();
var y = UO.GetY();
var z = UO.GetZ();
UO.WaitTargetXYZ(x, y, z);
return null;
}參數與執行流程:
- 將座標替換為提取點。 UseType正在背包裡尋找任意顏色的鏟子type=0x0F39。
- 如果沒有合適的工具,請透過 CancelWaitTarget 移除準備工作,然後再進行另一個操作。
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()
{
UO.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
UO.UseType(0x0F39, -1);
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]).
內部實作程式碼,不能作為獨立腳本執行。
case "waittargetxyz": WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]); return InjectionValue.Unit;