From 4ee2dbaddfbf93028e490eec2be0f9be9641f6b7 Mon Sep 17 00:00:00 2001 From: ac_stef Date: Sat, 6 Sep 2008 02:57:11 +0000 Subject: [PATCH] gamemodes 'hunt the flag' & 'keep the flag' added git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2485 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- config/defaults.cfg | 2 + config/menus.cfg | 14 +- config/menus_multiplayer.cfg | 2 + packages/misc/htficons.png | Bin 0 -> 25485 bytes packages/misc/ktficons.png | Bin 0 -> 18997 bytes packages/misc/radaricons.png | Bin 17081 -> 14209 bytes packages/models/pickups/flags/CLA_htf/md3.cfg | 3 + .../models/pickups/flags/CLA_htf/skin.jpg | Bin 0 -> 29876 bytes .../models/pickups/flags/CLA_htf/tris.md3 | Bin 0 -> 11440 bytes .../models/pickups/flags/RVSF_htf/md3.cfg | 3 + .../models/pickups/flags/RVSF_htf/skin.jpg | Bin 0 -> 21972 bytes .../models/pickups/flags/RVSF_htf/tris.md3 | Bin 0 -> 11440 bytes packages/models/pickups/flags/ktf/md3.cfg | 3 + packages/models/pickups/flags/ktf/skin.jpg | Bin 0 -> 15107 bytes packages/models/pickups/flags/ktf/tris.md3 | Bin 0 -> 11440 bytes .../pickups/flags/small_CLA_htf/md2.cfg | 2 + .../pickups/flags/small_CLA_htf/skin.jpg | Bin 0 -> 9648 bytes .../pickups/flags/small_CLA_htf/tris.md2 | Bin 0 -> 3068 bytes .../pickups/flags/small_RVSF_htf/md2.cfg | 1 + .../pickups/flags/small_RVSF_htf/skin.jpg | Bin 0 -> 7850 bytes .../pickups/flags/small_RVSF_htf/tris.md2 | Bin 0 -> 3068 bytes .../models/pickups/flags/small_ktf/md2.cfg | 1 + .../models/pickups/flags/small_ktf/skin.jpg | Bin 0 -> 3957 bytes .../models/pickups/flags/small_ktf/tris.md2 | Bin 0 -> 3068 bytes source/src/clientgame.cpp | 99 ++++++---- source/src/clients2c.cpp | 30 +-- source/src/command.cpp | 4 +- source/src/entities.cpp | 146 ++++++++------ source/src/entity.h | 7 +- source/src/protocol.cpp | 6 +- source/src/protocol.h | 15 +- source/src/protos.h | 8 +- source/src/renderhud.cpp | 42 ++-- source/src/scoreboard.cpp | 8 +- source/src/server.cpp | 179 ++++++++++++++---- source/src/serverevents.h | 15 +- source/src/worldio.cpp | 2 +- 37 files changed, 400 insertions(+), 192 deletions(-) create mode 100755 packages/misc/htficons.png create mode 100755 packages/misc/ktficons.png create mode 100644 packages/models/pickups/flags/CLA_htf/md3.cfg create mode 100755 packages/models/pickups/flags/CLA_htf/skin.jpg create mode 100644 packages/models/pickups/flags/CLA_htf/tris.md3 create mode 100644 packages/models/pickups/flags/RVSF_htf/md3.cfg create mode 100755 packages/models/pickups/flags/RVSF_htf/skin.jpg create mode 100644 packages/models/pickups/flags/RVSF_htf/tris.md3 create mode 100644 packages/models/pickups/flags/ktf/md3.cfg create mode 100755 packages/models/pickups/flags/ktf/skin.jpg create mode 100644 packages/models/pickups/flags/ktf/tris.md3 create mode 100644 packages/models/pickups/flags/small_CLA_htf/md2.cfg create mode 100755 packages/models/pickups/flags/small_CLA_htf/skin.jpg create mode 100644 packages/models/pickups/flags/small_CLA_htf/tris.md2 create mode 100644 packages/models/pickups/flags/small_RVSF_htf/md2.cfg create mode 100755 packages/models/pickups/flags/small_RVSF_htf/skin.jpg create mode 100644 packages/models/pickups/flags/small_RVSF_htf/tris.md2 create mode 100644 packages/models/pickups/flags/small_ktf/md2.cfg create mode 100755 packages/models/pickups/flags/small_ktf/skin.jpg create mode 100644 packages/models/pickups/flags/small_ktf/tris.md2 diff --git a/config/defaults.cfg b/config/defaults.cfg index a44c337a..047bd776 100644 --- a/config/defaults.cfg +++ b/config/defaults.cfg @@ -71,6 +71,8 @@ alias pf [ votemap 6 $arg1 ] alias lss [ votemap 9 $arg1 ] alias osok [ votemap 10 $arg1 ] alias tosok [ votemap 11 $arg1 ] +alias htf [ votemap 13 $arg1 ] +alias ktf [ votemap 14 $arg1 ] //--------------------- editing ------------------------------- diff --git a/config/menus.cfg b/config/menus.cfg index 634fcef1..8322d213 100755 --- a/config/menus.cfg +++ b/config/menus.cfg @@ -37,7 +37,19 @@ menudirlist "packages/maps" "cgz" "map $arg1" newmenu maps_ctf -// Add maps to the below list to include them in the CTF map menu. +// Add maps to the below list to include them in the CTF map menu. Maps should contain flags here. +genmapitems "ac_depot ac_desert3 ac_elevation ac_keller ac_mines ac_power ac_shine ac_sunset ac_urban" +menuitem """" +menuitem "Show all maps.." [showmenu "all maps"] + +newmenu maps_htf +// Add maps to the below list to include them in the HTF map menu. +genmapitems "ac_arctic ac_complex ac_depot ac_desert ac_desert2 ac_desert3 ac_elevation ac_keller ac_mines ac_power ac_scaffold ac_shine ac_snow ac_sunset ac_toxic ac_urban" +menuitem """" +menuitem "Show all maps..." [ showmenu "all maps" ] + +newmenu maps_ktf +// Add maps to the below list to include them in the KTF map menu. Maps should contain flags here. genmapitems "ac_depot ac_desert3 ac_elevation ac_keller ac_mines ac_power ac_shine ac_sunset ac_urban" menuitem """" menuitem "Show all maps.." [showmenu "all maps"] diff --git a/config/menus_multiplayer.cfg b/config/menus_multiplayer.cfg index f6fe2fbc..7b4d71bb 100644 --- a/config/menus_multiplayer.cfg +++ b/config/menus_multiplayer.cfg @@ -26,6 +26,8 @@ menuitem "Deathmatch" "mode 2; showmenu maps" menuitem "Team Survivor" "mode 4; showmenu maps" menuitem "Survivor" "mode 3; showmenu maps" menuitem "Capture the Flag" "mode 5; showmenu maps_ctf" +menuitem "Hunt the Flag" "mode 13; showmenu maps_htf" +menuitem "Keep the Flag" "mode 14; showmenu maps_ktf" menuitem "Pistol Frenzy" "mode 6; showmenu maps" menuitem "Last Swiss Standing" "mode 9; showmenu maps" menuitem "One Shot, One Kill" "mode 10; showmenu maps" diff --git a/packages/misc/htficons.png b/packages/misc/htficons.png new file mode 100755 index 0000000000000000000000000000000000000000..7baf68e1cd79ddc8ce0b36afbabd8c6c1832ea5c GIT binary patch literal 25485 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 s{SX~XmzcDrEp2H_TiVi=HUI$le^yiqje-yz>% literal 0 HcmV?d00001 diff --git a/packages/misc/ktficons.png b/packages/misc/ktficons.png new file mode 100755 index 0000000000000000000000000000000000000000..ba27c598f409e3f8a16e6c41324018804f9c00e6 GIT binary patch literal 18997 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 literal 17081 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%0DQGAF6 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 VzgY?g{)Qm1&S9hdEn9ZN{{j0&H+KL4 diff --git a/packages/models/pickups/flags/CLA_htf/md3.cfg b/packages/models/pickups/flags/CLA_htf/md3.cfg new file mode 100644 index 00000000..27f36645 --- /dev/null +++ b/packages/models/pickups/flags/CLA_htf/md3.cfg @@ -0,0 +1,3 @@ +md3load tris.md3 +md3skin mesh skin.jpg +md3anim flag 0 7 \ No newline at end of file diff --git a/packages/models/pickups/flags/CLA_htf/skin.jpg b/packages/models/pickups/flags/CLA_htf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..8a30c5026f77d3987a26b7bdfa98c9c8fe4fad54 GIT binary patch literal 29876 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 O{72>)z9VxkWd9$`zCA?% literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/RVSF_htf/md3.cfg b/packages/models/pickups/flags/RVSF_htf/md3.cfg new file mode 100644 index 00000000..27f36645 --- /dev/null +++ b/packages/models/pickups/flags/RVSF_htf/md3.cfg @@ -0,0 +1,3 @@ +md3load tris.md3 +md3skin mesh skin.jpg +md3anim flag 0 7 \ No newline at end of file diff --git a/packages/models/pickups/flags/RVSF_htf/skin.jpg b/packages/models/pickups/flags/RVSF_htf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..3006bece5e8c9a817b2239b6f1f98d7e7bc906c8 GIT binary patch literal 21972 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 YmB!{PVbG`2qLi2fq=|^ujDkP^*$CaaL;wH) literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/RVSF_htf/tris.md3 b/packages/models/pickups/flags/RVSF_htf/tris.md3 new file mode 100644 index 0000000000000000000000000000000000000000..69aa1f129bd9dccd0cbdb6c7295f277524a8a134 GIT binary patch literal 11440 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 literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/ktf/md3.cfg b/packages/models/pickups/flags/ktf/md3.cfg new file mode 100644 index 00000000..27f36645 --- /dev/null +++ b/packages/models/pickups/flags/ktf/md3.cfg @@ -0,0 +1,3 @@ +md3load tris.md3 +md3skin mesh skin.jpg +md3anim flag 0 7 \ No newline at end of file diff --git a/packages/models/pickups/flags/ktf/skin.jpg b/packages/models/pickups/flags/ktf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..b6e23a0523d47416d5f3487728e9b23adead6262 GIT binary patch literal 15107 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

|FT=( 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 F{ui>jek%X~ literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/ktf/tris.md3 b/packages/models/pickups/flags/ktf/tris.md3 new file mode 100644 index 0000000000000000000000000000000000000000..69aa1f129bd9dccd0cbdb6c7295f277524a8a134 GIT binary patch literal 11440 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 literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/small_CLA_htf/md2.cfg b/packages/models/pickups/flags/small_CLA_htf/md2.cfg new file mode 100644 index 00000000..8185e92d --- /dev/null +++ b/packages/models/pickups/flags/small_CLA_htf/md2.cfg @@ -0,0 +1,2 @@ +mdlscale 60 + diff --git a/packages/models/pickups/flags/small_CLA_htf/skin.jpg b/packages/models/pickups/flags/small_CLA_htf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..329762d872ebeed7bf07411f127d01e5b3dcf934 GIT binary patch literal 9648 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 literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/small_CLA_htf/tris.md2 b/packages/models/pickups/flags/small_CLA_htf/tris.md2 new file mode 100644 index 0000000000000000000000000000000000000000..06256f475e7d81c56b7de9145e14737505e18ab4 GIT binary patch literal 3068 zcmZuzTWefZ6kf^9WRjf8Oy*=J_vU`$7B#{q0u)@8%tUnir|AX6s>m< z6r~Ik@*qCcJXNUpA7U&bRD_6vSi}l457HM)lp+=V)?Rb=+04v=z1QvgzO~NT=S*@s z|MaP5!qp(_clL2ThLyoOh4mL|T+Ub4eYPQ@sW8zahv+K(jCDYd=yR;E;NODXfi1ya zgMAJ5BJ39IQ?RFDPr}Z@_P}<-Hqay;VMVB4uOm97f9N;5Ltn$LqqdHG9ySmAFLHlk zEy7~h10uk>CYDdN2lZX<; zdx|>9t?X%7mt;>-Co0|41>1#un);|0&$SD=6#RZf-KeE#0J&qRFm@1mA2)=k5BW}1 zhEW^PQ7?@kKcp3U;E!rfCvaoH45KG2bRa*1SvuhJK7!SW3ePfzSzP2NX@bTP^JG(q z#xYSB{Nsqmp*n!6;<&>kx(&kTCzFKIFd}|ZapZZH1fn?l4I^sRPistf=O^E$dyMLn zXhr7xd`Z+iY(eD>=8%J&byJUjmF6WgzBy>xl*BxaZICq%Dj$$2YB&Ud*G z-N}a1Z_kI)hx4(acd>q$cW2&PaA$s8NYB5YOV9t5b5}pix@&i{&e@N$&iXG|=Ug%8 zoWGZAKTnt2H_HpoM)`{K9Bn!m{)Ep=riy1x9uEnuN z-fJ^B;RLvEmJ_D7;>C?`<9I&5m#xRX@ayaCFSi>#(XPd@#ygKE4Nf?MySGfVx0KSg ze$249)M5OBa^VNKf=cUJHOIz1iC))~=xxD2qdGO`8J%Zs(fa_s3aU%jZs@+kVPE>x z;+V6y)Lq39+{;>DYIff@%{+p;qBVN7hOHOO6W|J}SL3QVGPmHiwZ7=teS>)fx1#T> zuSSoxrB5x6IeSa}RUE;c(|x68_YLL|oPDOYUNBF9lXE1h<`fjqEx6zuiR`|?Jc1j< zd>1P3%PjnD{Vwru1pd3R^iqglth@&{ryAD_+^d!IusPK@{*G3>LH*3w-(MckzI+46 z%zemrHDqu;ryefvjTqdHH*9?2$o<-S?Ash0$1@#xqejEm3pjz^t~X|IKBpe;wl`sL z54>^X3#V3(HEfQJ;V=hVZwivRER{~jGTzHn;wSi|PnIG%4+ nO&g7j61{*E=uN8`gY!A{aBJ#>!ELBn;|r%&k2P$LuTAtn%3O@f literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/small_RVSF_htf/md2.cfg b/packages/models/pickups/flags/small_RVSF_htf/md2.cfg new file mode 100644 index 00000000..8d01cf63 --- /dev/null +++ b/packages/models/pickups/flags/small_RVSF_htf/md2.cfg @@ -0,0 +1 @@ +mdlscale 60 diff --git a/packages/models/pickups/flags/small_RVSF_htf/skin.jpg b/packages/models/pickups/flags/small_RVSF_htf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..a3944dc9f442c20a29d4552e0829704931f00a4a GIT binary patch literal 7850 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 literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/small_ktf/md2.cfg b/packages/models/pickups/flags/small_ktf/md2.cfg new file mode 100644 index 00000000..8d01cf63 --- /dev/null +++ b/packages/models/pickups/flags/small_ktf/md2.cfg @@ -0,0 +1 @@ +mdlscale 60 diff --git a/packages/models/pickups/flags/small_ktf/skin.jpg b/packages/models/pickups/flags/small_ktf/skin.jpg new file mode 100755 index 0000000000000000000000000000000000000000..df61188e10780f3349f14b39f3be4421a14c1b1e GIT binary patch literal 3957 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 M{lZo+5Pd}dFL3WW9smFU literal 0 HcmV?d00001 diff --git a/packages/models/pickups/flags/small_ktf/tris.md2 b/packages/models/pickups/flags/small_ktf/tris.md2 new file mode 100644 index 0000000000000000000000000000000000000000..06256f475e7d81c56b7de9145e14737505e18ab4 GIT binary patch literal 3068 zcmZuzTWefZ6kf^9WRjf8Oy*=J_vU`$7B#{q0u)@8%tUnir|AX6s>m< z6r~Ik@*qCcJXNUpA7U&bRD_6vSi}l457HM)lp+=V)?Rb=+04v=z1QvgzO~NT=S*@s z|MaP5!qp(_clL2ThLyoOh4mL|T+Ub4eYPQ@sW8zahv+K(jCDYd=yR;E;NODXfi1ya zgMAJ5BJ39IQ?RFDPr}Z@_P}<-Hqay;VMVB4uOm97f9N;5Ltn$LqqdHG9ySmAFLHlk zEy7~h10uk>CYDdN2lZX<; zdx|>9t?X%7mt;>-Co0|41>1#un);|0&$SD=6#RZf-KeE#0J&qRFm@1mA2)=k5BW}1 zhEW^PQ7?@kKcp3U;E!rfCvaoH45KG2bRa*1SvuhJK7!SW3ePfzSzP2NX@bTP^JG(q z#xYSB{Nsqmp*n!6;<&>kx(&kTCzFKIFd}|ZapZZH1fn?l4I^sRPistf=O^E$dyMLn zXhr7xd`Z+iY(eD>=8%J&byJUjmF6WgzBy>xl*BxaZICq%Dj$$2YB&Ud*G z-N}a1Z_kI)hx4(acd>q$cW2&PaA$s8NYB5YOV9t5b5}pix@&i{&e@N$&iXG|=Ug%8 zoWGZAKTnt2H_HpoM)`{K9Bn!m{)Ep=riy1x9uEnuN z-fJ^B;RLvEmJ_D7;>C?`<9I&5m#xRX@ayaCFSi>#(XPd@#ygKE4Nf?MySGfVx0KSg ze$249)M5OBa^VNKf=cUJHOIz1iC))~=xxD2qdGO`8J%Zs(fa_s3aU%jZs@+kVPE>x z;+V6y)Lq39+{;>DYIff@%{+p;qBVN7hOHOO6W|J}SL3QVGPmHiwZ7=teS>)fx1#T> zuSSoxrB5x6IeSa}RUE;c(|x68_YLL|oPDOYUNBF9lXE1h<`fjqEx6zuiR`|?Jc1j< zd>1P3%PjnD{Vwru1pd3R^iqglth@&{ryAD_+^d!IusPK@{*G3>LH*3w-(MckzI+46 z%zemrHDqu;ryefvjTqdHH*9?2$o<-S?Ash0$1@#xqejEm3pjz^t~X|IKBpe;wl`sL z54>^X3#V3(HEfQJ;V=hVZwivRER{~jGTzHn;wSi|PnIG%4+ nO&g7j61{*E=uN8`gY!A{aBJ#>!ELBn;|r%&k2P$LuTAtn%3O@f literal 0 HcmV?d00001 diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index c617c88e..2d762357 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -93,7 +93,7 @@ int smallerteam() void changeteam(int team, bool respawn) // force team and respawn { c2sinit = false; - if(m_ctf) tryflagdrop(NULL); + if(m_flags) tryflagdrop(false); filtertext(player1->team, team_string(team), false, MAXTEAMLEN); if(respawn) addmsg(SV_CHANGETEAM, "r"); } @@ -281,8 +281,8 @@ void addsleep(char *msec, char *cmd) s.cmd = newstring(cmd); } -void resetsleep() -{ +void resetsleep() +{ loopv(sleeps) DELETEA(sleeps[i].cmd); sleeps.setsize(0); } @@ -351,7 +351,7 @@ void findplayerstart(playerent *d, bool mapcenter, int arenaspawn) loopi(arenaspawn) x = findentity(PLAYERSTART, x+1, type); if(x >= 0) e = &ents[x]; } - else if(m_teammode || m_arena) + else if((m_teammode || m_arena) && !m_ktf) // ktf uses ffa spawns { loopi(r) spawncycle = findentity(PLAYERSTART, spawncycle+1, type); if(spawncycle >= 0) e = &ents[spawncycle]; @@ -362,7 +362,7 @@ void findplayerstart(playerent *d, bool mapcenter, int arenaspawn) loopi(r) { - spawncycle = findentity(PLAYERSTART, spawncycle+1); + spawncycle = m_ktf && numspawn[2] > 5 ? findentity(PLAYERSTART, spawncycle+1, 100) : findentity(PLAYERSTART, spawncycle+1); if(spawncycle < 0) continue; float dist = nearestenemy(vec(ents[spawncycle].x, ents[spawncycle].y, ents[spawncycle].z), d->team); if(!e || dist < 0 || (bestdist >= 0 && dist > bestdist)) { e = &ents[spawncycle]; bestdist = dist; } @@ -419,7 +419,7 @@ bool tryrespawn() player1->respawnoffset = lastmillis; // count again } - int respawnmillis = player1->respawnoffset+(m_arena ? 0 : (m_ctf ? 5000 : 2000)); + int respawnmillis = player1->respawnoffset+(m_arena ? 0 : (m_flags ? 5000 : 2000)); if(lastmillis>respawnmillis) { @@ -480,8 +480,6 @@ void dokill(playerent *pl, playerent *act, bool gib) else outf("\f2%s %s %s", aname, death, pname); } - if(m_ctf && pl==player1) tryflagdrop(pl!=act && isteam(act->team, pl->team)); - if(gib) { if(pl!=act && act->weaponsel->type == GUN_SNIPER) playsound(S_HEADSHOT, SP_LOW); @@ -556,9 +554,18 @@ entity flagdummies[2]; // in case the map does not provide flags void preparectf(bool cleanonly=false) { - loopi(2) flaginfos[i].flag = &flagdummies[i]; + loopi(2) flaginfos[i].flagent = &flagdummies[i]; if(!cleanonly) { + loopi(2) + { + flaginfo &f = flaginfos[i]; + f.ack = false; + f.actor = NULL; + f.actor_cn = -1; + f.team = i; + f.state = m_ktf ? CTFF_IDLE : CTFF_INBASE; + } loopv(ents) { entity &e = ents[i]; @@ -567,12 +574,7 @@ void preparectf(bool cleanonly=false) e.spawned = true; if(e.attr2>2) { conoutf("\f3invalid ctf-flag entity (%i)", i); e.attr2 = 0; } flaginfo &f = flaginfos[e.attr2]; - f.ack = false; - f.actor = NULL; - f.actor_cn = -1; - f.team = e.attr2; - f.flag = &e; - f.state = CTFF_INBASE; + f.flagent = &e; f.originalpos.x = (float) e.x; f.originalpos.y = (float) e.y; f.originalpos.z = (float) e.z; @@ -594,7 +596,7 @@ void startmap(const char *name) // called just after a map load // End add by Rick clearbounceents(); resetspawns(); - if(m_ctf) preparectf(); + if(m_flags) preparectf(); particlereset(); suicided = -1; spawncycle = -1; @@ -625,11 +627,8 @@ void startmap(const char *name) // called just after a map load void suicide() { - if(player1->state!=CS_ALIVE) return; - if(!m_mp(gamemode)) dokill(player1, player1); - else if(suicided!=player1->lifesequence) + if(player1->state == CS_ALIVE && suicided!=player1->lifesequence) { - tryflagdrop(false); addmsg(SV_SUICIDE, "r"); suicided = player1->lifesequence; } @@ -644,7 +643,7 @@ void flagmsg(int flag, int action) flaginfo &f = flaginfos[flag]; if(!f.actor || !f.ack) return; bool own = flag == team_int(player1->team), firstperson = f.actor == player1; - const char *teamstr = flag == team_int(player1->team) ? "your" : "the enemy"; + const char *teamstr = m_ktf ? "the" : own ? "your" : "the enemy"; switch(action) { @@ -653,53 +652,77 @@ void flagmsg(int flag, int action) playsound(S_FLAGPICKUP, SP_HIGH); if(firstperson) { - conoutf("\f2you got the enemy flag"); - musicsuggest(M_FLAGGRAB, 90*1000, true); + conoutf("\f2you got the %sflag", m_ctf ? "enemy " : ""); + musicsuggest(M_FLAGGRAB, m_ctf ? 90*1000 : 900*1000, true); } else conoutf("\f2%s got %s flag", colorname(f.actor), teamstr); break; } case SV_FLAGDROP: + case SV_FLAGLOST: { + const char *droplost = action == SV_FLAGLOST ? "lost" : "dropped"; playsound(S_FLAGDROP, SP_HIGH); if(firstperson) { - conoutf("\f2you lost the flag"); + conoutf("\f2you %s the flag", droplost); musicfadeout(M_FLAGGRAB); } - else conoutf("\f2%s lost %s flag", colorname(f.actor), teamstr); + else conoutf("\f2%s %s %s flag", colorname(f.actor), droplost, teamstr); break; } case SV_FLAGRETURN: { playsound(S_FLAGRETURN, SP_HIGH); - if(firstperson) conoutf("\f2you returned your flag"); - else conoutf("\f2%s returned %s flag", colorname(f.actor), teamstr); + if(m_ctf) + { + if(firstperson) conoutf("\f2you returned your flag"); + else conoutf("\f2%s returned %s flag", colorname(f.actor), teamstr); + } + else if(m_htf) + { + conoutf("\f2%s failed to score (own team flag not taken)", firstperson ? "you" : colorname(f.actor)); + } + else + { //ktf + conoutf("\f2%s lost the flag", firstperson ? "you" : colorname(f.actor)); + if(firstperson) musicfadeout(M_FLAGGRAB); + } break; } case SV_FLAGSCORE: { - playsound(S_FLAGSCORE, SP_HIGH); - if(firstperson) + playsound(m_ktf ? S_VOTEPASS : S_FLAGSCORE, SP_HIGH); // need better ktf sound here + if(m_ktf) + { + const char *ta = firstperson ? "you have" : colorname(f.actor); + const char *tb = firstperson ? "" : " has"; + int m = f.stolentime / 60; + if(m) + conoutf("%s%s been keeping the flag for %d minute%s %d seconds now", ta, tb, m, m == 1 ? "" : "s", f.stolentime % 60); + else + conoutf("%s%s been keeping the flag for %d seconds now", ta, tb, f.stolentime); + } + else if(firstperson) { conoutf("\f2you scored"); - addmsg(SV_FLAGS, "ri", ++player1->flagscore); - musicfadeout(M_FLAGGRAB); + if(m_ctf) musicfadeout(M_FLAGGRAB); } else conoutf("\f2%s scored for %s team", colorname(f.actor), (own ? "the enemy" : "your")); break; } - case SV_FLAGRESET: - { - playsound(S_FLAGRETURN, SP_HIGH); - conoutf("the server reset the flag"); - break; - } + case SV_FLAGRESET: + { + playsound(S_FLAGRETURN, SP_HIGH); + conoutf("the server reset the flag"); + if(firstperson) musicfadeout(M_FLAGGRAB); + break; + } default: break; } } -void dropflag() { tryflagdrop(false); } +void dropflag() { tryflagdrop(true); } COMMAND(dropflag, ARG_NONE); char *votestring(int type, char *arg1, char *arg2) diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 915d8e58..08b0a652 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -268,7 +268,7 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) getstring(text, p); filtertext(d->team, text, false, MAXTEAMLEN); setskin(d, getint(p)); - if(m_ctf) loopi(2) + if(m_flags) loopi(2) { flaginfo &f = flaginfos[i]; if(!f.actor) f.actor = getclient(f.actor_cn); @@ -539,37 +539,43 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) flaginfo &f = flaginfos[flag]; f.state = getint(p); int action = getint(p); + int actor = f.state==CTFF_STOLEN || action==SV_FLAGRETURN ? getint(p) : -1; switch(f.state) { case CTFF_STOLEN: { - flagstolen(flag, action, getint(p)); + if(action==SV_FLAGSCORE) f.stolentime = getint(p); + flagstolen(flag, action, actor); break; } case CTFF_DROPPED: { - short x = (ushort) (getint(p)/DMF); - short y = (ushort) (getint(p)/DMF); - short z = ((ushort) (getint(p)/DMF))-((short)player1->eyeheight); // correct z offset, assumes all players do have the same eyeheight - flagdropped(flag, action, x, y, z); + if(action != SV_FLAGRETURN) + { + short x = (ushort) (getint(p)/DMF); + short y = (ushort) (getint(p)/DMF); + short z = ((ushort) (getint(p)/DMF))-((short)player1->eyeheight); // correct z offset, assumes all players do have the same eyeheight + flagdropped(flag, action, x, y, z); + } break; } case CTFF_INBASE: - { - int actor = -1; - if(action == SV_FLAGRETURN) actor = getint(p); flaginbase(flag, action, actor); break; - } + case CTFF_IDLE: + f.flagent->spawned = false; + f.ack = true; + break; } break; } case SV_FLAGS: { - if(!d) return; - d->flagscore = getint(p); + int fcn = getint(p), flags = getint(p); + playerent *p = (fcn == getclientnum() ? player1 : getclient(fcn)); + if(p) p->flagscore = flags; break; } diff --git a/source/src/command.cpp b/source/src/command.cpp index 1df7221d..7c6cbf91 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -424,7 +424,7 @@ bool nickcomplete(char *s) char *cp = s; for(int i = strlen(s) - 2; i > 0; i--) - if (s[i] == ' ') { cp = s + i + 1; break; } + if(s[i] == ' ') { cp = s + i + 1; break; } if(!completesize) { completesize = (int)strlen(cp); completeidx = 0; } int idx = 0; @@ -460,7 +460,7 @@ void commandcomplete(char *s) if(!s[1]) return; char *cp = s; for(int i = strlen(s) - 2; i > 0; i--) - if (s[i] == ';' || s[i] == ' ') { cp = s + i; break; } + if(s[i] == ';' || s[i] == ' ') { cp = s + i; break; } if(!completesize) { completesize = (int)strlen(cp)-1; diff --git a/source/src/entities.cpp b/source/src/entities.cpp index 393c86fb..88927179 100644 --- a/source/src/entities.cpp +++ b/source/src/entities.cpp @@ -8,15 +8,15 @@ const int physent::crouchtime = 200; vector ents; const char *entnames[] = -{ +{ "none?", "light", "playerstart", "clips", "ammobox","grenades", "health", "armour", "akimbo", - "mapmodel", "trigger", + "mapmodel", "trigger", "ladder", "ctf-flag", "sound", "?", "?", }; -const char *entmdlnames[] = +const char *entmdlnames[] = { "pickups/pistolclips", "pickups/ammobox", "pickups/nades", "pickups/health", "pickups/kevlar", "pickups/akimbo", }; @@ -28,13 +28,13 @@ void renderent(entity &e, const char *mdlname, float z, float yaw, int anim = AN void renderentities() { - if(editmode) + if(editmode) { loopv(ents) { entity &e = ents[i]; if(e.type==NOTUSED) continue; - vec v(e.x, e.y, e.z); + vec v(e.x, e.y, e.z); particle_splash(2, 2, 40, v); } } @@ -47,21 +47,6 @@ void renderentities() if(!&mmi) continue; rendermodel(mmi.name, ANIM_MAPMODEL|ANIM_LOOP, e.attr4, mmi.rad ? (float)mmi.rad : 1.1f, vec(e.x, e.y, (float)S(e.x, e.y)->floor+mmi.zoff+e.attr3), (float)((e.attr1+7)-(e.attr1+7)%15), 0, 10.0f); } - else if(e.type==CTF_FLAG && (m_ctf || editmode)) - { - flaginfo &f = flaginfos[e.attr2]; - if(f.state==CTFF_STOLEN) - { - if(!f.actor || f.actor == player1) continue; - s_sprintfd(path)("pickups/flags/small_%s", team_string(e.attr2)); - rendermodel(path, ANIM_FLAG|ANIM_START, 0, 1.1f, vec(f.actor->o).add(vec(0, 0, 0.3f+(sinf(lastmillis/100.0f)+1)/10)), lastmillis/2.5f, 0, 120.0f); - } - else - { - s_sprintfd(path)("pickups/flags/%s", team_string(e.attr2)); - rendermodel(path, ANIM_FLAG|ANIM_LOOP, 0, 4, vec(e.x, e.y, f.state==CTFF_INBASE ? (float)S(e.x, e.y)->floor : e.z), (float)((e.attr1+7)-(e.attr1+7)%15), 0, 120.0f); - } - } else if(isitem(e.type)) { if((!OUTBORD(e.x, e.y) && e.spawned) | editmode) @@ -70,6 +55,30 @@ void renderentities() } } } + if(m_flags || editmode) loopi(2) + { + flaginfo &f = flaginfos[i]; + switch(f.state) + { + case CTFF_STOLEN: + if(f.actor && f.actor != player1) + { + s_sprintfd(path)("pickups/flags/small_%s%s", m_ktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf ? "ktf" : ""); + rendermodel(path, ANIM_FLAG|ANIM_START, 0, 1.1f, vec(f.actor->o).add(vec(0, 0, 0.3f+(sinf(lastmillis/100.0f)+1)/10)), lastmillis/2.5f, 0, 120.0f); + } + break; + case CTFF_INBASE: + case CTFF_DROPPED: + { + entity &e = *f.flagent; + s_sprintfd(path)("pickups/flags/%s%s", m_ktf ? "" : team_string(i), m_htf ? "_htf" : m_ktf ? "ktf" : ""); + rendermodel(path, ANIM_FLAG|ANIM_LOOP, 0, 4, vec(e.x, e.y, f.state==CTFF_INBASE ? (float)S(e.x, e.y)->floor : e.z), (float)((e.attr1+7)-(e.attr1+7)%15), 0, 120.0f); + break; + } + case CTFF_IDLE: + break; + } + } } // these two functions are called when the server acknowledges that you really @@ -129,13 +138,33 @@ void trypickup(int n, playerent *d) flaginfo &f = flaginfos[flag]; flaginfo &of = flaginfos[team_opposite(flag)]; if(f.state == CTFF_STOLEN) break; + bool own = flag == team_int(d->team); - if(flag == team_int(d->team)) // it's the own flag + if(m_ctf) { - if(f.state == CTFF_DROPPED) flagreturn(); - else if(f.state == CTFF_INBASE && of.state == CTFF_STOLEN && of.actor == d && of.ack) flagscore(); + if(own) // it's the own flag + { + if(f.state == CTFF_DROPPED) flagreturn(flag); + else if(f.state == CTFF_INBASE && of.state == CTFF_STOLEN && of.actor == d && of.ack) flagscore(of.team); + } + else flagpickup(flag); + } + else if(m_htf) + { + if(own) + { + flagpickup(flag); + } + else + { + if(f.state == CTFF_DROPPED) flagscore(f.team); // may not count! + } + } + else if(m_ktf) + { + if(f.state == CTFF_IDLE) break; + flagpickup(flag); } - else flagpickup(); } break; } @@ -160,7 +189,7 @@ void checkitems(playerent *d) if(dist1<1.5f && dist2attr2); if(!&mmi || !mmi.h) return false; - + float lo = (float)(S(e->x, e->y)->floor+mmi.zoff+e->attr3); float hi = lo+mmi.h; - vec v = to, w(e->x, e->y, lo + (fabs(hi-lo)/2.0f)), *p; + vec v = to, w(e->x, e->y, lo + (fabs(hi-lo)/2.0f)), *p; v.sub(from); w.sub(from); float c1 = w.dot(v); @@ -250,7 +279,7 @@ bool intersect(entity *e, vec &from, vec &to, vec *end) // if lineseg hits entit p = &v; } } - + if (p->x <= e->x+mmi.rad && p->x >= e->x-mmi.rad && p->y <= e->y+mmi.rad @@ -269,11 +298,11 @@ bool intersect(entity *e, vec &from, vec &to, vec *end) // if lineseg hits entit int flagdropmillis = 0; -void flagpickup() +void flagpickup(int fln) { if(flagdropmillis && flagdropmillis>lastmillis) return; - flaginfo &f = flaginfos[team_opposite(team_int(player1->team))]; - f.flag->spawned = false; + flaginfo &f = flaginfos[fln]; + f.flagent->spawned = false; f.state = CTFF_STOLEN; f.actor = player1; // do this although we don't know if we picked the flag to avoid getting it after a possible respawn f.actor_cn = getclientnum(); @@ -281,32 +310,35 @@ void flagpickup() addmsg(SV_FLAGPICKUP, "ri", f.team); } -void tryflagdrop(bool reset) +void tryflagdrop(bool manual) { - flaginfo &f = flaginfos[team_opposite(team_int(player1->team))]; - if(f.state==CTFF_STOLEN && f.actor==player1) + loopi(2) { - f.flag->spawned = false; - f.state = CTFF_DROPPED; - f.ack = false; - flagdropmillis = lastmillis+3000; - addmsg(reset ? SV_FLAGRESET : SV_FLAGDROP, "ri", f.team); + flaginfo &f = flaginfos[i]; + if(f.state==CTFF_STOLEN && f.actor==player1) + { + f.flagent->spawned = false; + f.state = CTFF_DROPPED; + f.ack = false; + flagdropmillis = lastmillis+3000; + addmsg(manual ? SV_FLAGDROP : SV_FLAGLOST, "ri", f.team); + } } } -void flagreturn() +void flagreturn(int fln) { - flaginfo &f = flaginfos[team_int(player1->team)]; - f.flag->spawned = false; + flaginfo &f = flaginfos[fln]; + f.flagent->spawned = false; f.ack = false; addmsg(SV_FLAGRETURN, "ri", f.team); } -void flagscore() +void flagscore(int fln) { - flaginfo &f = flaginfos[team_opposite(team_int(player1->team))]; + flaginfo &f = flaginfos[fln]; f.ack = false; - addmsg(SV_FLAGSCORE, "ri", f.team); + addmsg(SV_FLAGSCORE, "ri", fln); } // flag ent actions from the net @@ -318,7 +350,7 @@ void flagstolen(int flag, int action, int act) flaginfo &f = flaginfos[flag]; f.actor = actor; f.actor_cn = act; - f.flag->spawned = false; + f.flagent->spawned = false; f.ack = true; flagmsg(flag, action); } @@ -334,7 +366,7 @@ void flagdropped(int flag, int action, short x, short y, short z) p.o.z = z; p.vel.z = -0.8f; p.aboveeye = p.eyeheight = p.radius = 0.0f; - + bool oldcancollide = false; if(f.actor) { @@ -348,11 +380,11 @@ void flagdropped(int flag, int action, short x, short y, short z) } if(f.actor) f.actor->cancollide = oldcancollide; // restore settings - f.flag->x = (short)round(p.o.x); - f.flag->y = (short)round(p.o.y); - f.flag->z = (short)round(p.o.z); - if(f.flag->z < hdr.waterlevel) f.flag->z = (short) hdr.waterlevel; - f.flag->spawned = true; + f.flagent->x = (short)round(p.o.x); + f.flagent->y = (short)round(p.o.y); + f.flagent->z = (short)round(p.o.z); + if(f.flagent->z < hdr.waterlevel) f.flagent->z = (short) hdr.waterlevel; + f.flagent->spawned = true; f.ack = true; flagmsg(flag, action); } @@ -362,10 +394,10 @@ void flaginbase(int flag, int action, int act) flaginfo &f = flaginfos[flag]; playerent *actor = act == getclientnum() ? player1 : getclient(act); if(actor) { f.actor = actor; f.actor_cn = act; } - f.flag->x = (ushort) f.originalpos.x; - f.flag->y = (ushort) f.originalpos.y; - f.flag->z = (ushort) f.originalpos.z; - f.flag->spawned = true; + f.flagent->x = (ushort) f.originalpos.x; + f.flagent->y = (ushort) f.originalpos.y; + f.flagent->z = (ushort) f.originalpos.z; + f.flagent->spawned = true; f.ack = true; flagmsg(flag, action); } diff --git a/source/src/entity.h b/source/src/entity.h index 780c260f..93ae9c7e 100644 --- a/source/src/entity.h +++ b/source/src/entity.h @@ -465,18 +465,19 @@ struct botent : playerent int deaths() { return lifesequence; } }; -enum { CTFF_INBASE = 0, CTFF_STOLEN, CTFF_DROPPED }; +enum { CTFF_INBASE = 0, CTFF_STOLEN, CTFF_DROPPED, CTFF_IDLE }; struct flaginfo { int team; - entity *flag; + entity *flagent; int actor_cn; playerent *actor; vec originalpos; int state; // one of CTFF_* bool ack; - flaginfo() : flag(0), actor(0), state(CTFF_INBASE), ack(false) {} + int stolentime; + flaginfo() : flagent(0), actor(0), state(CTFF_INBASE), ack(false) {} }; enum { BT_NONE, BT_NADE, BT_GIB }; diff --git a/source/src/protocol.cpp b/source/src/protocol.cpp index c9222f15..14f479a9 100644 --- a/source/src/protocol.cpp +++ b/source/src/protocol.cpp @@ -97,13 +97,13 @@ const char *modefullnames[] = { "team deathmatch", "coopedit", "deathmatch", "survivor", "team survivor", "ctf", "pistol frenzy", "bot team deathmatch", "bot deathmatch", "last swiss standing", - "one shot, one kill", "team one shot, one kill", "bot one shot, one kill" + "one shot, one kill", "team one shot, one kill", "bot one shot, one kill", "hunt the flag", "keep the flag" }; const char *modeacronymnames[] = { "TDM", "coop", "DM", "SURV", "TSURV", "CTF", "PF", "BTDM", "BDM", "LSS", - "OSOK", "TOSOK", "BOSOK" + "OSOK", "TOSOK", "BOSOK", "HTF", "CTF" }; const char *voteerrors[] = { "voting is currently disabled", "there is already a vote pending", "already voted", "can't vote that often", "this vote is not allowed in the current environment (singleplayer/multiplayer)", "no permission", "invalid vote" }; @@ -125,7 +125,7 @@ char msgsizesl[] = // size inclusive message token, 0 for variable SV_EDITMODE, 2, SV_EDITH, 7, SV_EDITT, 7, SV_EDITS, 6, SV_EDITD, 6, SV_EDITE, 6, SV_SENDMAP, 0, SV_RECVMAP, 1, SV_SERVMSG, 0, SV_ITEMLIST, 0, SV_WEAPCHANGE, 2, SV_PRIMARYWEAP, 2, SV_MODELSKIN, 2, - SV_FLAGPICKUP, 2, SV_FLAGDROP, 2, SV_FLAGRETURN, 2, SV_FLAGSCORE, 2, SV_FLAGRESET, 2, SV_FLAGINFO, 0, SV_FLAGS, 2, + SV_FLAGPICKUP, 2, SV_FLAGDROP, 2, SV_FLAGLOST, 2, SV_FLAGRETURN, 2, SV_FLAGSCORE, 2, SV_FLAGRESET, 2, SV_FLAGINFO, 0, SV_FLAGS, 3, SV_ARENAWIN, 2, SV_SETADMIN, 0, SV_SERVOPINFO, 3, SV_CALLVOTE, 0, SV_CALLVOTESUC, 1, SV_CALLVOTEERR, 2, SV_VOTE, 2, SV_VOTERESULT, 2, diff --git a/source/src/protocol.h b/source/src/protocol.h index d8624bb9..7140c160 100644 --- a/source/src/protocol.h +++ b/source/src/protocol.h @@ -23,7 +23,7 @@ enum SV_EDITMODE, SV_EDITH, SV_EDITT, SV_EDITS, SV_EDITD, SV_EDITE, SV_SENDMAP, SV_RECVMAP, SV_SERVMSG, SV_ITEMLIST, SV_WEAPCHANGE, SV_PRIMARYWEAP, SV_MODELSKIN, - SV_FLAGPICKUP, SV_FLAGDROP, SV_FLAGRETURN, SV_FLAGSCORE, SV_FLAGRESET, SV_FLAGINFO, SV_FLAGS, + SV_FLAGPICKUP, SV_FLAGDROP, SV_FLAGLOST, SV_FLAGRETURN, SV_FLAGSCORE, SV_FLAGRESET, SV_FLAGINFO, SV_FLAGS, SV_ARENAWIN, SV_SETADMIN, SV_SERVOPINFO, SV_CALLVOTE, SV_CALLVOTESUC, SV_CALLVOTEERR, SV_VOTE, SV_VOTERESULT, @@ -69,11 +69,13 @@ enum GMODE_CTF, GMODE_PISTOLFRENZY, GMODE_BOTTEAMDEATHMATCH, - GMODE_GOTDEATHMATCH, + GMODE_BOTDEATHMATCH, GMODE_LASTSWISSSTANDING, GMODE_ONESHOTONEKILL, GMODE_TEAMONESHOTONEKILL, - GMODE_BOTONESHOTONEKILL + GMODE_BOTONESHOTONEKILL, + GMODE_HUNTTHEFLAG, // 13 + GMODE_KEEPTHEFLAG }; #define m_lms (gamemode==3 || gamemode==4) @@ -81,6 +83,8 @@ enum #define m_pistol (gamemode==6) #define m_lss (gamemode==9) #define m_osok (gamemode>=10 && gamemode<=12) +#define m_htf (gamemode==13) +#define m_ktf (gamemode==14) #define m_noitems (m_lms || m_osok) #define m_noitemsnade (m_lss) @@ -88,9 +92,10 @@ enum #define m_noprimary (m_pistol || m_lss) #define m_noguns (m_nopistol && m_noprimary) #define m_arena (m_lms || m_lss || m_osok) -#define m_teammode (gamemode==0 || gamemode==4 || gamemode==5 || gamemode==7 || gamemode==11) +#define m_teammode (gamemode==0 || gamemode==4 || gamemode==5 || gamemode==7 || gamemode==11 || gamemode==13 || gamemode==14) #define m_tarena (m_arena && m_teammode) #define m_botmode (gamemode==7 || gamemode == 8 || gamemode==12) -#define m_valid(mode) (((mode)>=0 && (mode)<=12) || (mode) == -3) +#define m_valid(mode) (((mode)>=0 && (mode)<=14) || (mode) == -3) #define m_mp(mode) (m_valid(mode) && (mode)!=7 && (mode)!=8 && (mode)!=12) #define m_demo (gamemode==-3) +#define m_flags (m_ctf || m_htf || m_ktf) diff --git a/source/src/protos.h b/source/src/protos.h index e6dcbde1..962be9d0 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -302,10 +302,10 @@ extern void setskin(playerent *pl, uint skin); extern void callvote(int type, char *arg1 = NULL, char *arg2 = NULL); extern void resetsleep(); //game mode extras -extern void flagpickup(); -extern void tryflagdrop(bool reset = false); -extern void flagreturn(); -extern void flagscore(); +extern void flagpickup(int fln); +extern void tryflagdrop(bool manual = false); +extern void flagreturn(int fln); +extern void flagscore(int fln); extern void flagstolen(int flag, int action, int act); extern void flagdropped(int flag, int action, short x, short y, short z); extern void flaginbase(int flag, int action, int act); diff --git a/source/src/renderhud.cpp b/source/src/renderhud.cpp index b96553f7..d382ad18 100644 --- a/source/src/renderhud.cpp +++ b/source/src/renderhud.cpp @@ -34,9 +34,22 @@ void drawradaricon(float x, float y, float s, int col, int row) void drawctficon(float x, float y, float s, int col, int row, float ts) { - static Texture *tex = NULL; - if(!tex) tex = textureload("packages/misc/ctficons.png"); - if(tex) drawicon(tex, x, y, s, col, row, ts); + static Texture *ctftex = NULL, *htftex = NULL, *ktftex = NULL; + if(!ctftex) ctftex = textureload("packages/misc/ctficons.png"); + if(!htftex) htftex = textureload("packages/misc/htficons.png"); + if(!ktftex) ktftex = textureload("packages/misc/ktficons.png"); + if(m_htf) + { + if(htftex) drawicon(htftex, x, y, s, col, row, ts); + } + else if(m_ktf) + { + if(ktftex) drawicon(ktftex, x, y, s, col, row, ts); + } + else + { + if(ctftex) drawicon(ctftex, x, y, s, col, row, ts); + } } void drawvoteicon(float x, float y, int col, int row, bool noblend) @@ -332,22 +345,26 @@ void drawradar(playerent *p, int w, int h) if(!pl || pl==p || !isteam(p->team, pl->team) || !insideradar(centerpos, res/2, pl->o)) continue; drawradarent(pl->o.x*coordtrans, pl->o.y*coordtrans, pl->yaw, pl->state==CS_ALIVE ? (isattacking(pl) ? 2 : 0) : 1, team_int(pl->team), iconsize, isattacking(pl), colorname(pl)); } - if(m_ctf) + if(m_flags) { glColor4f(1.0f, 1.0f, 1.0f, (sinf(lastmillis / 100.0f) + 1.0f) / 2.0f); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); loopi(2) // flag items { flaginfo &f = flaginfos[i]; - entity *e = f.flag; + entity *e = f.flagent; if(!e) continue; float yaw = showmap ? 0 : p->yaw; + if(m_ktf && f.state == CTFF_IDLE) continue; if(f.state==CTFF_STOLEN) { - if(f.actor && i != team_int(p->team) && insideradar(centerpos, res/2, f.actor->o)) - drawradarent(f.actor->o.x*coordtrans+iconsize/2, f.actor->o.y*coordtrans+iconsize/2, yaw, 3, f.team, iconsize, true); // draw near flag thief + bool tm = i != team_int(p->team); + if(m_htf) tm = !tm; + else if(m_ktf) tm = true; + if(f.actor && tm && insideradar(centerpos, res/2, f.actor->o)) + drawradarent(f.actor->o.x*coordtrans+iconsize/2, f.actor->o.y*coordtrans+iconsize/2, yaw, 3, m_ktf ? 2 : f.team, iconsize, true); // draw near flag thief } - else if(insideradar(centerpos, res/2, vec(e->x, e->y, centerpos.z))) drawradarent(e->x*coordtrans, e->y*coordtrans, yaw, 3, f.team, iconsize, false); // draw on entitiy pos + else if(insideradar(centerpos, res/2, vec(e->x, e->y, centerpos.z))) drawradarent(e->x*coordtrans, e->y*coordtrans, yaw, 3, m_ktf ? 2 : f.team, iconsize, false); // draw on entitiy pos } } @@ -512,7 +529,7 @@ void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwat if(p->weaponsel && p->weaponsel->type>=GUN_KNIFE && p->weaponsel->typeweaponsel->renderstats(); // flowtron } - if(m_ctf && !hidectfhud) + if(m_flags && !hidectfhud) { glLoadIdentity(); glOrtho(0, VIRTW, VIRTH, 0, -1, 1); @@ -526,12 +543,13 @@ void gl_drawhud(int w, int h, int curfps, int nquads, int curvert, bool underwat } // big flag-stolen icon - flaginfo &f = flaginfos[team_opposite(team_int(p->team))]; - if(f.state==CTFF_STOLEN && f.actor == p && f.ack) + int ft = 0; + if((flaginfos[0].state==CTFF_STOLEN && flaginfos[0].actor == p && flaginfos[0].ack) || + (flaginfos[1].state==CTFF_STOLEN && flaginfos[1].actor == p && flaginfos[1].ack && ++ft)) { glColor4f(1.0f, 1.0f, 1.0f, (sinf(lastmillis/100.0f)+1.0f) / 2.0f); glEnable(GL_BLEND); - drawctficon(VIRTW-225-10, VIRTH*5/8, 225, team_opposite(team_int(p->team)), 1, 1/2.0f); + drawctficon(VIRTW-225-10, VIRTH*5/8, 225, m_ktf ? team_int(p->team) : ft, 1, 1/2.0f); glDisable(GL_BLEND); } } diff --git a/source/src/scoreboard.cpp b/source/src/scoreboard.cpp index 2ed163ba..cde04ff7 100644 --- a/source/src/scoreboard.cpp +++ b/source/src/scoreboard.cpp @@ -7,7 +7,7 @@ void *scoremenu = NULL, *teammenu = NULL, *ctfmenu = NULL; void showscores(bool on) { - menuset(on ? (m_ctf ? ctfmenu : (m_teammode ? teammenu : scoremenu)) : NULL); + menuset(on ? (m_flags ? ctfmenu : (m_teammode ? teammenu : scoremenu)) : NULL); } COMMAND(showscores, ARG_DOWN); @@ -33,7 +33,7 @@ struct teamscore teammembers.add(d); frags += d->frags; deaths += d->deaths; - if(m_ctf) flagscore += d->flagscore; + if(m_flags) flagscore += d->flagscore; } }; @@ -92,7 +92,7 @@ void renderscore(void *menu, playerent *d) string &s = line.s; scoreratio sr; sr.calc(d->frags, d->deaths); - if(m_ctf) s_sprintf(s)("%d\t%d\t%d\t%.*f\t%s\t%s\t%d\t%s%s", d->flagscore, d->frags, d->deaths, sr.precision, sr.ratio, d->state==CS_LAGGED ? "LAG" : lag, colorping(d->ping), d->clientnum, status, colorname(d)); + if(m_flags) s_sprintf(s)("%d\t%d\t%d\t%.*f\t%s\t%s\t%d\t%s%s", d->flagscore, d->frags, d->deaths, sr.precision, sr.ratio, d->state==CS_LAGGED ? "LAG" : lag, colorping(d->ping), d->clientnum, status, colorname(d)); else if(m_teammode) s_sprintf(s)("%d\t%d\t%.*f\t%s\t%s\t%d\t%s%s", d->frags, d->deaths, sr.precision, sr.ratio, d->state==CS_LAGGED ? "LAG" : lag, colorping(d->ping), d->clientnum, status, colorname(d)); else s_sprintf(s)("%d\t%d\t%.*f\t%s\t%s\t%d\t%s%s", d->frags, d->deaths, sr.precision, sr.ratio, d->state==CS_LAGGED ? "LAG" : lag, colorping(d->ping), d->clientnum, status, colorname(d)); } @@ -108,7 +108,7 @@ void renderteamscore(void *menu, teamscore *t) s_sprintfd(plrs)("(%d %s)", t->teammembers.length(), t->teammembers.length() == 1 ? "player" : "players"); scoreratio sr; sr.calc(t->frags, t->deaths); - if(m_ctf) s_sprintf(line.s)("%d\t%d\t%d\t%.*f\t\t\t\t%s\t\t%s", t->flagscore, t->frags, t->deaths, sr.precision, sr.ratio, team_string(t->team), plrs); + if(m_flags) s_sprintf(line.s)("%d\t%d\t%d\t%.*f\t\t\t\t%s\t\t%s", t->flagscore, t->frags, t->deaths, sr.precision, sr.ratio, team_string(t->team), plrs); else if(m_teammode) s_sprintf(line.s)("%d\t%d\t%.*f\t\t\t\t%s\t\t%s", t->frags, t->deaths, sr.precision, sr.ratio, team_string(t->team), plrs); static color teamcolors[2] = { color(1.0f, 0, 0, 0.2f), color(0, 0, 1.0f, 0.2f) }; line.bgcolor = &teamcolors[t->team]; diff --git a/source/src/server.cpp b/source/src/server.cpp index 92a557e5..ed1d2671 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -820,6 +820,7 @@ struct sflaginfo int actor_cn; float pos[3]; int lastupdate; + int stolentime; } sflaginfos[2]; void sendflaginfo(int flag, int action, int cn = -1) @@ -833,6 +834,7 @@ void sendflaginfo(int flag, int action, int cn = -1) putint(p, action); if(f.state==CTFF_STOLEN || action==SV_FLAGRETURN) putint(p, f.actor_cn); else if(f.state==CTFF_DROPPED) loopi(3) putint(p, int(f.pos[i]*DMF)); + if(f.state==CTFF_STOLEN && action==SV_FLAGSCORE) putint(p, (gamemillis - f.stolentime) / 1000); enet_packet_resize(packet, p.length()); sendpacket(cn, 1, packet); if(packet->referenceCount==0) enet_packet_destroy(packet); @@ -842,7 +844,8 @@ void flagaction(int flag, int action, int sender) { if(!valid_flag(flag)) return; sflaginfo &f = sflaginfos[flag]; - + sflaginfo &of = sflaginfos[team_opposite(flag)]; + bool ktf_switch = false; switch(action) { case SV_FLAGPICKUP: @@ -850,15 +853,18 @@ void flagaction(int flag, int action, int sender) if(f.state == CTFF_STOLEN) return; f.state = CTFF_STOLEN; f.actor_cn = sender; + f.stolentime = gamemillis; logger->writeline(log::info,"[%s] %s stole the flag", clients[sender]->hostname, clients[sender]->name); break; } case SV_FLAGDROP: + case SV_FLAGLOST: { if(f.state!=CTFF_STOLEN || (sender != -1 && f.actor_cn != sender)) return; + ktf_switch = true; f.state = CTFF_DROPPED; - loopi(3) f.pos[i] = clients[sender]->state.o[i]; - logger->writeline(log::info,"[%s] %s dropped the flag", clients[sender]->hostname, clients[sender]->name); + loopi(3) f.pos[i] = clients[f.actor_cn]->state.o[i]; + logger->writeline(log::info,"[%s] %s %s the flag", clients[f.actor_cn]->hostname, clients[f.actor_cn]->name, action == SV_FLAGLOST ? "lost" : "dropped"); break; } case SV_FLAGRETURN: @@ -872,19 +878,50 @@ void flagaction(int flag, int action, int sender) case SV_FLAGRESET: { if(sender != -1 && f.actor_cn != sender) return; + ktf_switch = true; f.state = CTFF_INBASE; logger->writeline(log::info,"The server reset the flag"); break; } case SV_FLAGSCORE: { - if(f.state != CTFF_STOLEN) return; - f.state = CTFF_INBASE; - logger->writeline(log::info, "[%s] %s scored with the flag for %s", clients[sender]->hostname, clients[sender]->name, clients[sender]->team); + bool score = true; + if(m_ctf) + { //ctf f: actor carrying, of: unstolen own + if(f.state != CTFF_STOLEN || f.actor_cn != sender || of.state != CTFF_INBASE) return; + f.state = CTFF_INBASE; + } + else if(m_htf) + { //htf of: own team carrying, f: other team dropped + if(f.state != CTFF_DROPPED) return; + f.state = CTFF_INBASE; + if(of.state != CTFF_STOLEN) + { + action = SV_FLAGRETURN; + score = false; // sry, fail + } + } + if(score) + { + clients[sender]->state.flagscore += 1; + sendf(-1, 1, "riii", SV_FLAGS, sender, clients[sender]->state.flagscore); + logger->writeline(log::info, "[%s] %s scored with the flag for %s, new score %d", clients[sender]->hostname, clients[sender]->name, clients[sender]->team, clients[sender]->state.flagscore); + } + else + { + logger->writeline(log::info, "[%s] %s failed to score", clients[sender]->hostname, clients[sender]->name); + } break; } default: return; } + if(m_ktf && ktf_switch) + { + f.state = CTFF_IDLE; + of.state = CTFF_INBASE; + sendflaginfo(team_opposite(flag), SV_FLAGRETURN); + action = 0; + } f.lastupdate = gamemillis; sendflaginfo(flag, action); @@ -892,14 +929,54 @@ void flagaction(int flag, int action, int sender) void ctfreset() { + int idleflag = m_ktf ? rnd(2) : -1; loopi(2) { sflaginfos[i].actor_cn = 0; - sflaginfos[i].state = CTFF_INBASE; + sflaginfos[i].state = i == idleflag ? CTFF_IDLE : CTFF_INBASE; sflaginfos[i].lastupdate = -1; } } +void htf_forceflag(int flag) +{ + sflaginfo &f = sflaginfos[flag]; + int besthealth = 0, numbesthealth = 0; + loopv(clients) if(clients[i]->type!=ST_EMPTY) + { + if(clients[i]->state.state == CS_ALIVE && team_int(clients[i]->team) == flag) + { + if(clients[i]->state.health == besthealth) + numbesthealth++; + else + { + if(clients[i]->state.health > besthealth) + { + besthealth = clients[i]->state.health; + numbesthealth = 1; + } + } + } + } + if(numbesthealth) + { + int pick = rnd(numbesthealth); + loopv(clients) if(clients[i]->type!=ST_EMPTY) + { + if(clients[i]->state.state == CS_ALIVE && team_int(clients[i]->team) == flag && --pick < 0) + { + f.state = CTFF_STOLEN; + f.actor_cn = i; + sendflaginfo(flag, SV_FLAGPICKUP); + logger->writeline(log::info,"[%s] %s got forced to pickup the flag", clients[i]->hostname, clients[i]->name); + break; + } + } + } + f.lastupdate = gamemillis; +} + + bool canspawn(client *c, bool connecting = false) { if(m_arena) @@ -1015,7 +1092,7 @@ void arenacheck() if(!dead) return; sendf(-1, 1, "ri2", SV_ARENAWIN, !alive ? -1 : alive->clientnum); arenaround = gamemillis+5000; - if (autoteam && m_teammode) refillteams(true); + if(autoteam && m_teammode) refillteams(true); } #define SPAMREPEATINTERVAL 15 // detect doubled lines only if interval < 15 seconds @@ -1141,7 +1218,7 @@ void serverdamage(client *target, client *actor, int damage, int gun, bool gib, { clientstate &ts = target->state; ts.dodamage(damage); - actor->state.damage += damage; + actor->state.damage += damage != 1000 ? damage : 0; sendf(-1, 1, "ri6", gib ? SV_GIBDAMAGE : SV_DAMAGE, target->clientnum, actor->clientnum, damage, ts.armour, ts.health); if(target!=actor && !hitpush.iszero()) { @@ -1152,6 +1229,9 @@ void serverdamage(client *target, client *actor, int damage, int gun, bool gib, } if(ts.health<=0) { + int targethasflag = -1; + bool flagtk = false, suic = false; + loopi(2) { if(sflaginfos[i].state == CTFF_STOLEN && sflaginfos[i].actor_cn == target->clientnum) targethasflag = i; } target->state.deaths++; if(target!=actor) { @@ -1160,14 +1240,29 @@ void serverdamage(client *target, client *actor, int damage, int gun, bool gib, { actor->state.frags--; actor->state.teamkills++; + flagtk = true; } } - else actor->state.frags--; + else + { // suicide + actor->state.frags--; + flagtk = true; + suic = true; + } sendf(-1, 1, "ri4", gib ? SV_GIBDIED : SV_DIED, target->clientnum, actor->clientnum, actor->state.frags); + if(flagtk && (m_htf || m_ktf) && targethasflag >= 0) + { + actor->state.flagscore--; + sendf(-1, 1, "riii", SV_FLAGS, actor->clientnum, actor->state.flagscore); + } target->position.setsizenodelete(0); ts.state = CS_DEAD; ts.lastdeath = gamemillis; logger->writeline(log::info, "[%s] %s %s %s", actor->hostname, actor->name, gib ? "gibbed" : "fragged", target->name); + if(m_flags && targethasflag >= 0) + { + flagaction(targethasflag, suic ? SV_FLAGLOST : SV_FLAGRESET, -1); + } // don't issue respawn yet until DEATHMILLIS has elapsed // ts.respawn(); @@ -1237,7 +1332,7 @@ void readscfg(const char *name) par[3] = par[4] = 0; // default values for(i = 0; i < CONFIG_MAXPAR; i++) { - if ((l = strtok(NULL, sep)) != NULL) + if((l = strtok(NULL, sep)) != NULL) par[i] = atoi(l); else break; @@ -1264,7 +1359,7 @@ int cmpipmatch(const void *a, const void * b) { return - (((struct iprange *)a)- enet_uint32 atoip(const char *s) { unsigned int d[3], res; - if (sscanf(s, "%u.%u.%u.%u", &res, d, d + 1, d + 2) != 4) return 0; + if(sscanf(s, "%u.%u.%u.%u", &res, d, d + 1, d + 2) != 4) return 0; loopi(3) { if(d[i] > 255) return 0; @@ -1445,7 +1540,7 @@ void forceteam(int client, int team, bool respawn, bool notify = false) void calcscores() { - loopv(clients) if (clients[i]->type!=ST_EMPTY) + loopv(clients) if(clients[i]->type!=ST_EMPTY) { clients[i]->at3_score = clients[i]->state.frags * 100 / (clients[i]->state.deaths ? clients[i]->state.deaths : 1) + clients[i]->state.flagscore < 3 ? 66 * clients[i]->state.flagscore : 66 + 33 * clients[i]->state.flagscore; @@ -1490,7 +1585,7 @@ bool refillteams(bool now, bool notify) // force only minimal amounts of player bool switched = false; calcscores(); - loopv(clients) if (clients[i]->type!=ST_EMPTY) // playerlist stocktaking + loopv(clients) if(clients[i]->type!=ST_EMPTY) // playerlist stocktaking { clients[i]->at3_dontmove = true; if(!clients[i]->awaitdisc) @@ -1500,8 +1595,8 @@ bool refillteams(bool now, bool notify) // force only minimal amounts of player { teamsize[t]++; teamscore[t] += clients[i]->at3_score; - if(!m_ctf || !((sflaginfos[0].state==CTFF_STOLEN && sflaginfos[0].actor_cn==i) || - (sflaginfos[1].state==CTFF_STOLEN && sflaginfos[1].actor_cn==i) )) + if(!m_flags || !((sflaginfos[0].state==CTFF_STOLEN && sflaginfos[0].actor_cn==i) || + (sflaginfos[1].state==CTFF_STOLEN && sflaginfos[1].actor_cn==i) )) { clients[i]->at3_dontmove = false; moveable[t]++; @@ -1519,7 +1614,7 @@ bool refillteams(bool now, bool notify) // force only minimal amounts of player if(now || gamemillis - lasttime_eventeams > 8000 + allplayers * 1000 || diffnum > 2 + allplayers / 10) { // time to even out teams - loopv(clients) if (clients[i]->type!=ST_EMPTY && team_int(clients[i]->team) != bigteam) clients[i]->at3_dontmove = true; // dont move small team players + loopv(clients) if(clients[i]->type!=ST_EMPTY && team_int(clients[i]->team) != bigteam) clients[i]->at3_dontmove = true; // dont move small team players while(diffnum > 1 && moveable[bigteam] > 0) { // pick best fitting cn @@ -1528,7 +1623,7 @@ bool refillteams(bool now, bool notify) // force only minimal amounts of player int bestfit = 1000000000; int targetscore = diffscore / (diffnum & ~1); s_sprintf(atlog)("at-target: %d, ", targetscore); - loopv(clients) if (clients[i]->type!=ST_EMPTY && !clients[i]->at3_dontmove) // try all still movable players + loopv(clients) if(clients[i]->type!=ST_EMPTY && !clients[i]->at3_dontmove) // try all still movable players { int fit = targetscore - clients[i]->at3_score; if(fit < 0 ) fit = -(fit * 15) / 10; // avoid too good players @@ -1607,7 +1702,7 @@ void resetmap(const char *newname, int newmode, int newtime, bool notify) { if(!lastteammode) shuffleteams(false); - else if (autoteam) + else if(autoteam) refillteams(true, false); } // send spawns @@ -1624,6 +1719,7 @@ void resetmap(const char *newname, int newmode, int newtime, bool notify) demonextmatch = false; setupdemorecord(); } + if(m_ktf) { sendflaginfo(0, 0); sendflaginfo(1, 0); } } void nextcfgset(bool notify = true) // load next maprotation set @@ -1813,7 +1909,7 @@ const char *disc_reason(int reason) void disconnect_client(int n, int reason) { if(!clients.inrange(n) || clients[n]->type!=ST_TCPIP) return; - if(m_ctf) loopi(2) if(sflaginfos[i].state==CTFF_STOLEN && sflaginfos[i].actor_cn==n) flagaction(i, SV_FLAGDROP, n); + if(m_flags) loopi(2) if(sflaginfos[i].state==CTFF_STOLEN && sflaginfos[i].actor_cn==n) flagaction(i, SV_FLAGLOST, n); client &c = *clients[n]; savedscore *sc = findscore(c, true); if(sc) sc->save(c.state); @@ -2069,7 +2165,7 @@ int checktype(int type, client *cl) static int edittypes[] = { SV_EDITENT, SV_EDITH, SV_EDITT, SV_EDITS, SV_EDITD, SV_EDITE }; if(cl && smode!=1) loopi(sizeof(edittypes)/sizeof(int)) if(type == edittypes[i]) return -1; // server only messages - static int servtypes[] = { SV_INITS2C, SV_MAPRELOAD, SV_SERVMSG, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_DIED, SV_SPAWNSTATE, SV_FORCEDEATH, SV_ITEMACC, SV_ITEMSPAWN, SV_TIMEUP, SV_CDIS, SV_PONG, SV_RESUME, SV_FLAGINFO, SV_ARENAWIN, SV_SENDDEMOLIST, SV_SENDDEMO, SV_DEMOPLAYBACK, SV_CLIENT, SV_CALLVOTESUC, SV_CALLVOTEERR, SV_VOTERESULT, SV_WHOISINFO }; + static int servtypes[] = { SV_INITS2C, SV_MAPRELOAD, SV_SERVMSG, SV_GIBDAMAGE, SV_DAMAGE, SV_HITPUSH, SV_SHOTFX, SV_DIED, SV_SPAWNSTATE, SV_FORCEDEATH, SV_ITEMACC, SV_ITEMSPAWN, SV_TIMEUP, SV_CDIS, SV_PONG, SV_RESUME, SV_FLAGINFO, SV_ARENAWIN, SV_SENDDEMOLIST, SV_SENDDEMO, SV_DEMOPLAYBACK, SV_CLIENT, SV_CALLVOTESUC, SV_CALLVOTEERR, SV_VOTERESULT, SV_WHOISINFO, SV_FLAGS, SV_FLAGRESET }; if(cl) loopi(sizeof(servtypes)/sizeof(int)) if(type == servtypes[i]) return -1; return type; } @@ -2142,7 +2238,7 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1 welcomepacket(p, sender); enet_packet_resize(packet, p.length()); sendpacket(sender, 1, packet); - if(smapname[0] && m_ctf) loopi(2) sendflaginfo(i, -1, sender); + if(smapname[0] && m_flags) loopi(2) sendflaginfo(i, -1, sender); if(clientrole != CR_DEFAULT) changeclientrole(sender, clientrole, NULL, true); } @@ -2443,19 +2539,16 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1 case SV_FLAGPICKUP: case SV_FLAGDROP: + case SV_FLAGLOST: case SV_FLAGRETURN: case SV_FLAGSCORE: case SV_FLAGRESET: { + if(!m_flags) { disconnect_client(sender, DISC_TAGT); return; } flagaction(getint(p), type, sender); break; } - case SV_FLAGS: - cl->state.flagscore = getint(p); - QUEUE_MSG; - break; - case SV_SETADMIN: { bool claim = getint(p) != 0; @@ -2681,10 +2774,18 @@ void serverslice(uint timeout) // main server update, called from cube main lo { processevents(); checkitemspawns(diff); - if(m_ctf) loopi(2) + if(m_flags) loopi(2) { sflaginfo &f = sflaginfos[i]; - if(f.state==CTFF_DROPPED && gamemillis-f.lastupdate>30000) flagaction(i, SV_FLAGRESET, -1); + if(f.state == CTFF_DROPPED && gamemillis-f.lastupdate > (m_ctf ? 30000 : 10000)) flagaction(i, SV_FLAGRESET, -1); + if(m_htf && f.state == CTFF_INBASE && gamemillis-f.lastupdate > 10000) + { + htf_forceflag(i); + } + if(m_ktf && f.state == CTFF_STOLEN && gamemillis-f.lastupdate > 15000) + { + flagaction(i, SV_FLAGSCORE, f.actor_cn); + } } if(m_arena) arenacheck(); } @@ -2750,20 +2851,20 @@ void serverslice(uint timeout) // main server update, called from cube main lo { cvector teams; - bool flag; + bool addteam; loopv(clients) { if(clients[i]->type == ST_EMPTY || !clients[i]->name[0]) continue; - flag = true; + addteam = true; loopvj(teams) { if(strcmp(clients[i]->team,teams[j])==0 || !clients[i]->team[0]) { - flag = false; + addteam = false; break; } } - if(flag) teams.add(clients[i]->team); + if(addteam) teams.add(clients[i]->team); } loopv(teams) @@ -2778,7 +2879,7 @@ void serverslice(uint timeout) // main server update, called from cube main lo flagscore += clients[j]->state.flagscore; } logger->writeline(log::info, "Team %5s: %3d frags", teams[i], fragscore); - if(m_ctf) logger->writeline(log::info, "Team %5s: %3d flags", teams[i], flagscore); // ctf only + if(m_flags) logger->writeline(log::info, "Team %5s: %3d flags", teams[i], flagscore); // ctf only } } @@ -2910,19 +3011,19 @@ void extinfo_teamscorebuf(ucharbuf &p) if(!m_teammode) return; cvector teams; - bool flag; + bool addteam; loopv(clients) if(clients[i]->type!=ST_EMPTY) { - flag = true; + addteam = true; loopvj(teams) { if(strcmp(clients[i]->team,teams[j])==0 || !clients[i]->team[0]) { - flag = false; + addteam = false; break; } } - if(flag) teams.add(clients[i]->team); + if(addteam) teams.add(clients[i]->team); } loopv(teams) @@ -2937,7 +3038,7 @@ void extinfo_teamscorebuf(ucharbuf &p) flagscore += clients[j]->state.flagscore; } putint(p,fragscore); //add fragscore per team - if(m_ctf) //when capture mode + if(m_flags) //when capture mode { putint(p,flagscore); //add flagscore per team } diff --git a/source/src/serverevents.h b/source/src/serverevents.h index c5af7db5..a085b42d 100644 --- a/source/src/serverevents.h +++ b/source/src/serverevents.h @@ -3,7 +3,7 @@ void processevent(client *c, explodeevent &e) { clientstate &gs = c->state; - switch(e.gun) + switch(e.gun) { case GUN_GRENADE: if(!gs.grenades.remove(e.id)) return; @@ -79,14 +79,7 @@ void processevent(client *c, shotevent &e) void processevent(client *c, suicideevent &e) { - clientstate &gs = c->state; - if(gs.state!=CS_ALIVE) return; - gs.frags--; - gs.deaths++; - sendf(-1, 1, "ri4", SV_DIED, c->clientnum, c->clientnum, gs.frags); - c->position.setsizenodelete(0); - gs.state = CS_DEAD; - gs.respawn(); + serverdamage(c, c, 1000, GUN_KNIFE, false); logger->writeline(log::info, "[%s] %s suicided", c->hostname, c->name); } @@ -102,7 +95,7 @@ void processevent(client *c, reloadevent &e) clientstate &gs = c->state; if(!gs.isalive(gamemillis) || e.gun=NUMGUNS || - !reloadable_gun(e.gun) || + !reloadable_gun(e.gun) || gs.ammo[e.gun]<=0) return; @@ -148,7 +141,7 @@ void processevents() while(c->events.length()) { gameevent &e = c->events[0]; - if(e.typegamemillis) break; if(e.shot.millislastevent) { clearevent(c); continue; } diff --git a/source/src/worldio.cpp b/source/src/worldio.cpp index ebabbdc9..92ff9313 100644 --- a/source/src/worldio.cpp +++ b/source/src/worldio.cpp @@ -299,7 +299,7 @@ bool load_world(char *mname) // still supports all map formats that have if(e.attr1>32) e.attr1 = 32; // 12_03 and below } - if (hdr.version