pal_rcon

Rcon client dedicated to Palworld that supports both sync and async


Keywords
palworld, rcon
License
MIT
Install
pip install pal_rcon==0.0.3

Documentation

pal_rcon

Palworld į”¨ãŽ Rcon クナイã‚ĸãƒŗトです。

Warning

ã‚ĩãƒŧバãƒŧ側ぎ原čŖ…ãŽå•éĄŒãĢã‚ˆã‚ŠãĄã‚ƒã‚“ã¨å‹•ã‹ãĒいことがありぞす。

æ—ĸįŸĨãŽå•éĄŒ

  • マãƒĢチバイト文字ãĢ寞åŋœã—ãĻいãĒい
    ã‚ĩãƒŧバãƒŧがマãƒĢチバイト文字ãĢ寞åŋœã—ãĻいãĒいため、マãƒĢチバイト文字がå…ĨãŖãĻいるといろいろとおかしくãĒる。
    送äŋĄæ™‚: 文字化けをčĩˇã“す
    受äŋĄæ™‚: おそらく length ãŒã†ãžãč¨ˆįŽ—されãĻãŠã‚‰ãšã€ãƒĄãƒƒã‚ģãƒŧジが途中で途切れãĻしぞう

  • ShowPlayers がうぞく抟čƒŊしãĒい
    うぞく抟čƒŊしãĒい場合がいくつかįĸēčĒã—ãĻいぞす。

    • プãƒŦイヤãƒŧがログイãƒŗ中(キãƒŖナクãƒĒ中åĢむ)ぎ場合
      ワãƒŧãƒĢドãĢå…Ĩる寸前ãĢ PlayerUID がčĒ­ãŋčžŧぞれるぎで、それぞでは PlayerUID が 00000000 とãĒãŖãĻ Steam ぎ名前がčŋ”される。
      さらãĢ Steam ぎ名前がマãƒĢãƒãƒã‚¤ãƒˆæ–‡å­—ã ã¨ä¸Šč¨˜ãŽä¸å…ˇåˆãĢよりãƒŦ゚ポãƒŗ゚が途中で切れãĻしぞう。
    • プãƒŦイヤãƒŧぎ名前ãĢマãƒĢチバイト文字がåĢぞれãĻいる場合
      ä¸Šč¨˜å‚į…§ã€‚
  • ãƒ‘ã‚ąãƒƒãƒˆ ID ãŒãĄã‚ƒã‚“ã¨čŋ”ãŖãĻこãĒい
    Rcon ではäģģ意ぎ数字を送äŋĄæ™‚ãĢ一įˇ’ãĢ送ることで、ãƒŦ゚ポãƒŗã‚šãĢそぎ数字をåĢめãĻčŋ”しãĻくれぞす。
    ログイãƒŗæ™‚ã¯ãĄã‚ƒã‚“ã¨čŋ”ãŖãĻきぞすが、ã‚ŗマãƒŗドを送äŋĄã™ã‚‹ã¨ 0 がčŋ”ãŖãĻきぞす。

こぎクナイã‚ĸãƒŗトぎ原čŖ…ãĢついãĻ

  • "\n"でįĩ‚わãŖãĻいãĒい場合は再čŠĻčĄŒã™ã‚‹
    PalWorld ぎ ãƒŦ゚ポãƒŗ゚はåŋ…ãšæ”ščĄŒã§įĩ‚わるようです。
    æ”ščĄŒã§įĩ‚わãŖãĻいãĒい場合は max_attempts ぎ数だけ再čŠĻčĄŒã—ãžã™ã€‚
    į‰šãĢčĩˇãã‚„すい ShowPlayers ではデフりãƒĢトで 10 回ãĢしãĻありぞす。
    もし、マãƒĢチバイト文字がåĢぞれãĻいãĒければãƒĒトナイぎ間ãĢログイãƒŗが厌äē†ã—、æ­Ŗã—ã„æƒ…å ąã‚’å–åž—ã§ããžã™ã€‚
    最垌ぞで"\n"でįĩ‚わらãĒかãŖた場合はうぞくデã‚ŗãƒŧドできãĒい可čƒŊ性があるぎで IncompleteMessageError を送å‡ēしぞす。
    IncompleteMessageError.message ãĢ受äŋĄã—た Payload がå…ĨãŖãĻいぞす。

  • 送äŋĄæ™‚ぎエãƒŗã‚ŗãƒŧドは ASCII です
    UTF-8 でエãƒŗã‚ŗãƒŧドすると文字化けする上ãĢãƒŦ゚ポãƒŗ゚も文字化けしãĻしぞうぎで ASCII でエãƒŗã‚ŗãƒŧドしãĻいぞす。
    マãƒĢãƒãƒã‚¤ãƒˆæ–‡å­—ã‚’æ¸Ąã™ã¨ UnicodeEncodeError とãĒるぎでæŗ¨æ„ã—ãĻください。

äŊŋい斚

pip install pal_rcon

Sync

from pal_rcon import PalRcon

# with Context Manager
with PalRcon("127.0.0.1", 25575, "password") as rcon:
    res = rcon.send_info()
    print(res.message)

# not Context Manager
rcon = PalRcon("127.0.0.1", 25575, "password")
rcon.connect()
res = rcon.send_info()
print(res.message)
rcon.disconnect()

Async

from pal_rcon import AsyncPalRcon

# with Context Manager
async with AsyncPalRcon("127.0.0.1", 25575, "password") as rcon:
    res = await rcon.send_info()
    print(res.message)

# not Context Manager
rcon = AsyncPalRcon("127.0.0.1", 25575, "password")
await rcon.connect()
res = await rcon.send_info()
print(res.message)
await rcon.disconnect()

Send Commands

rcon.execute_command(command: str | list, max_attempts: int | None = 1) -> CommandResponse
rcon.send_shutdown(seconds: int | None = 1, message: str | None = "", send_save: bool | None = False, max_attempts: int | None = 1) -> CommandResponse:
rcon.send_do_exit(max_attempts: int | None = 1) -> CommandResponse
rcon.send_broadcast(message: str, max_attempts: int | None = 1) -> CommandResponse
rcon.send_kick_player(steam_id: str | int, max_attempts: int | None = 1) -> CommandResponse
rcon.send_ban_player(steam_id: str | int, max_attempts: int | None = 1) -> CommandResponse
rcon.send_show_players(max_attempts: int | None = 10) -> PlayerlistResponse
rcon.send_info(max_attempts: int | None = 1) -> CommandResponse
rcon.send_save(max_attempts: int | None = 1) -> CommandResponse

License MIT ŠCharahiro-tan