Syncope.T-*
728x90

1 ) Event Death , Hurt 부분.

Hurt나 Death 부분에서는 IsPlayerAlive 구문을 사용하지 말아야합니다 Death 에서는 더더욱입니다. 왜냐하면 Pre 후크부분에서는 부분적으로 먹히지만 언제죽었는지 체크가 안될때가 형성될수있거든요. 예를들어 이벤트가 죽고나서 발동할지 죽기전에 발동할지 모릅니다. 왜냐하면 ontakedamage에서 return handled를 둬 버리면 데미지가 안들어가지요. 그러나 이게 죽기전에 발동하는 이벤트로 처리되어 버리면 데미지가 들어가고나서 죽기전 체크가 되고 데미지를 다시 리턴 시킨다는 과정이 겹쳐버린다면 구조가 얽혀버리지요.

그래서 Isplayerconnected 까지만 쓰시면됩니다 Ingame도 쓰셔도 되고요.

2 ) SDK Hook 은 필요없을땐 Unhook .

가끔가다 sdk hook 을 해 놓으시고 sdk 안에다가 체크를둬서 할땐 사용, 안할땐 사용하지않게 조건문을 만들어놓으시는분들이 많은데 리소스상 아예 unhook을 시키는게 낫습니다.

그냥 사용할때만 꺼내서 쓰세요.

3 ) CreatePanel 의 핸들변수는 전역변수 + 개인변수로 통일하라.

이러면 리소스 감량이 무척 쉽습니다. 팝업을 하나 생성할때마다 패널을 생성하는 경우, 패널이 겹칠수도 있고, 패널에 들어가는 리소스가 많습니다 예로

상점 입장 -> 무기 구입 -> 무기 선택 -> 구입 의사 -> 예 -> 획득 이라면 패널이 5개나 만들어지죠

하지만 위와 같이 패널을 전역 + 개인 변수로 두면은 됩니다. 예시로 밑에 글을 씁니다.

다들 쓰던 표준형은 이렇습니다.

public MainMenu(client)

{

new Handle:panel = Cratemenu......

}

이런식으로 말입니다. 이렇게 하지마시고 이걸 써보세요

전역변수 + 개인변수로 Handle 값을 둡니다. 그리고 OnClientPostAdminCheck 안에서 핸들값을 초기화시켜주시고요

OnClientDisconnect 에서 CloseHandle 변수 둡시다.

팝업을 생성하는 란은 이렇게 씁니다

--------------------------------------

if ( 개인핸들변수 != INVALID_HANDLE){

CloseHandle 개인핸들변수

}

'개인핸들변수 = 팝업생성

'팝업라인추가 "1번팝업"

'팝업클라이언트 보내기

--------------------------------------

자 이렇게 계속 만드시면 됩니다

그러면 소스 전체 구문도 줄어들고 용량도 줄고 서버 과부하도 줄고. 얼마나 좋아요?

핸들값을 삭제하는건 예로 이렇습니다

if ( 개인핸들변수 != INVALID_HANDLE){

개인핸들변수 = INVALID_HANDLE;

CloseHandle 개인핸들변수;

}

profile

Syncope.T-*

@Syncope

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...