[CR] 주작 // [기타] 해당 좌표의 아이템 읽어오기
질문이 들어와서 해당 좌표의 아이템을 읽어오는 함수가 없어서
꼼수를 이용해서 해당 좌표의 아이템을 읽어오는 법을 알려드리겠습니다.
직접 좌표의 아이템이 뭔지 알아올 수가 없으므로
먼저 자신의 아이템 슬롯에 넣고 그 아이템의 아이디를 체크한 후, 여부를 판단한 다음
가져와도 될 아이템이면 슬롯에 넣은 상태로 그대로 두고
가져오지 않아야 될 아이템이면 다시 원래 좌표에 아이템을 띄우는 방법을 이용하면 됩니다.
해당 좌표의 아이템 획득 -> 가져도 될 아이템인지 판단 -> (가능) 그대로 둠
-> (불가능) 원래 좌표에 아이템 다시 뿌려줌
대충 설명해봤는데 이해가 되셨는지 모르겠네요
하지만 이 방법에는 주의하셔야 될 점과 제한이 있다는 점입니다.
먼저, 주의할 점은 getitem 함수를 이용해서 해당 좌표의 아이템을 슬롯으로 획득하는 과정에서
아이템 슬롯이 전부 꽉 차있을 경우를 체크해 줘야 하는데요
이에는 두가지의 방법이 있습니다.
1)
절대로 사람들이 얻을 수 없고, 가져서는 안될 아이템을 하나 만들어서
그 해당 아이템을 아이템창에 추가-> 있는지 확인 -> 삭제
를 거쳐서 아이템의 슬롯이 비어있는지 확인하는 방법입니다.
set @possible, 0;
additem @mysd, name2itemid("절대안돼"), 1;
if(pc_amountitem(@mysd, name2itemid("절대안돼")) == 1)
{
delitem @mysd, name2itemid("절대안돼"), 1;
set @possible, 1;
}
이런식으로 @possible이라는 변수 여부에 따라서 아이템 슬롯이 꽉 차 있는지의 여부를 판단할 수 있습니다.
2)
2번 방법에 대해서는 다음 강의에서 자세히 설명하도록 하겠습니다.
(get_equipitem의 boundary overrun을 이용한 방법인데
CR이라는 구동기가 개발진행중이면 권장을 드리지 않는데, 정체중이라 쓰셔도 될 듯 해서 강의하겠습니다.)
그리고 제한된 점은 해당 좌표의 아이템을 이미 가지고 있을 경우에는 체크가 어렵다는 점입니다.
위의 2번 방법으로 대안을 마련할 수 있겠지만, 일단은 1번밖에 안알려 드렸으므로 이러한 제한이 생깁니다.
다시 말하면, 좌표에 떨어져서 판단하고자 하는 아이템을 이미 가지고 있을 경우에는 사용이 불가능하다는 점인데요
이는 pc_amountitem이라는 함수가 개수가 아닌 아이템의 개수를 인지하지 못하기 때문입니다.

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