KO UO Topic books - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
ν Β· C# Β· IDE Β· UO API Β· AβZ Β· μ Β· μΈμ΄
κ²μλΆ μ½κΈ° λ° νΈμ§: μ λͺ©, νμ΄μ§ λ° ν μ€νΈ. μ ν¨ν νμ΄μ§ λ²νΈμ λ Ήμ ν¨κ³Όλ μΉ΄λλ₯Ό μ°Έμ‘°νμΈμ.
| μ£Όμ | λͺ λ Ή λ° μ€λͺ |
|---|---|
| Read Page | UO.BookGetPageText |
| Set Page | UO.BookSetPageText |
| Set Header | UO.BookSetHeader |
| Set Text | UO.BookSetText |
| Clear Text | UO.BookClearText |
UO.BookGetPageText Β· UO.BookSetPageText Β· UO.BookSetHeader Β· UO.BookSetText Β· UO.BookClearText
κ° λͺ λ Ή μΉ΄λμλ μ§μ μ½λ, ν¨μ λ° ν΄λμ€ λ± μ¬λ¬ κ°μ§ λ 립μ μΈ μλ리μ€κ° μμ΅λλ€. λ€μμ μ νλ μ§§μ μλ리μ€μ λλ€. μ νμ¬νκ³Ό μ 체 λΆμμ΄ μΉ΄λμ ν¬ν¨λμ΄ μμ΅λλ€.
λ§€κ°λ³μ, κ²°κ³Ό λ° λͺ¨λ μλ리μ€
var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;λ§€κ°λ³μ, κ²°κ³Ό λ° λͺ¨λ μλ리μ€
UO.BookSetPageText(2, "Camp A");Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
void UO.BookClearText();μ΄λ € μλ νΈμ§ κ°λ₯ν μ± μ λͺ¨λ νμ΄μ§μμ ν μ€νΈλ₯Ό μ κ±°νκ³ μ λͺ©κ³Ό μ μλ₯Ό μ μ§ν©λλ€.
λ§€κ°λ³μκ° μμ΅λλ€.
void - κ°μ΄ μμ΅λλ€. μ΄λ true/false λλ μλ² νμΈμ΄ μλ μ°κΈ° μμ²μ λλ€. μλ²μμ νΈμ§μ κΈμ§ν μ μμ΅λλ€.
- λ¨Όμ , κ²μ μ‘μ μ μ΄μ©ν΄ μνλ μ± μ νΌμ³λ³΄μΈμ. λͺ λ Ήμ λ§μ§λ§μΌλ‘ μ΄μλ μ± μ μ¬μ©ν©λλ€. ID μ± μ νμ©λμ§ μμ΅λλ€. μ± μ΄ μ¬λ¬ κΆ μλ κ²½μ° μ¬λ°λ₯Έ μ± μ μ ννμΈμ. Getμ μ΄λ―Έ λ‘λλ νμ΄μ§λ₯Ό μ½κ³ λλ½λ νμ΄μ§λ₯Ό μ체μ μΌλ‘ μμ²νμ§ μμ΅λλ€.
- κ΄λ¦¬μμμλ μ± μ λ΄μ©μ΄ μΈμ μ μ μ₯λμ΄ κ·Έλν½ μμ΄λ μ΄μ©μ΄ κ°λ₯ν©λλ€. κ²μ μ°½μ λ«μΌλ©΄ μ± κ³Ό μ΄μμ΄ μ μ₯λκ³ , λ€μ μ΄λ©΄ 볡μλ©λλ€. ν΅ν© λ¬Έμ μ체λ₯Ό λ«μΌλ©΄ μ΄λ € μλ ν΅ν© λ¬Έμμμ μ κ±°λ©λλ€. μ°κ²°μ λμΌλ©΄ μλ² λΆμ΄ μ¬μ€μ λ©λλ€.
- λ³κ²½μ¬νμ νΈμ§ μ€μΈ μ± μλ§ μ μ©λ©λλ€. μλͺ»λ νμ΄μ§λ λ무 κΈ΄ ν μ€νΈλ κ±°λΆλ©λλ€. BookSetTextλ 첫 λ²μ§Έ μ μΆ μ μ λͺ¨λ νμ΄μ§λ₯Ό νμΈν©λλ€. μλͺ»λ νμ΄μ§ μ§μ°μΌλ‘ μΈν΄ λΆλΆ μ°κΈ°κ° λ°μνμ§ μμ΅λλ€.
- BookClearTextλ κ° νμ΄μ§μ λΉ ν μ€νΈλ₯Ό 보λ λλ€. μ΄λ μ± μ μ΄μ ν μ€νΈλ₯Ό νκ΄΄ν©λλ€. νΈμ§λ μ¬λ³Έμ μ¬μ©νμΈμ. μ λͺ©κ³Ό μκ°λ κ·Έλλ‘ μ μ§λ©λλ€.
κ° μμ λ λ³λμ νμΌ .csxλ‘ μ μ₯νκ³ IDEμμ μ€νν μ μμ΅λλ€. UO κ°μ²΄μ λκΈ° κΈ°λ₯μ νμ¬ κ²μ μΈμ
μ νΈμ€νΈλ₯Ό μ 곡ν©λλ€. λ°λͺ¨ serial μ΄λ¦, μ’ν, μ£Όμλ₯Ό μμ μ κ²μΌλ‘ λ°κΎΈμΈμ.
μ΄ μ½λλ₯Ό λ³λμ .csx νμΌλ‘ μ€ννμΈμ. μΈμλ νΈμΆμ μ§μ νμλ©λλ€. μμ μ μ΄λ¦, serial, μ£Όμλ₯Ό μμ μ κ°μΌλ‘ λ°κΎΈμΈμ.
λͺ λ Ήμ λ 립λ λ¬Έμ λλ€. μμ λ©μμ§λ νΈμΆ μμμ λνλ΄λ©° μλ² λμμ μλ£λ₯Ό νμΈνμ§ μμ΅λλ€.
UO.Print("Calling UO.BookClearText");
UO.BookClearText();λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
UO.BookClearText();λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
return RunScenario();
object? RunScenario()
{
UO.BookClearText();
UO.BookSetHeader("New expedition", "Alice");
UO.BookSetPageText(1, "Bring bandages");
return null;
}λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
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()
{
ResetNotebook("Supply list", "Alice", "Bandages" + Chr(10) + "Food");
return null;
}
void ResetNotebook(dynamic title, dynamic author, dynamic firstPage)
{
UO.BookClearText();
UO.BookSetHeader(title, author);
UO.BookSetPageText(1, firstPage);
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}C#μ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€. μ νν UO μ΄λ¦μ μ¬μ©νμΈμ. μ«μ νλκ·Έλ 0κ³Ό λΉκ΅νκ³ λ°ν νμμ΄ boolμΌ λλ§ boolμ μ¬μ©νμΈμ.
λ§€κ°λ³μ: λ§€κ°λ³μκ° μμ΅λλ€.
κ²°κ³Ό: void / Unit.
νΈμΆ μ:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookClearText:bridge.BookClearText().
λ΄λΆ ꡬν μ½λμ΄λ©° λ 립 μ€ν¬λ¦½νΈλ‘ μ€νν μ μμ΅λλ€.
case "bookcleartext":
state.BookPages.Clear();
bridge.BookClearText();
return InjectionValue.Unit;Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
dynamic UO.BookGetPageText(object? page);λ§μ§λ§μΌλ‘ νΌμ³€λ μ± μ ν νμ΄μ§ λ΄μ©μ μ½μ΅λλ€.
-
pageβ serial μ± μ΄ μλ 1μ νμ΄μ§ λ²νΈμ λλ€. μνμ μλ²μμ λ³΄κ³ νλ νμ΄μ§ μμ λλ€.
string β νμ΄μ§ μ€μ κ°ν λ¬Έμλ‘ κ΅¬λΆλλ©° λμ λΉ μ€μ΄ μμ΅λλ€. ν΅ν© λ¬Έμκ° μ΄λ € μμ§ μκ±°λ, νμ΄μ§κ° μμ§ μμ λμ§ μμκ±°λ, μ«μκ° μλͺ»λ κ²½μ°μλ λΉ λ¬Έμμ΄μ΄ λ°νλ©λλ€. μ΄λ νμ΄μ§κ° μ‘΄μ¬νκ±°λ μ°κΈ° κ°λ₯νλ€λ μλ―Έλ μλλλ€.
- λ¨Όμ , κ²μ μ‘μ μ μ΄μ©ν΄ μνλ μ± μ νΌμ³λ³΄μΈμ. λͺ λ Ήμ λ§μ§λ§μΌλ‘ μ΄μλ μ± μ μ¬μ©ν©λλ€. ID μ± μ νμ©λμ§ μμ΅λλ€. μ± μ΄ μ¬λ¬ κΆ μλ κ²½μ° μ¬λ°λ₯Έ μ± μ μ ννμΈμ. Getμ μ΄λ―Έ λ‘λλ νμ΄μ§λ₯Ό μ½κ³ λλ½λ νμ΄μ§λ₯Ό μ체μ μΌλ‘ μμ²νμ§ μμ΅λλ€.
- κ΄λ¦¬μμμλ μ± μ λ΄μ©μ΄ μΈμ μ μ μ₯λμ΄ κ·Έλν½ μμ΄λ μ΄μ©μ΄ κ°λ₯ν©λλ€. κ²μ μ°½μ λ«μΌλ©΄ μ± κ³Ό μ΄μμ΄ μ μ₯λκ³ , λ€μ μ΄λ©΄ 볡μλ©λλ€. ν΅ν© λ¬Έμ μ체λ₯Ό λ«μΌλ©΄ μ΄λ € μλ ν΅ν© λ¬Έμμμ μ κ±°λ©λλ€. μ°κ²°μ λμΌλ©΄ μλ² λΆμ΄ μ¬μ€μ λ©λλ€.
- λ³κ²½μ¬νμ νΈμ§ μ€μΈ μ± μλ§ μ μ©λ©λλ€. μλͺ»λ νμ΄μ§λ λ무 κΈ΄ ν μ€νΈλ κ±°λΆλ©λλ€. BookSetTextλ 첫 λ²μ§Έ μ μΆ μ μ λͺ¨λ νμ΄μ§λ₯Ό νμΈν©λλ€. μλͺ»λ νμ΄μ§ μ§μ°μΌλ‘ μΈν΄ λΆλΆ μ°κΈ°κ° λ°μνμ§ μμ΅λλ€.
κ° μμ λ λ³λμ νμΌ .csxλ‘ μ μ₯νκ³ IDEμμ μ€νν μ μμ΅λλ€. UO κ°μ²΄μ λκΈ° κΈ°λ₯μ νμ¬ κ²μ μΈμ
μ νΈμ€νΈλ₯Ό μ 곡ν©λλ€. λ°λͺ¨ serial μ΄λ¦, μ’ν, μ£Όμλ₯Ό μμ μ κ²μΌλ‘ λ°κΎΈμΈμ.
μ΄ μ½λλ₯Ό λ³λμ .csx νμΌλ‘ μ€ννμΈμ. μΈμλ νΈμΆμ μ§μ νμλ©λλ€. μμ μ μ΄λ¦, serial, μ£Όμλ₯Ό μμ μ κ°μΌλ‘ λ°κΎΈμΈμ.
ν λ²μ νΈμΆ κ²°κ³Όλ₯Ό μ λμ νμν©λλ€. μ«μλ₯Ό boolλ‘ λ³ννμ§ μμΌλ©°, λ°°μ΄μ΄λ©΄ μμ μλ₯Ό νμν©λλ€.
object? result = UO.BookGetPageText(1);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
return RunScenario();
object? RunScenario()
{
var firstPage = UO.BookGetPageText(1);
if (Truth(firstPage != ""))
{
UO.BookSetPageText(3, firstPage);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
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()
{
ReplaceCampNote(2);
return null;
}
void ReplaceCampNote(dynamic page)
{
var text = UO.BookGetPageText(page);
if (Truth(text == "Camp A"))
{
UO.BookSetPageText(page, "Camp B");
}
}
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μ μ¬μ©νμΈμ.
λ§€κ°λ³μ: page (Any)
κ²°κ³Ό: dynamic / Any.
νΈμΆ μ:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookGetPageText:bridge.BookGetPageText(pageNumber).
λ΄λΆ ꡬν μ½λμ΄λ©° λ 립 μ€ν¬λ¦½νΈλ‘ μ€νν μ μμ΅λλ€.
case "bookgetpagetext":
{
int pageNumber = Math.Max(1, Arg(0));
string liveText = bridge.BookGetPageText(pageNumber);
if (!string.IsNullOrEmpty(liveText))
return new InjectionValue(liveText);
int page = pageNumber - 1;
return new InjectionValue(page < state.BookPages.Count ? state.BookPages[page] : string.Empty);
}Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
void UO.BookSetHeader(object? title, object? author);μ΄λ € μλ νΈμ§ κ°λ₯ν μ± μ μ λͺ©κ³Ό μ μλ₯Ό μ§μ ν©λλ€.
-
titleβ μ λͺ©; κ·Έλν½ νΈμ§κΈ°μ λͺ λ Ήμ 첫 λ²μ§Έ 47 λ¬Έμλ₯Ό μ μ₯ν©λλ€. -
authorβ μμ±μ; μ²μ 29 λ¬Έμκ° μ μ₯λ©λλ€.
void - κ°μ΄ μμ΅λλ€. μ΄λ true/false λλ μλ² νμΈμ΄ μλ μ°κΈ° μμ²μ λλ€. μλ²μμ νΈμ§μ κΈμ§ν μ μμ΅λλ€.
- λ¨Όμ , κ²μ μ‘μ μ μ΄μ©ν΄ μνλ μ± μ νΌμ³λ³΄μΈμ. λͺ λ Ήμ λ§μ§λ§μΌλ‘ μ΄μλ μ± μ μ¬μ©ν©λλ€. ID μ± μ νμ©λμ§ μμ΅λλ€. μ± μ΄ μ¬λ¬ κΆ μλ κ²½μ° μ¬λ°λ₯Έ μ± μ μ ννμΈμ. Getμ μ΄λ―Έ λ‘λλ νμ΄μ§λ₯Ό μ½κ³ λλ½λ νμ΄μ§λ₯Ό μ체μ μΌλ‘ μμ²νμ§ μμ΅λλ€.
- κ΄λ¦¬μμμλ μ± μ λ΄μ©μ΄ μΈμ μ μ μ₯λμ΄ κ·Έλν½ μμ΄λ μ΄μ©μ΄ κ°λ₯ν©λλ€. κ²μ μ°½μ λ«μΌλ©΄ μ± κ³Ό μ΄μμ΄ μ μ₯λκ³ , λ€μ μ΄λ©΄ 볡μλ©λλ€. ν΅ν© λ¬Έμ μ체λ₯Ό λ«μΌλ©΄ μ΄λ € μλ ν΅ν© λ¬Έμμμ μ κ±°λ©λλ€. μ°κ²°μ λμΌλ©΄ μλ² λΆμ΄ μ¬μ€μ λ©λλ€.
- λ³κ²½μ¬νμ νΈμ§ μ€μΈ μ± μλ§ μ μ©λ©λλ€. μλͺ»λ νμ΄μ§λ λ무 κΈ΄ ν μ€νΈλ κ±°λΆλ©λλ€. BookSetTextλ 첫 λ²μ§Έ μ μΆ μ μ λͺ¨λ νμ΄μ§λ₯Ό νμΈν©λλ€. μλͺ»λ νμ΄μ§ μ§μ°μΌλ‘ μΈν΄ λΆλΆ μ°κΈ°κ° λ°μνμ§ μμ΅λλ€.
κ° μμ λ λ³λμ νμΌ .csxλ‘ μ μ₯νκ³ IDEμμ μ€νν μ μμ΅λλ€. UO κ°μ²΄μ λκΈ° κΈ°λ₯μ νμ¬ κ²μ μΈμ
μ νΈμ€νΈλ₯Ό μ 곡ν©λλ€. λ°λͺ¨ serial μ΄λ¦, μ’ν, μ£Όμλ₯Ό μμ μ κ²μΌλ‘ λ°κΎΈμΈμ.
μ΄ μ½λλ₯Ό λ³λμ .csx νμΌλ‘ μ€ννμΈμ. μΈμλ νΈμΆμ μ§μ νμλ©λλ€. μμ μ μ΄λ¦, serial, μ£Όμλ₯Ό μμ μ κ°μΌλ‘ λ°κΎΈμΈμ.
λͺ λ Ήμ λ 립λ λ¬Έμ λλ€. μμ λ©μμ§λ νΈμΆ μμμ λνλ΄λ©° μλ² λμμ μλ£λ₯Ό νμΈνμ§ μμ΅λλ€.
UO.Print("Calling UO.BookSetHeader");
UO.BookSetHeader("Mining route", "Alice");λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
UO.BookSetHeader("Mining route", "Alice");λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
return RunScenario();
object? RunScenario()
{
var route = "Northern mine";
var author = "Alice";
UO.BookSetHeader("Route: " + route, author);
return null;
}λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
- 보쑰 κΈ°λ₯μ μ 체μ μΌλ‘ μ 곡λ©λλ€. trueλ λ‘컬 νμΈ λ° νΈμΆλ§ μνν¨μ μλ―Έν©λλ€. μλ²μ λ Ήμ νμΈμ λ°ννμ§ μμ΅λλ€.
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 = SetNotebookHeader("Supply list", "Alice");
return null;
}
dynamic SetNotebookHeader(dynamic title, dynamic author)
{
if (Truth(Len(title) > 47) || Truth(Len(author) > 29))
{
return false;
}
UO.BookSetHeader(title, author);
return true;
}
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C#μ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€. μ νν UO μ΄λ¦μ μ¬μ©νμΈμ. μ«μ νλκ·Έλ 0κ³Ό λΉκ΅νκ³ λ°ν νμμ΄ boolμΌ λλ§ boolμ μ¬μ©νμΈμ.
λ§€κ°λ³μ: title (Any), author (Any)
κ²°κ³Ό: void / Unit.
νΈμΆ μ:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetHeader:bridge.BookSetHeader(state.BookTitle, state.BookAuthor).
λ΄λΆ ꡬν μ½λμ΄λ©° λ 립 μ€ν¬λ¦½νΈλ‘ μ€νν μ μμ΅λλ€.
case "booksetheader":
state.BookTitle = Text(0);
state.BookAuthor = Text(1);
bridge.BookSetHeader(state.BookTitle, state.BookAuthor);
return InjectionValue.Unit;Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
void UO.BookSetPageText(object? page, object? text);μ΄λ € μλ νΈμ§ κ°λ₯ν μ± μ ν νμ΄μ§ ν μ€νΈλ₯Ό λ°κΏλλ€.
-
pageβ serial μ± μ΄ μλ 1μ νμ΄μ§ λ²νΈμ λλ€. μνμ μλ²μμ λ³΄κ³ νλ νμ΄μ§ μμ λλ€. -
textβ ν μ€νΈ. μ€μ Chr(10)λ‘ κ΅¬λΆλ©λλ€. Chr(13)μ΄ μ κ±°λμμ΅λλ€. νμ΄μ§λΉ μ΅λ 10 μ€, μ€λΉ μ΅λ 53 λ¬Έμ. λ λ¬Έμλ κΈμ§λ©λλ€.
void - κ°μ΄ μμ΅λλ€. μ΄λ true/false λλ μλ² νμΈμ΄ μλ μ°κΈ° μμ²μ λλ€. μλ²μμ νΈμ§μ κΈμ§ν μ μμ΅λλ€.
- λ¨Όμ , κ²μ μ‘μ μ μ΄μ©ν΄ μνλ μ± μ νΌμ³λ³΄μΈμ. λͺ λ Ήμ λ§μ§λ§μΌλ‘ μ΄μλ μ± μ μ¬μ©ν©λλ€. ID μ± μ νμ©λμ§ μμ΅λλ€. μ± μ΄ μ¬λ¬ κΆ μλ κ²½μ° μ¬λ°λ₯Έ μ± μ μ ννμΈμ. Getμ μ΄λ―Έ λ‘λλ νμ΄μ§λ₯Ό μ½κ³ λλ½λ νμ΄μ§λ₯Ό μ체μ μΌλ‘ μμ²νμ§ μμ΅λλ€.
- κ΄λ¦¬μμμλ μ± μ λ΄μ©μ΄ μΈμ μ μ μ₯λμ΄ κ·Έλν½ μμ΄λ μ΄μ©μ΄ κ°λ₯ν©λλ€. κ²μ μ°½μ λ«μΌλ©΄ μ± κ³Ό μ΄μμ΄ μ μ₯λκ³ , λ€μ μ΄λ©΄ 볡μλ©λλ€. ν΅ν© λ¬Έμ μ체λ₯Ό λ«μΌλ©΄ μ΄λ € μλ ν΅ν© λ¬Έμμμ μ κ±°λ©λλ€. μ°κ²°μ λμΌλ©΄ μλ² λΆμ΄ μ¬μ€μ λ©λλ€.
- λ³κ²½μ¬νμ νΈμ§ μ€μΈ μ± μλ§ μ μ©λ©λλ€. μλͺ»λ νμ΄μ§λ λ무 κΈ΄ ν μ€νΈλ κ±°λΆλ©λλ€. BookSetTextλ 첫 λ²μ§Έ μ μΆ μ μ λͺ¨λ νμ΄μ§λ₯Ό νμΈν©λλ€. μλͺ»λ νμ΄μ§ μ§μ°μΌλ‘ μΈν΄ λΆλΆ μ°κΈ°κ° λ°μνμ§ μμ΅λλ€.
κ° μμ λ λ³λμ νμΌ .csxλ‘ μ μ₯νκ³ IDEμμ μ€νν μ μμ΅λλ€. UO κ°μ²΄μ λκΈ° κΈ°λ₯μ νμ¬ κ²μ μΈμ
μ νΈμ€νΈλ₯Ό μ 곡ν©λλ€. λ°λͺ¨ serial μ΄λ¦, μ’ν, μ£Όμλ₯Ό μμ μ κ²μΌλ‘ λ°κΎΈμΈμ.
μ΄ μ½λλ₯Ό λ³λμ .csx νμΌλ‘ μ€ννμΈμ. μΈμλ νΈμΆμ μ§μ νμλ©λλ€. μμ μ μ΄λ¦, serial, μ£Όμλ₯Ό μμ μ κ°μΌλ‘ λ°κΎΈμΈμ.
λͺ λ Ήμ λ 립λ λ¬Έμ λλ€. μμ λ©μμ§λ νΈμΆ μμμ λνλ΄λ©° μλ² λμμ μλ£λ₯Ό νμΈνμ§ μμ΅λλ€.
UO.Print("Calling UO.BookSetPageText");
UO.BookSetPageText(2, "Camp A");λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
UO.BookSetPageText(2, "Camp A");λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
return RunScenario();
object? RunScenario()
{
UO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food");
return null;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
- 보쑰 κΈ°λ₯μ μ 체μ μΌλ‘ μ 곡λ©λλ€. trueλ λ‘컬 νμΈ λ° νΈμΆλ§ μνν¨μ μλ―Έν©λλ€. μλ²μ λ Ήμ νμΈμ λ°ννμ§ μμ΅λλ€.
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 = AppendNote(1, "Return before night");
return null;
}
dynamic AppendNote(dynamic page, dynamic line)
{
if (Truth(Len(line) > 53))
{
return false;
}
var previous = UO.BookGetPageText(page);
if (Truth(previous == ""))
{
UO.BookSetPageText(page, line);
return true;
}
var lineCount = 1;
for (int index = (int)(1); index <= Len(previous); index += (int)(1))
{
if (Truth(Mid(previous, index, 1) == Chr(10)))
{
lineCount = lineCount + 1;
}
}
if (Truth(lineCount >= 10))
{
return false;
}
UO.BookSetPageText(page, previous + Chr(10) + line);
return true;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
string Mid(object? value, int start, int length = int.MaxValue)
{
string text = Convert.ToString(value) ?? "";
int offset = Math.Clamp(start - 1, 0, text.Length);
return text.Substring(offset, Math.Min(Math.Max(0, length), text.Length - offset));
}
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μ μ¬μ©νμΈμ.
λ§€κ°λ³μ: page (Any), text (Any)
κ²°κ³Ό: void / Unit.
νΈμΆ μ:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetPageText:bridge.BookSetPageText(page + 1, state.BookPages[page]).
λ΄λΆ ꡬν μ½λμ΄λ©° λ 립 μ€ν¬λ¦½νΈλ‘ μ€νν μ μμ΅λλ€.
case "booksetpagetext":
{
int page = Math.Max(0, Arg(0) - 1);
while (state.BookPages.Count <= page) state.BookPages.Add(string.Empty);
state.BookPages[page] = Text(1);
bridge.BookSetPageText(page + 1, state.BookPages[page]);
return InjectionValue.Unit;
}Π£ΠΊΡΠ°ΡΠ½ΡΡΠΊΠ° Β· Π ΡΡΡΠΊΠΈΠΉ Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· ηΉι«δΈζ Β· ζ₯ζ¬θͺ Β· νκ΅μ΄
void UO.BookSetText(object? text);μ΄λ € μλ νΈμ§ κ°λ₯ν μ± μ 첫 λ²μ§Έ νμ΄μ§μμ ν μ€νΈλ₯Ό μλλ€.
-
textβ ν μ€νΈ. μ€μ Chr(10)λ‘ κ΅¬λΆλ©λλ€. Chr(13)μ΄ μ κ±°λμμ΅λλ€. νμ΄μ§λΉ μ΅λ 10 μ€, μ€λΉ μ΅λ 53 λ¬Έμ. λ λ¬Έμλ κΈμ§λ©λλ€.
void - κ°μ΄ μμ΅λλ€. μ΄λ true/false λλ μλ² νμΈμ΄ μλ μ°κΈ° μμ²μ λλ€. μλ²μμ νΈμ§μ κΈμ§ν μ μμ΅λλ€.
- λ¨Όμ , κ²μ μ‘μ μ μ΄μ©ν΄ μνλ μ± μ νΌμ³λ³΄μΈμ. λͺ λ Ήμ λ§μ§λ§μΌλ‘ μ΄μλ μ± μ μ¬μ©ν©λλ€. ID μ± μ νμ©λμ§ μμ΅λλ€. μ± μ΄ μ¬λ¬ κΆ μλ κ²½μ° μ¬λ°λ₯Έ μ± μ μ ννμΈμ. Getμ μ΄λ―Έ λ‘λλ νμ΄μ§λ₯Ό μ½κ³ λλ½λ νμ΄μ§λ₯Ό μ체μ μΌλ‘ μμ²νμ§ μμ΅λλ€.
- κ΄λ¦¬μμμλ μ± μ λ΄μ©μ΄ μΈμ μ μ μ₯λμ΄ κ·Έλν½ μμ΄λ μ΄μ©μ΄ κ°λ₯ν©λλ€. κ²μ μ°½μ λ«μΌλ©΄ μ± κ³Ό μ΄μμ΄ μ μ₯λκ³ , λ€μ μ΄λ©΄ 볡μλ©λλ€. ν΅ν© λ¬Έμ μ체λ₯Ό λ«μΌλ©΄ μ΄λ € μλ ν΅ν© λ¬Έμμμ μ κ±°λ©λλ€. μ°κ²°μ λμΌλ©΄ μλ² λΆμ΄ μ¬μ€μ λ©λλ€.
- λ³κ²½μ¬νμ νΈμ§ μ€μΈ μ± μλ§ μ μ©λ©λλ€. μλͺ»λ νμ΄μ§λ λ무 κΈ΄ ν μ€νΈλ κ±°λΆλ©λλ€. BookSetTextλ 첫 λ²μ§Έ μ μΆ μ μ λͺ¨λ νμ΄μ§λ₯Ό νμΈν©λλ€. μλͺ»λ νμ΄μ§ μ§μ°μΌλ‘ μΈν΄ λΆλΆ μ°κΈ°κ° λ°μνμ§ μμ΅λλ€.
- BookSetText: Chr(12)μ λͺ μμ μΌλ‘ νμ΄μ§λ₯Ό ꡬλΆν©λλ€. Chr(12)μ΄ μμΌλ©΄ λͺ¨λ 10 μ€μ΄ νμ΄μ§λ₯Ό ꡬμ±ν©λλ€. λλ¨Έμ§ μ΄μ νμ΄μ§λ μ§μμ§μ§ μμ΅λλ€. μμ ν κ΅μ²΄νλ €λ©΄ λ¨Όμ BookClearTextλ₯Ό λ³λλ‘ νΈμΆνμΈμ. λΉ ν μ€νΈλ 첫 λ²μ§Έ νμ΄μ§λ§ λ체ν©λλ€.
κ° μμ λ λ³λμ νμΌ .csxλ‘ μ μ₯νκ³ IDEμμ μ€νν μ μμ΅λλ€. UO κ°μ²΄μ λκΈ° κΈ°λ₯μ νμ¬ κ²μ μΈμ
μ νΈμ€νΈλ₯Ό μ 곡ν©λλ€. λ°λͺ¨ serial μ΄λ¦, μ’ν, μ£Όμλ₯Ό μμ μ κ²μΌλ‘ λ°κΎΈμΈμ.
μ΄ μ½λλ₯Ό λ³λμ .csx νμΌλ‘ μ€ννμΈμ. μΈμλ νΈμΆμ μ§μ νμλ©λλ€. μμ μ μ΄λ¦, serial, μ£Όμλ₯Ό μμ μ κ°μΌλ‘ λ°κΎΈμΈμ.
λͺ λ Ήμ λ 립λ λ¬Έμ λλ€. μμ λ©μμ§λ νΈμΆ μμμ λνλ΄λ©° μλ² λμμ μλ£λ₯Ό νμΈνμ§ μμ΅λλ€.
UO.Print("Calling UO.BookSetText");
UO.BookSetText("Camp A\nReturn home");λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
UO.BookSetText("Mining route" + Chr(10) + "Start at camp");
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
return RunScenario();
object? RunScenario()
{
UO.BookSetText("Camp A" + Chr(12) + "Camp B" + Chr(12) + "Return home");
return null;
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();λ§€κ°λ³μμ μ€ν νλ¦:
- λͺ¨λ μμμλ νμν μ± μ΄ μ΄λ―Έ μ΄λ € μκ³ , νμν νμ΄μ§κ° μμ λμμΌλ©°, λ Ήμμ μν΄ μ± μ΄ νΈμ§λκ³ μλ€κ³ κ°μ ν©λλ€. μ«μ 1, 2 λ° 3λ νμ΄μ§ λ²νΈμ λλ€. κ·Έλ€μ΄ μ‘΄μ¬νλμ§ νμΈνμμμ€. ν μ€νΈ/μ΄λ¦μ λ°λͺ¨μ©μ λλ€.
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()
{
WriteRoute("Northern mine", "Bring bandages");
return null;
}
void WriteRoute(dynamic destination, dynamic supplies)
{
var firstPage = "Destination" + Chr(10) + destination;
var secondPage = "Supplies" + Chr(10) + supplies;
UO.BookSetText(firstPage + Chr(12) + secondPage);
}
string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}C#μ λμλ¬Έμλ₯Ό ꡬλΆν©λλ€. μ νν UO μ΄λ¦μ μ¬μ©νμΈμ. μ«μ νλκ·Έλ 0κ³Ό λΉκ΅νκ³ λ°ν νμμ΄ boolμΌ λλ§ boolμ μ¬μ©νμΈμ.
λ§€κ°λ³μ: text (Any)
κ²°κ³Ό: void / Unit.
νΈμΆ μ:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.BookSetText:bridge.BookSetText(bookText).
λ΄λΆ ꡬν μ½λμ΄λ©° λ 립 μ€ν¬λ¦½νΈλ‘ μ€νν μ μμ΅λλ€.
case "booksettext":
{
string bookText = Text(0) ?? string.Empty;
state.BookPages.Clear();
state.BookPages.AddRange(bookText.Split(new[] { '\f' }, StringSplitOptions.None));
bridge.BookSetText(bookText);
return InjectionValue.Unit;
}