Completed Auxbox Codes
Moderator: EUO Moderators
- Keighn
- Stop posting already --;
- Posts: 5490
- Joined: Sat Jun 26, 2004 10:13 am
- Location: Hey.... pssttt Back in Orgeon
Re: Completed Auxbox Codes
I don't recall if I ever redound that thread. Maybe someday the manual will be updated with all the aux codes posted.
Re: Completed Auxbox Codes
Just wanted to point at my version of auxbox.lua.
Unfortunately I didn't know about your framework (if that's the correct word for it), I just looked into the .lua-file that comes with the client one day and thought, well, that looks ugly. I also wanted to understand what was going on there, so I learnt some Lua. Finally, I rewrote the file in a way, I'd do it (coming from Python). I even took an object-orientated approach (like I would in Python), but I admit, that isn't really necessary for that file.
- My version shows the time to next double-XP on reg, starting 7 days before it. If only one day is left, it shows the hours. While double-XP is on, it shows the time until it is switched off again. This works much better (and easier) now since the server was set to universal time.
- You can also configure the behaviour of the script with the global variables at the beginning (the ones in capital letters). They can be set to either "true" or "false".
Unfortunately I didn't know about your framework (if that's the correct word for it), I just looked into the .lua-file that comes with the client one day and thought, well, that looks ugly. I also wanted to understand what was going on there, so I learnt some Lua. Finally, I rewrote the file in a way, I'd do it (coming from Python). I even took an object-orientated approach (like I would in Python), but I admit, that isn't really necessary for that file.
- My version shows the time to next double-XP on reg, starting 7 days before it. If only one day is left, it shows the hours. While double-XP is on, it shows the time until it is switched off again. This works much better (and easier) now since the server was set to universal time.
- You can also configure the behaviour of the script with the global variables at the beginning (the ones in capital letters). They can be set to either "true" or "false".
- CIAassassin
- Tune in next time & see how they do it.
- Posts: 598
- Joined: Thu Oct 26, 2006 10:34 am
Re: Completed Auxbox Codes
yea bro, no framework here I was just copy-pasting individual code blocks. I stopped when you started making your code generator as I had no clue how to post/break that down
Re: Completed Auxbox Codes
So if I get you correctly, you'd like to have the code in a format that fits to this, right?CIAassassin wrote:yea bro, no framework here I was just copy-pasting individual code blocks. I stopped when you started making your code generator as I had no clue how to post/break that down
Not much of a problem, I just took out the double-xp-stuff and rewrote it in that way (I call my file "cel_doublexptime.lua", should go into your clientscripts-folder, you know, with 0_auxbox.lua in it):
Code: Select all
ched_addon_register("Double-XP-time", "Celerion", "1.0", "double_xp_time_1", "double_xp_info()")
-- cel_doublexptime.lua - Double-XP-time, by Celerion, 12-2014.
-- Shows days to Double-XP (which is on first weekend each month).
-- If there's only one day left, the hours to Double-XP are shown.
-- If Double-XP is on, the time until it is switched off again is shown.
function double_xp_info()
local double_xp_info_with_days = false
local double_xp_info_with_seconds = true
local show_days_to_double_xp = true
local show_hours_to_double_xp = true
local days_in_advance = 7
local oneday = 86400
local twodays = 172800
local utcttable = os.date("!*t")
local restsecs = 0
local days = 1
local secs = 0
local utcseconds = 0
local t = {}
local timestr = ""
-- For testing:
-- utcttable.wday = 6
-- utcttable.day = 3
-- utcttable.hour = 0
-- utcttable.min = 0
-- utcttable.sec = 0
-- Do we have Double-XP? (For wday, Saturday is 7, Sunday is 1):
if utcttable.wday == 7 and utcttable.day < 8 or
utcttable.wday == 1 and utcttable.day <= 8 and utcttable.day >= 2
then
restsecs = twodays - (utcttable.hour * 3600 + utcttable.min * 60 + utcttable.sec)
-- Sunday - One day has already passed:
if utcttable.wday == 1 then
restsecs = restsecs - oneday
end
timestr = seconds_to_time_string(restsecs, double_xp_info_with_days, double_xp_info_with_seconds)
auxbox_prop_line("Double-XP:", timestr)
-- auxbox_blank_line()
return
end
-- Double-XP in next days?
if show_days_to_double_xp ~= true then
return
end
utcseconds = os.time(utcttable)
while days <= days_in_advance do
secs = utcseconds + oneday * days
t = os.date("*t", secs)
if t.wday == 7 and t.day < 8 then
break
end
days = days + 1
end
if days > 1 then
if days <= days_in_advance then
auxbox_prop_line(days .. " days until Double-XP.")
-- auxbox_blank_line()
end
return
end
auxbox_prop_line("Tomorrow's Double-XP.")
if show_hours_to_double_xp ~= true then
return
end
restsecs = oneday - (utcttable.hour * 3600 + utcttable.min * 60 + utcttable.sec)
timestr = seconds_to_time_string(restsecs, false, false)
auxbox_prop_line("Hours to Double-XP:", timestr)
-- auxbox_blank_line()
end
function seconds_to_time_string(secs, show_days, show_secs)
local oneday = 86400
local onehour = 3600
local oneminute = 60
local rest = 0
local tstr = ""
local t = {}
if show_days == true then
t.days = math.floor(secs / oneday)
rest = secs - t.days * oneday
t.hours = math.floor(rest / onehour)
rest = rest - t.hours * onehour
tstr = string.format("%02d:%02d:", t.days, t.hours)
else
t.hours = math.floor(secs / onehour)
rest = secs - t.hours * onehour
tstr = string.format("%02d:", t.hours)
end
t.mins = math.floor(rest / oneminute)
rest = rest - t.mins * oneminute
t.secs = math.floor(rest)
if show_secs == true then
tstr = tstr .. string.format("%02d:%02d", t.mins, t.secs)
else
tstr = tstr .. string.format("%02d", t.mins)
end
return tstr
end
Last edited by Celerion on Tue Jan 06, 2015 7:28 am, edited 1 time in total.
Re: Completed Auxbox Codes
In the default auxbox.lua-file, there was also some useful damage-per-second-code by LordMortiferus. As far as I can see, he didn't put it into the "framework"-format yet. So I took an approach with his code. The file should be called "LM_dps.lua" (if Mort agrees, that his "LM_"-prefix is used):
Code: Select all
ched_addon_register("Damage Per Second", "LordMortiferus, Celerion", "01-05-2015", "lm_damage_per_second_1", "auxbox_damage_per_second()")
-- LM_dps.lua - Damage per second - Shows the damage per second dealt
-- and taken in the auxbox.
-- Original code by LordMortiferus, modified by Celerion.
---------
-- This global stuff is run once at startup. Then, the variables are changed
-- repeatedly, when the function is called:
euo_sessionstart = os.time()
last_session_seconds = 0
from_euo = {}
from_euo.g_dpst = g_dpst
from_euo.g_dtpst = g_dtpst
last_4_dpst = {}
for i = 1, 4 do
table.insert(last_4_dpst, from_euo.g_dpst)
end
last_4_dtpst = {}
for i = 1, 4 do
table.insert(last_4_dtpst, from_euo.g_dtpst)
end
last_dpst = from_euo.g_dpst
recent_dmg = {0, 0, 0, 0}
function auxbox_damage_per_second()
local show_damage_dealt_per_second_line = true
local show_damage_taken_per_second_line = true
local show_recent_damage_dealt_lines = false
local session_seconds = os.difftime(os.time(), euo_sessionstart)
from_euo.g_dpst = g_dpst
from_euo.g_dtpst = g_dtpst
if session_seconds > last_session_seconds then
last_session_seconds = session_seconds
last_4_dpst[4] = last_4_dpst[3]
last_4_dpst[3] = last_4_dpst[2]
last_4_dpst[2] = last_4_dpst[1]
last_4_dpst[1] = from_euo.g_dpst
last_4_dtpst[4] = last_4_dtpst[3]
last_4_dtpst[3] = last_4_dtpst[2]
last_4_dtpst[2] = last_4_dtpst[1]
last_4_dtpst[1] = from_euo.g_dtpst
end
if last_dpst ~= from_euo.g_dpst then
recent_dmg[4] = recent_dmg[3]
recent_dmg[3] = recent_dmg[2]
recent_dmg[2] = recent_dmg[1]
recent_dmg[1] = from_euo.g_dpst - last_dpst
last_dpst = from_euo.g_dpst
end
if show_damage_dealt_per_second_line == true then
auxbox_prop_line("Dmg Dealt / Sec", string.format("%d", (last_4_dpst[1] - last_4_dpst[4]) / 4))
end
if show_damage_taken_per_second_line == true then
auxbox_prop_line("Dmg Taken / Sec", string.format("%d", (last_4_dtpst[1] - last_4_dtpst[4]) / 4))
end
if show_recent_damage_dealt_lines == true then
auxbox_prop_line("Recent Dmg Dealt", "")
auxbox_prop_line("", string.format("%d %d %d %d", recent_dmg[4], recent_dmg[3], recent_dmg[2], recent_dmg[1]))
end
end
Re: Completed Auxbox Codes
Additionaly, here's the config-file with the settings, I find useful at the moment. The file has to be in the EUO-directory ("C:\...\euo") and has to be called "config_Yourcharactername.lua", where "Yourcharactername" is the name of your character, obviously, so for me the file is called "config_Celerion.lua" for example. Of course, you can also create your own config-file using the included auxbox-menu which can be activated with Alt+m (good work, CIAassassin!):
Code: Select all
return {
-- Table: {1}
{
"brentoboy_rwt_1",
"euo_sessiontime_1",
"euo_blank_line_1",
"double_xp_time_1",
"euo_blank_line_2",
"ched_xp_tnl_1",
"euo_blank_line_3",
"lm_damage_per_second_1",
},
}