mirror of
https://git.code.sf.net/p/quake/prozac-qfcc
synced 2025-03-23 02:51:44 +00:00
- totally disable TeamFortress_ChecKTeamCheats
- fix GetNoPlayers (didn't init num_players) - overhaul the map cycler - automatically restart if a cyclenumber doesn't work - fix minp/maxp - exec mapcfg.cfg each map change (affects minp/maxp) - exec mapcfg/MAP.cfg each map change. (affects minp/maxp) - fix a "rockets explode on observers" bug - make it so colors aren't reset every time you respawn
This commit is contained in:
parent
a1ecc5dda3
commit
5ec3dff93e
5 changed files with 69 additions and 45 deletions
1
BUGS
1
BUGS
|
@ -17,3 +17,4 @@
|
|||
- prematch shouldn't force autoteam when it's done
|
||||
- sometimes ID doesn't work. this may be because impulses are unreliable though :/
|
||||
- minp/maxp are broken. possibly compiler !string bug
|
||||
- rockets explode on observers
|
||||
|
|
93
client.qc
93
client.qc
|
@ -76,6 +76,8 @@ string(entity themonster) GetMonsterName;
|
|||
void(entity attacker) MonsterKill;
|
||||
void() DetonateAllGunsForced;
|
||||
|
||||
void(float mapnum) SetNextMapNum;
|
||||
|
||||
/*
|
||||
=============================================================================
|
||||
|
||||
|
@ -84,6 +86,11 @@ void() DetonateAllGunsForced;
|
|||
=============================================================================
|
||||
*/
|
||||
|
||||
#define MAP_NO 0
|
||||
#define MAP_YES 1
|
||||
#define MAP_LOADCYCLE 2
|
||||
#define MAP_LOADCONFIG 3
|
||||
|
||||
string nextmap;
|
||||
|
||||
float intermission_running;
|
||||
|
@ -443,7 +450,7 @@ void() DecodeLevelParms =
|
|||
self.armortype = parm9 * 0.01;
|
||||
|
||||
SetTeamName (self);
|
||||
SetPlayerColor (self, TeamGetNiceColor (self.team_no), TeamGetColor (self.team_no) - 1);
|
||||
// SetPlayerColor (self, TeamGetNiceColor (self.team_no), TeamGetColor (self.team_no) - 1);
|
||||
|
||||
// TeamFortress Parameters
|
||||
// Detect whether this is the first entrance into a map
|
||||
|
@ -879,10 +886,9 @@ float() DoExtraCycle =
|
|||
{
|
||||
//-------------------------------------------------//
|
||||
//- OfN - I tried to make this work like in tf2.8 -//
|
||||
local string nfmap, temp;
|
||||
nfmap = infokey(world, "nmap");
|
||||
if (nfmap)
|
||||
{
|
||||
local string nmap, temp;
|
||||
nmap = infokey(world, "nmap");
|
||||
if (nmap) {
|
||||
local float minplayers, maxplayers, itsok, currentpl;
|
||||
|
||||
if (infokey(world,"minp")!="")
|
||||
|
@ -901,11 +907,10 @@ float() DoExtraCycle =
|
|||
|
||||
//check conditions
|
||||
|
||||
if (minplayers > currentpl)
|
||||
{
|
||||
if (minplayers > currentpl) {
|
||||
bprint(PRINT_HIGH,"Map ");
|
||||
nfmap = infokey(world, "nmap");
|
||||
bprint(PRINT_HIGH, nfmap);
|
||||
nmap = infokey(world, "nmap");
|
||||
bprint(PRINT_HIGH, nmap);
|
||||
bprint(PRINT_HIGH," skipped - minimum players ");
|
||||
temp = ftos(minplayers);
|
||||
bprint(PRINT_HIGH, temp);
|
||||
|
@ -914,14 +919,11 @@ float() DoExtraCycle =
|
|||
bprint(PRINT_HIGH, temp);
|
||||
bprint(PRINT_HIGH,")\n");
|
||||
itsok = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (maxplayers < currentpl)
|
||||
{
|
||||
} else {
|
||||
if (maxplayers < currentpl) {
|
||||
bprint(PRINT_HIGH,"Map ");
|
||||
nfmap = infokey(world, "nmap");
|
||||
bprint(PRINT_HIGH, nfmap);
|
||||
nmap = infokey(world, "nmap");
|
||||
bprint(PRINT_HIGH, nmap);
|
||||
bprint(PRINT_HIGH," skipped - maximum players ");
|
||||
temp = ftos(maxplayers);
|
||||
bprint(PRINT_HIGH,temp);
|
||||
|
@ -939,28 +941,31 @@ float() DoExtraCycle =
|
|||
//locals clean
|
||||
|
||||
//execute map conditions ok
|
||||
if (itsok)
|
||||
{
|
||||
nfmap = infokey(world, "nmap");
|
||||
if (itsok) {
|
||||
nmap = infokey(world, "nmap");
|
||||
|
||||
bprint(PRINT_HIGH,"\nLoading ");
|
||||
bprint(PRINT_HIGH,nfmap);
|
||||
bprint(PRINT_HIGH,nmap);
|
||||
bprint(PRINT_HIGH," map file...\n");
|
||||
|
||||
localcmd("localinfo nmap \"\"\n");
|
||||
|
||||
localcmd("map ");
|
||||
localcmd(nfmap);
|
||||
localcmd(nmap);
|
||||
localcmd("\n");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else //conditions not passed...
|
||||
{
|
||||
localcmd("localinfo nmap \"\"\n");
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
} else { //conditions not passed...
|
||||
localcmd("localinfo nmap \"\"\n");
|
||||
return FALSE;
|
||||
}
|
||||
} else if (already_chosen_map == MAP_LOADCYCLE) {
|
||||
local string st = infokey (world, "loopcycle");
|
||||
if (st != "0" && st != "off") {
|
||||
dprint ("No map loaded, restarting map cycle\n");
|
||||
SetNextMapNum (0);
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
};
|
||||
|
@ -1007,7 +1012,7 @@ float() GetNextMapNum =
|
|||
|
||||
if (!maxmapnum)
|
||||
return num;
|
||||
else if (num > stof (maxmapnum))
|
||||
if (num > stof (maxmapnum))
|
||||
return 0;
|
||||
else
|
||||
return num;
|
||||
|
@ -1035,6 +1040,7 @@ void(float mapnum) SetNextMapNum =
|
|||
localcmd("localinfo n ");
|
||||
localcmd(mapstring);
|
||||
localcmd("\n");
|
||||
setinfokey (world, "n", mapstring);
|
||||
};
|
||||
|
||||
void() LoadNextMap =
|
||||
|
@ -1092,41 +1098,48 @@ void() LoadNextMap =
|
|||
localcmd(ftos(nextlevel));
|
||||
localcmd(".cfg\n");
|
||||
|
||||
already_chosen_map = CYCLED;
|
||||
already_chosen_map = MAP_LOADCYCLE;
|
||||
}
|
||||
};
|
||||
|
||||
void() GotoNextMap =
|
||||
{
|
||||
|
||||
if (nextmap != mapname)
|
||||
{
|
||||
changelevel(nextmap);
|
||||
already_chosen_map = TRUE;
|
||||
already_chosen_map = MAP_YES;
|
||||
}
|
||||
|
||||
if (already_chosen_map == FALSE || already_chosen_map == CYCLED)
|
||||
if (already_chosen_map != MAP_YES)
|
||||
{
|
||||
if (DoExtraCycle())
|
||||
already_chosen_map = TRUE;
|
||||
local string nmap = infokey (world, "nmap");
|
||||
if (already_chosen_map == MAP_LOADCYCLE && nmap) {
|
||||
// load up the map config
|
||||
localcmd ("exec \"mapcfg.cfg\"\n");
|
||||
localcmd ("exec \"mapcfg/" + nmap + ".cfg\"\n");
|
||||
already_chosen_map = MAP_LOADCONFIG;
|
||||
} else if (DoExtraCycle())
|
||||
already_chosen_map = MAP_LOADCYCLE;
|
||||
else
|
||||
already_chosen_map = FALSE;
|
||||
already_chosen_map = MAP_NO;
|
||||
}
|
||||
|
||||
//- OfN - super new map cycling code :)
|
||||
if (already_chosen_map == FALSE)
|
||||
if (already_chosen_map == MAP_NO)
|
||||
LoadNextMap();
|
||||
|
||||
if (GetNextMapNum() == 0)
|
||||
already_chosen_map = FALSE;
|
||||
already_chosen_map = MAP_NO;
|
||||
|
||||
if (already_chosen_map == FALSE) // nothing was done yet, so set the damn timer..
|
||||
if (already_chosen_map == MAP_NO) // nothing was done yet, so set the damn timer..
|
||||
{
|
||||
SetCycleTimer();
|
||||
return;
|
||||
}
|
||||
|
||||
if (already_chosen_map == CYCLED) // if we executed a mapx.cfg
|
||||
// if we executed a mapx.cfg
|
||||
if (already_chosen_map == MAP_LOADCYCLE ||
|
||||
already_chosen_map == MAP_LOADCONFIG)
|
||||
SetCycleTimer(); // set the timer to check the real map afte 0.1 seconds
|
||||
};
|
||||
|
||||
|
|
2
often.qc
2
often.qc
|
@ -887,7 +887,7 @@ float (vector spot1, vector spot2) vis2orig =
|
|||
// Return the number of players in game
|
||||
float() GetNoPlayers =
|
||||
{
|
||||
local float num_players;
|
||||
local float num_players = 0;
|
||||
local entity search;
|
||||
|
||||
search = find (world, classname, "player");
|
||||
|
|
15
tforttm.qc
15
tforttm.qc
|
@ -364,6 +364,7 @@ float(float tno) TeamFortress_TeamSet =
|
|||
// Make sure no-one is changing their colors
|
||||
void() TeamFortress_CheckTeamCheats =
|
||||
{
|
||||
/*
|
||||
local string st, sk;
|
||||
local float tc, tc2;
|
||||
local float rate;
|
||||
|
@ -536,6 +537,7 @@ void() TeamFortress_CheckTeamCheats =
|
|||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
};
|
||||
|
||||
void (entity pl, float topcolor, float bottomcolor) SetPlayerColor =
|
||||
|
@ -564,10 +566,15 @@ void (string key, string value) UserInfoCallback =
|
|||
}
|
||||
// dprint ("[[" + self.netname + "](" + key + ")(" + value + ")(" + oldval + ")]\n");
|
||||
|
||||
/* else if (key == "topcolor") { // FIXME: some topcolors may be allowed
|
||||
setinfokey(self, "topcolor", oldval);
|
||||
stuffcmd(self, "color \"" + oldval + "\"\n");
|
||||
}*/ else if (key == "bottomcolor") {
|
||||
else if (key == "topcolor") { // FIXME: some topcolors may be allowed
|
||||
dprint ("items: " + ftos (self.cutf_items & CUTF_SPY_KIT) + " ");
|
||||
dprint ("skin: " + ftos (self.is_undercover) + "\n");
|
||||
if ((self.cutf_items & CUTF_SPY_KIT) && self.is_undercover) {
|
||||
setinfokey(self, "topcolor", oldval);
|
||||
stuffcmd(self, "color \"" + oldval + "\"\n");
|
||||
} else
|
||||
setinfokey (self, key, value);
|
||||
} else if (key == "bottomcolor") {
|
||||
setinfokey (self, "bottomcolor", oldval);
|
||||
stuffcmd (self, "bottomcolor \"" + oldval + "\"\n");
|
||||
} else if (key == "skin") { // FIXME: some other skins may be allowed
|
||||
|
|
|
@ -1577,6 +1577,9 @@ void() T_MissileTouch =
|
|||
local float damg;
|
||||
local float bonus;
|
||||
|
||||
if (other.classname == "player" && other.playerclass == PC_UNDEFINED)
|
||||
return;
|
||||
|
||||
if (pointcontents(self.origin) == CONTENTS_SKY)
|
||||
{
|
||||
dremove(self);
|
||||
|
|
Loading…
Reference in a new issue