개인 자료란 (JE)

  서버 커뮤니티

Profile qsef1256 네더라이트 유저

qsef1256 d87af76e09b84a0b925bd6dcc753a89a

Profile

강좌 자바 에디션(JE) 플러그인 꿀팁

Skript 비권장 사용설명서: 이렇게는 쓰지 마세요

2022.08.12 조회 수 5733 추천 수 8
분야 스크립트 
장르 버그 해결, 정보전달 
게임버전 모든버전 
API 버킷 

 서론

상황이 점점 안 좋아지는 것 같아서 게시글을 씁니다.


스크립트는 한국에서 나름 쉬운 접근성과 비교적 많은 사용자로 인기를 얻고 있지만, 접근하기 쉽기 때문에 "잘못" 사용하는 경우가 늘어나고 있는 것 같습니다. 언어의 한계라던가, 그런 다소 골치 아플 수 있는 문제를 제외하고, 스크립터의 관점에서도 잘못된 사용법을 다시 알려드리고자 합니다.


1. Addons

더 말하지 않고 간단히 설명하겠습니다: InvSK, SkChoke, QuarSk, GomSK더 이상 작동하지 않습니다.


서버에 이것들 아직도 남아있으면 과감히 지워버리세요.

애드온 쓰기 전에, 지원 버전이랑 이게 뭐 하는 애드온 인지부터 먼저 확인해보는 습관을 들입시다.


2. Periodical

on every second:

하지 마세요. 이걸 쓸 필요가 있는 구문은 한정 되어 있습니다. 보통은 다른 방식으로 구현 가능합니다.


1초마다 서버에 계산을 "계속" 시키는 겁니다. 쌓이면 TPS(=서버렉)가 내려 간다고요.


3. Loop

loop 600 times:

위에 꺼가 패시브 렉이면 이건 액티브 렉입니다. 그리고 보통 다른 방법이 있습니다.


렉 걸린다고요, 스크립트는 그렇게 최적화가 좋지 않아요.


4. DRY (Don't Repeat Yourself)

중복 코드 금지. Skript 뿐만 아니라 Java도, 다른 프로그래밍 언어에서도 동일하게 적용되는 원칙입니다.


중복 코드가 생기면 함수로 분리하세요. 그래야 알아 먹기도 쉽고 변경하기도 쉬워요.

여기 있는 것들 중에 쌓이면 제일 답 없는 게 이겁니다. 코드 버려야 함


5. Naming

{_a} {_b} {_temp} 같은 식으로 변수 이름 짓지 맙시다.


그거 나중에 님이 버그 생기면 봐야 합니다.

마찬가지로 변수에 거짓말을 하지도 마세요. 실제로는 체력 변수인데 이름이 {_player} 같은 상황이 누적되면 관리가 불가능 해집니다.


6. 개인 변수

set {ex.%player%} to 1

꺼무위키에 이런 식으로 소개된 적이 있어서 씁니다. 이렇게 쓰면 반복/삭제하기 난감합니다.


set {ex::%player%} to 1

대신 배열 변수를 쓰도록 합시다.


7. RTFM (Read The Friendly Manual)GIYF (Google Is Your Friend)

https://skripthub.net/docs/

https://google.com/

질문글의 한 35%는 Docs에서 구문 찾아보면 원하는 게 나옵니다.

45%는 구글링 하면 구문이 나옵니다.

5%는 Skript Github Issue 가져 뒤져보면 뭐가 문제인지 알 수 있습니다.


나머지는 자기가 코드 잘못 작성한 경우고, 한 7% 정도가 진짜로 도움이 필요한 특수한 분야입니다. 너무 크게 잡았는지 잘 모르겠네요


8. Syntax

문법을 지킵시다. 이건 엄연히 프로그래밍 언어지 의사 코드가 아닙니다. 영문처럼 보이지만 영문처럼 쓸 수는 없습니다.


컴퓨터는 융통성이 없고 사람 말을 못 알아듣는 친구입니다.


9. 보안

컴퓨터는 님 시킨 대로 작동합니다. 말 그대로 시킨 대로"만" 작동합니다.


이는, 구문이 악용될 수 있다는 걸 의미합니다. 예를 들어, 아이템 이름과 같은 플레이어가 변경 가능한 데이터에 아이템의 정보를 저장해서는 안됩니다.


사실 경우가 다양할 수 있기에 대표적인 형태를 특정하지는 못 하겠습니다만, 이 문제는 이곳의 다른 문제들 만큼이나 중요합니다. 구문을 작성할 때는 플레이어가 악용할 소지가 있는지, 간접적으로 이용될 수 있는 방법이 있는지, 중요한 구문인 경우 버그시 대책이 있는지 확인해야 합니다.


10. Clean Code

코드는 읽기 쉽게 작성되어야 합니다. 내 코드를 다른 개발자에게 보여줬을 때, 해석에 10초 이상이 걸린다면 그건 좋은 코드가 아닙니다.


일반인이라도 영어를 안다면 이게 뭐 하는 코드다! 를 대략 알 수 있어야 좋은 코드입니다.


11. Not Javascript
초보 분들이 가끔 하는 착각인데, 스크립트의 영문 명은 Skript 입니다. Javascript는 주로 웹 개발 용도로 사용되는 다른 프로그래밍 언어입니다.


12. Economy

https://skripthub.net/docs/?id=920

player's money 

Skript 에는 Vault와 자동 연동되는 돈 기능이 이미 있습니다. 변수를 따로 할당하려고 하지 마세요. 직접 만들면 다른 플러그인이랑 호환이 안됩니다.

단, Vault는 필수 설치입니다.


 마치며

사실 더 있을 수 있는데, 시간이 늦어서 대표적인 실수들만 소개해봅니다. 나중에 좀 더 추가될 수 있습니다.


스크립트를 당장 버리진 못하더라도, 잘못 사용하는 일은 줄어들었으면 합니다. 주변에 스크립트를 이렇게 쓰는 사람이 있으면 한번 보여주시면 감사하겠습니다.

11개의 댓글

제론
2022.08.12

Skchoke랑 InvSk가 지원이 종료 됐다니.. 스크립트의 전성기가 많이 지나가버렸군요

오른쪽왼팔
2022.11.18

프로그래밍을 모르면 알기 힘든 부분을 잘 집어주셨음

클린 코드 변수명 리팩토링 구글링 ㅇㅇ..

마끼야또
2022.12.29

파이썬보다도 더 편한 스크립트 ㅋㅋㅋ...

The_25th_night
2023.05.23

Naming 부분에 {_a}와 같은 변수 네이밍은 임시변수의 네이밍 인 것으로 알고 있습니다.

qsef1256
2023.05.25
@The_25th_night

알고 있습니다. Naming은 일반 변수이던 임시 변수이던 가리지 않고 적용되는 부분입니다. 단지 함수 안에서 쓰는 변수는 임시 변수가 더 많기(아야 하기)에 임시 변수를 예로 든 것 뿐입니다.

hw0202
2023.05.31

InvSK, SkChoke, QuarSk, GomSK 이 지원이 종료 됐다면 뭐뭐 써야하나요ㅕ??

qsef1256
2023.05.31
@hw0202

해당 애드온들은 이미 스크립트 기본 문법에 추가되었거나 해당하는 버그가 고쳐졌거나 해서 그냥 필요가 없습니다.

도덕
2023.08.06

1.19.4 버전입니다. 분명 Vault 플러그인을 설치했는데 %player's money%가 작동하지 않습니다. 플러그인 설명에 1.17까지라고 적혀있긴 헀는데, 그것때문에 그런 건가요? 맞다면 해결 방법 아시나요.

qsef1256
2023.08.08
@도덕

vault는 최신 버전을 지원하고 있습니다. 1.17버전을 받으셨다면 최신 버전을 지원하는 vault로 다시 설치하시기 바랍니다.

kitm_21
2024.07.06

set {ex.%player%} to 1 대신 배열변수를 쓰면 좋은점이 어떤게 있을까요?

배열변수의 개념은 알았지만 활용을 배우고 싶습니다. 가능하면 돈을 예시로 들어주시면 감사하겠습니다.

qsef1256
2024.07.08
@kitm_21

게시글 6번이랑 12번에 적혀있습니다. 또한 이 부분은 스크립트 기초에 해당하므로 검색 결과가 존재합니다.

뉴스 및 창작물
/files/thumbnails/246/933/003/262x150.crop.jpg?20241204080049

업데이트

[마인크래프트 1.21.4 업데이트]

제작대

2024-12-04

0

/files/thumbnails/477/930/003/262x150.crop.jpg?20241201030912

레드스톤

뉴진스 - Super Shy | 마크 노트블럭 커버

노트블럭전문가

2024-12-01

0

/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 3

노트블럭전문가

2024-11-27

1

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ? 2

팀뉴일리시

2024-11-23

5

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2