get_mobstate 함수
get_mobstate 함수에 대해서 알아보겠다.
필자는 다른사람이 쓰던 방식 말고 좀더 함수를 알아보고 쓸만하면 그방법을 택한다.
그래서 이번에 만드는 마법중에 마법을 체크해주는 방식을 사용할때 아무래도 몬스터에게
저주 혹은 체크 마법을 걸때 쓰는 set_mobmagicstate @target, name2spellid("귀염추저소"), 60, 0, 0, 0, 0, 0;
이런식의 set_mobmagicstate 몬스터에게 상태를 지정해주는함수가 버그가 많아서 말이다....
이 함수에 버그가 발생했을경우 해당 하는 몬스터에게 해당하는 초의 즉 위의마법은 60초동안 거는건데
이게 무한으로 지속되는 현상이 발생한다. 그러면 체크용으로 걸어둔 마법또한 풀린상태인데도 이미 걸려있다는 버그가 생긴다.
그래서 사용한게 get_mobstate 함수인데.
get_mobstate 함수가 먼지 확인해보려고 테스트를 몇번하니 결과는 이러하다.
이함수는 set_mobstate 함수로 수치를 정하면 그 수치만큼 기존에 +가된다.
즉
set_mobstate @target, 1;
set_mobstate @target, 1;
이런식으로 두줄이 발생하면 그 몬스터의 스테이트값은 2가된다.
뺄때는
set_mobstate @target, -1; 를 해주면된다.
그렇게해서 몬스터에게 체크용 마법을 걸때 중복되지 않는 번호와 그 번호를 더했을때 겹치지 않는 번호를 잘 생각해야한다.
필자는 수학은 엄청 못해서 최대 2개 밖에 못사용하겠다..
즉 마법을 걸때 몹의 스테이트값을 설정해주고 마법이 끝날때 해제마법을 발동시켜 스테이트를 원상복구 시켜주면 되는거다. 즉 -값으로만 빼면 그 마법이 해제된다는거다.
실제로 필자는 체크형 마법으로 독검이라는 마법을 사용할테 스테이트를 1로 정해주고 그값을 올려주며 독검이 끝나는 타이밍에 스테이트를 -1로 값을 빼주어서
마법을 해제시킨다. 그러면 그 몬스터가 죽지않았을때 독검 마법이 제대로 다시 걸리게된다.
그러나 여기에 아주 중요한 버그가 존재한다.
버그라면 버그이지만 당연한 이치일 수도 있는건데.
그 몬스터에게 데미지를 준상태에서 그몹이 죽고 한함수에 get_mobstate를 데미지주는곳 밑쪽에 넣어버리면 실행되는 스크립트는 종료가된다.
폴문으로 돌려서 여러명을 치는 마법에서는 중간에 마법이 끊길 수 있다.
앞에서 말한 set_mobmagicstate 함수의 버그는 몬스터가 특히 많이 젠되는 지역에서 자주 발생한다.
수정
get_mobstate는 알고보니 몬스터가 안움직이는 몬스터 상태 즉 mob_db의 몬스터 속성을 수정하는 함수였습니다.
활용법은 딱히 없네요.
by. zz (어스프바코리아)

가을이야기 님의 최근 댓글