[CR] 은신 계정변수 초기화 관련
은신 마법을 사용하고 재접을 하게되면 계정변수가 초기화 되는 통파일이 몇몇 있습니다.
해결방법은 투명체크 혹은 은신체크 즉 은신마법에서 따로 마법을 하나 걸어주는게 있습니다.
그마법은 은신마법으로 몇 걸음 걸었을때 은신 이펙트가 뜨도록 해주는 마법이죠
계정변수가 초기화 되는 이유는 반목문 내에 계정변수를 수정하는 부분이 있으면 그렇다고 들었습니다.
확인해보니 몇몇 마법은 반복문안에 계정변수가 수정되는게 들어있어도 재접시 계정변수 초기화가 안되더군요.
하지만 은신마법은 사용후 재접하면 100% 계정변수가 초기화 되더군요.
제가 앞서 말한 투명체크 혹은 은신체크 마법에 $dmstls 이란 계정변수가 대부분 들어있을 겁니다.
그부분을 수정하시면 되는데. 예제를 하나 올려드리죠
magic 은신 {
callfunc "STMAPCK";
set @sd, mysd();
set @id, myid();
if(magic_aethered(@sd, name2spellid("은신")))
{
message @sd, 3, "이미 걸려있습니다.";
end;
}
action @id, 6, 30, 0;
effect @id, 433;
sound @id, 0, 739;
magiccast @sd, name2spellid("은신중");
magic_aether @sd, name2spellid("은신"), 300;
message @sd, 3, "은신을 외웠습니다.";
set_state @sd, 2;
}
magic 은신x {
set @sd, mysd();
set @id, myid();
effect @id, 432;
sound @id, 0, 739;
magicuncast @sd, name2spellid("은신중");
message @sd, 3, "은신 해제";
sleep 1;
if(get_state(@sd) == 1)
{
end;
}
set_state @sd, 0;
}
magic 은신중 {
set @sd, mysd();
set @id, myid();
set @x, get_x(@id);
set @y, get_y(@id);
while(1)
{
if(@x != get_x(@id) || @y != get_y(@id))
{
set @x, get_x(@id);
set @y, get_y(@id);
set @cnt, @cnt + 1;
}
if(@cnt == 15)
{
set @cnt, 0;
effect @id, 432;
sound @id, 0, 739;
}
sleep 200;
}
}

행복e 님의 최근 댓글