engine

This namespace provides methods that allow you to interact with the iw3 engine through Anvil.

Methods

engine.addEventListener(name, callable)

  • event - The type of event you want to listen for

  • callable - A defined function or a lambda

This method registers a eventlistener for the specified event, that is a function that will be executed every time the event occurs.

Example:

This will print whats up every time a new frame is rendered.

Available Events

  • render - Emitted when a new frame is being rendered

  • onBeforeEndScene - Emitted right before a new frame is being rendered

  • onAfterEndScene - Emitted after a new frame has been rendered

  • onBeforeCL_WritePacket - Emitted right before the game sends a packet to the server

  • onAfterCL_CreateNewCommands - Emitted after a new user command has been created

  • onLoad - Emitted when you load your position

  • onSave - Emitted when you save your position

  • onBounce - Emitted when you bounce

engine.removeEventListener(name)

  • event - The name of the event you dont want to listen/react to anymore

Removes a previously attachted event listener by the name of the event.

Example:

engine.removeAllEventListeners()

Removes all attached event listeners for the current script.

Example:

engine.getServerName()

Returns the name of the server you're currently connected to.

Example:

engine.getPlayerState()

Returns the predicted playerState.

Example:

engine.getRefDef()

Returns the refDef object.

Example:

engine.getCG()

Returns the cg object.

Example:

engine.getDvar(dvarName)

Returns the dvar you requested. You can then change the values of the dvar with methods.

Example:

engine.getUserCmd()

Returns the latest user command.

Example:

engine.getPreviousUserCmd()

Returns the previous user command. Use previous user cmd's for silent stuff.

Example:

engine.execCommand(command)

  • command - A console command to execute

Executes the given command

Example:

engine.getPlayerList()

Returns a list of players in the server as a list of clientEntity's

Example:

engine.getLocalClientEntity()

Returns the clientEntity for yourself.

Example:

engine.getClosestPlayer()

Returns the closest player as a clientEntity

Example:

engine.isVisible(target)

  • target - The position as a Vec3 to check if it is visible

Returns true if target is visible from your currnent position, false otherwise.

Example:

engine.trace(start, end)

Performs a ray trace from start to end and returns a trace object.

Example:

engine.getForwardVector(viewangles)

Obtain the forward vector as a Vec3 from the given viewangles as a Vec3

Example:

engine.angle2short(angle)

Converts the decimal angle to a 2 byte integer representation.

A unsigned 2 byte integer has a range from 0 to 65535. CoD4 is based on the Quake engine. Back in the 90's they optimized the bandwidth needed to communicate with the server. Instead of sending your viewangles as 3 floats (12 byte), they're sent as 2 byte shorts each, reducing the bandwidth by 50%. If you're working with usercmd's then please be aware that the viewangles there are in the short representation. Things to consider: Since a full circle of 360 degrees are mapped onto a finite interval of 0 - 65535, the precision suffers. The minimum change of a viewangle is:

360.0 / 65536 = 0.0054931640625

Example:

engine.short2angle(short)

Converts a 2 byte integer representation of an angle back to a float.

Example:

engine.getWindowSize()

Returns the CoD4 window size as a Vec2

Example:

engine.notify(message)

Displays a notification on the right hand side of the screen with the given message.

Example:

engine.disconnect()

Disconnect from current server.

Example:

engine.setStat(id, value)

Sets a stat id to a given value (Equivalent of GSC player setStat).

id- The id of the stat

value- The value you wish to set

Example:

engine.isVisible(target)

  • target - The position as a Vec3 to check if it is visible

Returns true if target is visible from your currnent position, false otherwise.

Example:

engine.getScriptId()

Returns the id of the current script. Use this to uniquely identify your script. Useful for ImGui Window ID's etc.

Example:

Last updated