본문 바로가기
프로그래밍/Pawn

[PAWN/SAMP] 총기의 이름을 구하는 함수

by 알용 2012. 11. 19.
반응형

SAMP에서 무기의 이름을 반환하는 함수 코드입니다.

SAMP 모든 버전에서 사용 가능하고 Weapon ID에 따른 무기 이름을 제공하는 API가 없기 때문에 만들어야 합니다.

귀찮을 수도 있지만 다르게 응용하자면 주먹(ID:0)이 활성화 된 상태일 때 무기 이름을 다른 걸로 바꿀 수도 있겠죠.

아래 코드는 switch문으로 작성되었는데 Look-Up Table로 만들었으면 더 좋을 것 같네요.

서버 동시 접속 인원이 많으면 많아질수록 작은 부분에서도 신경을 많이 써야하거든요.

모드의 성격에 따라 다르겠지만 그렇게 자주 호출되는 함수도 아닐 것 같고 크게 부하 걸릴 부분도 없어보이네요.

Pawn에서 정적 변수가 있는지 모르겠지만 있다면 룩업테이블로 구현하는 게 좋아보여요.

요즘은 메모리 용량이 커져서 속도 증가를 위해서라면 메모리를 차라리 더 잡아먹는게 나으니까요.



  • stock GetWeaponName( weaponid )
  • {
  •         new wName[16];
  •  
  •         switch( weaponid )             
  •         {              
  •         case 0: wName = "주먹";
  •         case 1: wName = "너클";
  •         case 2: wName = "골프채";           
  •         case 3: wName = "곤봉";              
  •         case 4: wName = "나이프";           
  •         case 5: wName = "야구배트";        
  •         case 6: wName = "삽";         
  •         case 7: wName = "당구채";           
  •         case 8: wName = "카타나";           
  •         case 9: wName = "전기톱";           
  •         case 10..13: wName = "딜도";         
  •         case 14: wName = "꽃다발";          
  •         case 15: wName = "지팡이";          
  •         case 16: wName = "수류탄";          
  •         case 17: wName = "연막탄";          
  •         case 22: wName = "콜트";             
  •         case 23: wName = "소음총";          
  •         case 24: wName = "데저트이글";            
  •         case 25: wName = "샷건";             
  •         case 26: wName = "스완오브샷건";         
  •         case 27: wName = "컴뱃샷건";               
  •         case 28: wName = "우지";             
  •         case 29: wName = "MP5";        
  •         case 30: wName = "AK-47";              
  •         case 31: wName = "M4";         
  •         case 32: wName = "Tec9";               
  •         case 33: wName = "소총";             
  •         case 34: wName = "스나이퍼 라이플";             
  •         case 35: wName = "RPG";        
  •         case 36: wName = "히트시커";               
  •         case 37: wName = "화염방사기";            
  •         case 38: wName = "미니건";          
  •         case 39: wName = "가방폭탄";               
  •         case 40: wName = "폭파기";          
  •         case 41: wName = "스프레이";               
  •         case 42: wName = "소화기";          
  •         case 43: wName = "카메라";          
  •         case 44,45: wName = "고글";          
  •         case 46: wName = "낙하산";          
  •         case 49: wName = "차량사고";               
  •         case 50: wName = "헬기 프로펠러";        
  •         case 51: wName = "폭팔사고";               
  •         case 52: wName = "익사";             
  •         case 53: wName = "낙사";
  •         case 255: wName = "오류";            
  •         default: wName = "N/A";
  •         }
  •        
  •         return wName;
  • }

  • 반응형