[CR] 전설 // 이전 강의에 이은 2번째 강의!
//오늘은 callfunc에 대해 설명합니다. 오늘도 기준은 rb기준으로 하겠습니다.
저번 스크립트에서 callfunc 뭐시기가 엄청 많았죠?
callfunc는 func로 USER_FUNCTION( 자기가 만든 함수) 에 만들어놓고 호출해서 쓰는 거입니다.
자주 반복되고 스크립트 전반적으로 계속적으로 드가는 부분이거나 반복적으로 쓰이는부분에선
자기가 정의해놓고 쓰면 유용하겠죠 ?
이전 강의에서 PKMAP_CHECK와 SIDE_CHECK 두 개를 설명드리고 끝내겠습니다!
먼저 저 함수가 추가되있다는 가정하에 스크립트내에서 호출방법은
callfunc "함수명",인자값(0),인자값(1),***;
이런식입니다. 인자값 필요없이 하면 callfunc "함수명";으로 끝내도 됩니다.
인자값은?( 제 주관적인 생각이라서 대충 이렇구나 이해하시면 됩니다.)
스크립트 내에서 callfunc "함수명",@i; 라면 @i값을 복사해서 func에 대입하는 것입니다.
C++과 곁들인다면
int sum(int a int b) // func와 비슷한거입니다.
{
return a+b;
}
void main() //스크립트작성한다고 보시면되요! 메인함수
{
int x=5,y=6,result;
result = sum(x,y); // 여기서 x,y가 인자값입니다. x=5,y=6을 sum함수정의한곳으로 복사해서 가져가서 a와 b에 대입하는거입니다
}
결국 result는 5+6인 11입니다.
이제 설명들어갈게요
func PKMAP_CHECK //func 함수명
{
set @id,myid(); // 앞강의에설명되어있음!
set @sd,mysd();
if( get_mapid(@id) == 1) //자기가 맵 1번에 있으면
{
message @sd, 3, "마법사용금지구역"; // 메세지로 마법사용금지구역을 띄우고
end; // end;는 스크립트를 멈춘다?종료한다?의미로 딱 마법사용금지메세지까지만 하고 여기
func함수도 그렇고 호출한 함수도 script는 더이상 읽지 않고 종료됩니다.
}
if( get_mapid(@id) == 2)
{
set @MAP, 2;
}
if( get_mapid(@id) == 3)
{
set @MAP, 3; // 2번맵이면 @MAP을 2 3번맵이면 @MAP을 3
}
return @MAP; // return은 return; 은 그냥 이 func함수를 벗어나서 script로 돌아간다생각하시면되요
// return @MAP;은? @MAP의 값을 가지고 script로 복귀한다는 의미입니다!
}
쉽죠 ? 그럼 이번엔 인자값을 쓰는 func함수를 살펴볼게요
func SIDE_CHECK //함수명
{
set @id,myid();
set @sd,mysd();
set @RANGE,getarg(0); // getarg(0)가 인자값입니다.
인자값입력방법은 callfunc "함수명",getarg(0),getarg(1),***;
그럼 앞의 스크립트에서 callfunc "SIDE_CHECK",@i;
라면 getarg(0)에 @i값이 복사되서 드가는 거겠죠?
set @SIDE, get_direction(@id); // 자신의 보는 방향을 나타냅니다. 0 - 위 1 - 오른쪽 2 - 아래 3 - 왼쪽
if( get_objfront(1,1) <= 0 && get_objfront(5,1) <= 0) // 자신의 앞에 사람이나 몹이 없으면 종료
{
end;
}
if( @SIDE == 0) // 앞에 몹이나 사람있으면
{
set @target, get_xy2obj(get_x(@id),get_y(@id) - 1 - @i, 1, 1); //@target을 자신의 x좌표,y좌표-1-@i 의
사람을 타겟으로 한다.
}
... // ...은 @SIDE 1~3까지 쓰기가 귀찮아서 생략..
return @target; @target값을 반환하면서 func함수를 종료한다.
}
그렇다면..여튼 callfunc와 이전의 건곤스크립을 하게되면 십리~무극건곤까지
for문의 @i값을 조절하면 범위조절가능 ( 다만, 저건 초기작업본이라 조금의 수정이 필요합니다.)
PKMAP 구분가능, 마법사용금지 MAP구분가능, 시즉같은 마법 못쓰는 마법check
가능하답니다!!!

우지냥 님의 최근 댓글
와.. 이거 없어서 블소 포기 했는데 ㄷㄷ 2023 11.15 오... 라그나로크 2023 07.11 파일이 2개라 4만 포인트인가보네요 ㄷㄷ 2023 06.30 오... 감사합니다! 2023 06.30 다 폐쇄형으로 운영해서 그렇죠 뭐 2023 04.18