목요일, 10월 19, 2006

Purpose: Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix

-= Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix =-

Purpose: Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix
Author: godmode2k (godmode2k@hotmail.com | MSN IM)
Date: September. 04. 2005
Destination:
Source:


SDK: HL1 SDK 2.3
Code: Multyplayer Source
Tested: Steam based

(*)Special thanks to:



Description:
지난번 제가 작성한 tutorials:
0. "자신이 만든 MOD를 STEAM 으로 돌려보기 입니다."
1. 외국 Tutorial 번역 "Creating a New VGUI Menu - Part 1"
2. "게임내에서 wave 파일을 재생하자!"
3. "Radio Command Menu 만들기(CS 처럼)"
4. "MOD 게임 바탕화면 Logo 바꾸기"
5. "HLDS로 나의 MOD Server 구성하기"
6. "Counter-Strike 처럼 Team System 만들기(수정된 Radio Command Menu 포함)"
7. "기존 M16에서 CS(카스)의 M4A1 weapon 만들기"
8. "AK47 weapon 만들기"
9. "Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix"

주소는: 0. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=39
1. http://cocowest.javasarang.net/mod/vgui_p1/VGUIMenuPart1.htm
2. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=49
3. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=51
4. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=53
5. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=59
6. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=74
7. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=99
8. http://cocowest.javasarang.net/mod/bbs/view.php?&bbs_id=hlsdk&page=&doc_num=100
9. n/a

[ 추가사항 ]


[ 주의 ]
code를 추가해 줄 때,

// 018killer: ... [
// 018killer: ... ]

사이 부분의 code를 추가해 주시면 됩니다

*** 이 tutorial 은 6. "Counter-Strike 처럼 Team System 만들기(수정된 Radio Command Menu 포함)" 가 추가되었다는
사실하에 작성된 글입니다. (반드시 추가한 후에 작성하시기 바랍니다.)


--------------------------------------------------------------
파일명: mp files/player.cpp
작업위치:
edict_t *EntSelectTeamSpawnPoint( CBaseEntity *pPlayer )
{
CBaseEntity *pSpot;
edict_t *player;

player = pPlayer->edict();
CBasePlayer *cbPlayer = (CBasePlayer *)pPlayer; // Get a CBasePlayer
...
ReturnSpot:
if( FNullEnt( pSpot ) )
{
ALERT( at_error, "PutClientServer: no spawn points on level" );
return INDEXENT(0);
}

g_pLastSpawn = pSpot;

바로 아래 부분에 작성( 이 부분에 작성 )

return pSpot->edict();
}

--------------------------------------------------------------
// 018killer: Player Spawn at First time Teamplay [
// Purpose: Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix
// player.cpp: CBasePlayer :: Spawn() 에서의 g_pGameRules->PlayerSpawn( cbPlayer ); 코드를 주석 처리하고
// player.cpp: edict_t *EntSelectTeamSpawnPoint( CBaseEntity *pPlayer ) {} 안의 ReturnSpot: 에 넣어주자

g_pGameRules->PlayerSpawn( cbPlayer );

// 018killer: Player Spawn at First time Teamplay ]
==============================================================



--------------------------------------------------------------
파일명: mp files/player.cpp
작업위치:
void CBasePlayer::Spawn( void )
{
pev->classname = MAKE_STRING("player");
pev->health = 100;
pev->armorvalue = 0;
pev->takedamage = DAMAGE_AIM;
...
m_flNextChatTime = gpGlobals->time;
g_pGameRules->PlayerSpawn( this );
}

에서 g_pGameRules->PlayerSpawn( this ); 를 아래와 같이 주석처리
--------------------------------------------------------------
// 018killer: Player Spawn at First time Teamplay [
// Purpose: Teamplay 시 player 가 처음 서버에 접속했을 때 이상하게 spawn 되는걸 fix
// player.cpp: CBasePlayer :: Spawn() 에서의 g_pGameRules->PlayerSpawn( cbPlayer ); 코드를 주석 처리하고
// player.cpp: edict_t *EntSelectTeamSpawnPoint( CBaseEntity *pPlayer ) {} 안의 ReturnSpot: 에 넣어주자

// g_pGameRules->PlayerSpawn( this );

// 018killer: Player Spawn at First time Teamplay ]
==============================================================



이상입니다.
질문이나 fix 되어야 할 점이 있을시엔 godmode2k@hotmail.com 으로 메일을 보내주시기 바랍니다.

댓글 없음:

댓글 쓰기