User Tools

Site Tools



argus

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
argus [2020/01/27 23:01] rikudouargus [2021/01/16 00:43] rikudou
Line 1: Line 1:
-<html+<WRAP center round alert 60%
-<span style="color:red;font-size:300%;">ONLY WORKS ON PATCH 5.1 AND HIGHER</span> +This addon requires TensorCore! Make sure you have that installed from the Minion store
-</html>+</WRAP>
  
 ====== About ====== ====== About ======
Line 7: Line 7:
  
 Please join my discord if you require support, you can also view other addons created that use Argus here: https://discord.gg/bVABzBA Please join my discord if you require support, you can also view other addons created that use Argus here: https://discord.gg/bVABzBA
 +
 +**If you are a new user, please watch this video first:** https://www.youtube.com/watch?v=iyo0hs5_-dA
  
 Because the API Argus offers is so powerful, for safety reasons, Argus will not be updated immediately for new raid tiers. Here is how long each type of content will take to update: Because the API Argus offers is so powerful, for safety reasons, Argus will not be updated immediately for new raid tiers. Here is how long each type of content will take to update:
Line 15: Line 17:
  
 ====== Coming Soon ====== ====== Coming Soon ======
-Tether detection. Have the offsets reversed, just need to find a place where I can get tethers reliably and finish reversing the functions. 
- 
 Persistent ground effect detection (like toxic vomit from brayflox dungeon) Persistent ground effect detection (like toxic vomit from brayflox dungeon)
 +
 +====== What It Does Not Detect ======
 +Cones - **cone arc angle** outside of telegraphed ones. The hit detection for untelegraphed cones is done server side and thus the angle of the cones is never sent to client nor is it stored in the client.
 +
 +Torus/Donuts - **inner circle radius** outside of telegraphed aoes (but also some telegraphed aoes). The hit detection for untelegraphed tori/donuts is done server side and thus the radius of the safe inner circle is never sent to client nor is it stored in the client.
  
 ====== Documentation ====== ====== Documentation ======
 //italics// = type, __underline__ = optional //italics// = type, __underline__ = optional
-===== Functions =====+===== Detection Functions =====
   * **''Argus.getCurrentGroundAOEs()''**   * **''Argus.getCurrentGroundAOEs()''**
     * Returns //table GroundAOE// of current AOEs that are cast on the ground where each **key is the entityID** source, and value is the GroundAOE structure (listed below). These are **not** attached to an entity (they do not originate from an entity centerpoint). **Also returns AOEs before the telegraphs are drawn, and returns AOEs with no telegraphs.**     * Returns //table GroundAOE// of current AOEs that are cast on the ground where each **key is the entityID** source, and value is the GroundAOE structure (listed below). These are **not** attached to an entity (they do not originate from an entity centerpoint). **Also returns AOEs before the telegraphs are drawn, and returns AOEs with no telegraphs.**
   * **''Argus.getCurrentDirectionalAOEs()''**   * **''Argus.getCurrentDirectionalAOEs()''**
     * Returns //table DirectionalAOE// of current AOEs that are on the ground where each **key is the entityID** source, and value is the //DirectionalAOE// structure (listed below) and are attached to an entity (they originate from the source entity's center point). **Most commonly used for line AOEs**, conals, and donuts, but also includes circles. **Also returns AOEs before the telegraphs are drawn, also returns AOEs with no telegraphs.**     * Returns //table DirectionalAOE// of current AOEs that are on the ground where each **key is the entityID** source, and value is the //DirectionalAOE// structure (listed below) and are attached to an entity (they originate from the source entity's center point). **Most commonly used for line AOEs**, conals, and donuts, but also includes circles. **Also returns AOEs before the telegraphs are drawn, also returns AOEs with no telegraphs.**
 +  * **''Argus.getCurrentTethers()''**
 +    * Returns //table// where each key is //number// entityID and each value is //table// tether. The list is all active tethers/chains/links between 2 entities. Each tether table has the following values: //number// type, //number// targetID. This type is similar to overhead marker types, each type will have exactly the same animation for every instance that shares that type (ex type 2 tethers will always look the same). However, how or when the tether resolves, is not known to the client.
   * **''Argus.registerOnMarkerAdd(//function// func)''**   * **''Argus.registerOnMarkerAdd(//function// func)''**
     * Registers //func// into marker func list, and //func// will get called any time there is an overhead marker added to an entity. Function //func// should be defined with the following arguments: ''func(//number// entityID, //number// markerType)''. Argument //entityID// is the id of the entity to which the marker is being added to, and argument //markerType// is the marker type that is added to entity. Marker type is consistent across mechanics. A marker of type 2 will always have the same animation.     * Registers //func// into marker func list, and //func// will get called any time there is an overhead marker added to an entity. Function //func// should be defined with the following arguments: ''func(//number// entityID, //number// markerType)''. Argument //entityID// is the id of the entity to which the marker is being added to, and argument //markerType// is the marker type that is added to entity. Marker type is consistent across mechanics. A marker of type 2 will always have the same animation.
Line 32: Line 39:
   * **''Argus.registerOnEntityChannel(//function// func)''**   * **''Argus.registerOnEntityChannel(//function// func)''**
     * Registers //func// into entity channel func list. This func will get called any time the **server** sends a packet to the client, that entity has begun channeling. This means that the function is almost 100% reliable to use. Function //func// should be defined with the following arguments ''func(//number// entityID, //number// channelID, //number// targetID, //number// channelTimeMax)''.     * Registers //func// into entity channel func list. This func will get called any time the **server** sends a packet to the client, that entity has begun channeling. This means that the function is almost 100% reliable to use. Function //func// should be defined with the following arguments ''func(//number// entityID, //number// channelID, //number// targetID, //number// channelTimeMax)''.
 +
 +===== Draw Functions =====
   * **''Argus.rotatePosAroundPos(//table// originPos, //table// posToRotate, //number// angle)''**   * **''Argus.rotatePosAroundPos(//table// originPos, //table// posToRotate, //number// angle)''**
     * returns //table// with keys ''x, y, z'' of rotated pos. Argument ''originPos'' is the position the rotation should be around in a table with the keys x, y, z defined, and argument //posToRotate// is the world Pos to rotate. This function is most commonly used for getting the correct positions for line aoes. example usage for line aoe: <code lua>            local length, width = aoe.aoeLength, (aoe.aoeWidth / 2)     * returns //table// with keys ''x, y, z'' of rotated pos. Argument ''originPos'' is the position the rotation should be around in a table with the keys x, y, z defined, and argument //posToRotate// is the world Pos to rotate. This function is most commonly used for getting the correct positions for line aoes. example usage for line aoe: <code lua>            local length, width = aoe.aoeLength, (aoe.aoeWidth / 2)
Line 41: Line 50:
                 bottomright = RenderManager:WorldToScreen(Argus.rotatePosAroundPos({z = aoe.z, y = aoe.y, x = aoe.x}, {z = aoe.z + length, y = aoe.y, x = aoe.x - width}, aoe.heading)),                 bottomright = RenderManager:WorldToScreen(Argus.rotatePosAroundPos({z = aoe.z, y = aoe.y, x = aoe.x}, {z = aoe.z + length, y = aoe.y, x = aoe.x - width}, aoe.heading)),
             }</code>             }</code>
 +  * **''Argus.addCircleFilled(//number// x, //number// y, //number// z, //number// radius, //number// segments, //U32 Color// colorFill, //U32 Color// __colorOutline__, //number// __outlineThickness = 1.0__)''**
 +    * Draws a filled circle at **world coordinates** with the specified radius in radians. //U32 Color// can be retrieved from the function GUI:ColorConvertFloat4ToU32(). if colorOutline is not specified, then an outline will not be draw. Tip: You can set the alpha on colorFill to be 0 and specify an outline color with alpha > 0 to have only the outline drawn. Generally only 50 segments is needed to draw a circle that looks round. For performance reasons I would recommend not going above 50 segments.
 +  * **''Argus.addConeFilled(//number// x, //number// y, //number// z, //number// radius, //number// angle, //number// heading, //number// segments, //U32 Color// colorFill, //U32 Color// __colorOutline__, //number// __outlineThickness = 1.0__'')**
 +    * Draws a filled cone at **world coordinates** an arc angle of //angle// radians and a radius of //radius// radians. //U32 Color// can be retrieved from the function GUI:ColorConvertFloat4ToU32(). if colorOutline is not specified, then an outline will not be draw. Tip: You can set the alpha on colorFill to be 0 and specify an outline color with alpha > 0 to have only the outline drawn. Generally only 30 segments is needed to draw a circle that looks round. For performance reasons I would recommend not going above 30 segments.
 +  * **''Argus.addRectFilled(//number// x, //number// y, //number// z, //number// length, //number// width, //number// heading, //U32 Color// colorFill, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Draws a filled rectangle at **world coordinates** with //length// and //width// rotated around the center point //x, y, z// in the direction of //heading//. //U32 Color// can be retrieved from the function GUI:ColorConvertFloat4ToU32(). if colorOutline is not specified, then an outline will not be drawn. Tip: You can set the alpha on colorFill to be 0 and specify an outline color with alpha > 0 to have only the outline drawn.  This function is commonly used for drawing frontal line aoes.
 +  * **''Argus.addDonutFilled(//number// x, //number// y, //number// z, //number// radiusInner, //number// radiusOuter, //number// segments, //U32 Color// colorFill, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Draws a filled **torus** aka donut at **world coordinates** with an inner radius or //radiusInner// and an outer radius of //radiusOuter//. //U32 Color// can be retrieved from the function GUI:ColorConvertFloat4ToU32(). if colorOutline is not specified, then an outline will not be drawn. Tip: You can set the alpha on colorFill to be 0 and specify an outline color with alpha > 0 to have only the outline drawn. For performance reasons I would recommend not going above 50 segments, 50 segments is usually enough even for extremely large tori/donuts.
 +  * **''Argus.addCrossFilled(//number// x, //number// y, //number// z, //number// length, //number// width, //number// heading, //U32 Color// colorFill, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Draws a filled rectangle at **world coordinates** with //length// and //width// rotated around the center point //x, y, z// in the direction of //heading//. //U32 Color// can be retrieved from the function GUI:ColorConvertFloat4ToU32(). if colorOutline is not specified, then an outline will not be drawn. Tip: You can set the alpha on colorFill to be 0 and specify an outline color with alpha > 0 to have only the outline drawn.  This function is commonly used for drawing cross aoes (type 11).
 +  * **''Argus.addTimedCircleFilled(//number// timeout, //number// x, //number// y, //number// z, //number// radius, //number// segments, //table// rgbFill, //number// alphaMin, //number// alphaMax, //number// delay, //number// entityAttachID, //U32 Color// __colorOutline__, //number// __outlineThickness = 1.0__)''**
 +    * Adds a filled circle for specified time //timeout// in ms. Argument //rgbfill// is a table that consists of ''{r = 0, g = 0, b = 0}'', replacing the values with your specified color from a range of 0 - 1. If //entityAttachID// is specified, the circle will be attached to the position of the specified entity id. Also will return a //string// uuid.
 +  * **''Argus.addTimedRectFilled(//number// timeout, //number// x, //number// y, //number// z, //number// length, //number// width, //number// heading, //table// rgbFill, //number// alphaMin, //number//alphaMax, //number// delay, //number// entityAttachID, //number// targetAttachID, //bool// keepLength, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Adds a rectangle at position for //timeout// ms. Argument //rgbfill// is a table that consists of ''{r = 0, g = 0, b = 0}'', replacing the values with your specified color from a range of 0 - 1. If //entityAttachID// is specified, the circle will be attached to the position of the specified entity id. If //targetAttach// is specified, the rectangle will be drawn from it's source position (either specified or attached to entity) and stopping at the position of targetAttach entity. If ``keepLength`` is ``true``, then the length won't be adjusted to the target, the length will stay constant. Also will return a //string// uuid.
 +  * **''Argus.addTimedConeFilled(//number// timeout, //number// x, //number// y, //number// z, //number// radius, //number// angle, //number// heading, //number// segments, //table// rgbFill, //number// alphaMin, //number// alphaMax, //number// delay, //number// entityAttachID, //number// targetAttachID, //U32 Color// __colorOutline__, //number// __outlineThickness = 1.0__)''**
 +    * Adds a cone at position for //timeout// ms. Argument //rgbfill// is a table that consists of ''{r = 0, g = 0, b = 0}'', replacing the values with your specified color from a range of 0 - 1. If //entityAttachID// is specified, the circle will be attached to the position of the specified entity id. If //targetAttachID// is specified, the cone will be drawn from it's source position (either specified or attached to entity) and stopping at the position of targetAttach entity. Also will return a //string// uuid.
 +  * **''Argus.addTimedDonutFilled(//number// timeout, //number// x, //number// y, //number// z, //number// radiusInner, //number// radiusOuter, //number// segments, //table// rgbFill, //number// alphaMin, //number// alphaMax, //number// delay, //number// entityAttachID, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Adds a filled donut (torus) for specified time //timeout// in ms. Argument //rgbfill// is a table that consists of ''{r = 0, g = 0, b = 0}'', replacing the values with your specified color from a range of 0 - 1. If //entityAttachID// is specified, the circle will be attached to the position of the specified entity id. Also will return a //string// uuid.
 +  * **''Argus.addTimedCrossFilled(//number// timeout, //number// x, //number// y, //number// z, //number// length, //number// width, //number// heading, //table// rgbFill, //number// alphaMin, //number// alphaMax, //number// delay, //number// entityAttachID, //number// targetAttachID, //U32 Color// colorOutline, //number// __outlineThickness = 1.0__)''**
 +    * Adds a cross at position for //timeout// ms. Argument //rgbfill// is a table that consists of ''{r = 0, g = 0, b = 0}'', replacing the values with your specified color from a range of 0 - 1. If //entityAttachID// is specified, the circle will be attached to the position of the specified entity id. If //targetAttachID// is specified, the cross will be drawn from it's source position (either specified or attached to entity) and stopping at the position of targetAttach entity. Also will return a //string// uuid.
 +  * **''Argus.deleteTimedShape(//string// uuid)''**
 +    * Deletes timed draw with specified uuid.
 +
  
 ===== Structures ===== ===== Structures =====
Line 50: Line 82:
     * ''4, 12''     * ''4, 12''
       * Directional Line AOE       * Directional Line AOE
-    * ''11'' +    * ''6'' 
-      * Cross AOE (new type to shadowbringers, example: eden 4 landslide)+      * Meteor mechanic (more damage the closer you are to the center), usually unavoidable 
 +    * ''8'' 
 +      * Line AOE that's targeted to either a position, or specific entity. Argus will adjust the length and heading automatically.
     * ''10''     * ''10''
       * Donut AOE       * Donut AOE
-  * **''//table// GroundAOE''** Note: Does not have an aoeWidth because line aoes are always radial+    * ''11'' 
 +      * Cross AOE (new type to shadowbringers, example: eden 4 landslide) 
 + 
 +  * **''//table// GroundAOE''**
     * ''//number// x''     * ''//number// x''
       * x position of AOE       * x position of AOE
Line 63: Line 100:
     * ''//number// aoeType''     * ''//number// aoeType''
       * Animation/omen type of AOE       * Animation/omen type of AOE
-    * ''//number// aoeRadius'' +    * ''//number// aoeLength'' 
-      * Radius in yalms of aoe+      * Length/radius in yalms of aoe 
 +    * ''//number// aoeWidth'' 
 +      * Width in yalms of aoe (0 for circles and cones etc)
     * ''//string// aoeName''     * ''//string// aoeName''
       * Name of AOE       * Name of AOE
Line 71: Line 110:
     * ''//number// aoeCastType''     * ''//number// aoeCastType''
       * AOE cast type/shape. See Cast Types (above) for more info.       * AOE cast type/shape. See Cast Types (above) for more info.
 +    * ''//number// targetAttach''
 +      * ID of entity that current aoe is attached to, if found. Value is //nil// otherwise.
   * **''//table// DirectionalAOE''**   * **''//table// DirectionalAOE''**
     * ''//number// x''     * ''//number// x''
Line 92: Line 133:
     * ''//number// aoeCastType''     * ''//number// aoeCastType''
       * AOE cast type/shape. See Cast Types (above) for more info.       * AOE cast type/shape. See Cast Types (above) for more info.
 +    * ''//number// targetAttach''
 +      * ID of entity that current aoe is attached to, if found. Value is //nil// otherwise.
  
 ===== Known Overhead Marker Types ===== ===== Known Overhead Marker Types =====
argus.txt · Last modified: 2021/07/14 21:11 by rikudou