r85 - trunk/basezym/progsqc

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Nov 20 02:20:57 EST 2007


Author: vermeulen
Date: 2007-11-20 02:20:56 -0500 (Tue, 20 Nov 2007)
New Revision: 85

Modified:
   trunk/basezym/progsqc/actor.qc
   trunk/basezym/progsqc/dpextensions.qc
   trunk/basezym/progsqc/gamedefs.qc
   trunk/basezym/progsqc/inventory.qc
   trunk/basezym/progsqc/player.qc
Log:
Added some unfinished item use code, needs switching between items
Added a trail and light to the user if using jetpack

Modified: trunk/basezym/progsqc/actor.qc
===================================================================
--- trunk/basezym/progsqc/actor.qc	2007-11-18 02:52:01 UTC (rev 84)
+++ trunk/basezym/progsqc/actor.qc	2007-11-20 07:20:56 UTC (rev 85)
@@ -7,6 +7,7 @@
 .entity actorpart_weapon;
 .entity actorpart_viewweapon;
 .entity actorpart_hand;
+.entity actorpart_jetpacktrail;
 
 float ACTORTYPE_INVALID = 0;
 float ACTORTYPE_CLASS1 = 1;
@@ -120,8 +121,13 @@
 		self.actorpart_hand.classname = "actorpart_hand";
 		self.actorpart_hand.think = actor_part_hand_think;
 		self.actorpart_hand.nextthink = time;
+		
+		self.actorpart_jetpacktrail = spawn();
 	}
-
+	setmodel(self.actorpart_jetpacktrail,"models/players/jetpack_tracer.mdl");
+	setattachment(self.actorpart_jetpacktrail, self.actorpart_torso, "tag_jetpack");
+	self.actorpart_jetpacktrail.effects = self.actorpart_jetpacktrail.effects | EF_NODRAW;
+	
 	setmodel(self, strcat(self.playerclass.modeldir, "/lower", self.playerclass.modelext));
 	setmodel(self.actorpart_torso, strcat(self.playerclass.modeldir, "/upper", self.playerclass.modelext));
 	setmodel(self.actorpart_head, strcat(self.playerclass.modeldir, "/head", self.playerclass.modelext));
@@ -227,6 +233,7 @@
 
 .float weapon_oldbutton0;
 .float weapon_oldbutton3;
+.float weapon_oldbutton7;
 .float lowerguntime;
 void(float animdone) viewweapon_animframefunc =
 {
@@ -301,9 +308,12 @@
 			weapon_state(WS_FIRE1);
 		else if (self.button3 && iteminfo_weapon_canfire2 && (!self.weapon_oldbutton3 || !(iteminfo_ammo2flags & PROJECTILEFLAG_SEMIAUTOMATIC)))
 			weapon_state(WS_FIRE2);
+		else if (self.button7 && iteminfo_weapon_canfire1 && (!self.weapon_oldbutton7))
+			weapon_state(WS_FIRE3);
 	}
 	self.weapon_oldbutton0 = self.button0;
 	self.weapon_oldbutton3 = self.button3;
+	self.weapon_oldbutton7 = self.button7;
 	self = oldself;
 };
 
@@ -354,6 +364,12 @@
 		self.viewmodelchange = self.viewmodelchange + iteminfo_ammo2viewmodelpush;
 		weapon_fire(TRUE);
 	}
+	else if (newstate == WS_FIRE3)
+	{
+	 	Inventory_GetItemInfo(self, ITEMTYPE_ITEM1);
+		anim_start(self.actorpart_torso, self.playerclass.actoranim_TORSO_ATTACK, ANIMTYPE_IDLE, torso_animframefunc);
+		weapon_fire(FALSE);
+	}
 	else if (newstate == WS_RELOAD)
 	{
 		anim_start(self.actorpart_viewweapon, iteminfo_weapon_viewmodelanim_reload, ANIMTYPE_IDLE, viewweapon_animframefunc);
@@ -456,10 +472,9 @@
 	}
 
 	if (self.unlimitedinventory == 0)
-	if (self.weaponitem >= ITEMTYPE_ITEM1)
+	if (iteminfo_ammotype < ITEMTYPE_AMMO1) // then it's an item
 	{
-	   Inventory_ModifyItem(self, self.weaponitem, 0 - mintofire, 0);
- 	   Item_Spawn(self.weaponitem,1,0,self.origin,'300 0 0',0,1,world);
+	   Inventory_ModifyItem(self, ITEMTYPE_ITEM1 + self.itemselected - 1, 0 - mintofire, 0);
 	}
 	else
 	{

Modified: trunk/basezym/progsqc/dpextensions.qc
===================================================================
--- trunk/basezym/progsqc/dpextensions.qc	2007-11-18 02:52:01 UTC (rev 84)
+++ trunk/basezym/progsqc/dpextensions.qc	2007-11-20 07:20:56 UTC (rev 85)
@@ -378,7 +378,7 @@
 .float button4;
 .float button5;
 .float button6;
-//.float button7;
+.float button7;
 //.float button8;
 //description:
 //set to the state of the +button3, +button4, +button5, +button6, +button7, and +button8 buttons from the client, this does not involve protocol changes (the extra 6 button bits were simply not used).

Modified: trunk/basezym/progsqc/gamedefs.qc
===================================================================
--- trunk/basezym/progsqc/gamedefs.qc	2007-11-18 02:52:01 UTC (rev 84)
+++ trunk/basezym/progsqc/gamedefs.qc	2007-11-20 07:20:56 UTC (rev 85)
@@ -7,6 +7,8 @@
 
 .float itemitemtype;
 
+.float itemselected;
+
 .vector viewmodelchange;
 .vector viewmodeldiff;
 

Modified: trunk/basezym/progsqc/inventory.qc
===================================================================
--- trunk/basezym/progsqc/inventory.qc	2007-11-18 02:52:01 UTC (rev 84)
+++ trunk/basezym/progsqc/inventory.qc	2007-11-20 07:20:56 UTC (rev 85)
@@ -32,11 +32,12 @@
 float WS_IDLE = 0;
 float WS_FIRE1 = 1;
 float WS_FIRE2 = 2;
-float WS_RELOAD = 3;
-float WS_LOWER = 4;
-float WS_RAISE = 5;
-float WS_TURNON = 6;
-float WS_TURNOFF = 7;
+float WS_FIRE3 = 4;
+float WS_RELOAD = 5;
+float WS_LOWER = 6;
+float WS_RAISE = 7;
+float WS_TURNON = 8;
+float WS_TURNOFF = 9;
 
 .float weaponitem;
 .float weaponstate;
@@ -210,7 +211,7 @@
 	iteminfo_weapon_rank = 0;
 	
 	
-	if (itemtype < ITEMTYPE_ITEM1)
+	if (itemtype < ITEMTYPE_AMMO1)
 	{
 	   	// set the settings for all weapons
 		iteminfo_quantitymax = 1;
@@ -221,9 +222,21 @@
 		
 		string wname;
 		if (itemtype < ITEMTYPE_AI_WEAP1)
+		{
 		   wname = strcat("g_weap",ftos(itemtype + 1));
+		   iteminfo_ammotype = cvar(wname,"_ammotype") + ITEMTYPE_AMMO1 - 1;
+		}
+		else if (itemtype < ITEMTYPE_ITEM1)
+		{
+		   wname = strcat("g_ai_weap",ftos(itemtype - ITEMTYPE_AI_WEAP1 + 1)); 
+		   iteminfo_ammotype = cvar(wname,"_ammotype") + ITEMTYPE_AMMO1 - 1;
+		}
 		else
-		   wname = strcat("g_ai_weap",ftos(itemtype - ITEMTYPE_AI_WEAP1 + 1));  
+		{
+	 		wname = strcat("g_item",ftos(itemtype - ITEMTYPE_ITEM1 + 1)); 
+		 	iteminfo_quantitymax = cvar(wname,"_quantitymax");
+			iteminfo_ammotype = itemtype;					  // so the firing code knows it's a item
+		}
 		
 		iteminfo_ammo1damagetype = DAMAGETYPE_WEAP1 + itemtype;
 		iteminfo_ammo2damagetype = DAMAGETYPE_WEAP1 + itemtype;
@@ -234,7 +247,6 @@
 		iteminfo_pickupmodel = cvar_string(wname,"_pickupmodel");
 		iteminfo_viewmodeloffset = stov(cvar_string(wname,"_viewmodeloffset"));
 		
-		iteminfo_ammotype = cvar(wname,"_ammotype") + ITEMTYPE_AMMO1 - 1;
 		iteminfo_ammomax = cvar(wname,"_ammomax");
 		iteminfo_ammoinventorymax = cvar(wname,"_ammoinventorymax");
 		
@@ -242,7 +254,7 @@
 		iteminfo_ammo1speeds = stov(cvar_string(wname,"_ammo1speeds"));
 		iteminfo_ammo1model = cvar_string(wname,"_ammo1model");
 		iteminfo_ammo1firesound = cvar_string(wname,"_ammo1firesound");
-		//iteminfo_ammo1explodesound = strzone(cvar_string(wname,"_ammo1explodesound")); // BAD
+		//iteminfo_ammo1explodesound = strzone(cvar_string(wname,"_ammo1explodesound"));
 		iteminfo_ammo1flags = cvar(wname,"_ammo1flags");
 		iteminfo_ammo1numberof = cvar(wname,"_ammo1numberof");
 		iteminfo_ammo1recoil = cvar(wname,"_ammo1recoil");
@@ -261,7 +273,7 @@
 		iteminfo_ammo2speeds = stov(cvar_string(wname,"_ammo2speeds"));
 		iteminfo_ammo2model = cvar_string(wname,"_ammo2model");
 		iteminfo_ammo2firesound = cvar_string(wname,"_ammo2firesound");
-		//iteminfo_ammo2explodesound = strzone(cvar_string(wname,"_ammo2explodesound")); // BAD
+		//iteminfo_ammo2explodesound = strzone(cvar_string(wname,"_ammo2explodesound"));
 		iteminfo_ammo2flags = cvar(wname,"_ammo2flags");
 		iteminfo_ammo2numberof = cvar(wname,"_ammo2numberof");
 		iteminfo_ammo2recoil = cvar(wname,"_ammo2recoil");
@@ -276,20 +288,6 @@
 		iteminfo_ammo2viewmodelpush = stov(cvar_string(wname,"_ammo2viewmodelpush"));
 		iteminfo_weapon_viewmodelanim_fire2 = stov(cvar_string(wname,"_fire2"));
 	}
-	else if (itemtype < ITEMTYPE_AMMO1)
-	{
-	 	wname = strcat("g_item",ftos(itemtype - ITEMTYPE_ITEM1 + 1));
-		
-		iteminfo_name = cvar_string(wname,"_name");
-		iteminfo_model =  cvar_string(wname,"_model");
-		iteminfo_pickupsound = cvar_string(wname,"_pickupsound");
-		iteminfo_ammo1firesound = cvar_string(wname,"_firesound");
-		iteminfo_ammo1explodesound = cvar_string(wname,"_explodesound");
-		iteminfo_ammo1bouncesound =  cvar_string(wname,"_bouncesound");
-		iteminfo_quantitymax = cvar(wname,"_quantitymax");
-		iteminfo_ammo1speeds = stov(cvar_string(wname,"_speeds"));
-		iteminfo_ammotype = itemtype;
-	}
 	else if (itemtype < ITEMTYPE_TOTAL)
 	{
 		wname = strcat("g_ammo",ftos(itemtype - ITEMTYPE_AMMO1 + 1));
@@ -306,11 +304,8 @@
 		if (iteminfo_ammotype == itemtype)
 		{
 			// usable items such as flares
-			iteminfo_ammo1flags = PROJECTILEFLAG_SEMIAUTOMATIC;
 			iteminfo_ammo1minimumtofire = 1;
-			iteminfo_ammo1model = iteminfo_model;
 			iteminfo_ammomax = iteminfo_ammo1minimumtofire;
-			iteminfo_ammoinventorymax = iteminfo_quantitymax - iteminfo_ammo1minimumtofire;
 			if (iteminfo_quantity >= iteminfo_ammo1minimumtofire)
 			{
 				iteminfo_ammo = iteminfo_ammo1minimumtofire;
@@ -380,6 +375,8 @@
 		if (iteminfo_model != "") precache_model(iteminfo_model);
 		if (iteminfo_ammo1model != "") precache_model(iteminfo_ammo1model);
 		if (iteminfo_ammo2model != "") precache_model(iteminfo_ammo2model);
+		if (iteminfo_ammo1tracermodel != "") precache_model(iteminfo_ammo1tracermodel);
+		if (iteminfo_ammo2tracermodel != "") precache_model(iteminfo_ammo2tracermodel);
 		if (iteminfo_pickupsound != "") precache_sound(iteminfo_pickupsound);
 		if (iteminfo_ammo1firesound != "") precache_sound(iteminfo_ammo1firesound);
 		if (iteminfo_ammo1explodesound != "") precache_sound(iteminfo_ammo1explodesound);

Modified: trunk/basezym/progsqc/player.qc
===================================================================
--- trunk/basezym/progsqc/player.qc	2007-11-18 02:52:01 UTC (rev 84)
+++ trunk/basezym/progsqc/player.qc	2007-11-20 07:20:56 UTC (rev 85)
@@ -188,6 +188,8 @@
 		  		Inventory_GetItemInfo(pc, startingweapon);
 		  		Inventory_ModifyItem(pc, startingweapon, 1, iteminfo_ammomax);
 		 }
+		 Inventory_GetItemInfo(pc, ITEMTYPE_ITEM1);
+		 Inventory_ModifyItem(pc, ITEMTYPE_ITEM1, 10, 0);
 	}
 };
 
@@ -266,6 +268,8 @@
 	self.jumpspeed = pc.jumpspeed;
 	self.speedratio = pc.speedratio;
 	
+	self.itemselected = 1;
+	
 	setsize (self, pc.mins, pc.maxs);
 	Inventory_CloneFromInventory(self, pc);
 	
@@ -471,7 +475,7 @@
 	{
 	   self.viewmodelchange_x = self.viewmodelchange_x - (self.movement_x / 1000);
 	   self.viewmodelchange_y = self.viewmodelchange_y - (self.movement_y / 1000);
-	   self.viewmodelchange_z = self.viewmodelchange_z - (self.velocity_z / 1000);
+	   self.viewmodelchange_z = self.viewmodelchange_z - (self.velocity_z / 2000);
 	
 	   Inventory_GetItemInfo(self, self.weaponitem);
 	   self.viewmodeldiff = iteminfo_viewmodeloffset - self.viewmodelchange;
@@ -530,6 +534,11 @@
 	{
 		if (self.button5)
 		{
+			if ((self.jetpack_fuel > 50) && (self.actorpart_jetpacktrail.effects & EF_NODRAW))
+				self.actorpart_jetpacktrail.effects = self.actorpart_jetpacktrail.effects - EF_NODRAW;
+			else if (self.jetpack_fuel < 50)
+				self.actorpart_jetpacktrail.effects = self.actorpart_jetpacktrail.effects | EF_NODRAW;
+				
 			self.jetpack_fuel = max(0, self.jetpack_fuel - self.jetpack_use * frametime);
 			if (!self.jetpackactive)
 			{
@@ -544,6 +553,7 @@
 			    self.jetpackacc = self.jetpack_accbase;
 				sound(self, CHAN_BODY, strcat(self.playerclass.sounddir, "/jetpackstop.wav"), 1, ATTN_NORM);
 				self.jetpackactive = FALSE;
+				self.actorpart_jetpacktrail.effects = self.actorpart_jetpacktrail.effects | EF_NODRAW;
 			}
 		}
 	}




More information about the zymotic-commits mailing list