개인 자료란 (JE)

  서버 커뮤니티

Profile aod11 대표칭호 없음
Profile

질문하기 스크립트

스크립트 평가 및 조언 부탁드립니다!

2024.04.29 조회 수 127 추천 수 0
이해도 초보자 
게임버전 (JE) 1.20.1 
게임버전 (BE) 관련없음 

스크립트를 만들고 있는데 너무 답이 없어서 조언을 좀 부탁드립니다

livestock (3).sk 


스크립트의 내용은 배고픔이 떨어지면 아이템을 주지않는 목축업 스크립트를 만들고 있습니다


1. every 1 seconds를 너무 많이 쓰는 거 같아 대체할 방법이 있는지 궁금합니다!.

2.사실상 단순 코드 반복인데 혹시 줄일 수 있는 방법이 있는지 궁금합니다.!!


조언 정말정말 부탁드립니다 ㅠㅠㅠ

5개의 댓글

환타비
2024.04.30

음 저도 잘하는 편은 아니라서 이렇다! 라고 말할수는 없지만

 

1번 같은경우 every 1 seconds 보다 while을 쓰는게 좋은걸로 알고 있습니다

 

구문 반복같은 경우 같은 변수면 배열변수 사용으로 줄일수 있지 않을까 생각을 해봅니다!

qsef1256
2024.04.30
  • command /목축.소환1:command /목축.소환2: 반복의 경우 중첩 배열변수({목축.쿨타임::%player%::1}) 의 사용으로 개선할 수 있습니다. GUI 역시 이 방법으로 1개 버튼으로 만들 수도 있을껍니다.
  • on inventory click의 경우 구현이 잘못 되었습니다. 일반 인벤토리 에서도 GUI가 작동 할 껍니다.
  • /기본목축 명령어의 경우 무한 실행이 가능해 악용의 여지가 큽니다.
  • /목축.초기화 명령어는 2,3번째 쿨타임과 닭 허기를 초기화하지 않습니다.
  • 목축 소환 명령어는 변수 이름은 닭이라고 되어 있지만 실제로는 소를 소환합니다. 실제와 맞지 않는 변수 명은 변경을 고려하세요.
  • 쿨타임의 경우 every second를 쓰는 게 아니라 시작 지점을 기록해두고 명령 실행 시 시작 지점에서 얼마나 지났는지를 판단해서 구현합니다. 이렇게 하면 1초마다 불필요하게 변수를 업데이트할 필요가 없습니다.
  • 아이템이나 엔티티의 이름은 모루 또는 이름표로 변경 가능하므로 안전하지 않습니다. name of tool contains "&b간단한 장갑": 같은 구현은 nbt 등으로 대체될 수 있습니다.
  • 쿨타임 길이(360), 허기 값(2000)의 경우 option으로 스크립트 상단에 빼는 것이 좋습니다. 이런 경우를 하드코딩 이라고 합니다. 일반적으로 변경이 필요할 시 일일히 다 변경해야 해서 좋지 못합니다.
  • set name of last spawned entity 의 경우 처음부터 이름 값과 함께 소환하는 것이 더 안전합니다. SkBee 등을 참고하세요.
  • 전반적으로 every 1 second를 많이 쓰신다면 그건 성급한 판단일 수는 있지만 대체적으로 실력 부족의 결과입니다. 일반적으로 every 1 second는 필요가 없습니다.
  • while도 every second를 대체하는 용도로는 일반적으로 필요가 없습니다. 그냥 그런 반복 자체가 불필요 합니다.
aod11
2024.05.03
@qsef1256

늦게 답장 드려 정말 죄송합니다!, 좋은 지적 감사드립니다. 혹시 쿨타임 관련 부분을 좀 더 알려 주실 수 있나요? ㅠㅠ 찾아봐도 많은 분들이 every 1 seconds만 사용하고 있는거 같아, 모르겠어서 질문 드립니다!

qsef1256
2024.05.03
@aod11

1. 마지막으로 사용한 시각을 기록합니다.

2. 다음 사용 시 위 시각을 가져와서 현재와 얼마나 지났나 비교합니다. (https://skripthub.net/docs/?id=917 구문으로 가능합니다.)

3. 쿨타임으로 지정한 시간보다 위 값이 더 크면 사용 가능한 것입니다. (예: 쿨타임을 20분으로 설정 해놨고 마지막 사용 시각과 현재 시각 차이가 20분을 넘는다면 쿨타임이 지난 것)

qsef1256
2024.05.03
@aod11

이 방법이 존재하는데 아직도 한국에서는 많은 분들이 1초마다 서버에 데이터를 기록해가며 필요 없는 부하를 생성하고 있습니다. 게다가 이 방법은 판단해야 하는 쿨타임 값이 많아질 수록 서버에 더 많은 부하를 가합니다. 왠만하면 학습을 위해서는 한국 스크립트 말고 외국 스크립트를 찾아보세요. 왠만한 거 뜯어보면 진짜로... 진짜로 지적할 부분이 많습니다.