KO CSharp Structure - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

Π£ΠΊΡ€Π°Ρ—Π½ΡΡŒΠΊΠ° Β· Русский Β· English Β· Deutsch Β· FranΓ§ais Β· Italiano Β· EspaΓ±ol Β· 繁體中文 Β· ζ—₯本θͺž Β· ν•œκ΅­μ–΄

ν”„λ‘œκ·Έλž¨ 및 슀크립트 ꡬ쑰

μ„€λͺ…μ„œ C# Β· μ˜ˆμ‹œ UO

C# ν”„λ‘œκ·Έλž¨μ€ μœ ν˜• μ„ μ–Έ, λ©”μ†Œλ“œ, ν‘œν˜„μ‹ 및 μ—°μ‚°μžλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. usingλŠ” λ„€μž„μŠ€νŽ˜μ΄μŠ€λ₯Ό μ—°κ²°ν•©λ‹ˆλ‹€. namespace μœ ν˜•μ„ κ΅¬μ„±ν•©λ‹ˆλ‹€. ν΄λž˜μŠ€λŠ” 데이터와 λ™μž‘μ„ μ €μž₯ν•©λ‹ˆλ‹€. λ©”μ†Œλ“œ μ½”λ“œλŠ” { } μ•ˆμ— 있으며 일반 λͺ…령문은 ;둜 λλ‚©λ‹ˆλ‹€.

κ°„λ‹¨ν•œ 예제 (Example.csx)

이 예제λ₯Ό Example.csx둜 λ”°λ‘œ μ €μž₯ν•˜κ³  이 νŽ˜μ΄μ§€μ˜ λ‹€λ₯Έ μ˜ˆμ œμ™€ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•˜μ„Έμš”.

Example.csx:

UO.Print("Ready");
await WaitAsync(10);
UO.Print("Done");

κ²°κ³Ό:

Ready
Done

κ°„λ‹¨ν•œ 예제 (Program.cs + Minimal.csproj)

이 예제λ₯Ό Program.cs둜 λ”°λ‘œ μ €μž₯ν•˜κ³  이 νŽ˜μ΄μ§€μ˜ λ‹€λ₯Έ μ˜ˆμ œμ™€ λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰ν•˜μ„Έμš”.

Program.cs:

// PROJECT-EXAMPLE
System.Console.WriteLine("Ready");

Minimal.csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
  </PropertyGroup>
  <ItemGroup><Compile Include="Program.cs" /></ItemGroup>
</Project>
dotnet run --project Minimal.csproj

κ²°κ³Ό (Minimal.csproj):

Ready

κ°„λ‹¨ν•œ μ‹œλ‚˜λ¦¬μ˜€ .csx

ν¬ν•¨λœ μŠ€ν¬λ¦½νŠΈλŠ” UO, Args, Cancellation 및 WaitAsync을 μˆ˜μ‹ ν•©λ‹ˆλ‹€. λͺ…령문은 μœ„μ—μ„œ μ•„λž˜λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. 클래슀 ProgramλŠ” ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

string message = "Script started";
UO.Print(message);
await WaitAsync(100);
UO.Print($"X={UO.GetX()}, Y={UO.GetY()}");

μ‚¬μš©μž μ •μ˜ κΈ°λŠ₯이 ν¬ν•¨λœ 슀크립트

ν•¨μˆ˜λ₯Ό μ„ μ–Έν•œλ‹€κ³  ν•΄μ„œ κ·Έ μžμ²΄κ°€ μ‹€ν–‰λ˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. ReportPosition()λΌλŠ” μ „ν™”λŠ” κ·Έλ…€μ˜ λͺΈμ—μ„œ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

void ReportPosition()
{
    int x = UO.GetX();
    int y = UO.GetY();
    UO.Print($"Position: {x}, {y}");
}

ReportPosition();
await WaitAsync(100);
ReportPosition();

일반 ν”„λ‘œκ·Έλž¨ .cs

일반적인 ν”„λ‘œμ νŠΈμ—μ„œ μ§„μž…μ μ€ Main λ˜λŠ” μ΅œμƒμœ„ μ½”λ“œμž…λ‹ˆλ‹€. λ„€μž„μŠ€νŽ˜μ΄μŠ€, μ—¬λŸ¬ 파일 및 μ‚¬μš©μž μ •μ˜ λΌμ΄λΈŒλŸ¬λ¦¬λŠ” ν‘œμ€€ C# ν”„λ‘œμ νŠΈλ‘œ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

// PROJECT-EXAMPLE
using System;

namespace UserTools;

internal static class Program
{
    private static int Main(string[] args)
    {
        Console.WriteLine(args.Length > 0 ? args[0] : "Ready");
        return 0;
    }
}

ν”„λ‘œμ νŠΈ 파일

.csprojλŠ” λŒ€μƒ ν”Œλž«νΌ, μ†ŒμŠ€, 쒅속성 및 컴파일 μ˜΅μ…˜μ„ μ„€λͺ…ν•©λ‹ˆλ‹€. .cs μ½”λ“œλ₯Ό μ €μž₯ν•©λ‹ˆλ‹€. .csxλŠ” 슀크립트 싀행을 μœ„ν•œ 슀크립트λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. ν™•μž₯자λ₯Ό 변경해도 ν”„λ‘œκ·Έλž¨μ˜ κ΅¬μ‘°λ‚˜ μ§„μž…μ μ΄ μžλ™μœΌλ‘œ λ³€κ²½λ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
</Project>

일반적인 ꡬ쑰: MyScript.csproj, Program.cs, Models/, Services/. μž‘μ€ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œλŠ” .csx ν•˜λ‚˜λ©΄ μΆ©λΆ„ν•©λ‹ˆλ‹€. κ²Œμž„ ν΄λž˜μŠ€μ—μ„œ APIλŠ” λ§€κ°œλ³€μˆ˜λ‚˜ ν•„λ“œλ₯Ό 톡해 λͺ…μ‹œμ μœΌλ‘œ μ „λ‹¬λ©λ‹ˆλ‹€. μž„μ˜μ˜ 일반 ν”„λ‘œμ νŠΈλŠ” 자체적으둜 μ „μ—­ UOλ₯Ό μˆ˜μ‹ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

곡식 λ¬Έμ„œ: ν”„λ‘œκ·Έλž¨ 및 슀크립트 ꡬ쑰 - Microsoft Learn.

일반 .cs λ˜λŠ” .csproj μ½”λ“œμ—μ„œλŠ” μ–΄μ…ˆλΈ”λ¦¬μ— ICSharpScriptκ°€ μžˆμ–΄λ„ Mainμ΄λ‚˜ μ΅œμƒμœ„ 문이 μš°μ„ ν•©λ‹ˆλ‹€. μ‹€ν–‰ κ°€λŠ₯ν•œ μ§„μž…μ μ΄ μ—†μœΌλ©΄ public이고 좔상 ν˜•μ‹μ΄ μ•„λ‹ˆλ©° public 맀개 λ³€μˆ˜ μ—†λŠ” μƒμ„±μžκ°€ μžˆλŠ” ICSharpScript 클래슀λ₯Ό ν•˜λ‚˜ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. 일반 μ½”λ“œλŠ” 전달받은 μ»¨ν…μŠ€νŠΈλ‚˜ CSharpScriptContext.Currentλ₯Ό 톡해 κ²Œμž„ APIλ₯Ό μ‚¬μš©ν•˜λ©° μ„ μ–Έλ˜μ§€ μ•Šμ€ μ „μ—­ UO λ³€μˆ˜λ₯Ό μžλ™μœΌλ‘œ λ°›μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

⚠️ **GitHub.com Fallback** ⚠️