IRC용 주사위 프로그램 (루아틱 접속 가능, 단일 파일)

실행파일 (3.56MB): utgard_loki.exe
코드파일 (13.0KB): utgard_loki.py

수정사항:
irc.luatic.net에 실행이 가능하도록 수정하였습니다. (2012/6/1)
파일이 실행이 안 된다는 제보가 있어서 다시 올려봅니다. (2010/5/3)
단일 파일로 배포합니다. 용량도 4M->2M로 줄었습니다. (2010/3/26)
굴리는 사용자 닉을 표시하게 했습니다. (2010/3/26)
사용자가 들어오거나 나가면 튕기는 현상을 해결했습니다. (2009/8/18)
$2 서버에 접속할 수 없을 때 흔히 벌어지는 현상입니다. IRC 서버 접속이 잘 되는지 확인해보시고, 해결이 안 되면 댓글로 알려주세요.
파이선으로 만든 IRC용 주사위 로봇 “우트가르드 로키”입니다. IRCBot 모듈을 기반으로 했으며, 실행 파일은 py2exe pyInstaller로 만들었습니다. 이전 mIRC 스크립트와는 달리 mIRC에 의존하지 않으며, 닉과 서버를 정해서 실행시킨 후 채널에 초대하는 방식입니다.

설치와 실행

utgard_loki.exe 실행파일을 편하신 폴더에 받으시면 됩니다. 이 실행 파일은 윈도우뿐 아니라 맥과 리눅스도 된다고 들었는데, 직접 테스트해보지는 못했습니다. 실행하시려면 이 파일을 더블클릭하세요.

파이선 해석기가 있으신 분은 utgard_loki.py 모듈을 받아서 사용하셔도 됩니다. 코드를 보거나 수정하시려면 이 모듈로 하시면 됩니다.

수정과 재배포

원래 출처를 밝히시고 코드 상단의 프로그램명과 저작권 정보를 삭제하지 않으시면 수정과 재배포는 얼마든지 괜찮습니다.

접속

접속하려면 utgard_loki 파일을 실행시킨 후 닉 (예: 우트가르드-로키)과 서버 (예: irc.hanirc.org, irc.dankun.net 등)를 지정합니다. 뭔가 글자가 무진장 많이 지나갑니다. 서버 접속 메시지가 떴으면 필요한 채널에서 관리자가 주사위 로봇을 초대하세요. (예: /invite 우트가르드-로키 #국가의건설) 접속을 끊으려면 프로그램을 끄거나 파이선 셸을 초기화하면 됩니다.

주사위 굴리기

주사위를 굴리려면 로봇이 접속한 상태에서

2d10 + 5

하는 식으로 채널이나 로봇에게 귓속말로 쳐주면 됩니다. 채널에 입력하면 공개 굴림이 되며, 귓속말로 하면 비밀 굴림이 됩니다. 주사위 지정은 첫 단어에만 반응하며, 수정치는 한 칸 떼어주세요.

d20 +30-7

등등. 주사위 갯수는 지정이 없으면 1, 면수는 지정이 없으면 6입니다.

주사위 결과를 정렬하고 싶으면

5d 정렬

이라든지

6d20 역정렬

10d10 거꾸로 정렬

하는 식으로 적어주면 됩니다. 정렬과 수정치 기능은 동시에 발동하지 않습니다. 정렬과 수정치가 둘 다 있으면 정렬만 적용합니다.

32 thoughts on “IRC용 주사위 프로그램 (루아틱 접속 가능, 단일 파일)

  1. 魔界範君

    IRC 쪽은 저런 면에서 좋더군요. 다이스 프로그램에 따라서는 7th Sea나 Hero System처럼 보통의 방식으로는 손이 많이 가는 다이스 롤도 해결할 수 있게 만들 수 있을 것 같고…
    팀에서 다챗을 위주로 쓰다보니까 이런 종류 프로그램 만들어서 쓰시는 분들 보면 부러울 때가 있습니다(…

    Reply
    1. 로키

      예, 스크립팅이 되면 그런 이점이 있죠. 다&챗은 다른 것보다 무한 에러 때문에 못 썼지만요. (..) 요즘에는 공유기 사용이 너무 흔해지기도 했고요.

      7번째 바다 주사위와 전투 페이즈 관리는 mIRC 스크립트로도 만들어본 일이 있는데, 파이선은 스크립팅 언어가 훨씬 유연해서 전에는 어려웠던 기능도 구현할 수 있는 등 여러모로 좋더라고요. 프로토콜 부분만 조금씩 고치면 다른 네트워크 표준, 예를 들어 재버라든지 심지어는 MSN이나 다이스&챗과 연동하는 것도 생각할 수 있고요.

      Reply
  2. 뮤이든

    전에 mIRC 스크립트로 D&D 3.5 캐릭터 시트를 포함한 플레이어용 스크립트와 NPC 대화를 간편화 시킨 마스터용 스크립트를 제작하다가 중도 포기했었는데…. 자동로그저장, 각종 계산기능 등을 포함한 bot을 돌릴 서버만 갖춰진다면 다챗 이상의 orpg프로그램 제작이 가능할거 같더군요(물론 전 스킬이 딸려서 그정도 까진 못하지만..)

    Reply
    1. 로키

      mIRC 스크립트만으로는 mIRC가 작동하는 기본 원리를 바꾸지는 못하니 좀 어려울 것 같고, 아예 GUI 클라이언트를 처음부터 새로 만든다면 가능하겠죠. 클라이언트를 처음부터 만든다면 서버에 얽매이지 않아도 되고요. 하지만 역시 귀차니즘과 초짜 코딩 실력이 걸려서..(..)

      오픈소스 커뮤니티를 만들어서 다챗의 인터페이스와 IRC의 확장성을 결합하는 클라이언트를 제작한다면 그것도 나름 즐겁겠죠. (명칭은 DieRC? (..)) 파이선은 특정 네트워크 방식에 구애받지 않으니까 재버처럼 좀 더 효율성이 좋은 프로토콜도 알아볼만 하고요.

      Reply
    1. 로키

      아뇨, 다른 거에요. 도쿄의 달에서 쓰던 카드 스크립트를 올렸습니다. 서로 기능이 다른 스크립트가 무한 증식하고 있어서 이걸 다 통합하는 클라이언트의 필요성이..(..)

      Reply
  3. Wishsong

    무심코 보다가 “누가 내 아이디로 글을 쓴거야!!!” 라고 깜짝 놀랐는데, 보니까 1년전의 글(…) 뭐 바뀐 거 있어?

    Reply
  4. PuViL

    좋은 스크립트를 만들어 주셔서 감사합니다. 플레이에 많은 도움이 되고 있습니다.

    사용하다가 한가지 문제점을 발견 하였습니다.
    IRC의 사용자가 글씨색을 지정했을경우(검은색 이외)에 다이스 봇이 반응하지 않습니다.
    색을 지정하고 않고 쓰면 상관 없긴 하지만 개선되면 좀더 좋을듯 싶어서 덧글을 남겨 봅니다.

    Reply
    1. 로키

      아, 그건 그렇겠군요. 색깔 코드 골치아파서 (최소한 자릿수 통일이라도 하거나 코드하고 글은 한 칸 떼기라도 하지!! ;ㅁ;) 생각 안하고 있었는데, 문제이긴 하군요. 파이썬 잡은지는 좀 됐지만 한 번 해결해 보겠습니다. 자칫 43d를 굴리는 것 같은 참사가 일어날 수 있기는 하겠지만…

      Reply
  5. 세르

    제가 파이선을 몰라 현재 1시간째 고민중이네요;;
    (그래도 플밍했다고.. 만져보고있..)
    메세지출력이 어떻게되는건가요.. 주사위굴리면 채널명도 같이 떠서 보기싫어서 없앨까하고 봤는데.. 이거참..ㅠ; 어떻게 해야할가요;

    추신 : 입력방식이 다르군요..이거 irc에 이런식으로밖에 전송되지않나요? 쩝.. 그냥 채팅적히듯이 적힐순없나…

    Reply
    1. 로키

      파일 맨 끝에 class basicDice(UtgardLoki) 클래스 내에

      self.noticeToChannel -> self.sendToChannel

      이렇게 바꾸시면 됩니다. 몰래 굴림도 마찬가지로 하시려면

      self.noticeToUser -> self.sendToUser

      이렇게 하시면 되고요.

      Reply
  6. 괴인

    덕분에 잘 쓰고 있습니다. 감사합니다.

    0d, d0, (큰 수)d 등에서 죽는 문제가 있어서 그걸 해결하려고(악의적인 사용자나 오타에 의한 플레이 끊김을 방지하기 위해) 코드에 손을 좀 댔습니다.
    이것을 어떻게 해야 하나 싶어서 일단 여기 적습니다. 소스를 보내드려야 될지.. 제가 알아서 팀원들에게 배포해도 될지..

    아직 d6 + d8 과 같이, 오퍼레이터 뒤에 문자가 올 경우엔 죽습니다만.. 요건 “죽이는 용도”로 놔두자고 그래서 놔뒀습니다.

    Reply
    1. 로키

      아, 그런 문제가 있었군요! 블로그 있으시니까 블로그에 올리시고 트랙백 달아주셔도 사람들이 찾을 수 있을 것 같네요. 아니면 소스코드 고치신 부분을 직접 댓글에 달아주실 수도 있고요. 혹시 이번 일일플레이 신청하신 그 괴인님이신가요? 그렇다면 곧 뵙겠네요.^^

      Reply
    2. 괴인

      네, 알겠습니다. 🙂 감사합니다.

      그 괴인 맞습니다. 하늘 아래 두 괴인 있을 수 없는 법!
      ^_^ 즐겁게 기다리겠습니다.

      Reply
  7. Pingback: Antiapple

  8. d

    프로그램을 실행후 /invite (닉) #(방)을 하면 들어올때도있고 껐다켜도 계속안들어올때도있어요 입력하신사용자와 서버를 찾을수가없대요

    Reply
    1. 로키

      오 그건 처음 들어보는 에러군요. 한IRC에서 사용하시나요? 다른 분이 소환해도 그런 에러를 겪으시나요?

      Reply
  9. 소단

    제가 노트북에 IRC가 안되서 Xchat기반의 인클챗을 쓰고 있는데. 이게 주사위 스크립트가 없어서 이 exe를 쓰니 다른 사람들이 삑소리가 난다며 꺼려하더군요. 이거 Xchat 자체에 스크립트 적용하는 방법은 없을까요?

    Reply
    1. 로키

      Xchat 자체에 mIRC처럼 스크립팅 기능이 있다면 가능하겠지요. 있다면 파이쏜하고는 다른 언어일 테니 이 exe하고는 상관없을 거에요.

      제가 보기에 삑 소리는 notice 방식으로 하는 스크립트라 그런 게 아닌가 싶은데, 출력의 noticeToChannel 부분을 sendToChannel로 하면 괜찮을 것 같습니다.

      Reply
  10. Madker

    안녕하세요. 괴인님이 개조한 스크립트를 기반으로 주사위 봇을 서버 방식으로 운영하고 있습니다.

    배포는 하지 않았지만 파일명을 변경하고, 로키님에 관한 사항을 봇에서 제거하여(파일 상단의 메일 주소가 적힌 단락은 제거하지 않았습니다!) 허락을 구하기 위해 댓글 달게 되었습니다.

    웹사이트에 따로 주사위봇에 관한 글을 적었고, 원하신다면 소스코드를 저장하고 있는 BitBucket 저장소에 초대해드리겠습니다.

    Reply
    1. 로키 Post author

      아, 그러셨군요. 재배포 조건은 저작권 정보를 유지하는 것인데 특별히 그 부분을 수정한 이유가 있으신지요?

      Reply
      1. Madker

        재배포 용도가 아니었고, 저작권 정보 부분을 건드린 게 아닙니다.

        제가 건드린 게 파일명, 봇 이름, 봇 호스트 이름, 봇 서버 이름입니다. 그 중에서 파일명 변경 부분이 마음에 걸려서 위 조건의

        수정과 재배포

        원래 출처를 밝히시고 코드 상단의 프로그램명과 저작권 정보를 삭제하지 않으시면 수정과 재배포는 얼마든지 괜찮습니다.

        때문에 마음에 걸려서 연락하게 되었습니다. 말씀하신 저작권 정보가

        # Python Dicebot “Utgard Loki” Ver 0.1
        # http://paul.giannaros.org/sandbox_pythonircbotmodule 에 나온 IRCBot을 기반으로 제작했습니다.
        # Based on the IRCBot module at http://paul.giannaros.org/sandbox_pythonircbotmodule
        # 질문이나 코멘트 등은 로키에게 해주세요. loki@~~~~~~
        # Direct Questions and comments to Loki at loki@~~~~~~

        을 의미하시는 거라면 제거하지 않았습니다.

        Reply
        1. 로키 Post author

          아, 저에 대한 사항을 빼셨다는 부분을 잘못 이해했던 것 같습니다. 그 경우 아무 문제 없으니 좋은 서비스 잘 운영하시기 바랍니다.^^

          Reply

Leave a Reply

Your email address will not be published.