ZH TW UO Topic shops vendors - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
家 · C# · IDE · UO API · A–Z · 範例 · Languages
購買、銷售、商店清單、延遲和個人商家價格。 AllPrice 和 MassPriceMove 使用其選項中指定的項目的 type。
| 主題 | 命令與解釋 |
|---|---|
| Buy | UO.Buy |
| Sell | UO.Sell |
| AutoBuy | UO.AutoBuy |
| AutoSell | UO.AutoSell |
| Shop List | UO.GetShopList · UO.ClearShopList · UO.Shop |
| Prices | UO.GetPrice · UO.AllPrice · UO.MassPriceMove |
| VendorMenu | UO.VendorMenu |
| SendShopReply | UO.SendShopReply |
UO.Buy · UO.Sell · UO.AutoBuy · UO.AutoBuyEx · UO.AutoSell · UO.Shop · UO.GetShopList · UO.ClearShopList · UO.VendorMenu · UO.SendShopReply
UO.GetPrice · UO.AllPrice · UO.MassPriceMove
UO.GetAutoBuyDelay · UO.GetAutoSellDelay · UO.SetAutoBuyDelay · UO.SetAutoSellDelay
每個命令卡都有幾個獨立的場景:直接程式碼、函數和類別。以下是精選的簡短場景;限制和全面分析是有可能的。
UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AllPrice();
void UO.AllPrice(object? price);
void UO.AllPrice(object? price, object? @type);將商品放入供應商的庫存後啟用自動價格輸入。团队本身不携带物品。首先打开模式,然后拖动项目。价格仅在相应的服务器请求后发送。第二个参数过滤项目的TYPE。
-
price— 第一個參數是整個公開項目/堆疊的總價格,從 0 到 2147483647。 125表示價格125。 0 - 明顯零價格(如果伺服器允許則免費),無需關機。負值關閉此模式;建議使用不含參數的UO.AllPrice()。 -
type— 第二個可選參數是TYPE/從0到65535的圖形,數字或十六進位字串,例如0x0EED。 0 或缺席 - 任何類型。項目序號和物件名稱不合適。颜色未经过过滤。
void:沒有價值。啟動 AllPrice 報告啟動。發送的價格行表示回應已發送,而不是接受伺服器確認的價格。
- 此模式適用於後續傳輸,直至關閉。在納入/轉移之前已待處理的價格請求不會自動填寫。不回應供應商/商店重命名請求。
- 要求容器屬於客戶端已知的另一個角色/NPC。管理供應商的權利和價格的可接受性由伺服器檢查。角色的常規背包、地上的箱子和土地不會自動定價。
- 對於標準供應商,無論客戶使用何種語言,都會識別 cliloc 1043303 價格請求。也支援以「鍵入價格」、「輸入價格」、「輸入價格」、「輸入價格」或「輸入價格」開頭的系統文字提示。留下未知邀請以供手動回應。
- 支援ASCII和Unicode伺服器查詢。若邀請未在10秒內到達,延遲回覆將被取消。在批量傳輸期間,佇列也會停止。已發送的回覆將不會被撤回。
- 其他TYPE商品沒有收到價格。如果啟用MassMove,則下次提交等待價格請求被處理;未知或不適當的請求會停止佇列以避免混淆項目。
- AllPrice() 清除掛單價格並關閉模式。 TerminateAll()、退出、死亡或換牌也會重設自動價格。此命令不會更改已列出產品的價格。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.AllPrice");
UO.AllPrice();參數與執行流程:
- Price=125 — 每件商品的總價格。 type 不存在:所有類型都適用。
- 啟動後,手動將商品新增至供應商的庫存。客戶將以 125 回覆價格請求。每個後續項目都會收到相同的價格,直到它關閉。
- Print僅類似於動作;此過程本身不傳輸任何內容。
UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");參數與執行流程:
- salePrice 傳輸為價格=250。 itemType 作為type=0x0F7A 傳輸,而不是單獨產品的serial。
- 價格250指的是顯示的整個堆疊。該命令不會將價格乘以其中的單位數量。
- 其他類型仍然沒有自動回應。對於這些,請手動輸入價格或使用不同的過濾器包含 AllPrice。
return RunScenario();
object? RunScenario()
{
var itemType = "0x0F7A";
var salePrice = 250;
UO.AllPrice(salePrice, itemType);
return null;
}參數與執行流程:
- Price=0 — 將字串 0 作為價格傳送至伺服器。這並不是取消對話或關閉。
- type=0x0F7A 限制該類型的免費價格。免費銷售的行為取決於伺服器規則。
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.AllPrice(0, "0x0F7A");
return null;
}
}參數與執行流程:
- 無參數:模式關閉並刪除待處理的回應。
- 伺服器已經設定的價格不會改變。用戶自己填寫下一個價格請求。
UO.AllPrice();C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AllPrice:bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1, arguments.Length > 1 ? ResolveType(arguments[1]) : 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]).
內部實作程式碼,不能作為獨立腳本執行。
case "allprice":
bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,
arguments.Length > 1 ? ResolveType(arguments[1]) : 0);
break;參數: price (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AllPrice:bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1, arguments.Length > 1 ? ResolveType(arguments[1]) : 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]).
內部實作程式碼,不能作為獨立腳本執行。
case "allprice":
bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,
arguments.Length > 1 ? ResolveType(arguments[1]) : 0);
break;參數: price (Any), type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AllPrice:bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1, arguments.Length > 1 ? ResolveType(arguments[1]) : 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]).
內部實作程式碼,不能作為獨立腳本執行。
case "allprice":
bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,
arguments.Length > 1 ? ResolveType(arguments[1]) : 0);
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AutoBuy(object? itemType, object? itemColor, object? quantity);在目前設定檔Bad Newbie的主預設清單中建立、更新或刪除自動購買規則。團隊配置NPC-賣家報價的未來處理;不說買/賣,不開店,也不確認交易。完整程序:商店列表。
-
itemType- 圖形產品0..65535:例如0x0F7A - 黑珍珠,0x0F51 - 匕首。這不是供應商/物品的serial,也不是角色的body。負數或大於65535的數將被拒絕。這裡0xFFFF是特定的graphic,不是所有商品的口罩。 -
itemColor— 產品色調:負數或 0xFFFF — 任意; 0 - 僅限未上漆的物品。對於精確的hue,請使用0..65534。請勿使用此範圍以外的顏色:正值將轉換為 ushort。必需的。 -
quantity— 每個商店報價收到的商品單位數量,而不是堆疊數量,也不是背包中所需的餘額。正值僅限於65535。 0/負數從Default中刪除匹配規則type+color;它不是「全部數量」。必需的。
void - 無值。在單獨的一行上調用,不帶 var result = 且不帶 if。通話結束意味著設定結束,而不是交易成功。如果沒有設定檔或graphic無效,則不會建立規則;沒有錯誤的數值結果。透過背包內容、金幣以及伺服器回應來查看實際交易情況。
- 所有 3 參數都是必需的。這是一個規則設置,而不是一個等待函數。
- 預設情況下,規則鍵為graphic,遮罩為hue。重複呼叫替換了該規則的數量等欄位;它不會在前一個限制之上添加另一個限制。如果沒有價格/名稱,先前對這些欄位的限制將被刪除。
- 新的/更新的 Enabled=true 規則。一般的買/賣開關是根據規則的存在來設定的,並且設定檔被儲存。停用的預設清單本身不會自動啟用:必須在設定中啟用常規模式和清單。其他命名清單未更改。
- 當貨物清單到達時,處理開始。该限制是在与一条规则匹配的行之间总共花费的。对于每个位置,使用第一个匹配的启用规则。当规则生效时,重新开业商店会提供新的优惠和新的限制。
- 與 Bad Newbie 完全配合使用;在 Classic 中,此自動化功能已停用。請勿替換參數中的名稱NPC或已儲存清單的名稱。 AutoBuyEx 購買時添加價格/名稱過濾器; ClearShopList 完全重置這兩個自動化。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.AutoBuy");
UO.AutoBuy(0x0F7A, -1, 1);參數與執行流程:
- 0x0F7A - graphic 試劑,而非 ID NPC。數量 - 1;顏色 - 任意。本表格未規定價格上限。腳本本身沒有說什麼,也沒有打開商店。該規則繼續適用於後續句子,直到您更改/停用它。
UO.AutoBuy(0x0F7A, -1, 1);參數與執行流程:
- 20 - 最多一個商店回應,而不是「將數量增加到20」。 AutoBuy 沒有價格和名稱參數。如果需要的話,使用AutoBuyEx;其完整範例可在下面的連結中找到。物品、金錢和伺服器規則的缺乏決定了結果。
return RunScenario();
object? RunScenario()
{
UO.AutoBuy(0x0F7A, 0, 20);
return null;
}參數與執行流程:
- 助理接受graphic。僅刪除帶有AnyHue的預設規則;保留各個規則hue=0。這不會取消已傳送到伺服器的交易。若要刪除精確的顏色,請傳遞建立規則所使用的相同hue。
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()
{
DisableReagentRule(0x0F7A);
DisableReagentRule(0x0F84);
return null;
}
void DisableReagentRule(dynamic itemType)
{
UO.AutoBuy(itemType, -1, 0);
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: itemType (Any), itemColor (Any), quantity (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), 0, string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "autobuy":
bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), 0, string.Empty); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AutoBuyEx(object? itemType, object? itemColor, object? quantity, object? price, object? name);在目前設定檔Bad Newbie的主預設清單中建立、更新或刪除自動購買規則。團隊配置NPC-賣家報價的未來處理;不說買/賣,不開店,也不確認交易。完整程序:商店列表。
-
itemType- 圖形產品0..65535:例如0x0F7A - 黑珍珠,0x0F51 - 匕首。這不是供應商/物品的serial,也不是角色的body。負數或大於65535的數將被拒絕。這裡0xFFFF是特定的graphic,不是所有商品的口罩。 -
itemColor— 產品色調:負數或 0xFFFF — 任意; 0 - 僅限未上漆的物品。對於精確的hue,請使用0..65534。請勿使用此範圍以外的顏色:正值將轉換為 ushort。必需的。 -
quantity— 每個商店報價收到的商品單位數量,而不是堆疊數量,也不是背包中所需的餘額。正值僅限於65535。 0/負數從Default中刪除匹配規則type+color;它不是「全部數量」。必需的。 -
price— 一個單位的最高價格,而不是整個交易。 0/負 – 沒有價格上限。價格高於正限的產品可以通過。價格不在伺服器上交易或更改。必需的。 -
name— 產品名稱的子字串,不區分大小寫;邊緣空間被刪除,空行 - 無過濾器。這不是賣家的姓名或清單的名稱。例如,「Black Pearl」會檢查商店位置的文本,如果伺服器發送的正是這樣的名稱。必需的。
void - 無值。在單獨的一行上調用,不帶 var result = 且不帶 if。通話結束意味著設定結束,而不是交易成功。如果沒有設定檔或graphic無效,則不會建立規則;沒有錯誤的數值結果。透過背包內容、金幣以及伺服器回應來查看實際交易情況。
- 所有 5 參數都是必需的。這是一個規則設置,而不是一個等待函數。
- 預設情況下,規則鍵為graphic,遮罩為hue。重複呼叫替換了該規則的數量等欄位;它不會在前一個限制之上添加另一個限制。如果沒有價格/名稱,先前對這些欄位的限制將被刪除。
- 新的/更新的 Enabled=true 規則。一般的買/賣開關是根據規則的存在來設定的,並且設定檔被儲存。停用的預設清單本身不會自動啟用:必須在設定中啟用常規模式和清單。其他命名清單未更改。
- 當貨物清單到達時,處理開始。该限制是在与一条规则匹配的行之间总共花费的。对于每个位置,使用第一个匹配的启用规则。当规则生效时,重新开业商店会提供新的优惠和新的限制。
- 與 Bad Newbie 完全配合使用;在 Classic 中,此自動化功能已停用。請勿替換參數中的名稱NPC或已儲存清單的名稱。 AutoBuyEx 購買時添加價格/名稱過濾器; ClearShopList 完全重置這兩個自動化。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.AutoBuyEx");
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");參數與執行流程:
- 0x0F7A - graphic 試劑,而非 ID NPC。數量 - 1;顏色 - 任意。每單位價格上限5。腳本本身沒有說什麼,也沒有打開商店。該規則繼續適用於後續句子,直到您更改/停用它。
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");參數與執行流程:
- 20 - 一家商店回應的最大值,而不是「將數量增加到20」。 5 — 每單位價格,「Black Pearl」 — 產品名稱的子字串。如果伺服器對試劑的呼叫不同,請變更過濾器或傳遞「」。物品、金錢和伺服器規則的缺乏決定了結果。
return RunScenario();
object? RunScenario()
{
UO.AutoBuyEx(0x0F7A, 0, 20, 5, "Black Pearl");
return null;
}參數與執行流程:
- 助理接受graphic。僅刪除帶有AnyHue的預設規則;保留各個規則hue=0。這不會取消已傳送到伺服器的交易。若要刪除精確的顏色,請傳遞建立規則所使用的相同hue。
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()
{
DisableReagentRule(0x0F7A);
DisableReagentRule(0x0F84);
return null;
}
void DisableReagentRule(dynamic itemType)
{
UO.AutoBuyEx(itemType, -1, 0, 0, "");
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: itemType (Any), itemColor (Any), quantity (Any), price (Any), name (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "autobuyex":
bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AutoSell(object? itemType, object? itemColor, object? quantity);在目前設定檔Bad Newbie的主預設清單中建立、更新或刪除自動銷售規則。團隊配置NPC-賣家報價的未來處理;不說買/賣,不開店,也不確認交易。完整程序:商店列表。
-
itemType- 圖形產品0..65535:例如0x0F7A - 黑珍珠,0x0F51 - 匕首。這不是供應商/物品的serial,也不是角色的body。負數或大於65535的數將被拒絕。這裡0xFFFF是特定的graphic,不是所有商品的口罩。 -
itemColor— 產品色調:負數或 0xFFFF — 任意; 0 - 僅限未上漆的物品。對於精確的hue,請使用0..65534。請勿使用此範圍以外的顏色:正值將轉換為 ushort。必需的。 -
quantity— 每個商店報價收到的商品單位數量,而不是堆疊數量,也不是背包中所需的餘額。正值僅限於65535。 0/負數從Default中刪除匹配規則type+color;它不是「全部數量」。必需的。
void - 無值。在單獨的一行上調用,不帶 var result = 且不帶 if。通話結束意味著設定結束,而不是交易成功。如果沒有設定檔或graphic無效,則不會建立規則;沒有錯誤的數值結果。透過背包內容、金幣以及伺服器回應來查看實際交易情況。
- 所有 3 參數都是必需的。這是一個規則設置,而不是一個等待函數。
- 預設情況下,規則鍵為graphic,遮罩為hue。重複呼叫替換了該規則的數量等欄位;它不會在前一個限制之上添加另一個限制。如果沒有價格/名稱,先前對這些欄位的限制將被刪除。
- 新的/更新的 Enabled=true 規則。一般的買/賣開關是根據規則的存在來設定的,並且設定檔被儲存。停用的預設清單本身不會自動啟用:必須在設定中啟用常規模式和清單。其他命名清單未更改。
- 當貨物清單到達時,處理開始。该限制是在与一条规则匹配的行之间总共花费的。对于每个位置,使用第一个匹配的启用规则。当规则生效时,重新开业商店会提供新的优惠和新的限制。
- 與 Bad Newbie 完全配合使用;在 Classic 中,此自動化功能已停用。請勿替換參數中的名稱NPC或已儲存清單的名稱。 AutoBuyEx 購買時添加價格/名稱過濾器; ClearShopList 完全重置這兩個自動化。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.AutoSell");
UO.AutoSell(0x0F51, -1, 1);參數與執行流程:
- 0x0F51 - graphic 匕首,任 hue、1 - 每句話一個。團隊沒有選擇特定的serial,也沒有測試該項目的有用性/價值。選擇您的商品的確切type/顏色。
UO.AutoSell(0x0F51, -1, 1);參數與執行流程:
- 0x1F03 是標準graphic 長袍的範例,0x0044 是hue 的範例。將兩者替換為您的產品。 5 — 單位,而非價格;不接受最低價格及名稱參數Sell/AutoSell。伺服器必須將商品包含在銷售報價中。
return RunScenario();
object? RunScenario()
{
UO.AutoSell(0x1F03, 0x0044, 5);
return null;
}參數與執行流程:
- 程式名稱是任意的; itemType和hue是它的參數。其他規則、採購和自訂命名清單均保留。如果另一個啟用的清單也出售這些商品,請透過設定來停用其中相應的規則。
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()
{
RemoveSaleRule(0x0F51, -1);
RemoveSaleRule(0x1F03, 0x0044);
return null;
}
void RemoveSaleRule(dynamic itemType, dynamic hue)
{
UO.AutoSell(itemType, hue, 0);
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: itemType (Any), itemColor (Any), quantity (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoSellRule:bridge.SetAutoSellRule(Arg(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "autosell":
bridge.SetAutoSellRule(Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Buy(object? @type);
void UO.Buy(object? @type, object? color);
void UO.Buy(object? @type, object? color, object? quantity);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice, object? name);在目前設定檔Bad Newbie的主預設清單中建立、更新或刪除自動購買規則。團隊配置NPC-賣家報價的未來處理;不說買/賣,不開店,也不確認交易。完整程序:商店列表。
-
type- 圖形產品0..65535:例如0x0F7A - 黑珍珠,0x0F51 - 匕首。這不是供應商/物品的serial,也不是角色的body。負數或大於65535的數將被拒絕。這裡0xFFFF是特定的graphic,不是所有商品的口罩。 -
color— 產品色調:負數或 0xFFFF — 任意; 0 - 僅限未上漆的物品。對於精確的hue,請使用0..65534。請勿使用此範圍以外的顏色:正值將轉換為 ushort。預設為1。 -
quantity— 每個商店報價收到的商品單位數量,而不是堆疊數量,也不是背包中所需的餘額。正值仅限于65535。 0/负数从Default中删除匹配规则type+color;它不是“全部数量”。預設為1。 -
maxPrice— 一個單位的最高價格,而不是整個交易。 0/負 – 沒有價格上限。價格高於正限的產品可以通過。價格不在伺服器上交易或更改。預設為0。 -
name— 產品名稱的子字串,不區分大小寫;邊緣空間被刪除,空白行 - 無過濾器。這不是賣家的姓名或清單的名稱。例如,「Black Pearl」會檢查商店位置的文本,如果伺服器發送的正是這樣的名稱。預設為空字串。
void - 無值。在單獨的一行上調用,不帶 var result = 且不帶 if。通話結束意味著設定結束,而不是交易成功。如果沒有設定檔或graphic無效,則不會建立規則;沒有錯誤的數值結果。透過背包內容、金幣以及伺服器回應來查看實際交易情況。
- Buy 接受從 1 到 5 的參數;右側缺少顏色=-1,數量=1,maxPrice=0,名稱=“”。
- 預設情況下,規則鍵為graphic,遮罩為hue。重複呼叫替換了該規則的數量等欄位;它不會在前一個限制之上添加另一個限制。如果沒有價格/名稱,先前對這些欄位的限制將被刪除。
- 新的/更新的 Enabled=true 規則。一般的買/賣開關是根據規則的存在來設定的,並且設定檔被儲存。停用的預設清單本身不會自動啟用:必須在設定中啟用常規模式和清單。其他命名清單未更改。
- 當貨物清單到達時,處理開始。该限制是在与一条规则匹配的行之间总共花费的。对于每个位置,使用第一个匹配的启用规则。当规则生效时,重新开业商店会提供新的优惠和新的限制。
- 與 Bad Newbie 完全配合使用;在 Classic 中,此自動化功能已停用。請勿替換參數中的名稱NPC或已儲存清單的名稱。 AutoBuyEx 購買時添加價格/名稱過濾器; ClearShopList 完全重置這兩個自動化。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Buy");
UO.Buy(0x0F7A);參數與執行流程:
- 0x0F7A - graphic 試劑,而非 ID NPC。數量 - 1;顏色 - 任意。本表格未規定價格上限。腳本本身沒有說什麼,也沒有打開商店。該規則繼續適用於後續句子,直到您更改/停用它。
UO.Buy(0x0F7A);參數與執行流程:
- 20 - 一家商店回應的最大值,而不是「將數量增加到20」。 5 — 每單位價格,「Black Pearl」 — 產品名稱的子字串。如果伺服器對試劑的呼叫不同,請變更過濾器或傳遞「」。物品、金錢和伺服器規則的缺乏決定了結果。
return RunScenario();
object? RunScenario()
{
UO.Buy(0x0F7A, 0, 20, 5, "Black Pearl");
return null;
}參數與執行流程:
- 助理接受graphic。僅刪除帶有AnyHue的預設規則;保留各個規則hue=0。這不會取消已傳送到伺服器的交易。若要刪除精確的顏色,請傳遞建立規則所使用的相同hue。
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()
{
DisableReagentRule(0x0F7A);
DisableReagentRule(0x0F84);
return null;
}
void DisableReagentRule(dynamic itemType)
{
UO.Buy(itemType, -1, 0);
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "buy":
bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);
break;參數: type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "buy":
bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);
break;參數: type (Any), color (Any), quantity (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "buy":
bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);
break;參數: type (Any), color (Any), quantity (Any), maxPrice (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "buy":
bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);
break;參數: type (Any), color (Any), quantity (Any), maxPrice (Any), name (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyRule:bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(4).
內部實作程式碼,不能作為獨立腳本執行。
case "buy":
bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearShopList();刪除自動購買和出售活動設定檔的規則。
沒有參數。
void - 無回傳值。
- 清除BackNewbieAutoBuyRules和BackNewbieAutoSellRules,關閉共享AutoBuy/AutoSell,更新OptionsGump並儲存設定檔。戰利品清單不變;缺少設定檔會產生空操作。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.ClearShopList");
UO.ClearShopList();參數與執行流程:
- 刪除自動購買和出售活動設定檔的規則。
UO.ClearShopList();參數與執行流程:
- 刪除購買繃帶的規則以及其他交易規則。
return RunScenario();
object? RunScenario()
{
UO.AutoBuy(0x0E21, -1, 10);
UO.ClearShopList();
return null;
}參數與執行流程:
- 清除空集是可以接受的,並且不會建立新設定。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClearShopList();
UO.ClearShopList();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClearAutoShopRules:bridge.ClearAutoShopRules().
內部實作程式碼,不能作為獨立腳本執行。
case "clearshoplist":
bridge.ClearAutoShopRules(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetAutoBuyDelay();從客戶檔案中讀取當前的自動購買延遲。
沒有參數。
int — 目前延遲(以毫秒為單位)。 setter寫入的值僅限於0…65535。 0表示沒有額外延遲;這不是錯誤。如果沒有載入的設定文件,則傳回3。讀取不會返回商品數量或確認交易。
- 此設定對於目前設定檔是通用的:另一個腳本或 UI 中的變更在您下次閱讀時可見。零是一個有效的設置,不是丟失資料的標誌,也不是返回舊腳本快取的原因。
- 預設值為3毫秒。發送自動操作後,管理員設定下一次允許操作的時間。此通道不處理較早到達的供應商清單; getter 不會觸發等待,也不會發送買入/賣出本身。
- 這不是MassMove、Drag/Drop的延遲或手動交易。調度下一個延遲時套用新值;已指派的時刻不會重新計算。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetAutoBuyDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 沒有爭論。延遲——以毫秒為單位的時間。
- 該值反映了調用時的設定檔。儲存的 var 以後不會更新。
var delay = UO.GetAutoBuyDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));參數與執行流程:
- setter 獲得 70000 毫秒;允許的最大值為65535。此範例更改設定檔設定。
- 載入設定檔時,實際必須包含65535。 Getter 傳回實際的約束值而非原始參數70000。
return RunScenario();
object? RunScenario()
{
UO.SetAutoBuyDelay(70000);
var actual = UO.GetAutoBuyDelay();
UO.Print(Convert.ToString(actual));
return null;
}參數與執行流程:
- 明確檢查零。此範例不會變更設定檔。
- 零延遲並不意味著操作已完成。交易結果請查看遊戲物件。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var current = UO.GetAutoBuyDelay();
if (Truth(current == 0))
{
UO.Print("No additional delay");
}
else
{
UO.Print("Delay: " + Convert.ToString(current) + " ms");
}
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.GetAutoBuyDelay:bridge.GetAutoBuyDelay().
內部實作程式碼,不能作為獨立腳本執行。
case "getautobuydelay":
return new InjectionValue(bridge.GetAutoBuyDelay());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetAutoSellDelay();從客戶檔案中讀取當前的自動銷售延遲。
沒有參數。
int — 目前延遲(以毫秒為單位)。 setter寫入的值僅限於0…65535。 0表示沒有額外延遲;這不是錯誤。如果沒有載入的設定文件,則傳回3。讀取不會返回商品數量或確認交易。
- 此設定對於目前設定檔是通用的:另一個腳本或 UI 中的變更在您下次閱讀時可見。零是一個有效的設置,不是丟失資料的標誌,也不是返回舊腳本快取的原因。
- 預設值為3毫秒。發送自動操作後,管理員設定下一次允許操作的時間。此通道不處理較早到達的供應商清單; getter 不會觸發等待,也不會發送買入/賣出本身。
- 這不是MassMove、Drag/Drop的延遲或手動交易。調度下一個延遲時套用新值;已指派的時刻不會重新計算。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetAutoSellDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 沒有爭論。延遲——以毫秒為單位的時間。
- 該值反映了調用時的設定檔。儲存的 var 以後不會更新。
var delay = UO.GetAutoSellDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));參數與執行流程:
- setter 獲得 70000 毫秒;允許的最大值為65535。此範例更改設定檔設定。
- 載入設定檔時,實際必須包含65535。 Getter 傳回實際的約束值而非原始參數70000。
return RunScenario();
object? RunScenario()
{
UO.SetAutoSellDelay(70000);
var actual = UO.GetAutoSellDelay();
UO.Print(Convert.ToString(actual));
return null;
}參數與執行流程:
- 明確檢查零。此範例不會變更設定檔。
- 零延遲並不意味著操作已完成。交易結果請查看遊戲物件。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var current = UO.GetAutoSellDelay();
if (Truth(current == 0))
{
UO.Print("No additional delay");
}
else
{
UO.Print("Delay: " + Convert.ToString(current) + " ms");
}
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.GetAutoSellDelay:bridge.GetAutoSellDelay().
內部實作程式碼,不能作為獨立腳本執行。
case "getautoselldelay":
return new InjectionValue(bridge.GetAutoSellDelay());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetPrice(object? objID);讀取客戶端已知的 serial 商品的 Item.Price。
-
objID— 物件的序號或支援的 self/backpack/lasttarget/saved 物件名稱;數字字串和 0x 字串由執行時間解析。
int — uint Item.Price 到 int 未經檢查的轉換。缺少的物品給出0;2147483647以上的價格顯示為負值int。
- 該團隊不請求供應商提案。該值取決於客戶端先前收到的資料。零可以表示未知/零价格或缺少商品;要测试对象,请使用Exists。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetPrice(UO.LastTarget());
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- 結果就是快取的 Item.Price。
var item = UO.LastTarget();
if (Truth(UO.Exists(item)))
{
var price = UO.GetPrice(item);
UO.Print(Convert.ToString(price));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 缺少的物品給出0。
return RunScenario();
object? RunScenario()
{
var price = UO.GetPrice(0);
UO.Print(Convert.ToString(price));
return null;
}參數與執行流程:
- 只有新的呼叫才會重新讀取模型;暫停本身並不要求代價。
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var item = UO.LastTarget();
var before = UO.GetPrice(item);
await Delay(500);
var after = UO.GetPrice(item);
UO.Print(Convert.ToString(before) + " " + Convert.ToString(after));
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: objID (Any)
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetPrice:bridge.GetPrice(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "getprice":
return new InjectionValue(bridge.GetPrice(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetShopList();讀取NPC賣家最後有效報價的商品。讓您在購買或出售之前檢查類型、數量和價格。
沒有參數。
string 數組 — 字串數組,來自 0 的索引。每行:serial|graphic|hue|金額|價格|名稱。序號 - ID 具體位置,graphic - 類型,hue - 顏色;前三個欄位以 0x 格式寫入。金額 — 可用單位減去視窗中的草稿,價格 — 一個單位的價格,名稱 — 姓名。這不是 serial 列表,也不是 bool 列表。如果沒有報價,則數組為空。名稱可以包含|:前五個分隔符號定義字段,其餘為名稱。
- 首先,作為正常的遊戲操作,從所需的NPC打開買入或賣出並等待伺服器報價。這些團隊本身不尋找賣家,不開放交易,不為個人賣家定價,也不在箱子之間轉移物品。賣家的ID不作為參數傳遞:如果有多個報價,則使用最後一個。
- 在管理器中,報價儲存在遊戲會話中。關閉圖形用戶端會儲存提案和草稿,開啟它會恢復視窗。關閉商店本身、回應、關閉伺服器或斷開連接都會刪除優惠。自動買入/自動賣出Bad Newbie可以在腳本之前處理。
- 讀取不會向伺服器發送請求。這是已收到供應的快照,並非NPC當前庫存的保證。數量欄位反映單位,而不是行/堆疊的數量。 ArrayLength(行) 計算位置。這裡的價格為GetShopList;SendShopReply不接受這個價格。
- 明確的清單會替換草稿,並且不會添加到草稿中。重複一次serial將數量相加;總數受到報價中商品總數的限制。未知的serial、不正確或非正數會在提交之前拒絕整個回應,並保存報價。如果沒有句子,SendShopReply報錯。 「0」行不是撤銷指令;使用 」」。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
將一次呼叫的結果輸出到日誌。數值不會轉換成 bool;若結果是陣列,則顯示元素數量。
object? result = UO.GetShopList();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));參數與執行流程:
- GetWord 使用索引來自 0: 0 — serial, 1 — graphic, 2 — hue, 3 - 數量, 4 - 價格。行前[0] 檢查數組的長度。
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
return null;
}
var serial = ReadField(rows[0], 0, "|");
var itemType = ReadField(rows[0], 1, "|");
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
var price = Convert.ToDouble(ReadField(rows[0], 4, "|"));
UO.Print(serial + " / " + itemType + " / " + Convert.ToString(amount) + " / " + Convert.ToString(price));
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;
string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }參數與執行流程:
- 僅適用於開盤前買入報價。 0x0E21 — 繃帶,5 — 最高單價,10 — 所需數量。採取第一個適當的位置;從句子中讀取精確的serial。該代碼本身不會啟動購買。
return RunScenario();
object? RunScenario()
{
var rows = UO.GetShopList();
for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
{
var row = rows[i];
if (Truth(ReadField(row, 1, "|") == "0x0E21"))
{
var price = Convert.ToDouble(ReadField(row, 4, "|"));
var amount = Convert.ToInt32(ReadField(row, 3, "|"));
if (Truth(price > 0) && Truth(price <= 5) && Truth(amount > 0))
{
if (Truth(amount > 10))
{
amount = 10;
}
UO.SendShopReply(ReadField(row, 0, "|") + ":" + Convert.ToString(amount));
return null;
}
}
}
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;
string ReadField(object? row, int index, string separator)
{
string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
return index >= 0 && index < fields.Length ? fields[index] : "";
}參數與執行流程:
- 輔助函數已完整給出:它將指定類型的所有部位的 amount 欄位相加。如果子句為空,則傳回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()
{
var available = CountOfferedType("0x0E21");
if (Truth(available < 10))
{
UO.Print("Bandage stock below 10: " + Convert.ToString(available));
}
return null;
}
dynamic CountOfferedType(dynamic itemType)
{
var total = 0;
var rows = UO.GetShopList();
for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
{
if (Truth(ReadField(rows[i], 1, "|") == itemType))
{
total = total + Convert.ToInt32(ReadField(rows[i], 3, "|"));
}
}
return total;
}
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;
string ReadField(object? row, int index, string separator)
{
string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
return index >= 0 && index < fields.Length ? fields[index] : "";
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: dynamic / Any.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.GetShopList. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetShopList:bridge.GetShopList().
內部實作程式碼,不能作為獨立腳本執行。
public InjectionValue GetShopList()
=> new InjectionValue((bridge.GetShopList() ?? Array.Empty<string>()).Select(item => new InjectionValue(item)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.MassPriceMove();
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination, object? x, object? y, object? z);允許批量轉移一個 TYPE 的商品,並在供應商的庫存中自動定價。來源由第一次手動傳輸決定。每個堆疊都被完全轉移並被視為一個項目;在提出價格請求後,客戶做出回應,然後才繼續排隊。
-
delay— 第一個參數是傳輸請求之間的延遲(以毫秒為單位),是從 0 到 2147483647 的整數。 350 表示0,35 秒。對於0,每個遊戲幀發送的下一個進位不超過一個。 GrabDelay 不新增延遲。負值會停用該模式並清除佇列;對於關閉,最好使用清晰的UO.MassPriceMove()符號。 -
quantity- 第二個參數是單一物品(items)的TOTAL限制,包括第一次手動傳輸。無論裡面的數量多少,一疊/一疊都被視為一件物品。 50 表示最多50 整個堆疊或50 單一項目。在此限制下堆栈不会分裂。 0 - 所有合适的物品。不允許使用負值。 -
type- 第三個參數是物品類型代碼(Graphic/Type),整數0..65535,例如0x0EED或字串「0x0EED」代表黃金。这不是 serial/ID,也不是名称 AddObject。 0 通过第一次手动传输来确定类型。對於顯式類型,拖曳另一個類型不會啟動佇列;該模式繼續等待合適的項目。 -
price— 第四個必需參數是顯示的每個完整項目/堆疊的總價格 0..2147483647。 0表示免費,不關機。負價被拒絕。 -
destination- 第五個可選參數是 serial 或供應商庫存中保存的容器名稱。如果不存在,則取自手動重置。一個普通的背包,地上的箱子和目的地=0這裡就出現了偏差:無法在地上定價。 -
x- 第六個參數 - 供應商容器內的 X:-1 或 65535 用於自動放置,否則為 0..65535。僅與 Y 和 Z 一起表示。 -
y- 第七個參數 - 供應商容器內的 Y:-1/65535 用於自動放置,否則0..65535。僅與 X 和 Z 一起表示。 -
z—第八個參數是高度-128..127,在容器內部通常是0。沒有明確的 X/Y/Z,對於給定的目的地,使用 -1、-1,0;手動分配時,將採用重置位置。
void:沒有價值。啟動 MassPriceMove 啟用手動樣品等待。轉帳和價格訊息表明請求已提交,並不保證伺服器接受。
- 帶有 0、4、5 或 8 參數的表單。精確順序:延遲、數量、type、價格、目的地、x、y、z。不支援部分座標三元組。
- 首先,呼叫命令,然後拾取並拖曳整個適當的項目。輸入0記住它TYPE;顯式類型會跳過其他類型的手動包裝。來源始終取自第一個合適的項目。
- 數量包括第一個手動項目。 50 表示100 中的50 完整堆疊,而不是堆疊中的50 單位。 0 - 所有合適的直物體。顏色不會被過濾,巢狀容器不會展開。
- 適用AllPrice價格請求識別規則,包括ASCII/Unicode和10秒等待。暫停延遲 - 最小間隔:緩慢的伺服器會增加它以免混淆價格。
- 普通模式AllPrice不需要啟用。該操作的價格優先於AllPrice。不建議在佇列期間更改價格AllPrice或手動傳輸其他項目:未知回應或伺服器故障會中斷佇列。
- MassPriceMove() 關閉目前傳輸佇列並取消掛起的價格回應;如果單獨啟用通用AllPrice,則會保留。 TerminateAll() 關閉兩種模式。這是與MassMove相同的一個隊列:新激活取代舊激活。
- 如果價格請求未被識別,則該命令將離開對話方塊以進行手動輸入並停止進一步的傳輸。伺服器故障、死亡、地圖更改和不可用的物品/容器也會停止工作。
- 正確地重複呼叫相同的命令,當模式仍在等待第一次滑鼠拖曳時,關閉等待:Deactivate MassMove/MassPriceMove 直接出現在遊戲視窗中。下一次呼叫將重新開啟該模式。第一次傳輸後,使用無參形式停止剩餘隊列。已經發送的請求不會被回滾。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.MassPriceMove");
UO.MassPriceMove();參數與執行流程:
- 延遲=350毫秒;單一物品的數量=50,包括第一個手動物品;type=0 記住TYPE樣本;每件商品的價格=125。
- 缺少目的地和座標:將範例直接拖曳到供應商的庫存中。
- 如果原始堆疊為100,則最多傳輸50滿堆疊。伺服器請求後,每個人都會收到一個價格125。
UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");參數與執行流程:
- AddObject 提示您選擇供應商包並將其儲存為vendor_bag。這是ID目的地; type 仍然是代碼 0x0F7A。
- 延遲=500,數量=0無限制,type=0x0F7A,價格=250,目的地=vendor_bag。
- X/Y/Z 缺失:-1,-1,0。若要啟動佇列,請手動拖曳適當類型的一項;由此確定原始套件。
return RunScenario();
object? RunScenario()
{
UO.AddObject("vendor_bag");
UO.MassPriceMove(500, 0, "0x0F7A", 250, "vendor_bag");
UO.Print("Now drag one matching item from the source");
return null;
}參數與執行流程:
- 延遲=350毫秒;數量=10全品;type=itemType=0x0EED;每個全端的價格=1000。
- 目的地=vendorBag是您供應商袋子的真實ID,替換範例。這是第五個參數,而不是第四個。
- x=60,y=70是這個包包裡面的地方,z=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()
{
var itemType = "0x0EED";
var vendorBag = "0x40005678";
UO.MassPriceMove(350, 10, itemType, 1000, vendorBag, 60, 70, 0);
return null;
}
}參數與執行流程:
- 如果不帶參數,則該命令將關閉一般批量傳輸佇列並清除其掛起的價格回應。
- 伺服器已接受的價格和轉帳不會回滾。若要停止其他程序並單獨啟用AllPrice,請使用UO.TerminateAll()。
UO.MassPriceMove();C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MassPriceMove:bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[2]). -
InjectionScript.Runtime.InjectionApiUO.ResolveTransferDestination:ResolveTransferDestination(arguments[4], true).
內部實作程式碼,不能作為獨立腳本執行。
case "masspricemove":
if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);
else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),
NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),
NumberConversions.ToInt(arguments[3]),
arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,
arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,
arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,
arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);
break;參數: delay (Any), quantity (Any), type (Any), price (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MassPriceMove:bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[2]). -
InjectionScript.Runtime.InjectionApiUO.ResolveTransferDestination:ResolveTransferDestination(arguments[4], true).
內部實作程式碼,不能作為獨立腳本執行。
case "masspricemove":
if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);
else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),
NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),
NumberConversions.ToInt(arguments[3]),
arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,
arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,
arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,
arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);
break;參數: delay (Any), quantity (Any), type (Any), price (Any), destination (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MassPriceMove:bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[2]). -
InjectionScript.Runtime.InjectionApiUO.ResolveTransferDestination:ResolveTransferDestination(arguments[4], true).
內部實作程式碼,不能作為獨立腳本執行。
case "masspricemove":
if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);
else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),
NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),
NumberConversions.ToInt(arguments[3]),
arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,
arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,
arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,
arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);
break;
UO.MassPriceMove(delay, quantity, type, price, destination, x, y, z) — UO.MassPriceMove(Any,Any,Any,Any,Any,Any,Any,Any)
參數: delay (Any), quantity (Any), type (Any), price (Any), destination (Any), x (Any), y (Any), z (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.MassPriceMove:bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(arguments[0]). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[2]). -
InjectionScript.Runtime.InjectionApiUO.ResolveTransferDestination:ResolveTransferDestination(arguments[4], true).
內部實作程式碼,不能作為獨立腳本執行。
case "masspricemove":
if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);
else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),
NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),
NumberConversions.ToInt(arguments[3]),
arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,
arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,
arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,
arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Sell(object? @type);
void UO.Sell(object? @type, object? color);
void UO.Sell(object? @type, object? color, object? quantity);在目前設定檔Bad Newbie的主預設清單中建立、更新或刪除自動銷售規則。團隊配置NPC-賣家報價的未來處理;不說買/賣,不開店,也不確認交易。完整程序:商店列表。
-
type- 圖形產品0..65535:例如0x0F7A - 黑珍珠,0x0F51 - 匕首。這不是供應商/物品的serial,也不是角色的body。負數或大於65535的數將被拒絕。這裡0xFFFF是特定的graphic,不是所有商品的口罩。 -
color— 產品色調:負數或 0xFFFF — 任意; 0 - 僅限未上漆的物品。對於精確的hue,請使用0..65534。請勿使用此範圍以外的顏色:正值將轉換為 ushort。預設為1。 -
quantity— 每個商店報價收到的商品單位數量,而不是堆疊數量,也不是背包中所需的餘額。正值仅限于65535。 0/负数从Default中删除匹配规则type+color;它不是“全部数量”。預設為1。
void - 無值。在單獨的一行上調用,不帶 var result = 且不帶 if。通話結束意味著設定結束,而不是交易成功。如果沒有設定檔或graphic無效,則不會建立規則;沒有錯誤的數值結果。透過背包內容、金幣以及伺服器回應來查看實際交易情況。
- Sell接受1到3參數;右側缺失顏色=-1,數量=1。
- 預設情況下,規則鍵為graphic,遮罩為hue。重複呼叫替換了該規則的數量等欄位;它不會在前一個限制之上添加另一個限制。如果沒有價格/名稱,先前對這些欄位的限制將被刪除。
- 新的/更新的 Enabled=true 規則。一般的買/賣開關是根據規則的存在來設定的,並且設定檔被儲存。停用的預設清單本身不會自動啟用:必須在設定中啟用常規模式和清單。其他命名清單未更改。
- 當貨物清單到達時,處理開始。该限制是在与一条规则匹配的行之间总共花费的。对于每个位置,使用第一个匹配的启用规则。当规则生效时,重新开业商店会提供新的优惠和新的限制。
- 與 Bad Newbie 完全配合使用;在 Classic 中,此自動化功能已停用。請勿替換參數中的名稱NPC或已儲存清單的名稱。 AutoBuyEx 購買時添加價格/名稱過濾器; ClearShopList 完全重置這兩個自動化。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Sell");
UO.Sell(0x0F51);參數與執行流程:
- 0x0F51 - graphic 匕首,任 hue、1 - 每句話一個。團隊沒有選擇特定的serial,也沒有測試該項目的有用性/價值。選擇您的商品的確切type/顏色。
UO.Sell(0x0F51);參數與執行流程:
- 0x1F03 是標準graphic 長袍的範例,0x0044 是hue 的範例。將兩者替換為您的產品。 5 — 單位,而非價格;不接受最低價格及名稱參數Sell/AutoSell。伺服器必須將商品包含在銷售報價中。
return RunScenario();
object? RunScenario()
{
UO.Sell(0x1F03, 0x0044, 5);
return null;
}參數與執行流程:
- 程式名稱是任意的; itemType和hue是它的參數。其他規則、採購和自訂命名清單均保留。如果另一個啟用的清單也出售這些商品,請透過設定來停用其中相應的規則。
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()
{
RemoveSaleRule(0x0F51, -1);
RemoveSaleRule(0x1F03, 0x0044);
return null;
}
void RemoveSaleRule(dynamic itemType, dynamic hue)
{
UO.Sell(itemType, hue, 0);
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: type (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoSellRule:bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "sell":
bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);
break;參數: type (Any), color (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoSellRule:bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "sell":
bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);
break;參數: type (Any), color (Any), quantity (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoSellRule:bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
內部實作程式碼,不能作為獨立腳本執行。
case "sell":
bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SendShopReply(object? reply);將產品選擇發送到NPC賣家的最後一個有效報價。交易方向由報價決定:從NPC買進或賣給他。
-
reply— 字串:「serial:數量」;多個位置之間以 |, 分隔;或逗號。而不是 : 讓我們說=。序號 - 來自 GetShopList 的ID 頭寸,小數或 0x,不是 graphic 也不是 ID 賣家。數量是正整數個數,而不是堆疊數;如果沒有它,則取1。 「accept」不區分大小寫或「1」確認草稿視窗;空白行會取消交易並傳回空白回應。
void - 沒有回傳值:既沒有true/false,也沒有金額,也沒有購買確認。伺服器決定交易是否有效。提交後,檢查是否有更新的物品、金幣或伺服器訊息。
- 首先,作為正常的遊戲操作,從所需的NPC打開買入或賣出並等待伺服器報價。這些團隊本身不尋找賣家,不開放交易,不為個人賣家定價,也不在箱子之間轉移物品。賣家的ID不作為參數傳遞:如果有多個報價,則使用最後一個。
- 在管理器中,報價儲存在遊戲會話中。關閉圖形用戶端會儲存提案和草稿,開啟它會恢復視窗。關閉商店本身、回應、關閉伺服器或斷開連接都會刪除優惠。自動買入/自動賣出Bad Newbie可以在腳本之前處理。
- 讀取不會向伺服器發送請求。這是已收到供應的快照,並非NPC當前庫存的保證。數量欄位反映單位,而不是行/堆疊的數量。 ArrayLength(行) 計算位置。這裡的價格為GetShopList;SendShopReply不接受這個價格。
- 明確的清單會替換草稿,並且不會添加到草稿中。重複一次serial將數量相加;總數受到報價中商品總數的限制。未知的serial、不正確或非正數會在提交之前拒絕整個回應,並保存報價。如果沒有句子,SendShopReply報錯。 「0」行不是撤銷指令;使用 」」。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.SendShopReply");
UO.SendShopReply("");參數與執行流程:
- 最多選擇3個第一位置單元;serial臉皮不硬。對於購買報價,它是購買,對於銷售報價,它是銷售。檢查您已開啟哪個報價。
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
return null;
}
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
if (Truth(amount > 3))
{
amount = 3;
}
if (Truth(amount > 0))
{
UO.SendShopReply(ReadField(rows[0], 0, "|") + ":" + Convert.ToString(amount));
}
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;
string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }參數與執行流程:
- 僅適用於購買報價:預算30,類型0x0E21。如果價格為正且在剩餘預算範圍內,則從每個符合資格的商品中選擇一個單位。該字串使用 | 連接;一個SendShopReply發送整個選擇。
return RunScenario();
object? RunScenario()
{
double budget = 30;
var reply = "";
var rows = UO.GetShopList();
for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
{
var row = rows[i];
if (Truth(ReadField(row, 1, "|") == "0x0E21"))
{
var price = Convert.ToDouble(ReadField(row, 4, "|"));
var amount = Convert.ToInt32(ReadField(row, 3, "|"));
if (Truth(price > 0) && Truth(price <= budget) && Truth(amount > 0))
{
if (Truth(reply != ""))
{
reply = reply + "|";
}
reply = reply + ReadField(row, 0, "|") + ":1";
budget = budget - price;
}
}
}
if (Truth(reply != ""))
{
UO.SendShopReply(reply);
}
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;
string ReadField(object? row, int index, string separator)
{
string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
return index >= 0 && index < fields.Length ? fields[index] : "";
}參數與執行流程:
- 在商店櫥窗中預先選擇數量。 「接受」準確地發送此草稿;關閉遊戲視窗後,它被儲存。如果未選擇任何內容,將發送空回應。 「1」是確認的同義詞,不是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.SendShopReply("accept");
return null;
}
}參數與執行流程:
- 空行發送空響應並關閉活動報價。 GetShopList檢查避免了無貨時被調用,但它不區分空句和缺席。
if (Truth(ArrayLength(UO.GetShopList()) > 0))
{
UO.SendShopReply("");
}
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。
參數: reply (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.SendShopReply. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SendShopReply:bridge.SendShopReply(reply.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:reply.ToString().
內部實作程式碼,不能作為獨立腳本執行。
public void SendShopReply(InjectionValue reply) => bridge.SendShopReply(reply.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetAutoBuyDelay(object? value);設定自動購買延遲並儲存目前設定檔。
-
value— 所需的毫秒數。負值限制為0,大於65535的值限制為數字65535。 0 停用額外延遲,但不停用自動交易本身。
void - 無回傳值。作為單獨的一行調用,然後使用GetAutoBuyDelay()讀取有效設定。如果沒有配置文件,setter 不會保存任何內容;此狀態下的吸氣劑給出標準的3毫秒。
- 此設定對於目前設定檔是通用的:另一個腳本或 UI 中的變更在您下次閱讀時可見。零是一個有效的設置,不是丟失資料的標誌,也不是返回舊腳本快取的原因。
- 預設值為3毫秒。發送自動操作後,管理員設定下一次允許操作的時間。此通道不處理較早到達的供應商清單; getter 不會觸發等待,也不會發送買入/賣出本身。
- 這不是MassMove、Drag/Drop的延遲或手動交易。調度下一個延遲時套用新值;已指派的時刻不會重新計算。
- 在常規用戶端主機中,此狀態資料取自GetPersistentState管理器,並且對於同一世界/設定檔的腳本/聊天/巨集是通用的,且不屬於一個腳本。另一個進程或明顯獨立的InjectionRuntimeState具有不同的狀態。載入/清除設定檔可以取代它;已儲存的serial仍然會根據載入的世界進行檢查。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.SetAutoBuyDelay");
UO.SetAutoBuyDelay(350);參數與執行流程:
- Value=350 — 允許的自動操作之間的毫秒數。
- 該設定保存在目前設定檔中,並且對其他腳本可見。
UO.SetAutoBuyDelay(350);
UO.Print(Convert.ToString(UO.GetAutoBuyDelay()));參數與執行流程:
- 值=0有獨立意義;不被先前的非零值取代。
- 僅延遲發生變化。規則、清單和一般自動交易開關是單獨設定的。
return RunScenario();
object? RunScenario()
{
UO.SetAutoBuyDelay(0);
var actual = UO.GetAutoBuyDelay();
if (Truth(actual == 0))
{
UO.Print("Delay disabled");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 請求=70000超過最大值。應用程式在設定器限制後讀取設定檔。
- 載入設定檔後,結果將為65535。若要恢復到標準延遲,請使用 3 明確呼叫 setter。
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 requested = 70000;
UO.SetAutoBuyDelay(requested);
var applied = UO.GetAutoBuyDelay();
UO.Print("Requested: " + Convert.ToString(requested));
UO.Print("Applied: " + Convert.ToString(applied));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: value (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoBuyDelay:bridge.SetAutoBuyDelay(state.AutoBuyDelay).
內部實作程式碼,不能作為獨立腳本執行。
case "setautobuydelay":
state.AutoBuyDelay = Math.Max(0, Arg(0));
bridge.SetAutoBuyDelay(state.AutoBuyDelay);
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetAutoSellDelay(object? value);設定自動銷售延遲並儲存目前設定檔。
-
value— 所需的毫秒數。負值限制為0,大於65535的值限制為數字65535。 0 停用額外延遲,但不停用自動交易本身。
void - 無回傳值。作為單獨的一行調用,然後使用GetAutoSellDelay()讀取有效設定。如果沒有配置文件,setter 不會保存任何內容;此狀態下的吸氣劑給出標準的3毫秒。
- 此設定對於目前設定檔是通用的:另一個腳本或 UI 中的變更在您下次閱讀時可見。零是一個有效的設置,不是丟失資料的標誌,也不是返回舊腳本快取的原因。
- 預設值為3毫秒。發送自動操作後,管理員設定下一次允許操作的時間。此通道不處理較早到達的供應商清單; getter 不會觸發等待,也不會發送買入/賣出本身。
- 這不是MassMove、Drag/Drop的延遲或手動交易。調度下一個延遲時套用新值;已指派的時刻不會重新計算。
- 在常規用戶端主機中,此狀態資料取自GetPersistentState管理器,並且對於同一世界/設定檔的腳本/聊天/巨集是通用的,且不屬於一個腳本。另一個進程或明顯獨立的InjectionRuntimeState具有不同的狀態。載入/清除設定檔可以取代它;已儲存的serial仍然會根據載入的世界進行檢查。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.SetAutoSellDelay");
UO.SetAutoSellDelay(350);參數與執行流程:
- Value=350 — 允許的自動操作之間的毫秒數。
- 該設定保存在目前設定檔中,並且對其他腳本可見。
UO.SetAutoSellDelay(350);
UO.Print(Convert.ToString(UO.GetAutoSellDelay()));參數與執行流程:
- 值=0有獨立意義;不被先前的非零值取代。
- 僅延遲發生變化。規則、清單和一般自動交易開關是單獨設定的。
return RunScenario();
object? RunScenario()
{
UO.SetAutoSellDelay(0);
var actual = UO.GetAutoSellDelay();
if (Truth(actual == 0))
{
UO.Print("Delay disabled");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 請求=70000超過最大值。應用程式在設定器限制後讀取設定檔。
- 載入設定檔後,結果將為65535。若要恢復到標準延遲,請使用 3 明確呼叫 setter。
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 requested = 70000;
UO.SetAutoSellDelay(requested);
var applied = UO.GetAutoSellDelay();
UO.Print("Requested: " + Convert.ToString(requested));
UO.Print("Applied: " + Convert.ToString(applied));
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: value (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetAutoSellDelay:bridge.SetAutoSellDelay(state.AutoSellDelay).
內部實作程式碼,不能作為獨立腳本執行。
case "setautoselldelay":
state.AutoSellDelay = Math.Max(0, Arg(0));
bridge.SetAutoSellDelay(state.AutoSellDelay);
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Shop();列印本地貿易線路清單。
沒有參數。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- ExecuteLegacyManualAlias 讀取橋。 GetShopList 並透過「|」連接行對於SystemMessage。賣家菜單打不開,買/賣不進行。
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.Shop");
UO.Shop();參數與執行流程:
- 列印本地貿易線路清單。
UO.Shop();參數與執行流程:
- ExecuteLegacyManualAlias 讀取橋。 GetShopList 並透過「|」連接行對於SystemMessage。賣家菜單打不開,買/賣不進行。
return RunScenario();
object? RunScenario()
{
UO.Shop();
UO.Print(UO.GetArrayLength(UO.GetShopList()));
return null;
}參數與執行流程:
- 僅修改或顯示指定的本機資料。該命令沒有伺服器確認。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Shop();
UO.TextOpen();
UO.TextPrint("Shop list was printed in the journal");
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: 沒有參數。
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(string.Join(" | ", bridge.GetShopList())). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetShopList:bridge.GetShopList().
內部實作程式碼,不能作為獨立腳本執行。
case "shop": SystemMessage(string.Join(" | ", bridge.GetShopList())); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.VendorMenu(object? vendor);
void UO.VendorMenu(object? menu, object? choice);使用賣家或註冊永久選單掛鉤。
-
vendor— 具有一個參數的表單:serial/賣家物件的別名。 -
menu— 具有兩個參數的表單:標題和選單元素,都是文字。這是一個不同的操作;第一個參數不是serial。 -
choice— 具有兩個參數的表單:標題和選單元素,都是文字。這是一個不同的操作;第一個參數不是serial。
void - 沒有值。使用單獨的線路撥打電話;完成並不確認伺服器的操作。
- 一個參數稱為橋。 UseObject。這兩個參數呼叫bridge.AddMenuHook(menu,choice,true),其中true表示可重複的鉤子。
- 不會自動買進或賣出。選單的開啟和選擇由伺服器決定;註冊的鉤子作用於下一個符合的選單,直到被取消。
- 對於選單/選擇形式,管理者選擇第一個標題包含提示的選單,不區分大小寫; SessionMenu 選擇名稱中包含 choice 的第一個項目,也不區分大小寫。空白文字適合任何人;數位文字是名稱的片段,而不是索引。成功選擇會發送回應並關閉本地選單。一次性鉤子選擇成功後才會刪除;留下永久的鉤子。
每個範例都可以儲存為單獨的檔案.csx並在IDE中運行。 UO物件和等待函數提供當前遊戲會話的主機。將演示 serial 名稱、座標和地址替換為您自己的。
將這段程式碼存為獨立的 .csx 檔案執行。參數直接出現在呼叫中;請將範例名稱、serial 和網址替換成自己的值。
指令是獨立的陳述式。前面的訊息表示呼叫開始,並非伺服器已完成動作的確認。
UO.Print("Calling UO.VendorMenu");
UO.VendorMenu("lasttarget");參數與執行流程:
- 使用賣家或註冊永久選單掛鉤。
if (Truth(UO.Exists("lasttarget")))
{
UO.VendorMenu("lasttarget");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;參數與執行流程:
- 一個參數稱為橋。 UseObject。這兩個參數呼叫bridge.AddMenuHook(menu,choice,true),其中true表示可重複的鉤子。
return RunScenario();
object? RunScenario()
{
UO.VendorMenu("Vendor", "Buy");
return null;
}參數與執行流程:
- 不會自動買進或賣出。選單的開啟和選擇由伺服器決定;註冊的鉤子作用於下一個符合的選單,直到被取消。
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.VendorMenu("Vendor", "Buy");
UO.Print(UO.MenuHookPresent());
UO.CancelMenu();
return null;
}
}C# 區分大小寫。請使用正確的 UO 名稱。數值旗標應與 0 比較;只有回傳型別為 bool 時才使用 bool。
參數: vendor (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddMenuHook:bridge.AddMenuHook(Text(0), Text(1), true). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0, bridge.LastTarget)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "vendormenu":
if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);
else bridge.UseObject(Arg(0, bridge.LastTarget));
break;參數: menu (Any), choice (Any)
結果: void / Unit.
呼叫時:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddMenuHook:bridge.AddMenuHook(Text(0), Text(1), true). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(Arg(0, bridge.LastTarget)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
內部實作程式碼,不能作為獨立腳本執行。
case "vendormenu":
if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);
else bridge.UseObject(Arg(0, bridge.LastTarget));
break;