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