2014-09-20 29 views
0

나는 C#에서 IRC Bot을 가지고 있으며, 잠시 동안 Lua Scripting을 사용하고 싶습니다. 봇 시작시에 함수를 등록하고 새로운 파일이 추가되었는지 감지 한 다음로드하려고합니다. 나는 새 파일/스크립트 기능을 이미 다시로드했지만 실행하면 "개체 참조가 개체의 인스턴스로 설정되지 않습니다."라는 메시지가 나타납니다. 사용자 정의 함수에서 사용자가 사용할 수 있기를 원합니다."개체 참조가 개체의 인스턴스로 설정되지 않았습니다"를 사용하지 않고 함수를 등록하십시오.

public Lua lua; 
public void RegisterFunctions() { 
    lua.RegisterFunction("print", this, typeof(DashLua).GetMethod("ConsoleOut")); 
} 
#region Custom Functions for Lua 
public void ConsoleOut(String line) { 
    if (line == null) { 
     Console.WriteLine("Script error: print() can't be null."); 
    } else { 
     Console.WriteLine(line); 
    } 
} 

주()에서 로봇의 나는 현재 단 2 줄이 있습니다 :

DashLua dash = new DashLua(); 
    dash.RegisterFunctions(); 
+0

'lua' 필드를 초기화하고 있습니까? 예외가 던져지고 있는지 알면 도움이됩니다. –

+0

필드를 초기화하려면'public Lua lua = new Lua(); 대신'public Lua lua;'를 사용해야합니다. "Lua.cs"파일에서 이미 초기화했고 DashLua 클래스를 주 클래스로 호출 했으므로 현재 Main() void에 초기화 할 필요가 없습니다. –

+0

다음과 같이하면 또 다른 방법이 될 것이다.'public void RegisterFunctions() { lua = new Lua(); 이 오류가 발생합니다 : ** 추가 정보 : 시도가 이루어졌습니다. (예 : "WriteLine", 새 유형 [] {typeof (String)}) 잘못된 형식의 프로그램을로드하는 중입니다. (HRESULT 예외 : 0x8007000B) ** –

답변

0

NLua (NuGet을) 단지가 64에서 작동 이유입니다 빌드

여기에 현재 코드입니다 이것의 아무 것도 실제로 작동하지 않았다. 따라서 프로젝트를 만들고 실제로 루아를 스크립팅 언어로 사용하려면 프로젝트의 속성에서 빌드를 x64로 변경해야합니다. 즉, 자신의 웹 사이트에서 Win32 버전을 얻을 수 있는데, 이는 누에 트에없는 것이 수치 스럽습니다.

편집 : Win32 빌드를 다운로드하여 다운로드하면 비어 있습니다. 나는 그들이 그것을 세우지 않았고 당신이 직접 그것을 지을 것을 권장하지 않는다고 생각한다.

+0

NLua.Win32 빌드가 수정되었으므로 이제 .zip을 가져올 수 있습니다. 나는 1.3.1 버전에서 일하고 있습니다. NuGet 패키지를 최대한 빨리 업데이트 할 것입니다. –

+0

팁 주셔서 감사합니다! 감사합니다! –