API UO Dist ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

UO.Dist

ClassicUO β€’ Runtime API

X와 Y μ ˆλŒ€ 차이 쀑 큰 κ°’μœΌλ‘œ 두 지점 μ‚¬μ΄μ˜ 타일 수λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.

μ •ν™•ν•œ ꡬ문

UO.Dist(Xfrom:Any, Yfrom:Any, Xto:Any, Yto:Any) -> Integer

λ§€κ°œλ³€μˆ˜

  • Xfrom β€” μ‹œμž‘ X.
  • Yfrom β€” μ‹œμž‘ Y.
  • Xto β€” λͺ©μ μ§€ X.
  • Yto β€” λͺ©μ μ§€ Y.

λ°˜ν™˜κ°’

유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

λ™μž‘

  • νŒ¨ν‚·, λŒ€κΈ°, 지도 λ‘œλ”©, μž₯μ• λ¬Ό, Z λ˜λŠ” μ›”λ“œ 검사가 μ—†λŠ” 순수 κ³„μ‚°μž…λ‹ˆλ‹€. 톡행 경둜λ₯Ό μ°Ύκ±°λ‚˜ 도착을 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 같은 μ’Œν‘œκ³„μ˜ 지점을 μ‚¬μš©ν•˜λ©° 우회 κ²½λ‘œλŠ” 더 κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ„€ λ§€κ°œλ³€μˆ˜ λͺ¨λ‘ ν•„μš”ν•©λ‹ˆλ‹€. λ¬Έμ„œ λ²”μœ„ 0..65535의 Integer μ›”λ“œ μ’Œν‘œλ₯Ό μ „λ‹¬ν•˜μ„Έμš”. AnyλŠ” λ²”μš© μ–΄λŒ‘ν„°μ΄λ©° 물체 IDκ°€ μ•„λ‹™λ‹ˆλ‹€. κΈ°λ³Έκ°’, μ»¨ν…Œμ΄λ„ˆ λ‚΄λΆ€ μ’Œν‘œ, λ‹€μ„― 번째 Z, 단일 물체 μ˜€λ²„λ‘œλ“œλŠ” μ—†μŠ΅λ‹ˆλ‹€.
  • Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

λ‚΄λΆ€ ν•¨μˆ˜: ν˜ΈμΆœλΆ€ν„° κ²°κ³ΌκΉŒμ§€

μ„Έ 번째 μ˜ˆμ œλŠ” 일반 슀크립트 ν•¨μˆ˜λ‘œ μ•Œκ³ λ¦¬μ¦˜μ„ μž¬ν˜„ν•©λ‹ˆλ‹€. 엔진이 이 예제 ν•¨μˆ˜λ₯Ό λ‚΄λΆ€μ μœΌλ‘œ ν˜ΈμΆœν•œλ‹€λŠ” λœ»μ€ μ•„λ‹™λ‹ˆλ‹€.

1. ExecuteStealthCompatibility

μ–΄λŒ‘ν„°κ°€ μœ„μΉ˜ 0..3을 Xfrom,Yfrom,Xto,Yto μˆœμ„œμ˜ μ •μˆ˜λ‘œ 읽고 계산 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ†ŒμŠ€: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ν•¨μˆ˜ ExecuteStealthCompatibility.

2. GetDistance

GetDistance(int,int,int,int): dx=Math.Abs(x1-x2); dy=Math.Abs(y1-y2); return Math.Max(dx,dy).

Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

ν”„λ‘œμ νŠΈ μ†ŒμŠ€: external/InjectionScript/src/InjectionScript/Runtime/InjectionApiUO.cs; ν•¨μˆ˜ GetDistance.

νŒ¨ν‚·, λŒ€κΈ°, 지도 λ‘œλ”©, μž₯μ• λ¬Ό, Z λ˜λŠ” μ›”λ“œ 검사가 μ—†λŠ” 순수 κ³„μ‚°μž…λ‹ˆλ‹€. 톡행 경둜λ₯Ό μ°Ύκ±°λ‚˜ 도착을 보μž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 같은 μ’Œν‘œκ³„μ˜ 지점을 μ‚¬μš©ν•˜λ©° 우회 κ²½λ‘œλŠ” 더 κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

예제

직접 계산

# 직접 계산
#
# X와 Y μ ˆλŒ€ 차이 쀑 큰 κ°’μœΌλ‘œ 두 지점 μ‚¬μ΄μ˜ 타일 수λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
#
# 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
# λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

SUB Main()
    # (100,100)κ³Ό (103,104)의 μ ˆλŒ€ μ°¨μ΄λŠ” 3κ³Ό 4μž…λ‹ˆλ‹€. Main은 큰 값인 Integer 4λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
    # 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
    # λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
    # Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

    Return UO.Dist(100,100,103,104)
END SUB

λ§€κ°œλ³€μˆ˜ 및 μ‹€ν–‰ μ„€λͺ…:

  • (100,100)κ³Ό (103,104)의 μ ˆλŒ€ μ°¨μ΄λŠ” 3κ³Ό 4μž…λ‹ˆλ‹€. Main은 큰 값인 Integer 4λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  • Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

κ²°κ³Ό μ˜¬λ°”λ₯΄κ²Œ νŒμ •

# κ²°κ³Ό μ˜¬λ°”λ₯΄κ²Œ νŒμ •
#
# X와 Y μ ˆλŒ€ 차이 쀑 큰 κ°’μœΌλ‘œ 두 지점 μ‚¬μ΄μ˜ 타일 수λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
#
# 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
# λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

SUB Main()
    # (100,100)κ³Ό (101,99)의 κ±°λ¦¬λŠ” 1이며 별도 비ꡐ distance<=2λŠ” True=1μž…λ‹ˆλ‹€. "1:1"의 첫 값은 거리이고 두 λ²ˆμ§ΈλŠ” 논리 κ²°κ³Όμž…λ‹ˆλ‹€.
    # 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
    # λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
    # Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

    Dim distance=UO.Dist(100,100,101,99)
    Dim close=distance<=2
    Return CStr(distance) & ":" & CStr(close)
END SUB

λ§€κ°œλ³€μˆ˜ 및 μ‹€ν–‰ μ„€λͺ…:

  • (100,100)κ³Ό (101,99)의 κ±°λ¦¬λŠ” 1이며 별도 비ꡐ distance<=2λŠ” True=1μž…λ‹ˆλ‹€. "1:1"의 첫 값은 거리이고 두 λ²ˆμ§ΈλŠ” 논리 κ²°κ³Όμž…λ‹ˆλ‹€.
  • 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  • Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

전체 슀크립트 μ•Œκ³ λ¦¬μ¦˜

# 전체 슀크립트 μ•Œκ³ λ¦¬μ¦˜
#
# X와 Y μ ˆλŒ€ 차이 쀑 큰 κ°’μœΌλ‘œ 두 지점 μ‚¬μ΄μ˜ 타일 수λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.
#
# 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
# λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.

SUB Main()
    # UO.Dist와 RebuildTileDistanceλŠ” 4, Main은 "4:4"λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 전체 λ„μš°λ―ΈλŠ” Abs 차이λ₯Ό ꡬ해 큰 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μΆ”κ°€ API λͺ…령이
    # μ•„λ‹Œ 예제 μ½”λ“œμž…λ‹ˆλ‹€.
    # 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True
    # λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
    # Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

    Dim actual=UO.Dist(100,100,103,104)
    Dim rebuilt=RebuildTileDistance(100,100,103,104)
    Return CStr(actual) & ":" & CStr(rebuilt)
END SUB

Function RebuildTileDistance(Xfrom, Yfrom, Xto, Yto) As Integer
    Dim dx = Abs(Xto-Xfrom)
    Dim dy = Abs(Yto-Yfrom)
    If dx>dy Then
        Return dx
    End If
    Return dy
End Function

λ§€κ°œλ³€μˆ˜ 및 μ‹€ν–‰ μ„€λͺ…:

  • UO.Dist와 RebuildTileDistanceλŠ” 4, Main은 "4:4"λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€. 전체 λ„μš°λ―ΈλŠ” Abs 차이λ₯Ό ꡬ해 큰 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€. μΆ”κ°€ API λͺ…령이 μ•„λ‹Œ 예제 μ½”λ“œμž…λ‹ˆλ‹€.
  • 유효 μ’Œν‘œμ—μ„œλŠ” μŒμˆ˜κ°€ μ•„λ‹Œ Integer 타일 μˆ˜μž…λ‹ˆλ‹€. 0은 동일 XY, 1은 ν•œ 타일이며 성곡 ν”Œλž˜κ·Έκ°€ μ•„λ‹™λ‹ˆλ‹€. 별도 비ꡐ distance<=2κ°€ 1/True λ˜λŠ” 0/Falseλ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  • Max(Abs(Xto-Xfrom), Abs(Yto-Yfrom)). 지점을 바꿔도 κ°™μŠ΅λ‹ˆλ‹€. μœ ν΄λ¦¬λ“œ 거리, 차이의 ν•©, μž₯애물을 λ„λŠ” 걸음 μˆ˜κ°€ μ•„λ‹™λ‹ˆλ‹€.

en Β· ru Β· uk Β· fr Β· de Β· it Β· es Β· zh-tw Β· ja Β· ko

Basic