the target.lua needs to be adjusted too.
Some of the function in target.lua is calling functions from avatar.lua and avatar.lua is calling target.lua so that is why it is giving that nill error.
so 1st step is trace the function in target.lua that is calling avatar.lua. take that function from avatar.lua adjust it to be called properly or modify it however you wish.
here is the edited target.lua code that I did. I Took the code and put it in the same file as the main. I don't create seperate file unless it is a huge project and needs to be organized.
Code: Select all
-- Field Values.
TARGET_UNKNOWN = 0;
TARGET_DAMAGED = 1;
TARGET_FULL = 2;
TARGET_BAR_COLOR = {
r_min=150, r_max=180,
g_min=10, g_max=40,
b_min=50, b_max=80
};
TARGET_HEALTH_BAR_PIXEL_OFFSET_1 = {x=36, y=36};
TARGET_HEALTH_BAR_PIXEL_OFFSET_2 = {x=165, y=36};
TARGET_HEALTH_BAR_PIXEL_OFFSET_3 = {x=100, y=36};
cant = {x=0, y=0};
-- Target Name Color
TARGET_NAME_COLOR_SCAN_OFFSET_1 = {x=98, y=15};
TARGET_NAME_COLOR_SCAN_OFFSET_2 = {x=110, y=15};
target_name_color = {
unknown=0,
white=1,
cyan=2,
blue=3,
green=4,
yellow=5,
orange=6,
red=7,
purple=8,
grey=9,
}
--[[TARGET_NAME_COLOR_WHITE = 1;
TARGET_NAME_COLOR_CYAN = 2;
TARGET_NAME_COLOR_BLUE = 3;
TARGET_NAME_COLOR_GREEN = 4;
TARGET_NAME_COLOR_YELLOW = 5;
TARGET_NAME_COLOR_ORANGE = 6;
TARGET_NAME_COLOR_RED = 7;
TARGET_NAME_COLOR_PURPLE = 8;
TARGET_NAME_COLOR_GREY = 9;]]
-- In order of difficulty, from easiest to hardest.
target_name_color_rgb = {
[target_name_color["white"]] = {r_min=255, r_max=255,
g_min=255, g_max=255,
b_min=255, b_max=255},
[target_name_color["cyan"]] = {r_min=120, r_max=140,
g_min=255, g_max=255,
b_min=255, b_max=255},
[target_name_color["blue"]] = {r_min=0, r_max=0,
g_min=0, g_max=0,
b_min=255, b_max=255},
[target_name_color["green"]] = {r_min=0, r_max=0,
g_min=255, g_max=255,
b_min=0, b_max=0},
[target_name_color["yellow"]] = {r_min=255, r_max=255,
g_min=255, g_max=255,
b_min=0, b_max=0},
[target_name_color["orange"]] = {r_min=255, r_max=255,
g_min=128, g_max=128,
b_min=0, b_max=0},
[target_name_color["red"]] = {r_min=255, r_max=255,
g_min=0, g_max=0,
b_min=0, b_max=0},
[target_name_color["purple"]] = {r_min=255, r_max=255,
g_min=0, g_max=0,
b_min=255, b_max=255},
--[target_name_color["grey"]] = {r_min=255, r_max=255,
-- g_min=255, g_max=255,
-- b_min=255, b_max=255},
}
TARGET_TYPE_FRIENDLY = 0;
TARGET_TYPE_NOTHING = -1;
-- Delays.
MONSTER_DIE_DELAY = 500;
-- Status Info Bar, offset.
STATUSINFOBAR_POS = {x=0, y=0};
-- Target constructor.
-- Refreshes the variables of the target from memory.
-- @return nothing.
-- Looks at pixels in the status info bar in the h/w device context,
-- to determine the status of the monster.
-- note - this has known errors, changing the colour bit value, or restarting PC
-- seems to fix it.
-- @return TARGET_UNKNOWN does not have any detectable red bar.
-- TARGET_DAMAGED if some red bar exists.
-- TARGET_FULL full red bar.
function status()
local pos_1 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_1["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_1["y"])};
local pos_2 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_2["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_2["y"])};
local pos_3 = {x=(STATUSINFOBAR_POS["x"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_3["x"]),
y=(STATUSINFOBAR_POS["y"] + TARGET_HEALTH_BAR_PIXEL_OFFSET_3["y"])};
local pos_4 = {x=(STATUSINFOBAR_POS["x"] + cant["x"]),
y=(STATUSINFOBAR_POS["y"] + cant["y"])};
--printf("x1:%d y1:%d x2:%d y2:%d\n", pos_1["x"], pos_1["y"], pos_2["x"], pos_2["y"]);
local l_hdc = get_hdc();
-- s(RGB) begining E(RGB) end M(RGB) middle;
local sr,sg,sb;
local er,eg,eb;
local cr,cg,cb;
local mr,mg,mb;
if (window_mode) then
local wx, wy = windowRect(get_win());
--debug_message(sprintf("win_x: %d, wim_y: %d\n", wx, wy));
sr,sg,sb = getPixel(l_hdc, (wx + pos_1["x"]), (wy + pos_1["y"]));
er,eg,eb = getPixel(l_hdc, (wx + pos_2["x"]), (wy + pos_2["y"]));
mr,mg,mb = getPixel(l_hdc, (wx + pos_3["x"]), (wy + pos_3["y"]));
cr,cg,cb = getPixel(l_hdc, (wx + pos_4["x"]), (wy + pos_4["y"]));
else
sr,sg,sb = getPixel(l_hdc, pos_1["x"], pos_1["y"]);
er,eg,eb = getPixel(l_hdc, pos_2["x"], pos_2["y"]);
mr,mg,mb = getPixel(l_hdc, pos_3["x"], pos_3["y"]);
cr,cg,cb = getPixel(l_hdc, pos_4["x"], pos_4["y"]);
end
--closeDC(hdc);
--debug_message(sprintf("sr: %d, sg: %d, sb: %d", sr, sg, sb));
--debug_message(sprintf("er: %d, eg: %d, eb: %d", er, eg, eb));
--debug_message(sprintf("mr: %d, mg: %d, mb: %d", mr, mg, mb));
debug_message(sprintf("cr: %d, cg: %d, cb: %d", cr, cg, cb));
if ((sr >= TARGET_BAR_COLOR["r_min"] and
sr <= TARGET_BAR_COLOR["r_max"]) and
(sg >= TARGET_BAR_COLOR["g_min"] and
sg <= TARGET_BAR_COLOR["g_max"]) and
(sb >= TARGET_BAR_COLOR["b_min"] and
sb <= TARGET_BAR_COLOR["b_max"]))
then
if((er <= TARGET_BAR_COLOR["r_min"] and
er <= TARGET_BAR_COLOR["r_max"]) and
(eg <= TARGET_BAR_COLOR["g_min"] and
eg <= TARGET_BAR_COLOR["g_max"]) and
(eb <= TARGET_BAR_COLOR["b_min"] and
eb <= TARGET_BAR_COLOR["b_max"]))
then
if((mr <= TARGET_BAR_COLOR["r_min"] and
mr <= TARGET_BAR_COLOR["r_max"]) and
(mg <= TARGET_BAR_COLOR["g_min"] and
mg <= TARGET_BAR_COLOR["g_max"]) and
(mb <= TARGET_BAR_COLOR["b_min"] and
mb <= TARGET_BAR_COLOR["b_max"]))
then
emergencyHeal=1;
end
return TARGET_DAMAGED;
end
return TARGET_FULL;
end
return TARGET_UNKNOWN;
end
so it would look like this for the setup.