미잉
대표칭호 없음
Gang_seo 2815c8bf3dda4b5d97033d6be90516ae
이해도 | 초보자 |
---|---|
게임버전 (JE) | 관련없음 |
게임버전 (BE) | 관련없음 |
일단 제가 원하는것은
/토양구매 를 하면
%player%의 price에 1000이 더해지고
더해진 만큼의 값을 지불하여 토양을 구매하는 방식으로
개인이 토양을 살때마다 가격이 높아지는.. 메커니즘을 원합니다
첫 시도때는
(돈을 빼는 명령어)
단순히 돈을 빼서 토양을 지급하는 방식
돈이 없어도 토양이 지급되서 실패했습니다
두번째 시도가 맨위 스크립트인데
수표를 발급하고 인벤에 "수표"라는 아이템이있으면
토양이 들어오는식? 을 원했지만
수표가 발급 되어도 인식이 안되서 else 값만 뜨더라구요
소지 돈을 확인하게 할까 했는데 제가 사용하는 경제플러그인(GEconomy)랑 스크립트랑 연동이 안되는것 같더라구요
스크립트 고수분들의 조언을 듣고 싶습니다
도와주시면 정말 ㅠ 감사드리겠습니다
슈퍼레몬
2024.03.25Vault쓰세요...
Geconomy를 쓸 이유가 없어요
qsef1256
2024.03.25근데 Vault는 단지 API를 제공할 뿐이고 Implementation은 별도로 있어야 해요.
미잉
2024.03.25저 플러그인에 있는 시세변동이라는게 저한테 매력적으로 다가와서..ㅎ
qsef1256
2024.03.25이 구현은 잠재적인 취약점을 내장하고 있습니다. 아이템 이름은 모루로 변경 가능하며, 정말 수표 아이템인지 확인하고 싶다면 lore의 내용까지 전부 확인해야 합니다. 좀 더 나간다면 NBT 까지 확인해볼 수는 있으나, 애당초 아이템은 그렇게 믿을만한 데이터 저장소가 아니기 때문에 수표라는 시스템을 처음부터 사용하지 않는 것이 좋습니다. (복사 버그 한방에 훅 갑니다.)
Vault를 까셨다면 player's money 구문을 사용하실 수 있을껍니다...가 원래 맞는건데 GEconomy 이거 소스 까보니까 Vault 지원이 없는 것 같거든요. 이건 이 플러그인이 이상한거라 어쩔 수 없고요.
미잉
2024.03.25일단 열정적인 답변 정말 감사드립니다ㅠㅠ (__)
qwer님이 조언해주신 말들을 토대로 그냥 매커니즘을 바꿔야겠다는 결정을 내렸습니다..
덕분에 빠른 결정을 내린것 같습니다 감사합니다
유아당
2024.03.25제가 Geconomy 라는 플러그인에 대해서는 잘 모르지만 오류의 원인은 확실해요.
구매라는 것은 돈을 단순히 뺀다가 아니라 구매자의 소지금이 판매품보다 높다라는 가정이 있어야 해요.
해당 플러그인의 돈 시스템을 다른 플러그인과 연동하고 계시다면 복잡할 수 있겠지만
돈이 스크립트에만 쓰인다면 직접 돈 시스템을 구축하는게 좋아요.
단순히 {money::[플레이어]}로 지정할 수도 있고, 이 경우 {money}라는 값이 움직이는 경우를 유연하게 확인할 수 있어요.
5000원짜리 금괴 구매 예시
if {money::%player%} >= 5000:
subtract 5000 from {money::%player%}
give 1 gold ingot to player
else:
send " [!] %5000 - %{money::%player%}% 만큼의 돈이 더 필요합니다!"
위의 예시를 이어서 증가하는 가격을 만들어볼게요.
토양을 한번 구매할 때 마다 다음 토양 구매가 5000의 추가금을 필요로 한다고 해볼게요.
if {money::%player%} >= 5000 + {plot::%player%}:
subtract 5000
+ {plot::%player%}
from {money::%player%}add 5000 to {plot::%player%}
give 1 gold ingot to player
else:
send " [!] %5000 - %{money::%player%}% 만큼의 돈이 더 필요합니다!"
위의 예시에서는 구매를 진행할 때마다 전체 가격에 5000을 추가하고 있어요.
첫번째 구매는 5000 + 0 = 5000, 두번째 구매는 5000 + 5000 = 10000 . . .
토양 구매가 어떻게 연동되는지 잘 모르겠어서 정확한 답을 드리기는 어렵지만
구매 부분에서는 위의 구문을 사용하는 것으로 말끔하게 해결될거에요.