2013-03-29 6 views
1

luasocket을 사용하여 Irc 채널에 연결하고 게임 내에서 메시지를 보내고 받으려고합니다 (Wolfenstein Enemy Territory, 도움이되는 경우).Luasocket irc 메시지 수신 확인

지금 당장은 한 가지 문제 만 해결할 수 있습니다. 일단 내가 메시지를 듣기로 설정하면 기본적으로 잠금 상태가됩니다. Irc에 stoplisten을 입력하면 대체 명령이 생깁니다. 스크립트를 중지하고 모든 메시지를 볼 수 있지만 게임 자체는 메시지를 기다리는 동안 잠겨 있습니다.

게임을 멈추지 않고 어떻게하면 좋을지에 대한 아이디어는 있습니까? 나는 최근에 약간의 코 루틴을 배웠습니다. 그래서 내가 올바르게 사용하는지 모르겠습니다. 또한 도움이된다면 매 밀리 초마다 실행되는 실행 프레임 함수에 대한 액세스 권한이 있어야합니다 (일반적으로 math.mod (currentTime, 50) ~ = 0이면 return end 임)

여기에 있습니다 내 코드의 부분 : http://pastebin.com/j1gCqm4R

답변

0

귀하의 문제가 모든 소켓 것을 기본적으로 차단 (난 그냥 여기에 게시 할, 그래서 난 그냥 페이스트 빈에 넣어 들여 쓰기로 거 편집 모든 내 코드를 않네)은 원하는 결과를 얻거나 '제한 시간'을 얻을 때까지 현재 실행 스레드 (이 경우 게임)를 정지 ('블록')한다는 것을 의미합니다.

용액은 비 블로킹 소켓입니다. 클라이언트 소켓 객체에서 :settimeout(0)을 호출하면 모두 성공한 :send(...):recieve(...)이 즉시 반환되거나 시간이 초과되었습니다.

LuaSocket reference에는 전체 세부 정보가 포함되어 있지만 '시간 초과'오류 상태를 처리하거나 socket.select()에 호출을 추가하여 코드를 수정하여 준비가 된 소켓 만 사용하도록해야합니다 ' 사용될.