⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weapons.htm

📁 Quake 的 各 种 文 档 格 式 说 明
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<html><head><title>weapons.qc</title></head><body bgcolor="#C0F0D0">
<base target=examine>
<pre>
<i>/*
*/</i>

<a href="qc-types.htm#void">void</a> (<a href="qc-types.htm#entity">entity</a> targ, <a href="qc-types.htm#entity">entity</a> inflictor, <a href="qc-types.htm#entity">entity</a> attacker, <a href="qc-types.htm#float">float</a> damage) <a href="combat.htm#T_Damage">T_Damage</a>;
<a href="qc-types.htm#void">void</a> () <a href="player.htm#player_run">player_run</a>;
<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#entity">entity</a> bomb, <a href="qc-types.htm#entity">entity</a> attacker, <a href="qc-types.htm#float">float</a> rad, <a href="qc-types.htm#entity">entity</a> ignore) <a href="combat.htm#T_RadiusDamage">T_RadiusDamage</a>;
<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#vector">vector</a> org, <a href="qc-types.htm#vector">vector</a> vel, <a href="qc-types.htm#float">float</a> damage) <a href="weapons.htm#SpawnBlood">SpawnBlood</a>;
<a href="qc-types.htm#void">void</a>() <a href="weapons.htm#SuperDamageSound">SuperDamageSound</a>;


<i>// called by worldspawn</i>
<a href="qc-types.htm#void">void</a>() <b>W_Precache</b><a name="W_Precache">=</a>
{
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/r_exp3.wav"</b>);	<i>// new rocket explosion</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/rocket1i.wav"</b>);	<i>// spike gun</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/sgun1.wav"</b>);
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/guncock.wav"</b>);	<i>// player shotgun</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/ric1.wav"</b>);	<i>// ricochet (used in c code)</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/ric2.wav"</b>);	<i>// ricochet (used in c code)</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/ric3.wav"</b>);	<i>// ricochet (used in c code)</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/spike2.wav"</b>);	<i>// super spikes</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/tink1.wav"</b>);	<i>// spikes tink (used in c code)</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/grenade.wav"</b>);	<i>// grenade launcher</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/bounce.wav"</b>);		<i>// grenade bounce</i>
	<a href="qc-built.htm#precache_sound">precache_sound</a> (<b>"weapons/shotgn2.wav"</b>);	<i>// super shotgun</i>
};

<a href="qc-types.htm#float">float</a>() <b>crandom</b><a name="crandom">=</a>
{
	<b>return</b> 2*(<a href="qc-built.htm#random">random</a>() - 0.5);
};

<i>/*
================
W_FireAxe
================
*/</i>

<a href="qc-types.htm#void">void</a>() <b>W_FireAxe</b><a name="W_FireAxe">=</a>
{
	<b>local</b>	<a href="qc-types.htm#vector">vector</a>	source;
	<b>local</b>	<a href="qc-types.htm#vector">vector</a>	org;

	source = <a href="qc-glob.htm#self">self</a>.<a href="qc-enty.htm#dot_origin">origin</a> + '0 0 16';
	<a href="qc-built.htm#traceline">traceline</a> (source, source + <a href="qc-built.htm#v_forward">v_forward</a>*64, <a href="defs.htm#FALSE">FALSE</a>, <a href="qc-glob.htm#self">self</a>);
	<b>if</b> (<a href="qc-built.htm#trace_fraction">trace_fraction</a> == 1.0)
		<b>return</b>;
	
	org = <a href="qc-built.htm#trace_endpos">trace_endpos</a> - <a href="qc-built.htm#v_forward">v_forward</a>*4;

	<b>if</b> (<a href="qc-built.htm#trace_ent">trace_ent</a>.<a href="qc-enty.htm#dot_takedamage">takedamage</a>)
	{
		<a href="qc-built.htm#trace_ent">trace_ent</a>.<a href="qc-enty.htm#dot_axhitme">axhitme</a> = 1;
		<a href="weapons.htm#SpawnBlood">SpawnBlood</a> (org, '0 0 0', 20);
		<a href="combat.htm#T_Damage">T_Damage</a> (<a href="qc-built.htm#trace_ent">trace_ent</a>, <a href="qc-glob.htm#self">self</a>, <a href="qc-glob.htm#self">self</a>, 20);
	}
	<b>else</b>
	{	<i>// hit wall</i>
		<a href="qc-built.htm#sound">sound</a> (<a href="qc-glob.htm#self">self</a>, <a href="qc-defs.htm#CHAN_WEAPON">CHAN_WEAPON</a>, <b>"player/axhit2.wav"</b>, 1, <a href="qc-defs.htm#ATTN_NORM">ATTN_NORM</a>);
		<a href="qc-netf.htm#WriteByte">WriteByte</a> (<a href="qc-net.htm#MSG_BROADCAST">MSG_BROADCAST</a>, <a href="qc-net.htm#SVC_TEMPENTITY">SVC_TEMPENTITY</a>);
		<a href="qc-netf.htm#WriteByte">WriteByte</a> (<a href="qc-net.htm#MSG_BROADCAST">MSG_BROADCAST</a>, <a href="defs.htm#TE_GUNSHOT">TE_GUNSHOT</a>);
		<a href="qc-netf.htm#WriteCoord">WriteCoord</a> (<a href="qc-net.htm#MSG_BROADCAST">MSG_BROADCAST</a>, org_x);
		<a href="qc-netf.htm#WriteCoord">WriteCoord</a> (<a href="qc-net.htm#MSG_BROADCAST">MSG_BROADCAST</a>, org_y);
		<a href="qc-netf.htm#WriteCoord">WriteCoord</a> (<a href="qc-net.htm#MSG_BROADCAST">MSG_BROADCAST</a>, org_z);
	}
};


<i>//============================================================================</i>


<a href="qc-types.htm#vector">vector</a>() <b>wall_velocity</b><a name="wall_velocity">=</a>
{
	<b>local</b> <a href="qc-types.htm#vector">vector</a>	vel;
	
	vel = <a href="qc-built.htm#normalize">normalize</a> (<a href="qc-glob.htm#self">self</a>.<a href="qc-enty.htm#dot_velocity">velocity</a>);
	vel = <a href="qc-built.htm#normalize">normalize</a>(vel + <a href="qc-built.htm#v_up">v_up</a>*(<a href="qc-built.htm#random">random</a>()- 0.5) + <a href="qc-built.htm#v_right">v_right</a>*(<a href="qc-built.htm#random">random</a>()- 0.5));
	vel = vel + 2*<a href="qc-built.htm#trace_plane_normal">trace_plane_normal</a>;
	vel = vel * 200;
	
	return vel;
};


<i>/*
================
SpawnMeatSpray
================
*/</i>

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#vector">vector</a> org, <a href="qc-types.htm#vector">vector</a> vel) <b>SpawnMeatSpray</b><a name="SpawnMeatSpray">=</a>
{
	<b>local</b>	<a href="qc-types.htm#entity">entity</a> missile, mpuff;
	<b>local</b>	<a href="qc-types.htm#vector">vector</a>	org;

	missile = <a href="qc-built.htm#spawn">spawn</a> ();
	missile.<a href="qc-enty.htm#dot_owner">owner</a> = <a href="qc-glob.htm#self">self</a>;
	missile.<a href="qc-enty.htm#dot_movetype">movetype</a> = <a href="qc-defs.htm#MOVETYPE_BOUNCE">MOVETYPE_BOUNCE</a>;
	missile.<a href="qc-enty.htm#dot_solid">solid</a> = <a href="qc-defs.htm#SOLID_NOT">SOLID_NOT</a>;

	<a href="qc-built.htm#makevectors">makevectors</a> (<a href="qc-glob.htm#self">self</a>.<a href="qc-enty.htm#dot_angles">angles</a>);

	missile.<a href="qc-enty.htm#dot_velocity">velocity</a> = vel;
	missile.velocity_z = missile.velocity_z + 250 + 50*<a href="qc-built.htm#random">random</a>();

	missile.<a href="qc-enty.htm#dot_avelocity">avelocity</a> = '3000 1000 2000';
	
<i>// set missile duration</i>
	missile.<a href="qc-enty.htm#dot_nextthink">nextthink</a> = <a href="qc-glob.htm#time">time</a> + 1;
	missile.<a href="qc-enty.htm#dot_think">think</a> = <a href="subs.htm#SUB_Remove">SUB_Remove</a>;

	<a href="qc-built.htm#setmodel">setmodel</a> (missile, <b>"progs/zom_gib.mdl"</b>);
	<a href="qc-built.htm#setsize">setsize</a> (missile, '0 0 0', '0 0 0');		
	<a href="qc-built.htm#setorigin">setorigin</a> (missile, org);
};

<i>/*
================
SpawnBlood
================
*/</i>

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#vector">vector</a> org, <a href="qc-types.htm#vector">vector</a> vel, <a href="qc-types.htm#float">float</a> damage) <b>SpawnBlood</b><a name="SpawnBlood">=</a>
{
	<a href="qc-built.htm#particle">particle</a> (org, vel*0.1, 73, damage*2);
};

<i>/*
================
spawn_touchblood
================
*/</i>

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#float">float</a> damage) <b>spawn_touchblood</b><a name="spawn_touchblood">=</a>
{
	<b>local</b> <a href="qc-types.htm#vector">vector</a>	vel;

	vel = <a href="weapons.htm#wall_velocity">wall_velocity</a> () * 0.2;
	<a href="weapons.htm#SpawnBlood">SpawnBlood</a> (<a href="qc-glob.htm#self">self</a>.<a href="qc-enty.htm#dot_origin">origin</a> + vel*0.01, vel, damage);
};


<i>/*
================
SpawnChunk
================
*/</i>

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#vector">vector</a> org, <a href="qc-types.htm#vector">vector</a> vel) <b>SpawnChunk</b><a name="SpawnChunk">=</a>
{
	<a href="qc-built.htm#particle">particle</a> (org, vel*0.02, 0, 10);
};

<i>/*
==============================================================================

MULTI-DAMAGE

Collects multiple small damages into a single damage

==============================================================================
*/</i>


<a href="qc-types.htm#entity">entity</a> <b><a name="multi_ent">multi_ent</a></b>;
<a href="qc-types.htm#float">float</a> <b><a name="multi_damage">multi_damage</a></b>;

<a href="qc-types.htm#void">void</a>() <b>ClearMultiDamage</b><a name="ClearMultiDamage">=</a>
{
	<a href="weapons.htm#multi_ent">multi_ent</a> = <a href="qc-glob.htm#world">world</a>;
	<a href="weapons.htm#multi_damage">multi_damage</a> = 0;
};

<a href="qc-types.htm#void">void</a>() <b>ApplyMultiDamage</b><a name="ApplyMultiDamage">=</a>
{
	<b>if</b> (!<a href="weapons.htm#multi_ent">multi_ent</a>)
		<b>return</b>;
	<a href="combat.htm#T_Damage">T_Damage</a> (<a href="weapons.htm#multi_ent">multi_ent</a>, <a href="qc-glob.htm#self">self</a>, <a href="qc-glob.htm#self">self</a>, <a href="weapons.htm#multi_damage">multi_damage</a>);
};

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#entity">entity</a> hit, <a href="qc-types.htm#float">float</a> damage) <b>AddMultiDamage</b><a name="AddMultiDamage">=</a>
{
	<b>if</b> (!hit)
		<b>return</b>;
	
	<b>if</b> (hit != <a href="weapons.htm#multi_ent">multi_ent</a>)
	{
		<a href="weapons.htm#ApplyMultiDamage">ApplyMultiDamage</a> ();
		<a href="weapons.htm#multi_damage">multi_damage</a> = damage;
		<a href="weapons.htm#multi_ent">multi_ent</a> = hit;
	}
	<b>else</b>
		<a href="weapons.htm#multi_damage">multi_damage</a> = <a href="weapons.htm#multi_damage">multi_damage</a> + damage;
};

<i>/*
==============================================================================

BULLETS

==============================================================================
*/</i>


<i>/*
================
TraceAttack
================
*/</i>

<a href="qc-types.htm#void">void</a>(<a href="qc-types.htm#float">float</a> damage, <a href="qc-types.htm#vector">vector</a> dir) <b>TraceAttack</b><a name="TraceAttack">=</a>
{
	<b>local</b>	<a href="qc-types.htm#vector">vector</a>	vel, org;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -