Syncope.T-*
Published 2011. 12. 8. 19:54
[3] 개인변수 Steam/Sourcemod
728x90

늘은 소스모드 강좌에 대해선 짧은 글을 쓰고자 합니다. 그래서 배울 오브젝트는 Individual Variable 입니다.

개인변수라는거죠. 개인변수는 뭐랄까.. new String:a 같이 그냥 서버에만 적용되는 문자열을 만드는게 아니라 각각 개인에게 하나씩 하나씩 먹을 수 있는 빵을 주듯이 말이죠. 활용으로는 어떤사람에겐 빵을, 다른사람에겐 케이크를, 또 다른 사람에게는 밥을 이런식으로 개인에게 할당할 다른 값들을 줄수있다는거죠 하지만 우리들의 생각과는다르게 ' 어 그럼 개인변수를 쓸 사람들이 많아지면 개인변수 자체도 많아져야하겠네요? '

라고 질문하는 사람이 있다면 이렇게 답해줄겁니다 ' 개인변수 하나로 즉, 음식을 만드는 기계는 하나이나 뽑아내는건 여러가지라 이말입니다. '

그럼 설명은 이만 마치고 본론으로 들어가보도록 하지요.

공식은 일단 이렇습니다

new 변수이름[데이터값];

ex) new givefood[MAXPLAYERS+1];

플레이어들에게 하나하나씩 줄거니깐 저는 데이터값을 MAXPLAYER+1 로 표시했습니다 그게 자동으로 플레이어 인원을 알아서 체크해주며 할당값을 늘려주니깐요. 간편해서 그러는겁니다.

그리고 개인변수를 플레이어에게 지정해줄때엔

변수이름[유저이이디] = 값;

ex) givefood[Client] = 1;

그럼 어떻게 If로 쓰고 주고 받고를 알아야겠지요?

예를들어 게임도중에 쓸려고하는데 미리 로드 시키고 싶다! 라고 한다면

public OnClientPutInServer(Client)
{
CreateTimer(5.0, Load, Client);

// 이건 딜레이로서 타이머라고 불리웁니다. 5초뒤 라는 커맨드를 실행하지요.
}
public Action:Load(Handle:Timer, any:Client)
{
givefood[Client] = 0;

// 게임에 입장 한 유저에게 5초뒤에 이 이벤트로 이동하여 givefood라는 변수를 주고 0이라는 값을 설정 해 주었습니다.
}

설정은 이렇게 했습니다 다음은 주고받고 하는 것과 IF 구문 사용법만 알면 되겠군요

public OnPluginStart()
{

// 커맨드 구문을 넣어 봅시다.
RegConsoleCmd("say", Command_say);
RegConsoleCmd("say_team", Command_say);

}

public Action:Command_say(Client, args)
{

new String:Msg[256];
GetCmdArgString(Msg, sizeof(Msg));
Msg[strlen(Msg)-1] = '\0';

if(StrEqual(Msg[1], "!확인", false))
{
if (givefood[Client] == 0)

{

PrintToChat(Client, "\x04[Duck]\x03 GIVEFOOD 변수 값이 0 인게 확인되었습니다. ");

}

}
return Plugin_Continue;
}

' 자 여길 보면 if 에도 변수공식은 그대로 사용합니다. [유저아이디] 를 붙이는것도 꼭 잊지 말아야 합니다. 만약 givefood == 0 일때 1로 바 꿔 주고 싶다면 if 진입후 메시지 밑에나 위에다 givefood[Client] = 1; 로 놔 주는것도 좋겠지요.

이걸로 개인변수 강의를 마치겠습니다. 자세한 질문사항은 댓글로 받겠습니다 !

profile

Syncope.T-*

@Syncope

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...