diff options
| author | oy <Tom_Adams@web.de> | 2011-03-10 10:14:41 +0100 |
|---|---|---|
| committer | oy <Tom_Adams@web.de> | 2011-03-10 10:14:41 +0100 |
| commit | 1f10c1e8bf05335ab4377ce592d87c4210c14285 (patch) | |
| tree | 90220121be601da30ee285c1f38b233b42d39b05 | |
| parent | ee2f625754ca9f01be6732550f16098c5afa704a (diff) | |
| download | zcatch-1f10c1e8bf05335ab4377ce592d87c4210c14285.tar.gz zcatch-1f10c1e8bf05335ab4377ce592d87c4210c14285.zip | |
fixed problem with ctf if there're no flags
| -rw-r--r-- | datasrc/network.py | 7 | ||||
| -rw-r--r-- | src/game/server/gamemodes/ctf.cpp | 30 |
2 files changed, 24 insertions, 13 deletions
diff --git a/datasrc/network.py b/datasrc/network.py index e30b1a9b..3f5c98a2 100644 --- a/datasrc/network.py +++ b/datasrc/network.py @@ -24,7 +24,8 @@ enum TEAM_RED, TEAM_BLUE, - FLAG_ATSTAND=-2, + FLAG_MISSING=-3, + FLAG_ATSTAND, FLAG_TAKEN, SPEC_FREEVIEW=-1, @@ -117,8 +118,8 @@ Objects = [ NetIntAny("m_TeamscoreRed"), NetIntAny("m_TeamscoreBlue"), - NetIntRange("m_FlagCarrierRed", 'FLAG_ATSTAND', 'MAX_CLIENTS-1'), - NetIntRange("m_FlagCarrierBlue", 'FLAG_ATSTAND', 'MAX_CLIENTS-1'), + NetIntRange("m_FlagCarrierRed", 'FLAG_MISSING', 'MAX_CLIENTS-1'), + NetIntRange("m_FlagCarrierBlue", 'FLAG_MISSING', 'MAX_CLIENTS-1'), ]), NetObject("CharacterCore", [ diff --git a/src/game/server/gamemodes/ctf.cpp b/src/game/server/gamemodes/ctf.cpp index 490067dd..fb177d5d 100644 --- a/src/game/server/gamemodes/ctf.cpp +++ b/src/game/server/gamemodes/ctf.cpp @@ -89,18 +89,28 @@ void CGameControllerCTF::Snap(int SnappingClient) pGameDataObj->m_TeamscoreRed = m_aTeamscore[TEAM_RED]; pGameDataObj->m_TeamscoreBlue = m_aTeamscore[TEAM_BLUE]; - if(m_apFlags[TEAM_RED]->m_AtStand) - pGameDataObj->m_FlagCarrierRed = FLAG_ATSTAND; - else if(m_apFlags[TEAM_RED]->m_pCarryingCharacter && m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()) - pGameDataObj->m_FlagCarrierRed = m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()->GetCID(); + if(m_apFlags[TEAM_RED]) + { + if(m_apFlags[TEAM_RED]->m_AtStand) + pGameDataObj->m_FlagCarrierRed = FLAG_ATSTAND; + else if(m_apFlags[TEAM_RED]->m_pCarryingCharacter && m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()) + pGameDataObj->m_FlagCarrierRed = m_apFlags[TEAM_RED]->m_pCarryingCharacter->GetPlayer()->GetCID(); + else + pGameDataObj->m_FlagCarrierRed = FLAG_TAKEN; + } else - pGameDataObj->m_FlagCarrierRed = FLAG_TAKEN; - if(m_apFlags[TEAM_BLUE]->m_AtStand) - pGameDataObj->m_FlagCarrierBlue = FLAG_ATSTAND; - else if(m_apFlags[TEAM_BLUE]->m_pCarryingCharacter && m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()) - pGameDataObj->m_FlagCarrierBlue = m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()->GetCID(); + pGameDataObj->m_FlagCarrierRed = FLAG_MISSING; + if(m_apFlags[TEAM_BLUE]) + { + if(m_apFlags[TEAM_BLUE]->m_AtStand) + pGameDataObj->m_FlagCarrierBlue = FLAG_ATSTAND; + else if(m_apFlags[TEAM_BLUE]->m_pCarryingCharacter && m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()) + pGameDataObj->m_FlagCarrierBlue = m_apFlags[TEAM_BLUE]->m_pCarryingCharacter->GetPlayer()->GetCID(); + else + pGameDataObj->m_FlagCarrierBlue = FLAG_TAKEN; + } else - pGameDataObj->m_FlagCarrierBlue = FLAG_TAKEN; + pGameDataObj->m_FlagCarrierBlue = FLAG_MISSING; } void CGameControllerCTF::Tick() |