Make actor aim vertical: Difference between revisions
Jump to navigation
Jump to search
edited for grammar (mb) |
Mblackwell (talk | contribs) mNo edit summary |
||
(One intermediate revision by one other user not shown) | |||
Line 1: | Line 1: | ||
In this example, the [[actor]] will find the closest LIZTROOP actor within 2048 units and calculate the vertical angle it needs to aim at. This code is an example of how to use the [[zshoot]] command to create friendly bots and other similar effects. The following does not contain the [[gamevar]] definitions, which must be placed outside of the actor code. | In this example, the [[actor]] will find the closest LIZTROOP actor within 2048 units and calculate the vertical angle it needs to aim at. This code is an example of how to use the [[zshoot]] command to create friendly bots and other similar effects. The following does not contain the [[gamevar]] definitions, which must be placed outside of the actor code. | ||
<pre> | |||
findnearactor LIZTROOP 2048 ACTOR2 | |||
ifvarn ACTOR2 -1 | |||
{ | |||
ldist TEMP THISACTOR ACTOR2 | |||
getprojectile[SHOTSPARK1].vel PROJECTILE_VEL | |||
ifn PROJECTILE_VEL 0 | |||
div TEMP PROJECTILE_VEL // distance / projectile velocity = the amount of tics it would take for the projectile to reach the player's position (regardless of Z coordinate) | |||
getactor[THISACTOR].z TEMP2 | |||
getactor[ACTOR2].z TEMP3 | |||
sub TEMP3 TEMP2 | |||
ifn TEMP 0 | |||
div TEMP3 TEMP | |||
zshoot TEMP3 SHOTSPARK1 | |||
} | |||
</pre> | |||
Previous Example, for use with hitscan: | |||
<pre> | <pre> |
Latest revision as of 19:01, 29 December 2020
In this example, the actor will find the closest LIZTROOP actor within 2048 units and calculate the vertical angle it needs to aim at. This code is an example of how to use the zshoot command to create friendly bots and other similar effects. The following does not contain the gamevar definitions, which must be placed outside of the actor code.
findnearactor LIZTROOP 2048 ACTOR2 ifvarn ACTOR2 -1 { ldist TEMP THISACTOR ACTOR2 getprojectile[SHOTSPARK1].vel PROJECTILE_VEL ifn PROJECTILE_VEL 0 div TEMP PROJECTILE_VEL // distance / projectile velocity = the amount of tics it would take for the projectile to reach the player's position (regardless of Z coordinate) getactor[THISACTOR].z TEMP2 getactor[ACTOR2].z TEMP3 sub TEMP3 TEMP2 ifn TEMP 0 div TEMP3 TEMP zshoot TEMP3 SHOTSPARK1 }
Previous Example, for use with hitscan:
findnearactor LIZTROOP 2048 ACTOR2 ifvarn ACTOR2 -1 { ldist TEMP THISACTOR ACTOR2 getactor[THISACTOR].z TEMP2 subvar TEMP2 8192 // Offset the Z. Assumes the center of the actor is the same as the player getactor[ACTOR2].z TEMP3 subvar TEMP3 8192 // Offset the Z. assumes the center of the actor is the same as the player subvarvar TEMP3 TEMP2 shiftvarl TEMP3 8 divvarvar TEMP3 TEMP zshoot TEMP3 SHOTSPARK1 }