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