게임 스크립트 사용시 stack level too deep 해결법
2008.12.04 08:32
상당히 알기 쉽게 설명해 놨으니
stack level too deep 에러가 발생하신 분은 에라 모르겠다 하고 넘겨 버리지 마시고
천천히 읽어 보시면 문제를 거의 100% 해결할 수 있을 것입니다.
괜찮은 스크립트 도입했다가 괜히 길에 버리지 맙시다.
stack level too deep 에러는 주로 alias와 관련해서 발생합니다. (90% 이상)
만일 alias가 관련된 스크립트에서 stack level too deep 에러가 발생한다면
해당 스크립트로 달려가 alias 구문에 unless $@를 추가해 줍시다.
말하자면 이런 것입니다.
alias ㅁㅁㅁㅁㅁㅁ ㅁㅁ unless $@
이렇게 하면 보통 에러는 발생하지 않습니다.
만약 그래도 또 에러가 난다면 그것은 아마 똑같은 alias 구문이 또 있기 때문일 겁니다.
이런 경우는 필요없는 alias구문을 지워 줍니다.
스크립트를 잘 다루지 못하는 사람들 입장에서 같은 alias가 반복된다는 것은 거의 대부분의 경우
같은 스크립트를 반복해서 도입하였기 때문입니다.
stack level too deep 에러는 간혹 테스트플레이 중 F12로 강제재기동 했을 때에
alias가 정의된 상태로 곧바로 재정의를 하는 바람에 발생할 수도 있습니다. unless $@의 추가는
최초기동시에만 정의하고 재기동시에는 정의하지 않도록 하기 위한 것입니다.
간혹 에러가 난 부분에 alias가 없는 경우도 있습니다.
최초 쯔꾸르vx에서 기본 제공하는 스크립트에는 alias로 재정의하는 부분이 없지만
기본 스크립트에서 stack level too deep 에러가 발생할 수 있습니다.
대부분의 경우 이것은
def와 관련한 정의부에서 발생할 것입니다.
그것은 도입한 스크립트가 alias를 가지고 있는데 기본 스크립트의 def부에서 정의한 구문을
사용하다가 에러가 발생했다는 뜻입니다.
이럴 때에는 어느 상황에서 에러가 발생하는지 보고 그 관련된 스크립트를 찾아서
나머지는 똑같은 방법으로 alias와 관련한 대처를 해 주시면 되겠습니다.
찾기 쉬운 방법은,
기본 스크립트 등에서
def ajajajajaja
이하의 구문에서 에러가 발생했다면 Ctrl+Shift+F로 스크립트 전체에서 ajajajajaja를 찾아봅시다.
분명히 에러가 난 부분과 관련있는 스크립트가 나타날 것입니다.
그럼 그 ajajajajaja를 사용한 부분의 alias에 위의 대처를 해 주시면 됩니다.
모르겠다 싶으신 분은 쪽지를 주시기 바랍니다.
결론이 뻘리플이려나....<맞는다 너 |+rp2+|295580|+rp3+|free