Custom Auxbox Creations

Moderator: EUO Moderators

Post Reply
User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Wed Jun 19, 2013 8:19 am

last update 20.06.2013
Updated the one above slightly and here is another more advanced version. This one keeps track of several instances at once while removing the auxbox line if there is none map waiting for resetting.

Code: Select all

lm_instancemap_log = {}
function auxbox_lm_dynamic_instance_reset()
local lm_map_list = {
[54] = "Mino Halls", [55] = "Mino Halls", [56] = "Mino Halls", [57] = "Mino Halls", [58] = "Mino Halls",
[59] = "Mino Halls", [60] = "Mino Halls", [61] = "Mino Halls", 
[63] = "Mt. Pass", [64] = "Mt. Pass", [65] = "Mt. Pass", [66] = "Mt. Pass", 
[67] = "Pendragon", [68] = "Pendragon", [69] = "Pendragon", [70] = "Pendragon",
[110] = "Wiz Tower", [111] = "Wiz Tower", [112] = "Wiz Tower", [113] = "Wiz Tower", [114] = "Wiz Tower",
[115] = "Wiz Tower", [116] = "Wiz Tower", [117] = "Wiz Tower",
[120] = "Tangled", [121] = "Tangled", [122] = "Tangled", [123] = "Tangled", [124] = "Tangled",
[125] = "Tangled", [126] = "Tangled", [127] = "Tangled", [128] = "Tangled",
[136] = "Cass Tower", [137] = "Cass Tower",
[175] = "Rivers End", [176] = "Rivers End", [177] = "Rivers End", [178] = "Rivers End", [179] = "Rivers End",
[180] = "Rivers End",
[182] = "VotT", [183] = "VotT", [184] = "VotT", [185] = "VotT", [186] = "VotT",
[196] = "CoS",
[230] = "Anathema", [231] = "Anathema", [232] = "Anathema", [233] = "Anathema", [234] = "Anathema",
[235] = "Anathema", [236] = "Anathema",
[282] = "Blood Moor"
}
      
	if cmap:get_level() ~= me.map_level and cmap:get_level() >= 0 then
        if lm_map_list[cmap:get_level()] ~= nil then
	     lm_parentmap = lm_map_list[cmap:get_level()]
	     else lm_parentmap = cmap:get_level() 
		end
		if lm_instancemap_log[lm_parentmap] ~= nil then
         lm_instancemap_log[lm_parentmap] = nil
		end
	 lm_instance_visited = 1
	 lm_instance_exit = os.time()
	end
	
	if cmap:get_level() == me.map_level and lm_instance_visited == 1 then
	 lm_instance_visited = 0
	 lm_instancemap_log[lm_parentmap] = lm_instance_exit
	end
	
	local lm_instance_reset = 0
	for i, v in pairs(lm_instancemap_log) do
	 lm_instance_reset = 600 - (os.time() - v)
     
	 local m = math.floor(lm_instance_reset / 60)
     local s = math.floor((lm_instance_reset / 60 - m) * 60)
 
     auxbox_prop_line(string.format("%s resets in",i),string.format("%02.f:%02.f", m, s))      
    
	    if lm_instance_reset <= 0 then
	     lm_instancemap_log[i] = nil
        end
	end
end
Last edited by LordMortiferus on Fri Jun 21, 2013 4:15 am, edited 8 times in total.

User avatar
Keighn
Stop posting already --;
Posts: 5366
Joined: Sat Jun 26, 2004 10:13 am
Location: Hey.... pssttt Back in Orgeon

Re: Custom Auxbox Creations

Post by Keighn » Wed Jun 19, 2013 9:27 am

Went for a long walk and thought of this:
Aux that tells you how close you are to treasure map and which direction to walk. Maybe big red X when you're there.


On a different note:
I want an aux that does real world time for where you are.
Moonphase
Xp needed for next level
Xp from last mob
xp per second
xp per min

Last 5 hits you did
Last 5 hits mob did to you
dmg per second

Stat ratio

Arrows
Bullets

I'm trying to find a right fit for a box as the item one I have is just overkill and I'm not really using it all that much. Help if you can.

brentoboy
LAUGHING OUT LOUD LIKE A MORON
Posts: 73
Joined: Thu Jul 05, 2012 1:39 pm

Re: Custom Auxbox Creations

Post by brentoboy » Wed Jun 19, 2013 12:10 pm

Keighn wrote:Went for a long walk and thought of this:
Aux that tells you how close you are to treasure map and which direction to walk. Maybe big red X when you're there.

I have no idea how to do that, not sure its even possible.

Keighn wrote:real world time for where you are.
Moonphase
Xp needed for next level
Xp from last mob
xp per second
xp per min

Last 5 hits you did
Last 5 hits mob did to you
dmg per second

Stat ratio

Arrows
Bullets
Here's my latest "all-in-wonder" auxbox, with character name config files.
I posted my character's config file as a sample, as well as one that has most of what you requested above (the stuff that I could find a script out there to satisfy the need)
You do not have the required permissions to view the files attached to this post.
PD: Duncan
Reg: Zen / Natasha

User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Thu Jun 20, 2013 8:02 am

Updated the enhanced version of the instance reset script - it should now show an abridged name of the instance instead of the level number. I hope I got all instances in the table , if not let me know and I add them.
I changed some tidbits in both scripts.

Also I noted some bugs in the dps/xps script - fixes are not live yet because I want to change some other stuff as well.

Loughf
LAUGHING OUT LOUD LIKE A MORON
Posts: 63
Joined: Fri May 10, 2013 9:24 am

Re: Custom Auxbox Creations

Post by Loughf » Fri Jun 21, 2013 12:01 pm

may I make a request for someone to look at and/or fix the session time in brentoboy's auxbox script? it shows that I've been logged on for like, 15000 days.

Please and thank you!

User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Sat Jun 22, 2013 4:00 am

/!\Outdated/!\ click here for new version!

This script compares your old gear against new gear in ready-mode. Dmg and dps will be added later and show 0 atm.

Code: Select all

function auxbox_lm_readymode()
  local lm_stat_names = {
  [1] = "HP",
  [2] = "DEF",
  [3] = "MR",
  [4] = "STR",
  [5] = "DEX",
  [6] = "INT",
  [7] = "AS",
  [8] = "DMG",
  [9] = "DPS",
  [10] = "MANA",
  [11] = "VIGOUR", 
  [12] = "LEECHING",
  [13] = "SPEED",
  [14] = "SIGHT"
  }

  local lm_newstats = {}
  
    if d:get_curr_display() == 0 and d:get_statbox_mode() ~= SELECT_READY then
    
	end
	if d:get_curr_display() == 1 then
        if d:get_statbox_mode() == SELECT_READY then 
		 
		 d:auxbox_clear()
		 lm_newstats ={
         [1] = me:get_hp_max(),
		 [2] = me:get_ac(),
         [3] = me:get_magic_resistance(),
		 [4] = me:get_str(),
         [5] = me:get_dex(),
         [6] = me:get_intel(),
         [7] = me:get_thaco(),
         [8] = 0,
		 [9] = 0,
		 [10] = me:get_mana_max(),
         [11] = me:get_magic_modifier(MP_VIGOUR), 
         [12] = me:get_magic_modifier(MP_LEECHING),
		 [13] = me:get_delay(),
         [14] = me:get_sight()
         }
	    

    	 local lm_strpct = (me:get_str()/(me:get_str()+me:get_dex())*100)
         local lm_dexpct = (me:get_dex()/(me:get_str()+me:get_dex())*100)
         auxbox_prop_line("STR : DEX", string.format("%.2f : %.2f",lm_strpct,lm_dexpct))
	     auxbox_blank_line()
	 
	        for i, v in ipairs(lm_stat_names) do
		     local lm_stats_dif = lm_newstats[i] - lm_oldstats[i]
		        if lm_stats_dif > 0 then 
			     lm_stats_operator = "+"
			     elseif lm_stats_dif == 0 then 
			     lm_stats_operator = " "
			     elseif lm_stats_dif < 0 then
			     lm_stats_operator = "-"
			     lm_stats_dif = math.sqrt(lm_stats_dif^2)
			    end
		 
		        if i == 4 or i == 7 or i == 10 or i == 13 then
		         auxbox_blank_line()
		        end
	         auxbox_prop_line(string.format("%s", lm_stat_names[i]),string.format("%4.f -> %4.f %s%3.f", lm_oldstats[i], lm_newstats[i], lm_stats_operator, lm_stats_dif))
            end
	    end
	 else
	 	 
     lm_oldstats ={
     [1] = me:get_hp_max(),
     [2] = me:get_ac(),
	 [3] = me:get_magic_resistance(),
	 [4] = me:get_str(),
     [5] = me:get_dex(),
     [6] = me:get_intel(),
     [7] = me:get_thaco(),
     [8] = 0,
	 [9] = 0,
	 [10] = me:get_mana_max(),
     [11] = me:get_magic_modifier(MP_VIGOUR),
     [12] = me:get_magic_modifier(MP_LEECHING),
     [13] = me:get_delay(),
     [14] = me:get_sight()
     }
	end
end
Last edited by LordMortiferus on Sun May 18, 2014 5:45 am, edited 2 times in total.

User avatar
Keighn
Stop posting already --;
Posts: 5366
Joined: Sat Jun 26, 2004 10:13 am
Location: Hey.... pssttt Back in Orgeon

Re: Custom Auxbox Creations

Post by Keighn » Sat Jun 22, 2013 11:18 pm

Put in last 5 hits you do and last 5 hits mob does.

Average dmg per sec / min you do and that same mob does and that'd be pretty golden.

Loughf
LAUGHING OUT LOUD LIKE A MORON
Posts: 63
Joined: Fri May 10, 2013 9:24 am

Re: Custom Auxbox Creations

Post by Loughf » Sun Jun 23, 2013 1:58 pm

Loughf wrote:may I make a request for someone to look at and/or fix the session time in brentoboy's auxbox script? it shows that I've been logged on for like, 15000 days.

Please and thank you!
pplleeaassee??

Chedich
on lolpatrol
Posts: 253
Joined: Wed Jan 14, 2004 12:51 am

Re: Custom Auxbox Creations

Post by Chedich » Mon Jul 01, 2013 4:53 am

I've been thinking of ways to make auxbox scripts more accessible to the everyday player, here's one way to do it. It separates addons from the main auxbox script to make updating easier.

It gives users a menu by pressing alt+m, where they can select what scripts to use and in what order to display them. Configurations are saved on a per-character name and server basis.
Image

A script developer would simply register a function with:

Code: Select all

ched_addon_register(name, author, version, id, func, masterfunc, view)
  • Name and author are pretty self-explanatory, both are strings. Name is what will be displayed in the menu list.
  • Version is a string containing the version of your current function/script. I.e. "1.0" or "June 13th 2013".
  • Id is a string containing a persistent and unique ID. It's important that it stays the same throughout different versions of your script. I.e. "lm_readymode_eqcomp_1" or "ched_xp_xpptmin_1".
  • Func is a string of the function that would be called. I.e. "auxbox_ched_xp_tmin()".
  • Masterfunc is a string of a function that would be called only once per auxbox() call. It's guaranteed to be called as opposed to "func". Do not put anything that outputs to the auxbox here. It's primary use is to make it easier to separate display lines into different functions. Masterfunc is optional.
  • View is the select mode your script would be run at. Options here are SELECT_READY, SELECT_BUY, SELECT_SELL, SELECT_NORMAL, SELECT_MAKE, SELECT_BANK, SELECT_ABILITY, SELECT_VIEW_INV, SELECT_VIEW_BANK or SELECT_ALL. View is also optional.
Here's an example of how it can be used in action:

Code: Select all

ched_addon_register("XP to next level", "Chedich", "2013-06-20", "ched_xp_tnl_1", "auxbox_ched_xp_tnl()", "ched_xp_xppmin()")
ched_addon_register("XP/min (10min)", "Chedich", "2013-06-20", "ched_xp_xpptmin_1", "auxbox_ched_xp_tmin()", "ched_xp_xppmin()")
ched_addon_register("XP/min (5min)", "Chedich", "2013-06-20", "ched_xp_xppfmin_1", "auxbox_ched_xp_fmin()", "ched_xp_xppmin()")
ched_addon_register("Last XP gain", "Chedich", "2013-06-20", "ched_xp_lg_1", "auxbox_ched_xp_last_gain()", "ched_xp_xppmin()")
Other features for developers are:
OPS which is set as true once per second
gk, gch & gsc that can be used to read keypresses
table.indexof(table, item)

Here's links to the script package that you would extract into your clientscripts folder. Last edited 2013-07-09
https://drive.google.com/folderview?id= ... sp=sharing
https://www.dropbox.com/s/b89weawevh1lt ... s.zip?dl=0

The script package currently includes:
0_auxbox.lua - main lua file
brentoboy_misc. lua - real world time and moon phase scripts by brentoboy
ched_dps.lua - DPS estimation script
ched_itemsleft.lua - items left scripts
ched_MIC.lua - merchant item comparison script
ched_strdex.lua - str/dex ratio script
ched_xp.lua - XP/min script
euo_misc.lua - session time and select mode help texts script
LM_asciimap.lua - ASCII map script by LordMortiferus
LM_asciimaplos.lua - ASCII map (LOS only) script by LordMortiferus
LM_instance.lua - instance reset timer script by LordMortiferus
LM_readymode.lua - readymode item set comparison script by LordMortiferus
LM_statistics.lua - combat statistics script by LordMortiferus
LM_gps.lua - GPS // command function by LordMortiferus
LM_itemcomp.lua - Item comparison with colors by LordMortiferus and Chedich

*EDIT*
Updated it to include script versions with color support and added LM_gpa.lua & LM_itemcomp.lua.
Last edited by Chedich on Sun Jan 14, 2018 10:11 pm, edited 4 times in total.

User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Sun Jul 07, 2013 5:03 am

I made a GPS script for auxbox. Using a doubleslash command you can input xyz-values for a destination (e.g. treassure maps) to the auxbox script (experimental).

Code: Select all

//dest x y z    -- syntax for destination input
//dest nil       -- to delete the destination

If you leave z blank the script automatically uses the current map you are in.

This script is made to work with chad's rad and awesome addon register!
It uses external functions like auxbox_keypressed(key,ch,scancode) and explode(p,d) which are available in cheds 0_auxbox.lua (probably also in the default auxbox.lua - at least explode).
The keypressed function only works like every 10 ms so you have to type slowly otherwise part of your input will skipped!
gps.png
First auxbox line shows the current input.
2nd and 3rd coords of current location and destination.
Last lines show a cross showing the distance between current location an destination considering cardinal directions.

Code: Select all

ched_addon_register("GPS", "LordMortiferus", "6th July 2013", "lm_gps_1", "auxbox_lm_gps()")

lm_string = ""
lm_destx = 0
lm_desty = 0
lm_destz = 0

function auxbox_lm_gps()
  local lm_gk_to_symbol = {
        [7217] = 1,
        [7474] = 2,
        [7731] = 3,
        [7988] = 4,
        [8245] = 5,
        [8502] = 6,
        [8759] = 7,
        [9016] = 8,
        [9273] = 9,
        [6960] = 0,
        [8751] = "/",
        [16136] = "<-",
        [17165] = "enter",
		[19232] = " ",
        [1124] = "d",
        [1381] = "e",
        [4979] = "s",
        [5236] = "t",
        [3694] = "n",
		[2409] = "i",
		[3180] = "l"
		}
    
	if lm_destx == nil then  end
  	if lm_desty == nil then lm_desty = 0 end
    if lm_destz == nil then lm_destz = 0 end	
	
    local lm_dest_array	
	if lm_string.find(lm_string, "//") and gk ~= 0 then
        if lm_gk_to_symbol[gk] == "enter" then
	        if string.find(lm_string, "//dest ") ~= nil then 
			 lm_dest_array = explode (" ",lm_string)
	            if tonumber(lm_dest_array[2]) ~= nil and tonumber(lm_dest_array[3]) ~= nil then 
			     lm_destx = tonumber(lm_dest_array[2])
                 lm_desty = tonumber(lm_dest_array[3])
			        if tonumber(lm_dest_array[4]) ~= nil then 
				     lm_destz = tonumber(lm_dest_array[4])
				     else lm_destz = me.map_level
			        end
				elseif (lm_dest_array[2]) == "nil" then
				lm_destx = 0
				lm_desty = 0
				lm_destz = 0
				end
			end
	     lm_string = ""
	     elseif lm_gk_to_symbol[gk] ~= nil and lm_gk_to_symbol[gk] ~= "<-" then
	     lm_string = string.format("%s%s",lm_string, lm_gk_to_symbol[gk])
	    end
	end
	
	if lm_gk_to_symbol[gk] == "<-" and lm_string ~= "" then
	 lm_string = string.sub(lm_string, 1 ,string.len(lm_string)-1)
	end
	
	if lm_gk_to_symbol[gk] == "/" and lm_string == "" then
	 lm_string = lm_gk_to_symbol[gk]
	elseif lm_gk_to_symbol[gk] == "/" and lm_string == "/" then
	 lm_string = string.format("%s%s",lm_string, lm_gk_to_symbol[gk])
	elseif gk ~= 0 and lm_gk_to_symbol[gk] ~= "/" and lm_string == "/" then
	 lm_string = ""
	end
	
	local lm_north, lm_south, lm_west, lm_east
	if lm_destx > 0 and lm_desty > 0  and lm_destz == me.map_level then
	    if me.x - lm_destx >= 0 then
	     lm_west = me.x - lm_destx
	     lm_east = 0
	     else
	     lm_west = 0
	     lm_east = lm_destx - me.x
	    end
	    if me.y - lm_desty >= 0 then
	     lm_north = me.y - lm_desty
	     lm_south = 0
	     else
	     lm_north = 0
	     lm_south = lm_desty - me.y
	    end
	 else
	 lm_north = 0
	 lm_south = 0
	 lm_west = 0
	 lm_east = 0
	end
    
	local lm_input
	if string.len(lm_string) >= 12 then
	 lm_input = string.sub(lm_string, string.len(lm_string)-11,string.len(lm_string))
	else
	 lm_input = lm_string
	end
	 	
	auxbox_prop_line("//dest x y z:",lm_input)
	auxbox_prop_line("Location   ",string.format("%3.f''%3.f'' %3.f", me.x, me.y, me.map_level))
	auxbox_prop_line("Destination",string.format("%3.f''%3.f'' %3.f", lm_destx, lm_desty, lm_destz))
	auxbox_prop_line(string.format("    %3.fN", lm_north))
	auxbox_prop_line(string.format("%3.fW    %3.fE", lm_west, lm_east))
	auxbox_prop_line(string.format("    %3.fS", lm_south))
end

User avatar
CIAassassin
Tune in next time & see how they do it.
Posts: 598
Joined: Thu Oct 26, 2006 10:34 am

Re: Custom Auxbox Creations

Post by CIAassassin » Sun Jul 07, 2013 10:19 am

I would add this into the Completed Code thread, but it is a tad beyond my understanding ATM. Havent sat down to learn it. If one of yall want to post the code there (if at all possible) go for it.
Rikimaru

"Oh, you're a lesbian? That's cool, I'm a lesbian trapped in a mans body, we should date."

User avatar
Keighn
Stop posting already --;
Posts: 5366
Joined: Sat Jun 26, 2004 10:13 am
Location: Hey.... pssttt Back in Orgeon

Re: Custom Auxbox Creations

Post by Keighn » Tue Jul 09, 2013 8:49 am

Ched your link to your script package from the 30th isn't working for me. I get denied. Any chance you can repost or reuplink this. I'm hearing neat stuff about it and i'm tired of looking at ammo count. Though I still love my real time and 5 hits done to me done to mob stuff...

Chedich
on lolpatrol
Posts: 253
Joined: Wed Jan 14, 2004 12:51 am

Re: Custom Auxbox Creations

Post by Chedich » Tue Jul 09, 2013 10:18 am

I uploaded a newer version of the script package and I've also added dropbox as a file host.

The script package is meant to be easily extendable, all you have to do is to create a new lua file for your script and register your script with a single line function call. The point of it is that every script wouldn't be a blob auxbox.lua file containing everything unique for every EUO player, but instead modular and easily maintained. Installing a new script would simply be a matter of downloading the .lua file into the clientscripts directory and then going in-game to enable it.

mud
I once posted in TFIOOC!
Posts: 134
Joined: Wed Nov 09, 2005 12:29 pm

Re: Custom Auxbox Creations

Post by mud » Sun Sep 22, 2013 3:42 pm

This auxbox code will output, to a file, every item that you select. This is useful for putting together lists of items that you have for trade and etc.

If you want quantities to work, put all of the items into your inventory first and then select them.

Items will be written to 'seen_items.txt' in your EUO directory. If you reload the script or restart EUO, the file will be overwritten, so move it someplace else if you want to save a list!

You probably shouldn't hold down the 'down' key and hope that it outputs every item you scroll past. I'd recommend hitting 'down' at a regular interval instead, but you can knock out a list quite quickly.

Code: Select all

local out_f = assert(io.open("seen_items.txt", "w"))
local curr_item = nil

function auxbox()
    if not d:ok_to_draw_play_window() then
        return
    end
    local new_item = get_highlighted_item()
    if new_item ~= curr_item then
        if wl:is_legit(new_item) and wl:get_type(new_item) ~= ITEM_NOTHING then
            local quant = items:get_qty(new_item)
            local quant_s = ""
            if quant >= 1 then
                quant_s = string.format(" x%d", quant)
            end
            out_f:write(wl:get_full_name(new_item) .. quant_s .. "\n")
            out_f:flush()
        end
        curr_item = new_item
    end
end
Share and Enjoy!

Shino
buying vamp LS of any kind +5
Posts: 88
Joined: Thu May 12, 2011 3:11 am

Re: Custom Auxbox Creations

Post by Shino » Fri Nov 01, 2013 12:35 am

Can someone make a script for me.. im noob with these things :D

i really have no ideas what to do even with completed scripts...

i would like to get real worl time, xp to next, last mob xp, main hand and off handAVG damage, str/dex % and skills that aren't yet 100.. thank you so much if someone could be lovely and make this happen :heart:

Chedich
on lolpatrol
Posts: 253
Joined: Wed Jan 14, 2004 12:51 am

Re: Custom Auxbox Creations

Post by Chedich » Sat Nov 02, 2013 8:39 pm

Shino wrote:Can someone make a script for me.. im noob with these things :D

i really have no ideas what to do even with completed scripts...

i would like to get real worl time, xp to next, last mob xp, main hand and off handAVG damage, str/dex % and skills that aren't yet 100.. thank you so much if someone could be lovely and make this happen :heart:
I might be a bit biased, but the script package I've got in my earlier post should do the trick for most of your requests. As for the skills scripts you'll have to ask brentoboy to modify his script to work with the rest of the package.
viewtopic.php?f=3&t=4983&start=100#p82422

You "install" it by moving the auxbox.lua file that's in your clientscripts folder into your euo folder(this is just to make a backup of the original file). Then you extract the files in the script package into your clientscripts folder. Then start EUO, log in and press ctrl+m to get you into the menu to select the scripts you want to run.

User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Wed Dec 04, 2013 1:19 am

Updated 2014/05/17
comparison.png
The following is a script I was working on back in July, but I never got around to finish it, though a good deal should be working. Basically, this script calculates total stats of your char and compares these to theoretical stats if you switch one item of your gear with a selected item from a merch or your inventory.
Chedich wrote a function for this as well and his dps calculation is integrated as well
In case I will never get back to this, someone else might want to pick it up in the meantime.

Code: Select all

ched_addon_register("Item Comp.", "Ched/Mort", "20140517", "lm_buymode_eqcomp_2", "test()", SELECT_BUY)

function test()
local lm_stat_names = {
  [1] = "HP   ",
  [2] = "DEF  ",
  [3] = "MR   ",
  [4] = "STR  ",
  [5] = "DEX  ",
  [6] = "INT  ",
  [7] = "AS   ",
  [8] = "DMG  ",
  [9] = "DPS  ",
  [10] = "Ench",
  [11] = "Leech ",
  [12] = "Mana ",
  [13] = "Vigour", 
  [14] = "Speed",
  [15] = "Sight",
  [16] = "Material",
  [17] = "DMG type",
  [18] = "Grade",
  [19] = "Gold"
  }
  
lm_gear_array = {
[1] = me.weapon,
[2] = me.shield,
[3] = me.armour,
[4] = me.boots,
[5] = me.gloves,
[6] = me.hat,
[7] = me.trousers,
[8] = me.ring1,
[9] = me.ring2,
[10] = me.amulet,
[11] = me.sigil1,
[12] = me.sigil2,
[13] = me.sigil3
}

local ched_weap_skill_mod = {
["unarmed"]=260,
["longswords"]=300,
["shortswords"]=240,
["maces"]=290,
["polearms"]=300,
["axes"]=310,
["foils"]=240,
["ranged"]=300,
["staves"]=380
}

  local hp = {0,0}
  local def = {10,10} -- base ac
  local mr = {0,0}
  local str = {0,0}
  local dex = {0,0}
  local int = {0,0}
  local as = {0,0}
  local dmg = {0,0}
  local dps = {0,0}
  local dmgtype = {"-","-"}
  local enchant = {"-","-"}
  local mana = {0,0}
  local vig = {0,0}
  local leeching = {0,0}
  local material = {"-","-"}
  local grade = {"-","-"}
  local speed = {0,0}
  local sight = {1,1} -- base sight
  local gp = {items:get_qty_basecode(0x100),0}
  local delay = {0,0}
-- ARMOUR BONUS
  local mr_ab = {0,0}
  local armour_weight = {0,0}
-- THACO BONUS
  local as_b = {0,0}
  
-- CLASS BONUS
  local fighter_sk = math.max(me:get_skill(0x0),me:get_skill(0x1),me:get_skill(0x2),me:get_skill(0x3),me:get_skill(0x13),me:get_skill(0x1a))
  local rogue_sk = math.max(me:get_skill(0x9),me:get_skill(0xd),me:get_skill(0xe),me:get_skill(0xf),me:get_skill(0x11),me:get_skill(0x12),me:get_skill(0x13))
  local mage_sk = math.max(me:get_skill(0x7),me:get_skill(0x21))
  local priest_sk = math.max(me:get_skill(0x22),me:get_skill(0x24),me:get_skill(0x26))
  local monk_sk = math.max(me:get_skill(0xa),me:get_skill(0x28))

-- RACE BONUS FOR STR, DEX AND INT
  local hp_rb = 0
  local str_rb = 0
  local dex_rb = 0
  local int_rb = 0
  local mr_rb = 0
  local dmg_rb = 0
  local as_rb = 1
  local sight_rb = 0
    if me.race == 1 then -- "Draconian"
	 dmg_rb = 0.1
	 mr_rb = 0.15
	end 
	if me.race == 2 then -- "Orc"
	 str_rb = 0.1
	 mr_rb = 0.1
	end
	if me.race == 3 then -- "Gnome"
	 dex_rb = 0.1
	 int_rb = 0.1
	end  
	if me.race == 5 then -- "Shadowfolk"
	 str_rb = 0.1
	 dex_rb = 0.1
	 sight_rb = 3
	end
	if me.race == 6 then -- "Bloodkin"
	 int_rb = 0.1
	 mr_rb = 0.1
	 as_rb = 0.15
	end   
	if me.race == 7 then -- "Dwarf"
     hp_rb = 0.1
    end
	if me.race == 8 then -- "Skeletun"
	 mr_rb = 0.15
	end	
    for i=1,2 do
        for item = 1,13 do
		 -- get magprops of items with ched's script 
         lm_gear_item=ched_buymode_get_mp(lm_gear_array[item])
       	    if lm_gear_item[tostring(2)] then int[i] = int[i] + tonumber(lm_gear_item[tostring(2)]) end
            if lm_gear_item[tostring(3)] then str[i] = str[i] + tonumber(lm_gear_item[tostring(3)]) end
            if lm_gear_item[tostring(4)] then dex[i] = dex[i] + tonumber(lm_gear_item[tostring(4)]) end
            if lm_gear_item[tostring(5)] then vig[i] = vig[i] + tonumber(lm_gear_item[tostring(5)]) end
            if lm_gear_item[tostring(6)] then sight[i] = sight[i] + tonumber(lm_gear_item[tostring(6)]) end
       		if lm_gear_item[tostring(8)] then enchant[i] = lm_gear_item[tostring(8)] end
            if lm_gear_item[tostring(9)] then leeching[i] = leeching[i] + tonumber(lm_gear_item[tostring(9)]) end
		    if lm_gear_item[tostring(10)] then mr_ab[i] = mr_ab[i] + tonumber(lm_gear_item[tostring(10)]) * 20 end
	    	if lm_gear_item[tostring(1)] then as_b[i] = as_b[i] + tonumber(lm_gear_item[tostring(1)]) end
			
		  -- GRADE AND MATERIAL	
			if wl:is_weapon(get_highlighted_item()) and wl:is_weapon(lm_gear_array[item]) then      
			    if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
            elseif wl:is_shield(get_highlighted_item()) and	wl:is_shield(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_torso(get_highlighted_item()) and wl:is_torso(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_boots(get_highlighted_item()) and wl:is_boots(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_gloves(get_highlighted_item())	and wl:is_gloves(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_hat(get_highlighted_item()) and wl:is_hat(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_trousers(get_highlighted_item()) and wl:is_trousers(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_ring(get_highlighted_item()) and wl:is_ring(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_amulet(get_highlighted_item()) and wl:is_amulet(lm_gear_array[item]) then
                if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			elseif wl:is_sigil(get_highlighted_item()) and wl:is_sigil(lm_gear_array[item]) then
			    if lm_gear_item[tostring(15)] then grade[i] = lm_gear_item[tostring(15)] end
			    if lm_gear_item[tostring(16)] then material[i] = lm_gear_item[tostring(16)] end
			end
					  
		  -- DAMAGE TYPE
			if item == 1 then dmgtype[i] = string.char(lm_gear_item[tostring(17)]) end
			if dmgtype[i] == "p" then dmgtype[i] = "piercing"
				elseif dmgtype[i] == "s" then dmgtype[i] = "slashing"
				elseif dmgtype[i] == "b" then dmgtype[i] = "bludgeoning"
			end
		  -- GOLD BONUS FOR NIGHT VISION
			if get_material(lm_gear_array[item]) == 7 then sight[i] = sight[i] + 1 end -- gold bonus
        
		  -- DEFENCE
			if lm_gear_array[item] and item ~= 2 then 
			    if string.char(wl:get_grade(lm_gear_array[item])) == "l" then 
			     skill_bonus = math.max(fighter_sk, priest_sk, rogue_sk)
			     def[i] = def[i] + skill_bonus*wl:get_ac(lm_gear_array[item])/100
				 elseif string.char(wl:get_grade(lm_gear_array[item])) == "m" or string.char(wl:get_grade(lm_gear_array[item])) == "h" then 
			     skill_bonus = math.max(fighter_sk, priest_sk)
			     def[i] = def[i] + skill_bonus*wl:get_ac(lm_gear_array[item])/100
				 else def[i] = def[i] + wl:get_ac(lm_gear_array[item]) 
				end
			end
			
		  -- MYTHIC BONUS
			if string.find(lm_gear_item[tostring(16)],"mythic") then 
			    if not wl:is_weapon(lm_gear_array[item]) then
			     mr_ab[i] = mr_ab[i] + 20 
			     else
				 as_b[i] = as_b[i] + as_b[i] * 0.1
				end
			end
			if string.find(lm_gear_item[tostring(16)],"mystic") and not wl:is_weapon(lm_gear_array[item]) then 
			 vig[i] = vig[i] + 3 
			end
			if string.find(lm_gear_item[tostring(16)],"astral") and not wl:is_weapon(lm_gear_array[item]) then 
			 sight[i] = sight[i] + 1 
			end
            if wl:is_weapon(lm_gear_array[item]) 
			 and string.find(lm_gear_item[tostring(16)],"fel") 
			 or string.find(lm_gear_item[tostring(16)],"bal")
			 or string.find(lm_gear_item[tostring(16)],"dun") then
			 as_b[i] = as_b[i] + as_b[i] * 0.02
			end			
			
	      -- ARMOUR BONUS FOR MAGIC RESISTANCE
			if item == 3 or item == 6 then -- torso/head
			 if string.char(wl:get_grade(lm_gear_array[item])) == "h" then mr_ab[i] = mr_ab[i] + 30 end -- heavy gear
			 if string.char(wl:get_grade(lm_gear_array[item])) == "m" then mr_ab[i] = mr_ab[i] + 20 end -- medium gear
			 if string.char(wl:get_grade(lm_gear_array[item])) == "l" then mr_ab[i] = mr_ab[i] + 10 end -- light gear
			elseif item == 7 then -- trousers
			 if string.char(wl:get_grade(lm_gear_array[item])) == "h" then mr_ab[i] = mr_ab[i] + 20 end -- heavy gear
			 if string.char(wl:get_grade(lm_gear_array[item])) == "m" then mr_ab[i] = mr_ab[i] + 10 end -- medium gear
			elseif item == 4 or item == 5 then -- boots/gloves
			 if string.char(wl:get_grade(lm_gear_array[item])) == "h" then mr_ab[i] = mr_ab[i] + 10 end -- heavy gear
		    end
			
	  	  -- MITHRIL/CRYSTAL BONUS FOR MAGIC RESISTANCE
			if me.race == 7 and get_material(lm_gear_array[item]) == 10 and lm_gear_item[tostring(7)] then 
			 mr_ab[i] = mr_ab[i] + 10 + 10 * tonumber(lm_gear_item[tostring(7)])
			elseif me.race == 7 and get_material(lm_gear_array[item]) == 10 then
			 mr_ab[i] = mr_ab[i] + 10
			end
			if get_material(lm_gear_array[item]) == 15 and lm_gear_item[tostring(7)] then
			 mr_ab[i] = mr_ab[i] + 10 + 10 * tonumber(lm_gear_item[tostring(7)])
			elseif get_material(lm_gear_array[item]) == 15 then
			 mr_ab[i] = mr_ab[i] + 10
			end
		
		    if item == 3 or item == 4 or item == 5 or item == 6 or item == 7 then -- gear
				if string.char(wl:get_grade(lm_gear_array[item])) == "h" and me.race == 2 then -- orc
				 armour_weight[i] = armour_weight[i]
				elseif string.char(wl:get_grade(lm_gear_array[item])) == "m" then 
				 skill_bonus = math.max(fighter_sk, priest_sk)
				 armour_weight[i] = armour_weight[i] + wl:get_weight(lm_gear_array[item]) * (1 - skill_bonus / 100)
				elseif string.char(wl:get_grade(lm_gear_array[item])) == "l" then 
				 skill_bonus = math.max(rogue_sk, fighter_sk, priest_sk)
				 armour_weight[i] = armour_weight[i] + wl:get_weight(lm_gear_array[item]) * (1 - skill_bonus / 100)
				elseif string.char(wl:get_grade(lm_gear_array[item])) == "u" then 
				 armour_weight[i] = armour_weight[i]
				else
				 armour_weight[i] = armour_weight[i] + wl:get_weight(lm_gear_array[item])
				end
			end
		end
		
 	  -- STRENGTH
		str[i] = str[i] + me:get_str() - me:get_str_bonus()
		str[i] = str[i] + str[i] * str_rb
		
	  -- DEXTERITY
		dex[i] = dex[i] + me:get_dex() - me:get_dex_bonus()
		dex[i] = dex[i] + dex[i] * dex_rb
		
	  -- INTELLIGENCE
		int[i] = int[i] + me:get_intel() - me:get_intel_bonus()
	    int[i] = int[i] + int[i] * int_rb
		
 	  -- HEALTH POINTS
		hp[i] = hp[i] + str[i] / 2 + me.lvl * 1.5 + 10
		hp[i] = hp[i] + hp[i] * hp_rb
				
	  -- DEFENSE	(unarmed and unarmoured needs revision
        if string.char(wl:get_grade(lm_gear_array[3])) == "a" or string.char(wl:get_grade(lm_gear_array[3])) == "u"
		 and string.char(wl:get_grade(lm_gear_array[4])) == "a" or string.char(wl:get_grade(lm_gear_array[4])) == "u"
		 and string.char(wl:get_grade(lm_gear_array[5])) == "a" or string.char(wl:get_grade(lm_gear_array[5])) == "u"
		 and string.char(wl:get_grade(lm_gear_array[6])) == "a" or string.char(wl:get_grade(lm_gear_array[6])) == "u"
		 and string.char(wl:get_grade(lm_gear_array[7])) == "a" or string.char(wl:get_grade(lm_gear_array[7])) == "u"
		 and wl:get_weapon_skill(lm_gear_array[1]) == 10 and wl:get_weapon_skill(lm_gear_array[2]) == 10 then
		 def[i] = def[i] + 10*(me:get_skill(sc:get_skill_nr("unarmed")))/100
        end
		def[i] = def[i] + 2*(me:get_skill(sc:get_skill_nr("tactics")))/100
        
      -- MAGIC RESISTANCE
		mr[i] = mr[i] + (int[i]^0.95) + me.lvl
		if str[i]+dex[i] >= 250 then mr[i] = mr[i] + ((str[i] + dex[i] - 250) / 3) end 
	    mr[i] = mr[i] + mr[i] * mr_rb
        mr[i] = mr[i] + mr_ab[i]

  	   -- MANA
		mana[i] = mana[i] + int[i]

	  -- ATTACK STRENGTH
	    as[i] = as[i] + 20*me:get_skill(wl:get_weapon_skill(lm_gear_array[1]))/100
	    as[i] = as[i] + 7*(me:get_skill(sc:get_skill_nr("tactics")))/100
	    as[i] = as[i] + as_b[i] -- item bonus (dual wield needs to be considered and unarmed)
	    as[i] = as[i] * as_rb -- racial bonus
        if wl:is_weapon(lm_gear_array[1]) and get_material(lm_gear_array[1]) == 0x9 or get_material(lm_gear_array[1]) == 0xe then
 	     as[i] = as[i] * 1.2
	    end
	    if wl:get_wep_skill_name(lm_gear_array[1]) == "unarmed" or wl:get_wep_skill_name(lm_gear_array[1]) == "staves" then
         SI = 0.5 	 
            if str[i] > 200 then
	         as[i] = as[i] + (str[i] - 200) / 33
	        end	  
	    elseif wl:get_wep_skill_name(lm_gear_array[1]) == "polearms" or wl:get_wep_skill_name(lm_gear_array[1]) == "maces" then
	     SI = 0.9
	        if str[i] > 200 then
	         as[i] = as[i] + (str[i] - 200) / 33
	        end
	    elseif wl:get_wep_skill_name(lm_gear_array[1]) == "longswords" or wl:get_wep_skill_name(lm_gear_array[1]) == "axes" then
	     SI = 0.75
	        if str[i] > 200 then
	         as[i] = as[i] + (str[i] - 200) / 33
	        end
	    elseif wl:get_wep_skill_name(lm_gear_array[1]) == "shortswords" or wl:get_wep_skill_name(lm_gear_array[1]) == "foils" or wl:get_wep_skill_name(lm_gear_array[1]) == "ranged" then
	     SI = 0.25
	        if dex[i] > 200 then
	         as[i] = as[i] + (dex[i] - 200) / 33
            end
	    end
	    DI = 1 - SI
	    if dex[i] > 200 * DI then
	     as[i] = as[i] + (dex[i] - 200 * DI) * (1 - math.abs(dex[i]/(str[i]+dex[i])-DI)) / 33
	    end
	    if str[i] >= 200 * SI then
	     as[i] = as[i] + (str[i] - 200 * SI) * (1 - math.abs(str[i]/(str[i]+dex[i])-SI)) / 33
	    end
	  	   	  
	  -- DAMAGE (by CHEDICH)
	     sdm = ((str[i]+dex[i])/5*(1-math.abs(str[i]/(str[i]+dex[i])-SI))) / 100
	
		 dmg[i] = ((((wl:get_no_dice(lm_gear_array[1])+(wl:get_no_sides(lm_gear_array[1])*wl:get_no_dice(lm_gear_array[1])))/2+((sdm*15.15)*(wl:get_speed(lm_gear_array[1])/wl:get_avg_wep_speed())))+(me:get_magic_modifier(MP_WEAPON_BONUS)*(wl:get_speed(lm_gear_array[1])/wl:get_avg_wep_speed())))*wl:get_material_dmg_mult(lm_gear_array[1],false))*1.1
		if wl:is_weapon(lm_gear_array[2]) then
	     dmg[i] = (dmg[i] + ((((wl:get_no_dice(lm_gear_array[2])+(wl:get_no_sides(lm_gear_array[2])*wl:get_no_dice(lm_gear_array[2])))/2+((sdm*15.15)*(wl:get_speed(lm_gear_array[2])/wl:get_avg_wep_speed())))+(me:get_magic_modifier(MP_WEAPON_BONUS)*(wl:get_speed(lm_gear_array[2])/wl:get_avg_wep_speed())))*wl:get_material_dmg_mult(lm_gear_array[2],false))*1.1)/2
	    end
	  
	  -- DPS (by CHEDICH)
        delay[i] = wl:get_speed(lm_gear_array[1]) * ched_weap_skill_mod[wl:get_wep_skill_name(lm_gear_array[1])]
        if (get_material(lm_gear_array[1])==MAT_COPPER) then
         delay[i] = dps[i] * 0.9
        end
        dps[i] = dmg[i]*1000/delay[i]
	  
	  -- SPEED
	  	local p
		if armour_weight[i] <= 7 then
         p = 0.018 * (armour_weight[i] - 7)
        else
         p = 0.03 * (armour_weight[i] - 7)
        end
        
		if p > 0 then
         p = p * ( 2 * armour_weight[i] * 7 - str[i]) / (armour_weight[i] * 7)
			if p < 0 then p=0 end		
		end
		
		if dex[i] > 250 then
         speed[i] = 1000 / ((300) * (1 + p))
		else
		 speed[i] = 1000 / (math.floor((79 * (250 - dex[1]) / 200 + 300) * (1 + p) + 0.5)) -- 79 was determined empirically
		end
		
  	  -- exchange old set with the highlighted item 
        if wl:is_weapon(get_highlighted_item())         then lm_gear_array[1] = get_highlighted_item()
        elseif wl:is_shield(get_highlighted_item())	    then lm_gear_array[2] = get_highlighted_item()
        elseif wl:is_torso(get_highlighted_item())		then lm_gear_array[3] = get_highlighted_item()
        elseif wl:is_boots(get_highlighted_item())		then lm_gear_array[4] = get_highlighted_item() 
        elseif wl:is_gloves(get_highlighted_item())  	then lm_gear_array[5] = get_highlighted_item()
        elseif wl:is_hat(get_highlighted_item())		then lm_gear_array[6] = get_highlighted_item() 
        elseif wl:is_trousers(get_highlighted_item())	then lm_gear_array[7] = get_highlighted_item()
        elseif wl:is_ring(get_highlighted_item())		then lm_gear_array[8] = get_highlighted_item()
        elseif wl:is_amulet(get_highlighted_item())	    then lm_gear_array[10] = get_highlighted_item()
        elseif wl:is_sigil(get_highlighted_item())	    then lm_gear_array[11] = get_highlighted_item()
         --elseif wl:is_sigil2(get_highlighted_item())	    then lm_gear_array[12] = get_highlighted_item()
         --elseif wl:is_sigil3(get_highlighted_item())	    then lm_gear_array[13] = get_highlighted_item()
        end
	end
  gp[2] = wl:get_sell_price(get_highlighted_item()) 	
  lm_oldstats = {hp[1],def[1],mr[1],str[1],dex[1],int[1],as[1],dmg[1],dps[1],enchant[1],leeching[1],mana[1],vig[1],speed[1],sight[1],material[1],dmgtype[1],grade[1],gp[1]}
  lm_newstats = {hp[2],def[2],mr[2],str[2],dex[2],int[2],as[2],dmg[2],dps[2],enchant[2],leeching[2],mana[2],vig[2],speed[2],sight[2],material[2],dmgtype[2],grade[2],gp[2]}

        for i, v in ipairs(lm_stat_names) do
            if i == 16 or i == 17 or i == 18 or i == 19 then
			 auxbox_prop_line(string.format("%s", lm_oldstats[i]),string.format("->%12s", lm_newstats[i]))		 
	      	 elseif i == 10 then
			 auxbox_prop_line(string.format("%s", lm_stat_names[i]),string.format("%4s -> %5s      ", lm_oldstats[i], lm_newstats[i]))
			 elseif i == 20 then break
			else
		   	 local lm_stats_dif = lm_newstats[i] - lm_oldstats[i]
		        if lm_stats_dif > 0 then 
			     lm_stats_operator = "{0f0}+"
			     elseif lm_stats_dif == 0 then 
			     lm_stats_operator = " "
			     elseif lm_stats_dif < 0 then
			     lm_stats_operator = "{f00}-"
			     lm_stats_dif = math.abs(lm_stats_dif)
			    end
		        if i == 2 or i == 14 then
			     auxbox_prop_line(string.format("%s", lm_stat_names[i]),string.format("%5.1f -> %5.1f %s%4.1f{fff}", lm_oldstats[i], lm_newstats[i], lm_stats_operator, lm_stats_dif))
			     elseif i == 11 or i == 13 then
				 auxbox_prop_line(string.format("%s", lm_stat_names[i]),string.format("%4.f -> %5.f %s%4.f{fff}", lm_oldstats[i], lm_newstats[i], lm_stats_operator, lm_stats_dif))
				 else
			     auxbox_prop_line(string.format("%s", lm_stat_names[i]),string.format("%5.f -> %5.f %s%4.f{fff}", lm_oldstats[i], lm_newstats[i], lm_stats_operator, lm_stats_dif))
                end
			end
		end
end
 

function ched_buymode_get_mp(item)
	local t_mp = {}
	t_mp[tostring(15)]=wl:get_grade_name(item)
	t_mp[tostring(16)]=wl:get_short_material_name(item)
	t_mp[tostring(17)]=wl:get_weapon_damage_type(item)
	for i=0,14 do -- one iteration for each magprop
        if wl:get_effect(item, i) then
			for j=1,50 do --find magprop value
				if wl:has_effect(item, i, j) then
					if i == 8 then -- special handling for spell enchants
						t_mp[tostring(i)]=spells:get_spell_str(j):upper()
					else
						t_mp[tostring(i)]=j
					end

					break
				end
			end
		end
	end

	return t_mp
end
You do not have the required permissions to view the files attached to this post.
Last edited by LordMortiferus on Sun May 18, 2014 5:47 am, edited 3 times in total.

User avatar
LordMortiferus
MACRO > me
Posts: 849
Joined: Tue Dec 01, 2009 10:23 pm

Re: Custom Auxbox Creations

Post by LordMortiferus » Wed Jan 08, 2014 8:04 pm

Just for the record on calculating level by XP above the level cap (PD), well and Reg if you have no life at all.
XP is only counted up to 1999999999 which translates to level 1021 without and 1096 with remort. After that magic number no more XP is gained making any attempts to keep a record on the theoretical level impossible.

User avatar
eggmceye
hello
Posts: 10372
Joined: Mon Mar 11, 2002 3:55 pm
Location: Sydney, Australia
Contact:

Re: Custom Auxbox Creations

Post by eggmceye » Wed Jan 08, 2014 10:16 pm

yeh, xp is a signed (der) 32 bit int - so the max, unchecked, is about 2.1bil xp - after that it clocks and starts counting backwards from 0 (or is it forwards from -2bil?)
after someone actually clocked it on pd I put the 2bil-1 cap on it

User avatar
EmoMage
Girls only want boyfriends who have great skills.
Posts: 765
Joined: Tue Aug 06, 2013 10:10 am

Re: Custom Auxbox Creations

Post by EmoMage » Thu Jan 09, 2014 1:15 am

I was just gonna PM you this last night and fell asleep. I know my actual level isn't going past 1000, but on PD, I like watching it go up via the Auxbox anyway, and was gonna ask if we could raise that 2bil to 5bil? so I can watch it go up up up! :D
eggmceye wrote:yeh, xp is a signed (der) 32 bit int - so the max, unchecked, is about 2.1bil xp
but then I read that, and is raising it even possible?
eggmceye wrote:
ParadoxOfChoice wrote: Zombie using bow/sling probably shouldn't give disease.

the zombies are pulling the arrows out of their ass

Post Reply