본문 바로가기

프로그래밍/Pawn13

[PAWN/SAMP] 팀채팅 구현하기 머리말팀데스매치 모드를 제작하다보면 꼭 필요한 기능 중의 하나가 바로 팀채팅이다. 하지만, 많은 모드메이커들이 팀채팅 기능의 원리를 쉽게 파악하지 못한다. 흔히들 만만하고 익숙한 명령어로 와 같이 구현하곤 하는데 긴급한 상황에서 언제 명령어를 다 치고 있는가. OnPlayerText 콜백함수를 이용해 간편하고 빠르게 사용할 수 있는 팀채팅 기능을 구현해보겠다. 머리말에서 소개했듯이 이 스크립트의 핵심은 바로 OnPlayerText 콜백이다.OnPlayerText 는 플레이어가 말을 입력했을 때(채팅) 호출되는 콜백인데 아래와 같이 구현할 것이다.예를 들어 팀원에게 "뒤로 빠져!" 라는 메시지를 보내고 싶거든 채팅창에@뒤로 빠져!라고 입력하면 되는데 전체채팅인지 팀채팅인지 구분하는 기호가 바로 맨 앞에 붙.. 2012. 4. 15.
[PAWN/SAMP] 서버에 접속한 모든 플레이어들을 소환하기 머리말서버를 운영하다보면 지루해하는 유저들을 위해 이따금 이벤트를 열곤 하는데 그러기 위해서는 모든 유저를 한 곳에 모아야 할 경우가 많다. 대부분의 서버에서 명령어를 구축해놓고 있지만 위와 같은 경우에서 한명 한명씩 ... 명령어를 타이핑 하기에는 너무 비효율적이다. 만약 서버에 접속한 인원이 80명이라면 소환 명령어를 79번(본인 제외)이나 타이핑 해야 하는 일이 발생하는 것이다. 따라서 반복문을 이용한 모든 플레이어 소환 명령어를 만들어보겠다. 명령어를 타이핑하여 효과를 내는 것이니 OnPlayerCommandText 콜백함수를 이용해야 한다. public OnPlayerCommandText(playerid, cmdtext[]) // 명령어가 타이핑되면 호출되는 콜백함수{ if( strcmp(cmd.. 2012. 4. 11.
[PAWN/SAMP] 미니맵에 맵아이콘(Map Icon) 표시하기 머리말GTA SanAndreas 싱글게임에서 볼 수 있었던 여러 종류의 미니맵들을 멀티 서버에서는 총기상, 음식점 등 몇 가지를 제외하고는 찾아볼 수가 없다. 대표적으로 싱글게임에서 진행하는 미션들의 맵아이콘인 위와 같은 것들 말이다. 싱글게임에서는 미션을 받을 수 있는 장소를 플레이어에게 알려주기 위해 맵아이콘을 표시해주었지만 멀티 서버에서는 미션이라는 개념이 없는만큼 미션 관련 맵아이콘이 기본적으로 표시되지 않는다. 하지만 a_players.inc 헤더파일에 정의되어 있는 SetPlayerMapIcon 함수를 이용하면 SAMP에서 지원하는 모든 맵아이콘을 미니맵에 표시해 줄 수 있다. 머리말에서 잠깐 소개했지만 미니맵에 맵아이콘을 표시하게 하는 함수는 SetPlayerMapIcon이다. SetPlay.. 2012. 4. 11.
Pawn 기초문법 머리말 Pawn 카테고리 제일 첫번째 글을 보면 Pawn을 소개하는 내용 중에 C언어와 문법이 비슷하다고 되어 있는데 몇가지를 제외하고는 C언어와 문법이 정말 많이 비슷하다. 고로, C언어를 학습한 분들이라면 낯설지 않게 Pawn을 익힐 수 있다. Pawn의 가장 기초문법만을 간단하게 설명하고 이번 장은 마치도록 하겠다. 이 글 이후로는 모드메이커들을 위한 스크립트들을 포스팅할 것이다. 1. main 함수pawn에도 main 함수가 있을까? 물론, 있다. 서버 구동 파일인 samp-server.exe 를 실행시키면 main 함수가 실행되고 나서 OnGameModeInit 콜백이 호출된다. print 함수나 printf 함수로 콘솔(도스)창에 텍스트 출력이 가능하다. 2. 연산자프로그래밍 언어의 연산자는 .. 2012. 4. 11.