The main release package of Ashita v3. Contains all the needed files for users to get up and running. Used by the launcher/injector to auto-update as well.
https://ashitaxi.com/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
204 lines
7.9 KiB
204 lines
7.9 KiB
--[[ |
|
* Ashita - Copyright (c) 2014 - 2016 atom0s [[email protected]] |
|
* |
|
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. |
|
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to |
|
* Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. |
|
* |
|
* By using Ashita, you agree to the above license and its terms. |
|
* |
|
* Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were |
|
* made. You must do so in any reasonable manner, but not in any way that suggests the licensor |
|
* endorses you or your use. |
|
* |
|
* Non-Commercial - You may not use the material (Ashita) for commercial purposes. |
|
* |
|
* No-Derivatives - If you remix, transform, or build upon the material (Ashita), you may not distribute the |
|
* modified material. You are, however, allowed to submit the modified works back to the original |
|
* Ashita project in attempt to have it added to the original project. |
|
* |
|
* You may not apply legal terms or technological measures that legally restrict others |
|
* from doing anything the license permits. |
|
* |
|
* No warranties are given. |
|
]]-- |
|
|
|
_addon.author = 'atom0s'; |
|
_addon.name = 'tparty'; |
|
_addon.version = '3.0.0'; |
|
|
|
require 'common' |
|
|
|
---------------------------------------------------------------------------------------------------- |
|
-- Variables |
|
---------------------------------------------------------------------------------------------------- |
|
local tparty = { }; |
|
tparty.targethpp_str = '__tparty_targethpp'; -- The base name used for a string object. |
|
tparty.partytpp_str = '__tparty_partytpp'; -- The base name used for a string object. |
|
|
|
---------------------------------------------------------------------------------------------------- |
|
-- func: load |
|
-- desc: Event called when the addon is being loaded. |
|
---------------------------------------------------------------------------------------------------- |
|
ashita.register_event('load', function() |
|
-- Pull the current configuration info for position calculations.. |
|
tparty.window_x = AshitaCore:GetConfigurationManager():get_int32('boot_config', 'window_x', 800); |
|
tparty.window_y = AshitaCore:GetConfigurationManager():get_int32('boot_config', 'window_y', 800); |
|
tparty.menu_x = AshitaCore:GetConfigurationManager():get_int32('boot_config', 'menu_x', 0); |
|
tparty.menu_y = AshitaCore:GetConfigurationManager():get_int32('boot_config', 'menu_y', 0); |
|
|
|
-- Ensure the menu sizes have a valid resolution.. |
|
if (tparty.menu_x <= 0) then |
|
tparty.menu_x = tparty.window_x; |
|
end |
|
if (tparty.menu_y <= 0) then |
|
tparty.menu_y = tparty.window_y; |
|
end |
|
|
|
-- Calculate the scaling based on the resolution.. |
|
tparty.scale_x = tparty.window_x / tparty.menu_x; |
|
tparty.scale_y = tparty.window_y / tparty.menu_y; |
|
|
|
-- Create the target hp % text object.. |
|
local f = AshitaCore:GetFontManager():Create(tparty.targethpp_str); |
|
f:SetColor(0xFFFFFFFF); |
|
f:SetFontFamily('Arial'); |
|
f:SetFontHeight(8 * tparty.scale_y); |
|
f:SetBold(true); |
|
f:SetRightJustified(true); |
|
f:SetPositionX(0); |
|
f:SetPositionY(0); |
|
f:SetText('0.0'); |
|
f:SetLocked(true); |
|
f:SetVisibility(true); |
|
|
|
-- Create the individual party member labels.. |
|
for x = 0, 17 do |
|
f = AshitaCore:GetFontManager():Create(string.format('%s%d', tparty.partytpp_str, x)); |
|
f:SetColor(0xFFFFFFFF); |
|
f:SetFontFamily('Arial'); |
|
f:SetFontHeight(8 * tparty.scale_y); |
|
f:SetBold(true); |
|
f:SetRightJustified(true); |
|
f:SetPositionX(0); |
|
f:SetPositionY(0); |
|
f:SetText(string.format('TP: %d', x)); |
|
f:SetLocked(true); |
|
f:SetVisibility(true); |
|
end |
|
end); |
|
|
|
---------------------------------------------------------------------------------------------------- |
|
-- func: unload |
|
-- desc: Event called when the addon is being unloaded. |
|
---------------------------------------------------------------------------------------------------- |
|
ashita.register_event('unload', function() |
|
-- Cleanup the font objects.. |
|
AshitaCore:GetFontManager():Delete(tparty.targethpp_str); |
|
for x = 0, 17 do |
|
AshitaCore:GetFontManager():Delete(string.format('%s%d', tparty.partytpp_str, x)); |
|
end |
|
end); |
|
|
|
---------------------------------------------------------------------------------------------------- |
|
-- func: render |
|
-- desc: Event called when the addon is being rendered. |
|
---------------------------------------------------------------------------------------------------- |
|
ashita.register_event('render', function() |
|
-- Obtain needed information managers.. |
|
local party = AshitaCore:GetDataManager():GetParty(); |
|
local target = AshitaCore:GetDataManager():GetTarget(); |
|
|
|
-- Calculate offset position starting points.. |
|
local posx = tparty.window_x - (101 * tparty.scale_x); |
|
local posy = tparty.window_y - (34 * tparty.scale_y); |
|
local curx = 0; |
|
local cury = 0; |
|
|
|
-- Locate the players zone.. |
|
local zone = party:GetMemberZone(0); |
|
|
|
-- Handle the players local party.. |
|
for x = 0, 5 do |
|
-- Get the current player slot font object.. |
|
local f = AshitaCore:GetFontManager():Get(string.format('%s%d', tparty.partytpp_str, x)); |
|
|
|
-- Ensure the player is valid to render information for.. |
|
if (x ~= 0 and zone ~= party:GetMemberZone(x) or party:GetMemberActive(x) == 0) then |
|
f:SetVisibility(false); |
|
else |
|
-- Calculate the needed position of the font.. |
|
curx = posx; |
|
cury = posy - ((party:GetAllianceParty0MemberCount() - 1 - x) * (20 * tparty.scale_y)); |
|
|
|
-- Update the font object.. |
|
local tp = party:GetMemberCurrentTP(x); |
|
f:SetPositionX(curx); |
|
f:SetPositionY(cury); |
|
f:SetText(tostring(tp)); |
|
f:SetVisibility(true); |
|
if (tp >= 1000) then |
|
f:SetColor(0xFF00FF00); |
|
else |
|
f:SetColor(0xFFFFFFFF); |
|
end |
|
end |
|
end |
|
|
|
-- Calculate the alliance offsets.. |
|
local posx_a0 = posx; |
|
local posy_a0 = tparty.window_y - (389 * tparty.scale_y); |
|
local posx_a1 = posx; |
|
local posy_a1 = tparty.window_y - (288 * tparty.scale_y); |
|
|
|
-- Handle the alliance party information.. |
|
for x = 6, 17 do |
|
curx = 0; |
|
cury = 0; |
|
|
|
-- Calculate the alliance position.. |
|
if ((x >= 6) and (x < 12)) then |
|
curx = posx_a0; |
|
cury = posy_a0 + (((x - 6) * 16) * tparty.scale_y); |
|
else |
|
curx = posx_a1; |
|
cury = posy_a1 + (((x - 12) * 16) * tparty.scale_y); |
|
end |
|
|
|
-- Get the current player slot font object.. |
|
local f = AshitaCore:GetFontManager():Get(string.format('%s%d', tparty.partytpp_str, x)); |
|
local tp = party:GetMemberCurrentTP(x); |
|
f:SetPositionX(curx); |
|
f:SetPositionY(cury); |
|
f:SetText(tostring(tp)); |
|
if (tp >= 1000) then |
|
f:SetColor(0xFF00FF00); |
|
else |
|
f:SetColor(0xFFFFFFFF); |
|
end |
|
|
|
-- Set the visibility of the party members information.. |
|
if (party:GetMemberActive(x) == 0 or zone ~= party:GetMemberZone(x)) then |
|
f:SetVisibility(false); |
|
else |
|
f:SetVisibility(true); |
|
end |
|
end |
|
|
|
-- Obtain the current target.. |
|
local target = ashita.ffxi.targets.get_target('t'); |
|
if (target == nil) then |
|
f = AshitaCore:GetFontManager():Get(tparty.targethpp_str); |
|
f:SetText('0'); |
|
f:SetVisibility(false); |
|
else |
|
curx = posx - 2; |
|
cury = posy - (((party:GetAllianceParty0MemberCount() - 1) * 21) + 34) * tparty.scale_y; |
|
|
|
f = AshitaCore:GetFontManager():Get(tparty.targethpp_str); |
|
f:SetPositionX(curx); |
|
f:SetPositionY(cury); |
|
f:SetText(tostring(target.HealthPercent)); |
|
f:SetVisibility(true); |
|
end |
|
end); |