본문 바로가기

프로그래밍/Pawn13

[PAWN/SAMP] 랭킹 알고리즘 stock UpdateRank() { new rank[MAX_PLAYERS]; // 배열 내 값들 전부 1로 초기화 for (new i = 0; i 2012. 11. 19.
[PAWN/SAMP] 사살한 플레이어의 이름을 화면에 표시하기 데스매치 모드에서 유용하게 쓸 수 있는 함수입니다. 서든어택과 같은 FPS 게임들을 보면 항상 있는 기능인데, 누가 누구를 죽였는지 화면에 출력하는 코드입니다. 이 코드 같은 경우에는 플레이어 자기 자신이 죽었을 때 호출되는 OnPlayerDeath 콜백을 이용했습니다. 콜백 함수 자체에 killerid(자신을 죽인 player의 id)가 주어지기 때문에 이걸로 코드를 다양하게 작성하면 됩니다. 아래 코드는 A가 B를 죽였을 때, A의 게임 화면에 GameText로 B의 이름을 출력하는 코드입니다. 예를 들어 B의 playername이 "HongGilDong"이면, you kill honggildong Rank Exp+10 이렇게 출력되겠네요. 아마 GameTextForPlayer로 출력하면 모든 문자가.. 2012. 9. 17.
[PAWN/SAMP] 플레이어에게 데미지를 주는 함수 만들기 머리말 게임 설정 중 플레이어에게 30만큼의 데미지를 주어야 하는 상황이 있다고 가정하자. 얼핏 보면 간단해보이지만 세 가지의 경우의 수가 존재한다. 1. 플레이어의 아머가 없을 경우 2. 플레이어의 아머가 30보다 클 경우 3. 플레이어의 아머가 0보다 크고 30보다 작을 경우 1번 경우는 간단하다. 아머가 없다면 체력에 바로 데미지를 가하면 된다. 2번의 경우도 마찬가지로 간단한데, 아머가 데미지보다 많기 때문에 체력에 데미지를 가해서는 안되고 아머에 데미지를 가해야 한다. 3번의 경우는 아머가 존재하기는 하나 데미지보다 적을 경우이다. 예를 들어 체력이 100이고 아머가 20일 경우가 바로 그것인데 30의 데미지를 가하게 되면 체력은 90, 아머는 0이 되어야 한다. 코드를 소개한다. 위와 같이 함.. 2012. 6. 6.
[PAWN/SAMP] 연속킬 효과 주기 머리말서든어택이라는 FPS게임을 해본 사람들은 알겠지만 적군을 연달아 사살했을 때 더블킬, 멀티킬 등 음성이 흘러나온다. 이러한 시스템은 살해자로 하여금 더 많은 킬을 하고 싶도록 영향을 끼치게 되고 이 또한 서든어택의 재미 요소 중 하나가 된다. SAMP에는 이러한 시스템이 없기에 모드메이커가 직접 구현해야 한다. 다른 계열의 모드보다 월등하게 킬이 빈번히 일어나는 데스매치 모드에는 넣어봄직 하다. 코드를 소개한다. new ContinueKill[MAX_PLAYERS]; public OnPlayerConnect(playerid){ ContinueKill[playerid] = 0; return 1;} public OnPlayerDeath(playerid, killerid, reason){ Continue.. 2012. 5. 3.