r1947 - in branches/nexuiz-2.0/data: . qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Tue Nov 28 14:38:18 EST 2006
Author: div0
Date: 2006-11-28 14:38:18 -0500 (Tue, 28 Nov 2006)
New Revision: 1947
Modified:
branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
branches/nexuiz-2.0/data/quake.rc
Log:
preserve campaign cvars in data/campaign.cfg
Modified: branches/nexuiz-2.0/data/qcsrc/server/campaign.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/campaign.qc 2006-11-28 19:36:33 UTC (rev 1946)
+++ branches/nexuiz-2.0/data/qcsrc/server/campaign.qc 2006-11-28 19:38:18 UTC (rev 1947)
@@ -7,6 +7,7 @@
float campaign_level;
float campaign_won;
string campaign_index_var;
+float checkrules_equality;
void(string s) CampaignBailout =
{
@@ -56,11 +57,53 @@
cvar_set("timelimit", "0");
}
+void CampaignSaveCvar(string cvarname, float value)
+{
+ float fh;
+ float len;
+ string contents;
+ string l;
+
+ cvar_set(cvarname, ftos(value));
+ // note: cvarname must be remembered
+
+ fh = fopen("campaign.cfg", FILE_READ);
+ contents = "";
+ if(fh >= 0)
+ {
+ while((l = fgets(fh)))
+ {
+ cvarname = strcat(cvarname);
+ contents = strcat(contents);
+ len = tokenize(l);
+ if(len != 3)
+ continue;
+ if(argv(0) != "set")
+ continue;
+ if(argv(1) == cvarname)
+ continue;
+ contents = strcat(contents, "set ", argv(1), " ", argv(2), "\n");
+ }
+ fclose(fh);
+ }
+ contents = strcat(contents, "set ", cvarname, " ", ftos(value), "\n");
+ fh = fopen("campaign.cfg", FILE_WRITE);
+ if(fh >= 0)
+ {
+ fputs(fh, contents);
+ }
+ else
+ {
+ error("Cannot write to campaign file");
+ }
+}
+
void() CampaignPreIntermission =
{
entity head;
float won;
float lost;
+ local string savevar;
won = 0;
@@ -77,7 +120,7 @@
head = head.chain;
}
- if(won == 1 && lost == 0)
+ if(won == 1 && lost == 0 && checkrules_equality == 0)
{
campaign_won = 1;
bprint("The current level has been WON.\n");
@@ -94,20 +137,14 @@
{
if(campaign_entries < 2)
{
- //localcmd("set g_campaign_index 0\n");
- // don't reset...
- localcmd("seta g_campaign");
- localcmd(campaign_name);
- localcmd("_won 1\n");
+ // I have won
+ savevar = strcat("g_campaign", campaign_name, "_won");
+ CampaignSaveCvar(savevar, 1);
}
else if(campaign_level == cvar(campaign_index_var))
{
// advance level
- localcmd("seta ");
- localcmd(campaign_index_var);
- localcmd(" ");
- localcmd(ftos(campaign_level + 1));
- localcmd("\n");
+ CampaignSaveCvar(campaign_index_var, campaign_level + 1);
}
}
}
Modified: branches/nexuiz-2.0/data/qcsrc/server/g_world.qc
===================================================================
--- branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2006-11-28 19:36:33 UTC (rev 1946)
+++ branches/nexuiz-2.0/data/qcsrc/server/g_world.qc 2006-11-28 19:38:18 UTC (rev 1947)
@@ -1027,7 +1027,10 @@
head = head.chain;
}
- SetWinners(frags, checkrules_leaderfrags);
+ if(checkrules_leaderfrags > 0)
+ SetWinners(frags, checkrules_leaderfrags);
+ else
+ ClearWinners();
if (!cvar("g_runematch"))
if (checkrules_leaderfrags != checkrules_oldleaderfrags)
@@ -1060,14 +1063,17 @@
>= 2));
ClearWinners();
- if(team1_score == tdm_max_score)
- AddWinners(team, COLOR_TEAM1);
- if(team2_score == tdm_max_score)
- AddWinners(team, COLOR_TEAM2);
- if(team3_score == tdm_max_score)
- AddWinners(team, COLOR_TEAM3);
- if(team4_score == tdm_max_score)
- AddWinners(team, COLOR_TEAM4);
+ if(tdm_max_score > 0)
+ {
+ if(team1_score == tdm_max_score)
+ AddWinners(team, COLOR_TEAM1);
+ if(team2_score == tdm_max_score)
+ AddWinners(team, COLOR_TEAM2);
+ if(team3_score == tdm_max_score)
+ AddWinners(team, COLOR_TEAM3);
+ if(team4_score == tdm_max_score)
+ AddWinners(team, COLOR_TEAM4);
+ }
if(!cvar("g_runematch") && !cvar("g_domination"))
if(tdm_max_score != tdm_old_score)
Modified: branches/nexuiz-2.0/data/quake.rc
===================================================================
--- branches/nexuiz-2.0/data/quake.rc 2006-11-28 19:36:33 UTC (rev 1946)
+++ branches/nexuiz-2.0/data/quake.rc 2006-11-28 19:38:18 UTC (rev 1947)
@@ -1,5 +1,6 @@
exec default.cfg
exec config.cfg
+exec data/campaign.cfg
exec autoexec.cfg
stuffcmds
//startdemos demos/demo1 demos/demo2 demos/demo3
More information about the nexuiz-commits
mailing list