User Tools

Site Tools



acr

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
acr [2016/04/01 13:43] 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 Interface+=== ACR Main Interface ===
  
 {{http://puu.sh/o21Aq/fe0475ebda.jpg}} {{http://puu.sh/o21Aq/fe0475ebda.jpg}}
  
-**Enabled** - Enables the current profile. If this is off, MMOMinion uses SkillManager instead.  If a profile is not listed here, it is not properly built/compiled. +== Enabled ==   
-**Auto+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.
  
-== Routine API ==+== 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 20: 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.1459518199.txt.gz · Last modified: 2016/04/01 13:43 by ace