pc_amountitem이라는 함수가 개수아이템이 아닌 경우에는 인식을 못하여서
(예를 들어서 오철, 오철, 오철을 가지고 있을 경우 3을 반환하지 않고 1을 반환하는 경우가 생겨서)
개수 아이템이 아닌 경우에도 개수를 알아올 수 있는 사용자 정의 함수를 알려드리고자 합니다.
get_equipitem의 바운더리 오버런을 이용한 방법인데 (사실 무슨말인지 모르는데 저도 강의보고 써봄)
CR이 더 개발되어 나가지 않는다고 하여서 알려드리는 방법으로, 권장드리지는 않습니다.
※ 이는 메모장에서 작업한 것이 아니라 글을 쓰면서 즉석에서 쓴거라서
복사해서 쓰시지 말고 직접 코딩해서 사용하시길 바랍니다.
FUNC_itemcount {
set @sd, getarg(0);
set @itemname$, getarg(1);
set @count, 0;
for(set @loop, 8; @loop <= 34; set @loop, @loop+1)
{
if(get_equipitem(@sd, @loop) == name2itemid(@itemname$))
{
set @count, @count+1;
}
}
return @count;
}
이렇게 FUNC을 만들어 두고 직접 사용할 경우에는
set @mysd, mysd();
set @itemcount, callfunc("itemcount", @mysd, "오철");
이렇게 하면 @itemcount라는 변수에 자신이 가진 아이템의 개수를 담을 수 있습니다.
주의하실 점은 개수아이템이 아닌 경우에만 이 사용자 정의 함수를 사용하셔야 하며,
개수아이템인 경우에는 평소대로 pc_amountitem 함수를 사용하시면 됩니다.
이해를 못하시는 분들을 위해 추가하자면set @mysd, mysd();set @itemcount, callfunc("itemcount", @mysd, "오철");message @mysd, 3, "오철 " + @itemcount + "개 가지고 있습니다.";