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
8 years ago
|
--[[
|
||
|
* Ashita - Copyright (c) 2014 - 2016 atom0s [atom0s@live.com]
|
||
|
*
|
||
|
* 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 - (107 * 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;
|
||
|
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);
|