[SourceMod] 클라이언트와 가장 가까운 사람 찾기
예전 2012년도 중반쯤에 SVN으로 소스모드를 이용하여 팀 프로젝트 공동 개발을 하면서 만들었던 코드입니다.
솔직히, 이 방법보다는 좀 더 효율적이고 좋은 방법이 있을 것 같지만 이렇게라도 만들어 보았네요.
/**
* 레이더 모듈 :: 가장 가까운 사람 찾기
*
* @param client 클라이언트 인덱스
* @param range 찾으려는 범위
* @param targetdist 대상과의 거리 (copyback)
* @return 대상 인덱스
*/
FindClosestTarget(client, Float:range, &Float:targetdist=0.0)
{
new target;
new Float:clientpos[3], Float:targetpos[3];
GetClientAbsOrigin(client, clientpos);
// 모든 사람들과의 거리를 측정
for (new i = 1; i <= MaxClients; i++)
{
if (client == i) continue;
if (!IsClientInGame(i)) continue;
if (!IsPlayerAlive(i)) continue;
GetClientAbsOrigin(i, targetpos);
new Float:dist = GetVectorDistance(clientpos, targetpos);
// 측정한 거리가 만약 설정한 range 보다 낮거나 같으면 체크
if (dist <= range)
{
if (targetdist == 0.0)
{
targetdist = dist;
target = i;
}
else
{
if (targetdist > dist)
{
targetdist = dist;
target = i;
}
}
}
}
if (targetdist == 0.0)
return -1;
return target;
}
'Info/Tips > Programming' 카테고리의 다른 글
| [SourceMod] 인질, 인질구출지역, 폭파장소, 구매지점 삭제 (0) | 2015.01.22 |
|---|---|
| [SourceMod] MOTD 패널을 심화적으로 다루기 (0) | 2015.01.22 |
| [SourceMod] TextMsg 이벤트 이용하여 메세지 삭제 (0) | 2015.01.22 |
| [SourceMod] base64 인코딩/디코딩 라이브러리 (0) | 2015.01.22 |
| [Font] 나눔고딕코딩 글꼴 이용하기 (0) | 2015.01.22 |