User Tools

Site Tools



acr

Differences

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

Link to this comparison view

Next revision
Previous revision
acr [2016/04/01 13:06] – created aceacr [2022/08/25 08:06] (current) anyone
Line 1: Line 1:
-===== Features =====+===== About =====
  
 ACR (Advanced Combat Routines) is a platform for highly customizable combat routines that are written in lua.   ACR (Advanced Combat Routines) is a platform for highly customizable combat routines that are written in lua.  
 Routines built on this platform can use a custom GUI, have access to a special multi-clickable Party Interface, and the routines are not bound by the same generic rules that SkillManager routines use. Routines built on this platform can use a custom GUI, have access to a special multi-clickable Party Interface, and the routines are not bound by the same generic rules that SkillManager routines use.
  
-== Usage ==+===== Features =====
  
-ACR +=== ACR Main Interface ===
  
-== Routine API ==+{{http://puu.sh/o21Aq/fe0475ebda.jpg}} 
 + 
 +== Enabled ==   
 +Enables the current profile. If this is off, FFXIVMinion uses SkillManager instead.  If a profile is not listed here, it is not properly built/compiled. 
 + 
 +== Auto-Enabled == 
 +Enables ACR if a profile is found for the current class.  This will hold true in reverse, and it will be disabled if no valid profiles are found. 
 + 
 +== Show Party Interface ==  
 +Toggles the multi-clickable party interface window, discussed in the next section. 
 + 
 +---- 
 + 
 +=== ACR Party Interface === 
 + 
 +{{http://puu.sh/o27pB/a9e3a2216e.jpg}} 
 + 
 +//ACR does not include FFXIV icons, but these can be downloaded from [[http://www.filehosting.org/file/details/559401/icons.zip|this link]]. 
 +To install the icons, place the icons folder in the root of the ACR module [ACR\icons].// 
 + 
 +The party interface is a multi-clickable display that can work in conjunction with routines via their OnClick procedure. 
 + 
 +== Examples == 
 + 
 +Right-click to dispel debuffs. 
 +Left-click to cast a small heal. 
 +Shift+Left-click to cast a large heal. 
 +Middle-click to use an ability such as Cover/Goad on your teammate. 
 + 
 +OnClick API documented in Routine API below. 
 + 
 +---- 
 + 
 +==== Routine API ====
  
 <code lua> <code lua>
Line 15: Line 48:
 local profile = {} local profile = {}
  
 +-- Create a GUI table, to hold GUI-related information.
 +profile.GUI = {
 +    open = false,
 +    visible = true,
 +    name = "Batman",
 +}
  
 +-- Create a classes table, to specify which classes this profile can be used for.
 +profile.classes = {
 +    [FFXIV.JOBS.NINJA] = true,
 +    [FFXIV.JOBS.ROGUE] = true,
 +
 +
 +-- The Cast() function is where the magic happens.
 +-- Action code should be called and fired here.
 +function profile.Cast()
 +    local currentTarget = MGetTarget()
 +    
 +    if (currentTarget) then
 +        local spinningEdge = ActionList:Get(2240,1,currentTarget.id)
 +        if (spinningEdge and spinningEdge.isready) then
 +            spinningEdge:Cast(currentTarget.id)
 +            return true
 +        end
 +    end
 +    return false
 +end
 +
 +-- The Draw() function provides a place where a developer can show custom options.
 +function profile.Draw()
 +    if (profile.GUI.open) then
 + profile.GUI.visible, profile.GUI.open = GUI:Begin(profile.GUI.name, profile.GUI.open)
 + if ( profile.GUI.visible ) then 
 +            ACR_MyProfile_MySavedVar = GUI:Checkbox("AOE",ACR_MyProfile_MySavedVar)
 +        end
 +        GUI:End()
 +    end
 +end
 +
 +-- Adds a customizable header to the top of the ffxivminion task window.
 +function profile.DrawHeader()
 +
 +end
 +
 +-- Adds a customizable footer to the top of the ffxivminion task window.
 +function profile.DrawFooter()
 +
 +end
 +
 +-- The OnOpen() function is fired when a user pressed "View Profile Options" on the main ACR window.
 +function profile.OnOpen()
 +    -- Set our GUI table //open// variable to true so that it will be drawn.
 +    profile.GUI.open = true
 +end
 +
 +-- The OnLoad() function is fired when a profile is prepped and loaded by ACR.
 +function profile.OnLoad()
 +    -- Set and (if necessary) create a saved variable named ACR_MyProfile_MySavedVar.
 +    ACR_MyProfile_MySavedVar = ACR.GetSetting("ACR_MyProfile_MySavedVar",false)
 +end
 +
 +-- The OnClick function is fired when a user clicks on the ACR party interface.
 +-- It accepts 5 parameters:
 +-- mouse /int/ - Possible values are 0 (Left-click), 1 (Right-click), 2 (Middle-click)
 +-- shiftState /bool/ - Is shift currently pressed?
 +-- controlState /bool/ - Is control currently pressed?
 +-- altState /bool/ - Is alt currently pressed?
 +-- entity /table/ - The entity information for the party member that was clicked on.
 +function profile.OnClick(mouse,shiftState,controlState,altState,entity)
 +
 +end
 +
 +-- The OnUpdate() function is fired on the gameloop, like any other OnUpdate function found in FFXIVMinion code.
 +function profile.OnUpdate(event, tickcount)
 +
 +end
  
 -- Return the profile to ACR, so it can be read. -- Return the profile to ACR, so it can be read.
 return profile return profile
 +
 +</code>
 +
 +==== Pushing Routines API ====
 +
 +<code lua>
 +
 +-- This code is an example of how to push routines into ACR using the new API call.
 +-- This isn't required anymore. Simply placing your ACR LUA file into a folder named CombatRoutines is enough for the ACR module to detect and load your ACR.
 +
 +acelib.routinePath = GetStartupPath()..[[\LuaMods\AceLib\CombatRoutines\]] --this can be any subfolder, I'm using the old structure for ease
 +
 +function AceLib.LoadCombatProfile(filename,alias)
 + if (acelib.ModuleFunctions and acelib.ModuleFunctions.ReadModuleFile) then
 + local fileInfo = { p = "CombatRoutines" , m = "AceLib" , f = filename }
 + local fileString = acelib.ModuleFunctions.ReadModuleFile(fileInfo)
 + if (fileString) then
 + local fileFunction, errorMessage = loadstring(fileString)
 + if (fileFunction) then
 + local ok, profileData = pcall(fileFunction)
 + if (ok and profileData ~= nil) then
 + ACR.AddPrivateProfile(profileData,alias)
 + end
 + end
 + end
 + else
 + if (filename ~= "" and FileExists(acelib.routinePath..filename)) then
 + local profileData,e = persistence.load(acelib.routinePath..filename)
 + if (ValidTable(profileData)) then
 + ACR.AddPrivateProfile(profileData,alias)
 + end
 + end
 + end
 +end
 +
 +function AceLib.LoadCombatProfiles()
 + AceLib.LoadCombatProfile("Ark.lua","Ark")
 +end
 +
 +-- Final call should be done in a ModuleInit so that all modules can finish loading other API where required.
 +function acelib.ModuleInit()
 +        AceLib.LoadCombatProfiles()
 +end
  
 </code> </code>
acr.1459515972.txt.gz · Last modified: 2016/04/01 13:06 by ace