본문 바로가기

프로그래밍/Pawn13

[PAWN/SAMP] 특정 총기에 드라이브 바이 제한 걸기 SAMP에서 특정 총기에 드라이브 바이 제한을 두는 코드입니다.예를 들어 D-Eagle 같은, 드라이브 바이 사용 시 다른 총기에 비해 지나치게큰 위력을 발생하는 무기에 제한을 둘 때 사용할 수 있습니다. 모든 SAMP 버전에서 사용할 수 있습니다.플레이어가 보조석에 있을 때 'H'키(드라이브 바이 키) 눌림이 인식되면,현재 플레이어가 들고 있는 무기의 Weapon ID를 추출해 무기제한 리스트와 비교합니다.만약, 플레이어의 무기가 제한 리스트에 해당될 경우 플레이어의 현재 무기를 0(주먹)으로 설정합니다. 아래는 구현된 코드입니다. #define DRIVE_BY_LIST 24,25,30,31,33,34 public OnPlayerKeyStateChange(playerid, newkeys, oldkeys.. 2012. 11. 19.
[PAWN/SAMP] 무기핵 방지 스크립트 SAMP 모든 버전에서 사용 가능한 코드입니다.주로 소비에트나 클레오 같은 불법 프로그램 또는 모드를 사용하는 사용자들을 제재할 때 사용합니다.아래 코드는 금지 무기 목록을 만들어놓고 플레이어가 현재 들고 있는 무기가금지 리스트에 해당된다면 서버 밴(서버 접속 금지) 처리하는 코드입니다. 이 코드처럼 무기핵 방지에 사용할 수도 있고, 조금만 변형해서 다른 방식으로도 사용 가능합니다.예를 들어, 특정 무기 픽업을 획득했을 때 무기를 지급하고 지급된 무기에 따라 이벤트를 발생시킨다던지,응용할 수 있는 방법은 많습니다. #define BanWeaponList 35,36,37,38,39,44,45 // 금지 무기 목록 public OnPlayerUpdate(playerid){ switch( GetPlayerWe.. 2012. 11. 19.
[PAWN/SAMP] 총기의 이름을 구하는 함수 SAMP에서 무기의 이름을 반환하는 함수 코드입니다.SAMP 모든 버전에서 사용 가능하고 Weapon ID에 따른 무기 이름을 제공하는 API가 없기 때문에 만들어야 합니다.귀찮을 수도 있지만 다르게 응용하자면 주먹(ID:0)이 활성화 된 상태일 때 무기 이름을 다른 걸로 바꿀 수도 있겠죠.아래 코드는 switch문으로 작성되었는데 Look-Up Table로 만들었으면 더 좋을 것 같네요.서버 동시 접속 인원이 많으면 많아질수록 작은 부분에서도 신경을 많이 써야하거든요.모드의 성격에 따라 다르겠지만 그렇게 자주 호출되는 함수도 아닐 것 같고 크게 부하 걸릴 부분도 없어보이네요.Pawn에서 정적 변수가 있는지 모르겠지만 있다면 룩업테이블로 구현하는 게 좋아보여요.요즘은 메모리 용량이 커져서 속도 증가를 위.. 2012. 11. 19.
[PAWN/SAMP] 유용한 사용자 정의 함수 정리 SAMP에서 모드 구현할 때 유용한 함수, 자주 쓰이는 함수를 모아보았습니다.요즘 버전에서는 API가 어떻게 변경됐는지 모르겠지만 아마 모든 버전에서 사용 가능할겁니다.맨 아래 FTF(Face To Face) 함수는 여러가지 상황에서 가능합니다.거래, 하이파이브 애니메이션, 악수 등 다양한 상황에 적용하시면 됩니다.기타 함수들도 제가 모드 구현하면서 많이 사용했던 함수들입니다.쭉 보시고 자주 사용할 것 같은 코드는 가져다놓으셨다가 필요할 때 불러 쓰시면 될 것 같네요. 1. 플레이어의 이름을 구하는 함수stock PlayerName(playerid) {new name[24];GetPlayerName(playerid, name, 24);return name; } 2. 플레이어의 체력을 구하는 함수stock.. 2012. 11. 19.