From ba10189f465dd0b4fd8085584bd2c671283488ac Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 22 Dec 2007 17:54:17 +0000 Subject: [PATCH] masterserver uri resolving fix, cleanups git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1467 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clientgame.cpp | 59 ++++++++++++++++++++------------------- source/src/clients2c.cpp | 7 ----- source/src/physics.cpp | 2 +- source/src/protos.h | 2 +- source/src/serverms.cpp | 4 +-- 5 files changed, 35 insertions(+), 39 deletions(-) diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 1fa2f51d..36f4d5ab 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -190,31 +190,6 @@ void freebotent(botent *d) } } -void respawnself() -{ - if(m_mp(gamemode)) addmsg(SV_TRYSPAWN, "r"); - else - { - spawnplayer(player1); - player1->lifesequence++; - showscores(false); - } -} - -bool respawn() -{ - if(player1->state==CS_DEAD && lastmillis>player1->lastpain+(m_ctf ? 5000 : 2000)) - { - player1->attacking = false; - if(m_arena) { conoutf("waiting for new round to start..."); return false; } - respawnself(); - weaponswitch(player1->primary); - player1->lastaction -= WEAPONCHANGE_TIME/2; - return true; - } - return false; -} - void checkakimbo() { if(player1->akimbo && player1->akimbomillis && player1->akimbomillis<=lastmillis) @@ -376,6 +351,31 @@ void spawnplayer(playerent *d) d->state = d==player1 && editmode ? CS_EDITING : CS_ALIVE; } +void respawnself() +{ + if(m_mp(gamemode)) addmsg(SV_TRYSPAWN, "r"); + else + { + spawnplayer(player1); + player1->lifesequence++; + showscores(false); + } +} + +bool tryrespawn() +{ + if(player1->state==CS_DEAD && lastmillis>player1->lastpain+(m_ctf ? 5000 : 2000)) + { + player1->attacking = false; + if(m_arena) { conoutf("waiting for new round to start..."); return false; } + respawnself(); + weaponswitch(player1->primary); + player1->lastaction -= WEAPONCHANGE_TIME/2; + return true; + } + return false; +} + void showteamkill() { player1->lastteamkill = lastmillis; } // damage arriving from the network, monsters, yourself, all ends up here. @@ -528,7 +528,6 @@ void startmap(char *name) // called just after a map load clearminimap(); //if(netmapstart()) { gamemode = 0;} //needs fixed to switch modes? senditemstoserver = true; - //monsterclear(); // Added by Rick if(m_botmode) BotManager.BeginMap(name); else kickallbots(); @@ -540,8 +539,12 @@ void startmap(char *name) // called just after a map load particlereset(); suicided = -1; spawncycle = -1; - if(!m_mp(gamemode)) spawnplayer(player1); - else findplayerstart(player1); + + // FIXME + /*if(!m_mp(gamemode)) spawnplayer(player1); + else findplayerstart(player1);*/ + respawnself(); + player1->frags = player1->flagscore = player1->lifesequence = 0; loopv(players) if(players[i]) players[i]->frags = players[i]->flagscore = players[i]->lifesequence = 0; s_strcpy(clientmap, name); diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 3b1fe849..238879f4 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -500,13 +500,6 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) int cn = getint(p); playerent *d = cn==getclientnum() ? player1 : newclient(cn); if(!d) break; - // FIXME - /*if(d==player1) - { - if(editmode) toggleedit(); - showscores(true); - } - d->state = CS_DEAD;*/ deathstate(d); break; } diff --git a/source/src/physics.cpp b/source/src/physics.cpp index 5a89b883..ac12b559 100644 --- a/source/src/physics.cpp +++ b/source/src/physics.cpp @@ -480,7 +480,7 @@ void attack(bool on) { if(intermission) return; if(editmode) editdrag(on); - else if(player1->state==CS_DEAD) respawn(); + else if(player1->state==CS_DEAD) tryrespawn(); else player1->attacking = on; } diff --git a/source/src/protos.h b/source/src/protos.h index 48d4d130..83c2eca4 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -199,7 +199,7 @@ extern void flagdropped(int flag, int action, short x, short y, short z); extern void flaginbase(int flag, int action, int act); extern void flagmsg(int flag, int action); extern void arenarespawn(); -extern bool respawn(); +extern bool tryrespawn(); extern void findplayerstart(playerent *d); extern void serveropcommand(int cmd, int arg1); extern void refreshsopmenu(void *menu, bool init); diff --git a/source/src/serverms.cpp b/source/src/serverms.cpp index dcf4e8d4..d782bcde 100644 --- a/source/src/serverms.cpp +++ b/source/src/serverms.cpp @@ -235,9 +235,9 @@ void serverms(int mode, int numplayers, int minremain, char *smapname, int milli void servermsinit(const char *master, char *ip, int infoport, char *sdesc, bool listen) { const char *mid = strstr(master, "/"); - if(!mid) mid = master; + if(mid) s_strncpy(masterbase, master, mid-master+1); + else s_strcpy(masterbase, (mid = master)); s_strcpy(masterpath, mid); - s_strncpy(masterbase, master, mid-master+1); s_strcpy(serverdesc, sdesc); if(listen)