r4420 - in trunk/data: . qcsrc/client qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 9 01:32:59 EDT 2008


Author: div0
Date: 2008-09-09 01:32:56 -0400 (Tue, 09 Sep 2008)
New Revision: 4420

Modified:
   trunk/data/defaultNexuiz.cfg
   trunk/data/qcsrc/client/Main.qc
   trunk/data/qcsrc/server/cl_impulse.qc
   trunk/data/qcsrc/server/cl_weapons.qc
   trunk/data/qcsrc/server/cl_weaponsystem.qc
Log:
cl_weaponpriority_useforcycling; if that is off, the current HUD is used to determine weapon cycling order


Modified: trunk/data/defaultNexuiz.cfg
===================================================================
--- trunk/data/defaultNexuiz.cfg	2008-09-08 19:27:38 UTC (rev 4419)
+++ trunk/data/defaultNexuiz.cfg	2008-09-09 05:32:56 UTC (rev 4420)
@@ -596,9 +596,26 @@
 alias -zoom -button4
 alias +crouch +button5
 alias -crouch -button5
-alias weapnext "impulse 10"
+alias weapnext "_weapnext_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
+alias _weapnext_000 "impulse 10"
+alias _weapnext_001 "impulse 10"
+alias _weapnext_010 "impulse 10"
+alias _weapnext_011 "impulse 10"
+alias _weapnext_100 "impulse 10"
+alias _weapnext_101 "impulse 15"
+alias _weapnext_110 "impulse 18"
+alias _weapnext_111 "impulse 15"
 alias weaplast "impulse 11"
-alias weapprev "impulse 12"
+alias weapprev "_weapprev_${_supports_weaponpriority}${sbar_hudselector}${cl_weaponpriority_useforcycling}"
+alias _weapprev_000 "impulse 12"
+alias _weapprev_001 "impulse 12"
+alias _weapprev_010 "impulse 12"
+alias _weapprev_011 "impulse 12"
+alias _weapprev_100 "impulse 12"
+alias _weapprev_101 "impulse 16"
+alias _weapprev_110 "impulse 19"
+alias _weapprev_111 "impulse 16"
+set _supports_weaponpriority 0 // set to 1 by csqc if supported, and to 0 on disconnect
 
 // movement
 bind w +forward
@@ -1089,6 +1106,7 @@
 alias allready "sv_cmd allready"
 
 seta cl_weaponpriority "10 9 8 11 7 6 5 4 3 2 1"
+seta cl_weaponpriority_useforcycling 0
 // impulse 200, 210, 220:
 seta cl_weaponpriority0 "9 8 4"      // explosives    (RL Hagar Mortar)
 // impulse 201, 211, 221:

Modified: trunk/data/qcsrc/client/Main.qc
===================================================================
--- trunk/data/qcsrc/client/Main.qc	2008-09-08 19:27:38 UTC (rev 4419)
+++ trunk/data/qcsrc/client/Main.qc	2008-09-09 05:32:56 UTC (rev 4420)
@@ -4,6 +4,27 @@
 
 #define DP_CSQC_ENTITY_REMOVE_IS_B0RKED
 
+void cvar_settemp(string cvar, string val)
+{
+	entity e;
+	for(e = world; (e = find(e, classname, "saved_cvar_value")); )
+		if(e.netname == argv(1))
+			goto saved;
+	e = spawn();
+	e.classname = "saved_cvar_value";
+	e.netname = strzone(argv(1));
+	e.message = strzone(cvar_string(argv(1)));
+:saved
+	cvar_set(argv(1), argv(2));
+}
+
+void cvar_settemp_restore()
+{
+	entity e;
+	for(e = world; (e = find(e, classname, "saved_cvar_value")); )
+			cvar_set(e.netname, e.message);
+}
+
 void() menu_show_error =
 {
 	drawstring('0 200 0', "ERROR - MENU IS VISIBLE BUT NO MENU WAS DEFINED!", '8 8 0', '1 0 0', 1, 0);
@@ -89,6 +110,8 @@
 	players = Sort_Spawn();
 	
 	GetTeam(COLOR_SPECTATOR, true); // add specs first
+
+	cvar_settemp("_supports_weaponpriority", "1");
 }
 
 // CSQC_Shutdown : Called every time the CSQC code is shutdown (changing maps, quitting, etc)
@@ -105,9 +128,7 @@
 	remove(players);
 	db_close(configdb);
 
-	entity e;
-	for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-			cvar_set(e.netname, e.message);
+	cvar_settemp_restore();
 }
 
 .float has_team;
@@ -273,16 +294,7 @@
 		return true;
 	}
 	else if(cmd == "settemp") {
-		entity e;
-		for(e = world; (e = find(e, classname, "saved_cvar_value")); )
-			if(e.netname == argv(1))
-				goto saved;
-		e = spawn();
-		e.classname = "saved_cvar_value";
-		e.netname = strzone(argv(1));
-		e.message = strzone(cvar_string(argv(1)));
-:saved
-		cvar_set(argv(1), argv(2));
+		cvar_settemp(argv(1), argv(2));
 	}
 	
 	return false;

Modified: trunk/data/qcsrc/server/cl_impulse.qc
===================================================================
--- trunk/data/qcsrc/server/cl_impulse.qc	2008-09-08 19:27:38 UTC (rev 4419)
+++ trunk/data/qcsrc/server/cl_impulse.qc	2008-09-09 05:32:56 UTC (rev 4420)
@@ -60,12 +60,16 @@
  * Impulse map:
  *
  * 0 reserved (no input)
- * 1 to 9: weapon shortcuts
- * 10: next weapon
+ * 1 to 9, 14: weapon shortcuts
+ * 10: next weapon according to linear list
  * 11: most recently used weapon
- * 12: previous weapon
- * 13: best weapon
+ * 12: previous weapon according to linear list
+ * 13: best weapon according to priority list
+ * 15: next weapon according to priority list
+ * 16: previous weapon according to priority list
  * 17: throw weapon
+ * 18: next weapon according to sbar_hudselector 1 list
+ * 19: previous weapon according to sbar_hudselector 1 list
  *
  * 30 to 39: create waypoints
  * 47: clear personal waypoints
@@ -116,20 +120,20 @@
 		else
 			self.impulse = imp; // retry in next frame
 	}
-	else if(imp >= 10 && imp <= 17)
+	else if(imp >= 10 && imp <= 19)
 	{
 		if(self.deadflag == DEAD_NO)
 		{
 			switch(imp)
 			{
 				case 10:
-					W_NextWeapon ();
+					W_NextWeapon (0);
 					break;
 				case 11:
 					W_SwitchWeapon (self.cnt); // previously used
 					break;
 				case 12:
-					W_PreviousWeapon ();
+					W_PreviousWeapon (0);
 					break;
 				case 13:
 					W_SwitchWeapon (w_getbestweapon(self));
@@ -137,10 +141,22 @@
 				case 14:
 					W_NextWeaponOnImpulse(0);
 					break;
+				case 15:
+					W_NextWeapon (2);
+					break;
+				case 16:
+					W_PreviousWeapon (2);
+					break;
 				case 17:
 					if (!g_minstagib)
 						W_ThrowWeapon(W_CalculateProjectileVelocity(self.velocity, v_forward * 750), '0 0 0', TRUE);
 					break;
+				case 18:
+					W_NextWeapon (1);
+					break;
+				case 19:
+					W_PreviousWeapon (1);
+					break;
 				}
 		}
 		else

Modified: trunk/data/qcsrc/server/cl_weapons.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weapons.qc	2008-09-08 19:27:38 UTC (rev 4419)
+++ trunk/data/qcsrc/server/cl_weapons.qc	2008-09-09 05:32:56 UTC (rev 4420)
@@ -81,15 +81,25 @@
 }
 
 // next weapon
-void W_NextWeapon()
+void W_NextWeapon(float list)
 {
-	W_CycleWeapon(self.cvar_cl_weaponpriority, -1);
+	if(list == 0)
+		W_CycleWeapon(weaponpriority_hudselector_0, -1);
+	else if(list == 1)
+		W_CycleWeapon(weaponpriority_hudselector_1, -1);
+	else if(list == 2)
+		W_CycleWeapon(self.cvar_cl_weaponpriority, -1);
 }
 
 // prev weapon
-void W_PreviousWeapon()
+void W_PreviousWeapon(float list)
 {
-	W_CycleWeapon(self.cvar_cl_weaponpriority, +1);
+	if(list == 0)
+		W_CycleWeapon(weaponpriority_hudselector_0, +1);
+	else if(list == 1)
+		W_CycleWeapon(weaponpriority_hudselector_1, +1);
+	else if(list == 2)
+		W_CycleWeapon(self.cvar_cl_weaponpriority, +1);
 }
 
 string W_FixWeaponOrder(string order, float complete)
@@ -452,7 +462,6 @@
 
 void RegisterWeapons()
 {
-	register_dummy_weapon();
 	// %weaponaddpoint
 	register_weapon(WEP_LASER,            w_laser,     0,              1, 1,     0, "laser",     "laser",           "Laser");
 	register_weapon(WEP_SHOTGUN,          w_shotgun,   IT_SHELLS,      2, 1,  2500, "shotgun",   "shotgun",         "Shotgun");
@@ -465,4 +474,5 @@
 	register_weapon(WEP_ROCKET_LAUNCHER,  w_rlauncher, IT_ROCKETS,     9, 1, 10000, "rl",        "rocketlauncher",  "Rocket Launcher");
 	register_weapon(WEP_PORTO,            w_porto,     IT_SUPERWEAPON, 0, 0,     0, "porto" ,    "porto",           "Port-O-Launch");
 	register_weapon(WEP_MINSTANEX,        w_minstanex, IT_CELLS,       7, 0, 10000, "minstanex", "minstanex",       "MinstaNex");
+	register_weapons_done();
 }

Modified: trunk/data/qcsrc/server/cl_weaponsystem.qc
===================================================================
--- trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-09-08 19:27:38 UTC (rev 4419)
+++ trunk/data/qcsrc/server/cl_weaponsystem.qc	2008-09-09 05:32:56 UTC (rev 4420)
@@ -588,6 +588,9 @@
 entity weapon_info[24];
 entity dummy_weapon_info;
 .float(float) weapon_func;
+string weaponpriority_hudselector_0;
+string weaponpriority_hudselector_1;
+
 void register_weapon(float id, float(float) func, float ammotype, float i, float normalweapon, float pickupbasevalue, string modelname, string shortname, string name)
 {
 	entity e;
@@ -609,7 +612,7 @@
 {
 	return 0;
 }
-void register_dummy_weapon()
+void register_weapons_done()
 {
 	dummy_weapon_info = spawn();
 	dummy_weapon_info.classname = "weapon_info";
@@ -623,6 +626,22 @@
 	dummy_weapon_info.spawnflags = 0;
 	dummy_weapon_info.impulse = -1;
 	dummy_weapon_info.bot_pickupbasevalue = 0;
+
+	float i;
+	weaponpriority_hudselector_0 = "";
+	for(i = 24; i > 0; --i)
+		if(weapon_info[i-1])
+			weaponpriority_hudselector_0 = strcat(weaponpriority_hudselector_0, " ", ftos(i+1));
+
+	float imp;
+	weaponpriority_hudselector_1 = "";
+	for(imp = 10; imp > 0; --imp)
+		for(i = 24; i > 0; --i)
+			if(weapon_info[i-1] && weapon_info[i-1].impulse == mod(imp, 10))
+				weaponpriority_hudselector_1 = strcat(weaponpriority_hudselector_1, " ", ftos(i+1));
+
+	weaponpriority_hudselector_0 = strzone(substring(weaponpriority_hudselector_0, 1, strlen(weaponpriority_hudselector_0) - 1));
+	weaponpriority_hudselector_1 = strzone(substring(weaponpriority_hudselector_1, 1, strlen(weaponpriority_hudselector_1) - 1));
 }
 entity get_weaponinfo(float id)
 {




More information about the nexuiz-commits mailing list