Initial MSVC 2008 projects workspace
This commit is contained in:
563
l2ooghelper/scripts/Alexxia_party.lua
Normal file
563
l2ooghelper/scripts/Alexxia_party.lua
Normal file
@@ -0,0 +1,563 @@
|
||||
-----------------------------
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-----------------------------
|
||||
script_name = "Alexxia_BP_Pty: ";
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
--soulshot_itemID = 1835; -- Soulshot: No Grade
|
||||
--soulshot_itemID = 1463; -- Soulshot: D Grade
|
||||
--soulshot_itemID = 1464; -- Soulshot: C Grade
|
||||
--soulshot_itemID = 1465; -- Soulshot: B Grade
|
||||
soulshot_itemID = 0; -- Soulshot: A Grade
|
||||
--soulshot_itemID = 1467; -- Soulshot: S Grade
|
||||
--spiritshot_itemID = 3947; -- Blessed Spiritshot: No Grade
|
||||
--spiritshot_itemID = 3948; -- Blessed Spiritshot: D Grade
|
||||
--spiritshot_itemID = 3949; -- Blessed Spiritshot: C Grade
|
||||
--spiritshot_itemID = 3950; -- Blessed Spiritshot: B Grade
|
||||
--spiritshot_itemID = 3951; -- Blessed Spiritshot: A Grade
|
||||
spiritshot_itemID = 3952; -- Blessed Spiritshot: S Grade
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
follow_enable = true;
|
||||
follow_name = "Semirra";
|
||||
follow_distance = 120;
|
||||
follow_rand_time = 3;
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
heal_self_enable = true;
|
||||
heal_party_enable = true;
|
||||
heal_party_distance = 600;
|
||||
heal_percent = 85;
|
||||
--heal_skill = 1011; -- Heal
|
||||
heal_skill = 1218; -- Major Heal
|
||||
heal_battle_percent = 1;
|
||||
--heal_battle_skill = 1015; -- Battle Heal
|
||||
heal_battle_skill = 1016; -- Greater Battle heal
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> Healing Potion
|
||||
|
||||
heal_itemID = 1539; -- Greater Healing potion
|
||||
heal_item_use_hp = 95; -- 80%
|
||||
heal_item_reuse_secs = 5; -- secs
|
||||
|
||||
mana_itemID = 728; -- Mana Potion
|
||||
mana_item_use_mp = 85; -- 80%
|
||||
mana_item_reuse_secs = 1; -- secs
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
recharge_enable = false;
|
||||
recharge_mp_percent = 70;
|
||||
recharge_skill = 1013; -- Recharge
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
self_buffs_auto = true;
|
||||
self_buffs = {
|
||||
--3138, -- Item Skill: Heal Empower
|
||||
--1078, -- Concentration
|
||||
--1040, -- Shield
|
||||
--1204, -- Wind Walk
|
||||
--1035, -- Mental Shield
|
||||
--1044, -- Regeneration
|
||||
--1397, -- Clarity
|
||||
--1062, -- Berserker spirit
|
||||
--1311, -- Body of Avatar
|
||||
--1259 -- Resist Shog
|
||||
1353,
|
||||
1323
|
||||
};
|
||||
|
||||
|
||||
party_buff_enable = true;
|
||||
party_buff_autodetect = true;
|
||||
party_buff_distance = 400;
|
||||
party_rebuff_secs = 1170; -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>; <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
party_buffs = {
|
||||
--1068, -- Might
|
||||
--1040, -- Shield
|
||||
--1087, -- Agility
|
||||
--1043, -- Holy Weapon
|
||||
--1035, -- Mental Shield
|
||||
--1204, -- Wind Walk
|
||||
--1044, -- Regeneration
|
||||
--1397, -- Clarity
|
||||
--1062, -- Berserker spirit
|
||||
--1259 -- Resist Shog
|
||||
1353,
|
||||
1323
|
||||
};
|
||||
|
||||
|
||||
--- CARDINAL UNIQUE ---
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||
-- 1) <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [balance_life_min_good_players] <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> [balance_life_good_hp] % HP
|
||||
-- 2) <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [balance_life_max_bad_players] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> [balance_life_bad_hp] % HP
|
||||
-- 3) <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> [balance_life_min_mp_limit] %
|
||||
balance_life_enable = false;
|
||||
balance_life_good_hp = 90;
|
||||
balance_life_bad_hp = 40;
|
||||
balance_life_min_good_players = 3;
|
||||
balance_life_max_bad_players = 1;
|
||||
balance_life_min_mp_limit = 25; -- self mp %
|
||||
balance_life_skill = 1335; -- Balance Life
|
||||
|
||||
group_heal_enable = true;
|
||||
group_heal_bad_hp = 90;
|
||||
group_heal_min_bad_players = 3;
|
||||
group_heal_skill = 1402; -- major group heal
|
||||
--- CARDINAL UNIQUE ---
|
||||
|
||||
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
-- system vars!!! do not edit !!!
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
sys_should_exit = false;
|
||||
sys_last_party_buff_time = 0;
|
||||
sys_last_heal_item_use_time = 0;
|
||||
sys_last_mana_item_use_time = 0;
|
||||
rand_time = 0;
|
||||
x_rand = 0;
|
||||
y_rand = 0;
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function wait_end_of_cast()
|
||||
while l2c_isCastingNow() do l2h_delay( 50 ) end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeoutSecs <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function myTargetObjectTimeout( objectID, timeoutSecs )
|
||||
local targetStartTime = l2h_time();
|
||||
l2c_action( objectID );
|
||||
local targetObjectId = 0;
|
||||
local timePassed = 0;
|
||||
repeat
|
||||
targetObjectId = l2c_getTarget();
|
||||
l2h_delay( 100 );
|
||||
if sys_should_exit then return end
|
||||
local curTime = l2h_time();
|
||||
timePassed = curTime - targetStartTime;
|
||||
until (timePassed > timeoutSecs) or (targetObjectId == objectID)
|
||||
if( targetObjectId ~= objectID ) then
|
||||
l2h_print( script_name, " ERROR: cannot target [", objectID, "]\n" );
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 100<30><30> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function myUseSkill( skillID )
|
||||
l2c_useSkill( skillID )
|
||||
l2h_delay( 150 )
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> [name] <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [distance]
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [distance], follow <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- randomness - <20><><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1-100
|
||||
function follow( name, distance )
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD>
|
||||
randomness = 60
|
||||
local objectID = l2c_getCharObjectIdByName( name )
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if objectID == nil then
|
||||
l2h_print( "Character [", name, "] is not visible!\n" )
|
||||
return
|
||||
end
|
||||
if randomness >= distance then randomness = distance/2 end
|
||||
local x, y, z -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
local gox, goy, goz
|
||||
local c -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if (l2h_time()-rand_time) > follow_rand_time then
|
||||
rand_time = l2h_time()
|
||||
x_rand = math.random( (0-randomness), randomness )
|
||||
y_rand = math.random( (0-randomness), randomness )
|
||||
end
|
||||
x,y,z = l2c_getPos() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID ) -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox=c.xDst
|
||||
goy=c.yDst
|
||||
goz=c.zDst
|
||||
else
|
||||
gox=c.x
|
||||
goy=c.y
|
||||
goz=c.z
|
||||
end
|
||||
if (math.abs(gox - x) > distance) or (math.abs(goy - y) > distance) then
|
||||
--if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) and (math.abs(c.xDst - x) > distance) and (math.abs(c.yDst - y) > distance) then
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
else
|
||||
return -- <20><> <20><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
end
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
repeat
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID )
|
||||
--l2h_print( "Following [", name, "] to (", c.x, ",", c.y, ",", c.z, ")\n" )
|
||||
if (l2h_time()-rand_time) > follow_rand_time then
|
||||
rand_time = l2h_time()
|
||||
x_rand = math.random( (0-randomness), randomness )
|
||||
y_rand = math.random( (0-randomness), randomness )
|
||||
end
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox=c.xDst
|
||||
goy=c.yDst
|
||||
goz=c.zDst
|
||||
else
|
||||
gox=c.x
|
||||
goy=c.y
|
||||
goz=c.z
|
||||
end
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
l2h_delay( 300 ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
x,y,z = l2c_getPos() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
until ((math.abs(gox - x) < distance) or (math.abs(goy - y) < distance) or (math.abs(goz - z) < distance))
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> check_party()
|
||||
function check_member_HP_and_heal( member )
|
||||
wait_end_of_cast() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
local hp_percent = 100.0 * member.curHp / member.maxHp; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % HP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
local mp_percent = 100.0 * member.curMp / member.maxMp; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % MP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if heal_party_enable then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if hp_percent < heal_battle_percent then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, ": ", member.name.." needs BATTLE healing! ", hp_percent, "% HP!\n" );
|
||||
follow( member.name, heal_party_distance, 50 ); -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
myTargetObjectTimeout( member.objectID, 5 );
|
||||
myUseSkill( heal_battle_skill );
|
||||
wait_end_of_cast()
|
||||
end
|
||||
if hp_percent < heal_percent then -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, ": ", member.name.." needs healing! ", hp_percent, "% HP!\n" );
|
||||
follow( member.name, heal_party_distance, 50 ); -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
myTargetObjectTimeout( member.objectID, 5 );
|
||||
myUseSkill( heal_skill );
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
if recharge_enable and (mp_percent < recharge_mp_percent) then
|
||||
l2h_print( script_name, ": ", member.name.." needs recharge! ", mp_percent, "% MP!\n" );
|
||||
follow( member.name, heal_party_distance, 50 ); -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
myTargetObjectTimeout( member.objectID, 5 );
|
||||
myUseSkill( recharge_skill );
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
function check_party()
|
||||
local party = l2c_getParty(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
local nMembers = #party -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD>?
|
||||
local i
|
||||
if nMembers == 0 then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>? <20>_<EFBFBD>
|
||||
l2h_print( script_name, " No members in party!\n" )
|
||||
l2h_delay( 1000 )
|
||||
return -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>!
|
||||
end
|
||||
for i=1, nMembers, 1 do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
check_member_HP_and_heal( party[i] ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> i-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
function is_in_party()
|
||||
local party = l2c_getParty()
|
||||
local nMembers = #party
|
||||
if nMembers < 1 then return false end -- no party
|
||||
return true
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> skillID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> have_buffs
|
||||
function buffIsPresent( skillID, have_buffs )
|
||||
if not have_buffs then return false end
|
||||
local i
|
||||
for i=1, #have_buffs do
|
||||
if have_buffs[i].skillID == skillID then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
--[[ table l2c_getPartyMemberBuffs( int objectID )
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD> lua (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> l2c_getBuffs().
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: skillName, skillID, skillLvl, durationSecs
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. ]]--
|
||||
function rebuff_party_autodetect()
|
||||
if not party_buff_enable then return end
|
||||
if not party_buff_autodetect then return end
|
||||
local party = l2c_getParty(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
local nMembers = #party; -- <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>?
|
||||
if nMembers < 1 then return end -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> :(
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
--l2h_print( script_name, " Rebuff party autodetect!\n" )
|
||||
local i = 0;
|
||||
for i=1, nMembers do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
local member_buffs = l2c_getPartyMemberBuffs( party[i].objectID );
|
||||
local hp_percent = 100.0 * party[i].curHp / party[i].maxHp; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> % HP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
local ii = 0;
|
||||
for ii=1, #party_buffs do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ii-<2D> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if not buffIsPresent( party_buffs[ii], member_buffs ) and hp_percent>1 then
|
||||
l2h_print( script_name, " Rebuff party auto: member [", party[i].name,
|
||||
"] is missing buff [", party_buffs[ii], "]\n" );
|
||||
myTargetObjectTimeout( party[i].objectID, 3 ); -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
follow( party[i].name, party_buff_distance, 50 ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, " Rebuff party auto: use [", party_buffs[ii], "]\n" );
|
||||
myUseSkill( party_buffs[ii] ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
wait_end_of_cast(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
end
|
||||
end
|
||||
end
|
||||
--l2h_print( script_name, " Rebuff party autodetect end.\n" )
|
||||
end
|
||||
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rebuff_party_by_timer()
|
||||
function rebuff_party_member_by_timer( member )
|
||||
myTargetObjectTimeout( member.objectID, 5 ); -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
local i
|
||||
for i=1, #party_buffs do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
follow( member.name, party_buff_distance, 50 ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, " Rebuff party timer: use [", party_buffs[i], "]\n" );
|
||||
myUseSkill( party_buffs[i] ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
wait_end_of_cast(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> rebuff_party()
|
||||
function rebuff_party_by_timer()
|
||||
if not party_buff_enable then return end
|
||||
local party = l2c_getParty();
|
||||
local nMembers = #party;
|
||||
if nMembers < 1 then return end -- no party
|
||||
local curTime = l2h_time(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>.
|
||||
local timePassed = curTime - sys_last_party_buff_time; -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if timePassed < party_rebuff_secs then return end -- <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, " Rebuff party by timer!\n" )
|
||||
sys_last_party_buff_time = curTime; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
local i
|
||||
for i=1, nMembers do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
rebuff_party_member_by_timer( party[i] )
|
||||
end
|
||||
l2h_print( script_name, " Rebuff party by timer end.\n" )
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function rebuff_party()
|
||||
if #party_buffs < 1 then
|
||||
l2h_print( script_name, " party buffs not configured!\n" )
|
||||
return
|
||||
end
|
||||
if party_buff_autodetect then
|
||||
rebuff_party_autodetect()
|
||||
else
|
||||
rebuff_party_by_timer()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function check_self_buffs()
|
||||
local have_buffs = l2c_getBuffs()
|
||||
local user = l2c_getStats() -- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
local i
|
||||
for i=1, #self_buffs do
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if not buffIsPresent( self_buffs[i], have_buffs ) then
|
||||
l2h_print( script_name, " Need self rebuff [", self_buffs[i], "]\n" )
|
||||
myTargetObjectTimeout( user.objectID, 5 )
|
||||
myUseSkill( self_buffs[i] )
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function heal_self()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local curTime = l2h_time()
|
||||
-- use heal item
|
||||
use_heal_item()
|
||||
--if heal_item_use_enable then
|
||||
-- if hp_percent <= heal_item_use_hp then
|
||||
-- if (curTime - sys_last_heal_item_use_time) > heal_item_reuse_secs then
|
||||
-- l2h_print( script_name, " Self heal: use item!\n" )
|
||||
-- l2c_useItem( heal_itemID );
|
||||
-- sys_last_heal_item_use_time = curTime
|
||||
-- end
|
||||
-- end
|
||||
--end
|
||||
if heal_self_enable then -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
local user = l2c_getStats()
|
||||
if hp_percent < heal_battle_percent then
|
||||
l2h_print( script_name, " Self heal: need self BATTLE heal!\n" )
|
||||
myTargetObjectTimeout( user.objectID, 5 )
|
||||
myUseSkill( heal_battle_skill )
|
||||
wait_end_of_cast()
|
||||
end
|
||||
if hp_percent < heal_percent then
|
||||
l2h_print( script_name, " Self heal: need self heal!\n" )
|
||||
myTargetObjectTimeout( user.objectID, 5 )
|
||||
myUseSkill( heal_skill )
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function use_heal_item()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local mp_percent = 100.0 * curMp / maxMp
|
||||
local curTime = l2h_time()
|
||||
-- use heal item
|
||||
if (heal_itemID>0) then
|
||||
if hp_percent <= heal_item_use_hp then
|
||||
if (curTime - sys_last_heal_item_use_time) > heal_item_reuse_secs then
|
||||
l2h_print( "Self heal: use item!\n" )
|
||||
l2c_useItem( heal_itemID );
|
||||
sys_last_heal_item_use_time = curTime;
|
||||
end
|
||||
end
|
||||
end
|
||||
if (mana_itemID>0) then
|
||||
if mp_percent <= mana_item_use_mp then
|
||||
if (curTime - sys_last_mana_item_use_time) > mana_item_reuse_secs then
|
||||
l2h_print( "Self heal: use item!\n" )
|
||||
l2c_useItem( mana_itemID );
|
||||
sys_last_mana_item_use_time = curTime;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function CARDINAL_USE_BALANCE_LIFE()
|
||||
if not balance_life_enable then return end
|
||||
local party = l2c_getParty();
|
||||
if not party then return end
|
||||
local nparty = #party;
|
||||
if nparty < 1 then return end
|
||||
local i = 0;
|
||||
local good_members = 0;
|
||||
local bad_members = 0;
|
||||
local curHp, maxHp, curMp, maxMp = l2c_getHPMPCPWeight();
|
||||
local my_percent = 100.0 * curHp / maxHp;
|
||||
local my_mp_percent = 100.0 * curMp / maxMp;
|
||||
if my_mp_percent < balance_life_min_mp_limit then return end
|
||||
if my_percent >= balance_life_good_hp then good_members = good_members + 1 end
|
||||
if my_percent <= balance_life_bad_hp then bad_members = bad_members + 1 end
|
||||
for i=1, nparty do
|
||||
local percent = 100.0 * party[i].curHp / party[i].maxHp;
|
||||
if percent >= balance_life_good_hp then good_members = good_members + 1 end
|
||||
if percent <= balance_life_bad_hp then bad_members = bad_members + 1 end
|
||||
end
|
||||
--l2h_print( script_name, " Balance life check: good/bad: ", good_members, " / ", bad_members, "\n" );
|
||||
if (good_members >= balance_life_min_good_players) and
|
||||
(bad_members <= balance_life_max_bad_players) and (bad_members > 0) then
|
||||
l2h_print( script_name, " Balance life activated: good/bad: ", good_members, " / ", bad_members, "\n" );
|
||||
myUseSkill( balance_life_skill );
|
||||
wait_end_of_cast();
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function CARDINAL_USE_MAJOR_GROUP_HEAL()
|
||||
if not group_heal_enable then return end
|
||||
local party = l2c_getParty();
|
||||
if not party then return end
|
||||
local nparty = #party;
|
||||
if nparty < 1 then return end
|
||||
local i = 0;
|
||||
local bad_members = 0;
|
||||
local curHp, maxHp = l2c_getHPMPCPWeight();
|
||||
local my_percent = 100.0 * curHp / maxHp;
|
||||
if my_percent <= group_heal_bad_hp then bad_members = bad_members + 1 end
|
||||
for i=1, nparty do
|
||||
local percent = 100.0 * party[i].curHp / party[i].maxHp;
|
||||
if percent <= group_heal_bad_hp then bad_members = bad_members + 1 end
|
||||
end
|
||||
-- l2h_print( script_name, " Group heal check: bad: ", bad_members, "\n" );
|
||||
if bad_members >= group_heal_min_bad_players then
|
||||
l2h_print( script_name, " Group heal activated: bad: ", bad_members, "\n" );
|
||||
myUseSkill( group_heal_skill );
|
||||
wait_end_of_cast();
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> )
|
||||
function main_AI()
|
||||
if not l2c_is_INGAME() then return end
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
---- cardinal unique ----
|
||||
CARDINAL_USE_BALANCE_LIFE();
|
||||
CARDINAL_USE_MAJOR_GROUP_HEAL();
|
||||
---- cardinal unique ----
|
||||
check_party(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if follow_enable then follow( follow_name, follow_distance, 10 ) end -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
check_self_buffs(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
rebuff_party(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
heal_self(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if sys_should_exit then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
l2h_delay( 500 ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
end
|
||||
|
||||
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2h_print( script_name, " script started\n" );
|
||||
--l2h_registerSysStopVar( "sys_should_exit" );
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><>?
|
||||
if not l2c_is_INGAME() then
|
||||
l2h_print( script_name, " Not in game!\n" );
|
||||
return;
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2c_autoSoulshot( soulshot_itemID )
|
||||
l2c_autoSoulshot( spiritshot_itemID )
|
||||
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
while not is_in_party() do l2h_delay( 1000 ); end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
check_self_buffs()
|
||||
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
follow( follow_name, heal_party_distance, 10 );
|
||||
rebuff_party();
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD>
|
||||
repeat
|
||||
main_AI(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
if sys_should_exit then break end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD> <20><><EFBFBD>?
|
||||
if not l2c_is_INGAME() then break end
|
||||
until true == false -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> true <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false
|
||||
|
||||
l2h_print( script_name, " script stopped\n" )
|
771
l2ooghelper/scripts/archer_assist_pvp.lua
Normal file
771
l2ooghelper/scripts/archer_assist_pvp.lua
Normal file
@@ -0,0 +1,771 @@
|
||||
script_name = "Archer_assist_pvp: ";
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20> <20><>
|
||||
sit_below_hp = 0;
|
||||
stand_above_hp = 0;
|
||||
sit_below_mp = 0;
|
||||
stand_above_mp = 0;
|
||||
|
||||
-- itemID <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>- <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
soulshot_item = 1467; -- SSS
|
||||
spiritshot_item = 0;
|
||||
|
||||
heal_itemID = 1539; -- Greater Healing potion
|
||||
heal_item_use_hp = 95; -- 80%
|
||||
heal_item_reuse_secs = 5; -- secs
|
||||
|
||||
mana_itemID = 728; -- Mana Potion
|
||||
mana_item_use_mp = 85; -- 80%
|
||||
mana_item_reuse_secs = 1; -- secs
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
combat_zone_type = "square"; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
--combat_zone_type = "circle"; -- <20><><EFBFBD><EFBFBD>
|
||||
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
-- "auto" <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- "manual" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> combat_start_x, combat_start_y, combat_start_z
|
||||
combat_start_point = "manual";
|
||||
combat_range = 3500; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
combat_start_x = 135384;
|
||||
combat_start_y = 23227;
|
||||
combat_start_z = -3749;
|
||||
combat_target_dz = 500; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> +/- 500
|
||||
combat_timeout_secs = 15; -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 15 <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
assist_mode = true;
|
||||
assist_member = "1110011001";
|
||||
assist_only_mobs = false; -- if false, can assist in PvP to kill players
|
||||
assist_dont_kill_party = true;
|
||||
|
||||
follow_name = assist_member;
|
||||
follow_distance = 120;
|
||||
follow_rand_time = 3;
|
||||
kite_distance = 900;
|
||||
kite_range = 400;
|
||||
|
||||
follow_snipe = true;
|
||||
snipe_id = 313;
|
||||
|
||||
pickup_range = 400;
|
||||
pickup_item_timeout = 750;
|
||||
|
||||
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>:
|
||||
not_attack_mobs = { 21801, 21802, 21810 }; -- Treasure Chests
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>,
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
|
||||
shadow_weapon_use = true;
|
||||
shadow_weapon_iid = 10445; -- Icarus Bow Focus
|
||||
|
||||
skill_1 = 0; --101;--101; -- Stun Shot
|
||||
skill_1_delay = 3000;
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
self_buffs = {
|
||||
131, -- Hawk Eye
|
||||
99, -- Rapid Shot
|
||||
--256, -- Accuracy
|
||||
416,
|
||||
415,
|
||||
};
|
||||
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
-- system vars!!! do not edit !!!
|
||||
-------------------------------------------------------
|
||||
-------------------------------------------------------
|
||||
sys_ignore_oid = 0;
|
||||
sys_last_heal_item_use_time = 0;
|
||||
sys_last_mana_item_use_time = 0;
|
||||
-------------
|
||||
sys_skill_1_used = false;
|
||||
skill1_time = 0;
|
||||
rand_time = 0;
|
||||
x_rand = 0;
|
||||
y_rand = 0;
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function wait_end_of_cast()
|
||||
while l2c_isCastingNow() do l2h_delay( 50 ) end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeoutSecs <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function myTargetObjectTimeout( objectID, timeoutSecs )
|
||||
if timeoutSecs == nil then timeoutSecs = 5 end
|
||||
local targetStartTime = l2h_time();
|
||||
local targetObjectId = 0;
|
||||
local timePassed = 0;
|
||||
targetObjectId = l2c_getTarget();
|
||||
if targetObjectId == objectID then return true end -- <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2c_action( objectID ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
repeat -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
targetObjectId = l2c_getTarget();
|
||||
l2h_delay( 100 );
|
||||
if sys_should_exit() then return end
|
||||
local curTime = l2h_time(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
timePassed = curTime - targetStartTime;
|
||||
until (timePassed > timeoutSecs) or (targetObjectId == objectID) -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if( targetObjectId ~= objectID ) then
|
||||
l2h_print( script_name, " ERROR: cannot target [", objectID, "]\n" );
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 100<30><30> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function myUseSkill( skillID )
|
||||
l2c_useSkill( skillID, true )
|
||||
l2h_delay( 150 )
|
||||
end
|
||||
|
||||
function isNotTank( objectId )
|
||||
local objectInfo = l2c_getObjectInfoByObjectId( objectId );
|
||||
if objectInfo == nil then return true end
|
||||
if( objectInfo.type == "pc" ) then
|
||||
if( objectInfo.classID == 4 ) then return false end
|
||||
if( objectInfo.classID == 5 ) then return false end
|
||||
if( objectInfo.classID == 6 ) then return false end
|
||||
if( objectInfo.classID == 19 ) then return false end
|
||||
if( objectInfo.classID == 20 ) then return false end
|
||||
if( objectInfo.classID == 21 ) then return false end
|
||||
if( objectInfo.classID == 32 ) then return false end
|
||||
if( objectInfo.classID == 33 ) then return false end
|
||||
if( objectInfo.classID == 34 ) then return false end
|
||||
if( objectInfo.classID == 90 ) then return false end
|
||||
if( objectInfo.classID == 91 ) then return false end
|
||||
if( objectInfo.classID == 99 ) then return false end
|
||||
if( objectInfo.classID == 100 ) then return false end
|
||||
if( objectInfo.classID == 106 ) then return false end
|
||||
if( objectInfo.classID == 107 ) then return false end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function isDead( objectId )
|
||||
local objectInfo = l2c_getObjectInfoByObjectId( objectId );
|
||||
if objectInfo == nil then return true end
|
||||
if( objectInfo.type == "pc" ) then
|
||||
if( objectInfo.isAlikeDead == 1 ) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if( objectInfo.type == "npc" ) then
|
||||
if( objectInfo.isAlikeDead == 1 ) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
if( objectInfo.type == "mob" ) then
|
||||
if( objectInfo.isAlikeDead == 1 ) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function validate_target()
|
||||
local oid, curHp, maxHp = l2c_getTarget();
|
||||
if oid == 0 then return false end -- no target? :(
|
||||
local info = l2c_getObjectInfoByObjectId( oid );
|
||||
if not info then return false end -- O_o error
|
||||
if assist_only_mobs then
|
||||
if info.type == "mob" then return true end -- target must be attackable npc: mob
|
||||
--l2h_print( "Not mob!\n" );
|
||||
l2h_delay( 500 );
|
||||
return false; -- not mob on target
|
||||
end
|
||||
-- not assist ONLY mobs
|
||||
if assist_dont_kill_party then
|
||||
local party = l2c_getParty();
|
||||
local nMembers = #party;
|
||||
local i = 0;
|
||||
local target_is_party_member = false;
|
||||
if nMembers > 0 then
|
||||
for i=1, nMembers do
|
||||
if party[i].objectID == oid then target_is_party_member = true end
|
||||
end
|
||||
end
|
||||
if target_is_party_member then return false end -- DONT allow to kill party members
|
||||
end
|
||||
return true; -- no matter what is on target
|
||||
end
|
||||
|
||||
function isAllowedAttackMob( npcID )
|
||||
local n = #not_attack_mobs
|
||||
if n < 1 then return true end
|
||||
local i
|
||||
for i=1,n do
|
||||
if npcID == not_attack_mobs[i] then return false end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function use_heal_item()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local mp_percent = 100.0 * curMp / maxMp
|
||||
local curTime = l2h_time()
|
||||
-- use heal item
|
||||
if (heal_itemID>0) then
|
||||
if hp_percent <= heal_item_use_hp then
|
||||
if (curTime - sys_last_heal_item_use_time) > heal_item_reuse_secs then
|
||||
l2h_print( "Self heal: use item!\n" )
|
||||
l2c_useItem( heal_itemID );
|
||||
sys_last_heal_item_use_time = curTime;
|
||||
end
|
||||
end
|
||||
end
|
||||
if (mana_itemID>0) then
|
||||
if mp_percent <= mana_item_use_mp then
|
||||
if (curTime - sys_last_mana_item_use_time) > mana_item_reuse_secs then
|
||||
l2h_print( "Self heal: use item!\n" )
|
||||
l2c_useItem( mana_itemID );
|
||||
sys_last_mana_item_use_time = curTime;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function check_shadow_weapon()
|
||||
if not shadow_weapon_use then return end
|
||||
local rhand_iid, rhand_oid = l2c_getPaperdollItem( 9 ) -- 9 is PAPERDOLL_RHAND
|
||||
if rhand_iid == shadow_weapon_iid then return end
|
||||
l2h_print( "Incorrect weapon equipped! Equip shadow!\n" )
|
||||
l2h_print( "Current: Rhand: itemID [", rhand_iid, "] oid [", rhand_oid, "]\n" )
|
||||
l2c_useItemByObjectId( rhand_oid ) -- disarm current weapon
|
||||
l2h_delay( 250 )
|
||||
local cnt = l2c_getItemCount( shadow_weapon_iid )
|
||||
if cnt < 1 then
|
||||
l2h_print( "ERROR: No shadow weapon left!\n" )
|
||||
l2h_soundAlert()
|
||||
return
|
||||
end
|
||||
l2c_useItem( shadow_weapon_iid ) -- equip weapon
|
||||
l2h_delay( 250 )
|
||||
rhand_iid, rhand_oid = l2c_getPaperdollItem( 9 ) -- 9 is PAPERDOLL_RHAND
|
||||
-- wait until weapon is equipped
|
||||
while rhand_iid ~= shadow_weapon_iid do
|
||||
l2h_delay( 100 )
|
||||
rhand_iid, rhand_oid = l2c_getPaperdollItem( 9 ) -- 9 is PAPERDOLL_RHAND
|
||||
end
|
||||
l2h_print( "Equipped!\n" )
|
||||
end
|
||||
|
||||
function kill_target()
|
||||
local oid, tcurHp, tmaxHp = l2c_getTarget()
|
||||
local objectInfo = l2c_getObjectInfoByObjectId(oid)
|
||||
local selfInfo = l2c_getStats()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local mp_percent = 100.0 * curMp / maxMp
|
||||
local target_target = 0
|
||||
if objectInfo ~= nil then
|
||||
if( objectInfo.type == "pc" ) then
|
||||
target_target = objectInfo.targetObjectID
|
||||
end
|
||||
end
|
||||
local startHp = curHp -- remember mob start HP
|
||||
--l2c_action( oid ) -- action to current target
|
||||
check_shadow_weapon()
|
||||
--l2h_print(target_target)
|
||||
-- for sure, request attack current target
|
||||
-- if (not (isDead( oid ))) and selfInfo.objectID == target_target then
|
||||
use_heal_item()
|
||||
if (not (isDead( oid ))) then
|
||||
if (skill_1 > 0) and (l2c_getSkillReuseLeft(skill_1) == 0) and ((l2h_timeMsec()-skill1_time) > skill_1_delay) and (mp_percent > 20) then
|
||||
skill1_time = l2h_timeMsec()
|
||||
myUseSkill( skill_1 )
|
||||
if not l2c_isCastingNow() then
|
||||
skill1_time = 0
|
||||
else
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
end
|
||||
l2c_attack()
|
||||
l2h_delay( 400 )
|
||||
if (kite_distance > 0) and have_target() then
|
||||
x,y,z = l2c_getPos() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( oid ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
if c == nil then return end
|
||||
m = l2c_getObjectInfoByObjectId( l2c_getCharObjectIdByName( follow_name ) ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>
|
||||
--if m == nil then return end
|
||||
local mx = x
|
||||
local my = y
|
||||
local mx1 = x
|
||||
local my1 = y
|
||||
rand = 0.2
|
||||
if (calc_dist(c.x-x,c.y-y)+150<kite_distance) or (calc_dist(m.x-x,m.y-y)>kite_range) then
|
||||
if (x-c.x) ~= 0 then
|
||||
local angle = math.atan((y-c.y)/(x-c.x))
|
||||
if x<c.x then angle = angle + math.pi end
|
||||
mx = x+150 * math.cos(angle + math.random( (0-rand), rand ))
|
||||
my = y+150 * math.sin(angle + math.random( (0-rand), rand ))
|
||||
else
|
||||
if y-c.y > 0 then my = y + 150 else my = y - 150 end
|
||||
end
|
||||
mx1 = mx
|
||||
my1 = my
|
||||
if m ~= nil then
|
||||
if calc_dist(m.x-mx,m.y-my)>kite_range then
|
||||
--l2h_print( mx," ",my," ",m.x," ",m.y, "\n" )
|
||||
local cx = m.x + kite_range * (mx-m.x) / calc_dist(m.x-mx,m.y-my)
|
||||
local cy = m.y + kite_range * (my-m.y) / calc_dist(m.x-mx,m.y-my)
|
||||
mx = x + 150 * (cx-x) / calc_dist(cx-x,cy-y)
|
||||
my = y + 150 * (cy-y) / calc_dist(cx-x,cy-y)
|
||||
--l2h_print( mx," ",my," ",x," ",y," ",cx," ",cy," ", "\n" )
|
||||
else
|
||||
--l2h_print( "close ", calc_dist(m.x-mx,m.y-my), "\n" )
|
||||
end
|
||||
else
|
||||
--l2h_print( "No MA!\n" )
|
||||
end
|
||||
if (calc_dist(c.x-mx,c.y-my)<kite_distance) and (calc_dist(mx1-mx, my1-my) < 240) then
|
||||
l2c_moveTo( mx, my, z )
|
||||
else
|
||||
--l2h_print( "far ", calc_dist(c.x-mx,c.y-my), "\n" )
|
||||
end
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
local startSec = l2h_time() -- remember start time
|
||||
local curSec = 0
|
||||
|
||||
--l2h_print( " Killed target!\n" )
|
||||
-- kill was OK, cancel ignored mob
|
||||
sys_ignore_oid = 0;
|
||||
if sys_should_exit() then return end
|
||||
sys_skill1_1_used = false;
|
||||
end
|
||||
|
||||
|
||||
function rest()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local prevHp = curHp
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local mp_percent = 100.0 * curMp / maxMp
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
repeat
|
||||
if sys_should_exit() then return end
|
||||
curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
if curHp < prevHp then
|
||||
l2h_print( "Rest interrupted (HP)?\n" )
|
||||
l2h_soundAlert()
|
||||
return
|
||||
end
|
||||
prevHp = curHp
|
||||
hp_percent = 100.0 * curHp / maxHp
|
||||
mp_percent = 100.0 * curMp / maxMp
|
||||
l2h_delay( 1000 )
|
||||
isSitting, isRunnig = l2c_getSitRun()
|
||||
if not isSitting then
|
||||
l2h_print( "Rest interrupted (stand)?\n" )
|
||||
l2h_soundAlert()
|
||||
return
|
||||
end
|
||||
l2h_delay( 200 )
|
||||
local hp_good = false
|
||||
local mp_good = false
|
||||
if hp_percent >= stand_above_hp then hp_good = true end
|
||||
if mp_percent >= stand_above_mp then mp_good = true end
|
||||
until hp_good and mp_good
|
||||
l2h_print( "Rest end, HP ok ", hp_percent, "%, MP ok ", mp_percent, "%, standing\n" )
|
||||
ensurestand()
|
||||
l2h_delay( 1500 )
|
||||
end
|
||||
|
||||
function check_my_hp_mp()
|
||||
local curHp, maxHp, curMp, maxMp, curCp, maxCp = l2c_getHPMPCPWeight()
|
||||
local hp_percent = 100.0 * curHp / maxHp
|
||||
local mp_percent = 100.0 * curMp / maxMp
|
||||
local hp_low = false
|
||||
local mp_low = false
|
||||
if hp_percent < sit_below_hp then hp_low = true end
|
||||
if mp_percent < sit_below_mp then mp_low = true end
|
||||
if hp_low or mp_low then
|
||||
l2h_print( "We must sit! HP ", hp_percent, "%, MP ", mp_percent, "%\n" )
|
||||
l2c_sitStand()
|
||||
l2h_delay( 500 )
|
||||
rest()
|
||||
--[[else
|
||||
l2h_print( "No need to rest...\n" )]]--
|
||||
end
|
||||
end
|
||||
|
||||
function ensurestand()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if isSitting then
|
||||
l2c_sitStand()
|
||||
l2h_delay( 1000 )
|
||||
end
|
||||
end
|
||||
|
||||
function ensuresit()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if not isSitting then
|
||||
l2c_sitStand()
|
||||
l2h_delay( 1000 )
|
||||
end
|
||||
end
|
||||
|
||||
function ensurerun()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if not isRunnig then
|
||||
l2c_runWalk()
|
||||
l2h_delay( 50 )
|
||||
end
|
||||
end
|
||||
|
||||
function ensurewalk()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if isRunnig then
|
||||
l2c_runWalk()
|
||||
l2h_delay( 50 )
|
||||
end
|
||||
end
|
||||
|
||||
function calc_dist( dx, dy )
|
||||
return math.sqrt( dx*dx + dy*dy )
|
||||
end
|
||||
|
||||
function isPointInFightZone( px, py, pz )
|
||||
-- first check z-delta
|
||||
local dz = math.abs( pz - combat_start_z )
|
||||
if dz > combat_target_dz then return false end
|
||||
local dx = math.abs( px - combat_start_x )
|
||||
local dy = math.abs( py - combat_start_y )
|
||||
-- for square zone
|
||||
if combat_zone_type == "square" then
|
||||
if (dx < combat_range) and (dy < combat_range) then return true end
|
||||
--l2h_print( "isPointInFightZone(): no (square)\n" )
|
||||
return false
|
||||
end
|
||||
-- for circle zone
|
||||
if combat_zone_type == "circle" then
|
||||
local r = calc_dist( dx, dy )
|
||||
if r < combat_range then return true end
|
||||
--l2h_print( "isPointInFightZone(): no (circle)\n" )
|
||||
return false
|
||||
end
|
||||
l2h_print( "ERROR: unknown combat zone type!\n" )
|
||||
return false
|
||||
end
|
||||
|
||||
function target_nearest_attackable()
|
||||
local x, y, z = l2c_getPos()
|
||||
local mobs = l2c_getVisibleMobs()
|
||||
local nmobs = #mobs
|
||||
local i = 0
|
||||
local dist = 0
|
||||
local min_dist = 20000
|
||||
local min_objectID = 0
|
||||
local min_name = ""
|
||||
if nmobs == 0 then
|
||||
l2h_print( "No mobs?\n" );
|
||||
l2h_delay( 200 );
|
||||
return
|
||||
end
|
||||
for i=1, nmobs do
|
||||
local mobinfo = l2c_getObjectInfoByObjectId( mobs[i] )
|
||||
-- only valid mobs and which are not ignored
|
||||
if (mobinfo ~= nil) and (mobs[i] ~= sys_ignore_oid) then
|
||||
-- check if mob is in fight range
|
||||
local isInRange = isPointInFightZone( mobinfo.x, mobinfo.y, mobinfo.z )
|
||||
-- check if we are allowed to attack this mob
|
||||
local isAllowed = isAllowedAttackMob( mobinfo.templateID )
|
||||
local isAlive = false
|
||||
if mobinfo.isAlikeDead == 0 then isAlive = true end
|
||||
-- only count alive mobs, that are in fight range and allowed to attack
|
||||
if ( isAlive and isInRange and isAllowed ) then
|
||||
local dx = mobinfo.x - x
|
||||
local dy = mobinfo.y - y
|
||||
dist = calc_dist( dx, dy )
|
||||
if dist < min_dist then
|
||||
min_dist = dist
|
||||
min_objectID = mobinfo.objectID
|
||||
min_name = mobinfo.name
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if min_objectID == 0 then
|
||||
l2h_print( "Error: cannot target: min_objectID = 0!, no mons in range?\n" )
|
||||
l2h_delay( 1000 )
|
||||
-- begin move to combat start point
|
||||
l2c_moveTo( combat_start_x, combat_start_y, combat_start_z )
|
||||
return
|
||||
end
|
||||
l2h_print( "Target: [", min_name, "] " )
|
||||
l2c_action( min_objectID )
|
||||
l2h_delay( 250 )
|
||||
end
|
||||
|
||||
function targetByAssist()
|
||||
if not assist_mode then return end
|
||||
local party = l2c_getParty();
|
||||
if #party == 0 then
|
||||
l2h_print( "Cannot assist, no party!\n" );
|
||||
l2h_delay( 200 );
|
||||
return
|
||||
end
|
||||
local i = 0;
|
||||
local targetObjectID = 0;
|
||||
for i=1, #party do
|
||||
if party[i].name == assist_member then
|
||||
targetObjectID = party[i].targetObjectID;
|
||||
end
|
||||
end
|
||||
local oid, curHp, maxHp = l2c_getTarget();
|
||||
if not ( targetObjectID == 0 ) then
|
||||
if targetObjectID == l2c_getCharObjectIdByName( follow_name ) then
|
||||
--l2c_targetCancel()
|
||||
follow( follow_name, 120 )
|
||||
end
|
||||
if oid == 0 then
|
||||
myTargetObjectTimeout( targetObjectID, 1 );
|
||||
else if isDead( oid ) then
|
||||
--l2h_print( "DEAD\n" )
|
||||
myTargetObjectTimeout( targetObjectID, 1 );
|
||||
else if isNotTank( targetObjectID ) then
|
||||
myTargetObjectTimeout( targetObjectID, 1 );
|
||||
end
|
||||
--l2h_print( "LIVE\n" )
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function have_target()
|
||||
local oid, curHp, maxHp = l2c_getTarget();
|
||||
if oid == 0 then return false end -- no target? :(
|
||||
local info = l2c_getObjectInfoByObjectId( oid );
|
||||
if not info then return false end -- O_o error
|
||||
local selfInfo = l2c_getStats()
|
||||
if assist_only_mobs then
|
||||
if info.type == "mob" then return true end -- target must be attackable npc: mob
|
||||
return false; -- not mob on target
|
||||
end
|
||||
if selfInfo.objectID == oid then return false end
|
||||
if isDead(oid) then return false end
|
||||
-- not assist ONLY mobs
|
||||
if assist_dont_kill_party then
|
||||
local party = l2c_getParty();
|
||||
local nMembers = #party;
|
||||
local i = 0;
|
||||
local target_is_party_member = false;
|
||||
if nMembers > 0 then
|
||||
for i=1, nMembers do
|
||||
if party[i].objectID == oid then target_is_party_member = true end
|
||||
end
|
||||
end
|
||||
if target_is_party_member then return false end -- DONT allow to kill party members
|
||||
end
|
||||
return true; -- no matter what is on target
|
||||
end
|
||||
|
||||
function target_mob()
|
||||
if assist_mode then
|
||||
targetByAssist()
|
||||
else
|
||||
target_nearest_attackable()
|
||||
end
|
||||
end
|
||||
|
||||
function pickup_nearest_items( pickup_dist )
|
||||
local x, y, z = l2c_getPos()
|
||||
local items = l2c_getVisibleItems()
|
||||
local nitems = #items
|
||||
local dist = 0
|
||||
local i = 0
|
||||
if nitems == 0 then return end
|
||||
l2c_targetCancel()
|
||||
l2h_delay( 50 )
|
||||
l2h_print( "Pick: " )
|
||||
for i=1, nitems do
|
||||
if sys_should_exit() then return end
|
||||
local iteminfo = l2c_getObjectInfoByObjectId( items[i] )
|
||||
if iteminfo ~= nil then
|
||||
local dx = iteminfo.x - x;
|
||||
local dy = iteminfo.y - y;
|
||||
dist = calc_dist( dx, dy )
|
||||
if dist < pickup_dist then
|
||||
--l2h_print( "[", iteminfo.name, "] ", iteminfo.count, ", " )
|
||||
--l2c_moveTo( iteminfo.x, iteminfo.y, iteminfo.z )
|
||||
l2c_action( items[i] )
|
||||
--l2c_action( items[i] )
|
||||
l2h_delay( pickup_item_timeout )
|
||||
end
|
||||
end
|
||||
end
|
||||
l2h_print( " Pick end\n" )
|
||||
end
|
||||
|
||||
function follow( name, distance )
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD>
|
||||
randomness = 60
|
||||
local objectID = l2c_getCharObjectIdByName( name )
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if objectID == nil then
|
||||
l2h_print( "Character [", name, "] is not visible!\n" )
|
||||
return
|
||||
end
|
||||
if randomness >= distance then randomness = distance/2 end
|
||||
local x, y, z -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
local gox, goy, goz
|
||||
local c -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if (l2h_time()-rand_time) > follow_rand_time then
|
||||
rand_time = l2h_time()
|
||||
x_rand = math.random( (0-randomness), randomness )
|
||||
y_rand = math.random( (0-randomness), randomness )
|
||||
end
|
||||
x,y,z = l2c_getPos() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID ) -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox=c.xDst
|
||||
goy=c.yDst
|
||||
goz=c.zDst
|
||||
else
|
||||
gox=c.x
|
||||
goy=c.y
|
||||
goz=c.z
|
||||
end
|
||||
if (math.abs(gox - x) > distance) or (math.abs(goy - y) > distance) then
|
||||
--if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) and (math.abs(c.xDst - x) > distance) and (math.abs(c.yDst - y) > distance) then
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
else
|
||||
return -- <20><> <20><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
end
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
repeat
|
||||
if sys_should_exit() then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID )
|
||||
--l2h_print( "Following [", name, "] to (", c.x, ",", c.y, ",", c.z, ")\n" )
|
||||
if (l2h_time()-rand_time) > follow_rand_time then
|
||||
rand_time = l2h_time()
|
||||
x_rand = math.random( (0-randomness), randomness )
|
||||
y_rand = math.random( (0-randomness), randomness )
|
||||
end
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox=c.xDst
|
||||
goy=c.yDst
|
||||
goz=c.zDst
|
||||
else
|
||||
gox=c.x
|
||||
goy=c.y
|
||||
goz=c.z
|
||||
end
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
l2h_delay( 300 ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
x,y,z = l2c_getPos() -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
until ((math.abs(gox - x) < distance) or (math.abs(goy - y) < distance) or (math.abs(goz - z) < distance))
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> skillID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> have_buffs
|
||||
function buffIsPresent( skillID, have_buffs )
|
||||
if not have_buffs then return false end
|
||||
local i
|
||||
for i=1, #have_buffs do
|
||||
if have_buffs[i].skillID == skillID then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function check_self_buffs()
|
||||
local have_buffs = l2c_getBuffs()
|
||||
local ma_buffs = l2c_getPartyMemberBuffs(l2c_getCharObjectIdByName(follow_name))
|
||||
local j
|
||||
local have_snipe = false
|
||||
for j=1, #ma_buffs do
|
||||
if ma_buffs[j].skillID == snipe_id then
|
||||
have_snipe = true
|
||||
end
|
||||
--if
|
||||
end
|
||||
local user = l2c_getStats() -- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
local i
|
||||
if follow_snipe then
|
||||
if (not have_snipe) and ( buffIsPresent( snipe_id, have_buffs )) then
|
||||
l2c_buffCancel( snipe_id )
|
||||
--l2h_print("Cancel!\n")
|
||||
end
|
||||
if have_snipe and (not buffIsPresent( snipe_id, have_buffs )) then
|
||||
--myTargetObjectTimeout( user.objectID, 5 )
|
||||
--l2h_print("Snipe!\n")
|
||||
myUseSkill( snipe_id )
|
||||
wait_end_of_cast()
|
||||
end
|
||||
end
|
||||
for i=1, #self_buffs do
|
||||
if sys_should_exit() then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if not buffIsPresent( self_buffs[i], have_buffs ) then
|
||||
l2h_print( script_name, " Need self rebuff [", self_buffs[i], "]\n" )
|
||||
myTargetObjectTimeout( user.objectID, 5 )
|
||||
myUseSkill( self_buffs[i] )
|
||||
wait_end_of_cast()
|
||||
end
|
||||
--if
|
||||
end
|
||||
end
|
||||
|
||||
function fight()
|
||||
target_mob()
|
||||
if validate_target() then
|
||||
if sys_should_exit() then return end
|
||||
kill_target()
|
||||
if sys_should_exit() then return end
|
||||
--pickup_nearest_items( 400 )
|
||||
--pickup_nearest_items( pickup_range )
|
||||
--if sys_should_exit() then return end
|
||||
--check_my_hp_mp()
|
||||
--if sys_should_exit() then return end
|
||||
end
|
||||
end
|
||||
|
||||
function setup_soulshots()
|
||||
if soulshot_item > 0 then l2c_autoSoulshot( soulshot_item, true ) end
|
||||
if spiritshot_item > 0 then l2c_autoSoulshot( spiritshot_item, true ) end
|
||||
end
|
||||
|
||||
function setup_fight_zone()
|
||||
if assist_mode then
|
||||
l2h_print( "Combat mode: assist\n" );
|
||||
return
|
||||
end
|
||||
l2h_print( "Combat mode: leader\n" )
|
||||
if combat_start_point == "auto" then
|
||||
combat_start_x, combat_start_y, combat_start_z = l2c_getPos()
|
||||
end
|
||||
l2h_print( "Combat start point type: ", combat_start_point, "\n" );
|
||||
l2h_print( "Combat start at: (", combat_start_x, ", ", combat_start_y, ", ", combat_start_z, "\n" );
|
||||
l2h_print( "Combat zone type: ", combat_zone_type, "\n" );
|
||||
end
|
||||
|
||||
-- script start
|
||||
ensurestand()
|
||||
ensurerun()
|
||||
check_shadow_weapon() -- equip weapon before using soulshots/spiritshots
|
||||
setup_soulshots()
|
||||
setup_fight_zone()
|
||||
|
||||
while true do
|
||||
check_self_buffs()
|
||||
if assist_mode then
|
||||
if (kite_distance == 0) or (not (have_target())) then
|
||||
follow( follow_name, follow_distance )
|
||||
end
|
||||
end
|
||||
fight()
|
||||
if sys_should_exit() then break end
|
||||
if not l2c_is_INGAME() then break end
|
||||
end
|
||||
|
||||
l2h_print( "Script assist stopped\n" )
|
2
l2ooghelper/scripts/example_compile.bat
Normal file
2
l2ooghelper/scripts/example_compile.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
luac -o stdlib.luac stdlib.lua
|
||||
pause
|
393
l2ooghelper/scripts/lua_api.html
Normal file
393
l2ooghelper/scripts/lua_api.html
Normal file
@@ -0,0 +1,393 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<title>L2OOGHelper LUA script API</title>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
|
||||
<style type="text/css">
|
||||
body, td { font-family: Tahoma, Verdana, Sans }
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="white" text="black">
|
||||
<font size="2">
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2h_console_enable( <font color="blue">boolean</font> enable )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2h_print(...)</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2h_delay( <font color="blue">int</font> milliseconds )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <b>milliseconds</b> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2h_soundAlert()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2h_time()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> Unix (<28>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1970)
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2h_timeMsec()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Windows
|
||||
(<a href="http://msdn.microsoft.com/en-us/library/ms724408%28VS.85%29.aspx">GetTickCount()</a>)
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">boolean</font> sys_should_exit()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>true</b>, <20><><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>true</b>. <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. :(
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">boolean</font> l2c_is_IN_GAME()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>).
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>
|
||||
<font color="blue">int</font>, <font color="blue">int</font>,
|
||||
<font color="blue">int</font>, <font color="blue">int</font>,
|
||||
<font color="blue">int</font>, <font color="blue">int</font>,
|
||||
<font color="blue">int</font>, <font color="blue">int</font>
|
||||
l2c_getHPMPCPWeight()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> curHp,maxHp, curMp,maxMp, curCp,maxCp, curLoad,maxLoad.<br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>
|
||||
<font color="blue">int</font>, <font color="blue">int</font>,
|
||||
<font color="blue">int</font> l2c_getPos()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> x,y,z - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getStats()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<br>
|
||||
<ul>
|
||||
<li><b><font color="blue">int</font> objectID</b></li>
|
||||
<li><b><font color="blue">string</font> name</b></li>
|
||||
<li><b><font color="blue">int</font> heading</b></li>
|
||||
<li><b><font color="blue">int</font> pAtk</b></li>
|
||||
<li><b><font color="blue">int</font> mAtk</b></li>
|
||||
<li><b><font color="blue">int</font> pDef</b></li>
|
||||
<li><b><font color="blue">int</font> mDef</b></li>
|
||||
<li><b><font color="blue">int</font> pAtkApd</b></li>
|
||||
<li><b><font color="blue">int</font> mAtkSpd</b></li>
|
||||
</ul>
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">boolean</font>, <font color="blue">boolean</font> l2c_getSitRun()</b><br />
|
||||
local isSitting, isRunning = l2c_getSitRun()<br />
|
||||
isSitting: true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
isRunning: true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_sitStand()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> sit/stand <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> /sitstand)
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_runWalk()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> run/walk <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2c_getSkillLevel( <font color="blue">int</font> skillID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ID skillID, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2c_getSkillReuseLeft( <font color="blue">int</font> skillID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">boolean</font> l2c_isCastingNow()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2c_getItemCount( <font color="blue">int</font> itemID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ID itemID <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 0, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_useItem( <font color="blue">int</font> itemID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> itemID (<28><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_useItemByObjectId( <font color="blue">int</font> objectID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><> itemID, <20> <20><> <20><><EFBFBD> objectID
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font>, <font color="blue">int</font>
|
||||
l2c_getPaperdollItem( <font color="blue">int</font> slot )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> itemID, objectID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <b>slot</b> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <b>slot</b> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <b><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></b> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <br />
|
||||
<ul>
|
||||
<li>L2_PAPERDOLL_UNDER 0</li>
|
||||
<li>L2_PAPERDOLL_REAR 1</li>
|
||||
<li>L2_PAPERDOLL_LEAR 2</li>
|
||||
<li>L2_PAPERDOLL_LREAR 3</li>
|
||||
<li>L2_PAPERDOLL_NECK 4</li>
|
||||
<li>L2_PAPERDOLL_LFINGER 5</li>
|
||||
<li>L2_PAPERDOLL_RFINGER 6</li>
|
||||
<li>L2_PAPERDOLL_LRFINGER 7</li>
|
||||
<li>L2_PAPERDOLL_HEAD 8</li>
|
||||
<li>L2_PAPERDOLL_RHAND 9</li>
|
||||
<li>L2_PAPERDOLL_LHAND 10</li>
|
||||
<li>L2_PAPERDOLL_GLOVES 11</li>
|
||||
<li>L2_PAPERDOLL_CHEST 12</li>
|
||||
<li>L2_PAPERDOLL_LEGS 13</li>
|
||||
<li>L2_PAPERDOLL_FEET 14</li>
|
||||
<li>L2_PAPERDOLL_BACK 15</li>
|
||||
<li>L2_PAPERDOLL_LRHAND 16</li>
|
||||
<li>L2_PAPERDOLL_FULLARMOR 17</li>
|
||||
<li>L2_PAPERDOLL_HAIR 18</li>
|
||||
<li>L2_PAPERDOLL_ALLDRESS 19</li>
|
||||
<li>L2_PAPERDOLL_HAIR2 20</li>
|
||||
<li>L2_PAPERDOLL_HAIRALL 21</li>
|
||||
<li>L2_PAPERDOLL_RBRACELET 22</li>
|
||||
<li>L2_PAPERDOLL_LBRACELET 23</li>
|
||||
<li>L2_PAPERDOLL_DECO1 24</li>
|
||||
<li>L2_PAPERDOLL_DECO2 25</li>
|
||||
<li>L2_PAPERDOLL_DECO3 26</li>
|
||||
<li>L2_PAPERDOLL_DECO4 27</li>
|
||||
<li>L2_PAPERDOLL_DECO5 28</li>
|
||||
<li>L2_PAPERDOLL_DECO6 29</li>
|
||||
</ul>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_say( <font color="blue">int</font> channel, <font color="blue">string</font> text )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>text</b> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <b>channel</b>. channel <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <b><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD></b> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
||||
<ul>
|
||||
<li>ALL = 0</li>
|
||||
<li>SHOUT = 1</li>
|
||||
<li>TELL = 2</li>
|
||||
<li>PARTY = 3</li>
|
||||
<li>CLAN = 4</li>
|
||||
<li>GM = 5</li>
|
||||
<li>PETITION_PLAYER = 6</li>
|
||||
<li>PETITION_GM = 7</li>
|
||||
<li>TRADE = 8</li>
|
||||
<li>ALLIANCE = 9</li>
|
||||
<li>ANNOUNCEMENT = 10</li>
|
||||
<li>PARTYROOM_ALL = 16</li>
|
||||
<li>PARTYROOM_COMMANDER = 15</li>
|
||||
<li>HERO_VOICE = 17</li>
|
||||
</ul>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_sayPm( <font color="blue">string</font> text, <font color="blue">string</font> to )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>text</b> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>to</b>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_npcDlg( <font color="blue">string</font> strInDlg )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>strInDlg</b> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>).
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_moveTo( <font color="blue">int</font> x, <font color="blue">int</font> y, [<font color="blue">int</font> z] )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> x,y,z.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> z.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_moveToDelta( <font color="blue">int</font> dx, <font color="blue">int</font> dy, [<font color="blue">int</font> dz] )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> dx,dy,dz <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_action( <font color="blue">int</font> objectID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <b>objectID</b>. <br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD><EFBFBD>: <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_attack()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_useSkill( <font color="blue">int</font> skillID, [<font color="blue">boolean</font> force] )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <b>skillID</b> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>. <br />
|
||||
<b>force</b> - "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD> <20><><EFBFBD><EFBFBD> Ctrl.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>, Ctrl <20><> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>".<br />
|
||||
<b><font color="red"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:</font></b> <font color="gray"><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<b><font color="purple">RequstMagicSkilluse</font></b>,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
<b><font color="purple">MagicSkilluse</font></b>,
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>); <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Abnormal State, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (Stun/Silence);
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>; <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.</font>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_autoSoulshot( <font color="blue">int</font> itemID, [<font color="blue">boolean</font> enable = true] )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>itemID</b>
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_targetByName( <font color="blue">string</font> charName )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <b>charName</b>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_targetCancel()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int, double, double</font> l2c_getTarget()</b><br />
|
||||
objectID, curHp, maxHp <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
objectID = 0, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
curHp, maxHp = 0 <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getBuffs()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <b>skillName, skillID, skillLvl, durationSecs</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b>l2c_buffCancel( <font color="blue">int</font> skillID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <b>skillID</b>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">int</font> l2c_getCharObjectIdByName( <font color="blue">string</font> charName )</b><br />
|
||||
<b><font color="blue">int</font> l2c_getNpcObjectIdByName( <font color="blue">string</font> charName )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD>/NPC <20> <20><><EFBFBD><EFBFBD><EFBFBD> <b>charName</b>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>nil</b>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getObjectInfoByObjectId( <font color="blue">int</font> objectID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <b>objectID</b>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>nil</b>.
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <b>objectID, type, x, y, z, <font color="blue">string</font> name</b><br />
|
||||
<b>type</b>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, "pc", "npc", "mob", "item"<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (pc,npc,mob) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>:
|
||||
<b>xDst, yDst, zDst, heading, curHp, maxHp, isAlikeDead</b>.
|
||||
HP,MP <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>).<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (type = pc): <b>classID</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD> (type = mob/npc): <b>templateID</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> (type = item): <b>itemID</b>, <font color="blue">boolean</font> <b>stackable, count</b><br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">boolean</font> l2c_isCharDead( <font color="blue">int</font> objectID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>objectID</b> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>false</b>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> isAlikeDead).<br />
|
||||
<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>true</b> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>).
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getVisibleChars()</b><br />
|
||||
<b><font color="blue">table</font> l2c_getVisibleMobs()</b><br />
|
||||
<b><font color="blue">table</font> l2c_getVisibleNpcs()</b><br />
|
||||
<b><font color="blue">table</font> l2c_getVisibleItems()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>, <20><><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>.</b>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - objectID.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><br />
|
||||
chars = l2c_getVisibleChars()<br />
|
||||
nChars = #chars<br />
|
||||
chars[1] == 23456765<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>l2c_getObjectInfoByObjectId</b>.<br />
|
||||
</blockquote></p>
|
||||
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getParty()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD> lua (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<br />
|
||||
<ul>
|
||||
<li><b><font color="blue">int</font> objectID</b></li>
|
||||
<li><b><font color="blue">int</font> targetObjectID</b> - ObjectID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> 0, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD></li>
|
||||
<li><b><font color="blue">string</font> name</b></li>
|
||||
<li><b><font color="blue">int</font> level</b></li>
|
||||
<li><b><font color="blue">int</font> classID</b></li>
|
||||
<li><b><font color="blue">double</font> curHp</b></li>
|
||||
<li><b><font color="blue">double</font> maxHp</b></li>
|
||||
<li><b><font color="blue">double</font> curMp</b></li>
|
||||
<li><b><font color="blue">double</font> maxMp</b></li>
|
||||
<li><b><font color="blue">double</font> curCp</b></li>
|
||||
<li><b><font color="blue">double</font> maxCp</b></li>
|
||||
</ul>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote>
|
||||
<b><font color="blue">table</font> l2c_getPartyMemberBuffs( <font color="blue">int</font> objectID )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD> lua (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>l2c_getBuffs()</b>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.<br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <b>skillName, skillID, skillLvl, durationSecs</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote><b>l2c_partySendInvite( <font color="blue">string</font> name, <font color="blue">int</font> loot )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>name</b> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <b>loot</b>:<br />
|
||||
<ul>
|
||||
<li>0 - Finders Keepers</li>
|
||||
<li>1 - Random</li>
|
||||
<li>2 - Random including spoil</li>
|
||||
<li>3 - By turn</li>
|
||||
<li>4 - By turn including spoil</li>
|
||||
</ul>
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote><b>l2c_partyLeave()</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote><b>l2c_partyKickMember( <font color="blue">string</font> name )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <b>name</b>.
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote><b>l2c_partyChangeLeader( <font color="blue">string</font> name )</b><br />
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <b>name</b>
|
||||
</blockquote></p>
|
||||
|
||||
<!-- ============================================== -->
|
||||
<h3>Undocumented:</h3>
|
||||
|
||||
<p><blockquote><b><font color="blue">table</font> l2ccfg_getAllConfig()</b><br />
|
||||
</blockquote></p>
|
||||
|
||||
<p><blockquote><b><font color="blue">table</font> l2c_sendPacketHex( <font color="blue">string</font> hexChars )</b><br />
|
||||
</blockquote></p>
|
||||
|
||||
</font>
|
||||
</body>
|
||||
</html>
|
33
l2ooghelper/scripts/say2c.lua
Normal file
33
l2ooghelper/scripts/say2c.lua
Normal file
@@ -0,0 +1,33 @@
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||||
-- <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>;
|
||||
-- <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>),
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onChat_handler(),
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> num_calls)
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onChat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>,
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
|
||||
-- <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onChat <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
num_calls = 0; -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> onChat_handler()
|
||||
|
||||
function onChat_handler( senderID, channelID, msg, from )
|
||||
num_calls = num_calls + 1;
|
||||
l2h_print( "onChat: OID [", senderID, "] ", channelID, ": [", msg, "] from [", from, "]\n" );
|
||||
end
|
||||
|
||||
l2h_print( "onChat test started!\n" );
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ScriptEngine <20><><EFBFBD><EFBFBD><EFBFBD> onChat_handler() <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
sys_register_onChat( "onChat_handler" );
|
||||
|
||||
while( true ) do
|
||||
l2h_print( ".\n" );
|
||||
if( sys_should_exit() ) then break end -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
l2h_delay( 1000 );
|
||||
end
|
||||
|
||||
l2h_print( "onChat was called ", num_calls, " times.\n" );
|
||||
l2h_print( "onChat test end.\n" );
|
257
l2ooghelper/scripts/stdlib.lua
Normal file
257
l2ooghelper/scripts/stdlib.lua
Normal file
@@ -0,0 +1,257 @@
|
||||
-- File with most standard functions used in scripts
|
||||
-- include it in your script:
|
||||
-- dofile( "stdlib.lua" );
|
||||
--
|
||||
-- <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>:
|
||||
-- dofile( "stdlib.lua" );
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> dx, dy, dz: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>( dx*dx + dy*dy + dz*dz )
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> dz <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><> <20><><EFBFBD><EFBFBD><EFBFBD>)
|
||||
function calc_dist( dx, dy, dz )
|
||||
if dz == nil then
|
||||
return math.sqrt( dx*dx + dy*dy )
|
||||
else
|
||||
return math.sqrt( dx*dx + dy*dy + dz*dz )
|
||||
end
|
||||
end
|
||||
|
||||
function ensurestand()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if isSitting then
|
||||
l2c_sitStand();
|
||||
l2h_delay( 1000 );
|
||||
end
|
||||
end
|
||||
|
||||
function ensuresit()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if not isSitting then
|
||||
l2c_sitStand();
|
||||
l2h_delay( 1000 );
|
||||
end
|
||||
end
|
||||
|
||||
function ensurerun()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if not isRunnig then
|
||||
l2c_runWalk();
|
||||
l2h_delay( 50 );
|
||||
end
|
||||
end
|
||||
|
||||
function ensurewalk()
|
||||
local isSitting, isRunnig = l2c_getSitRun()
|
||||
if isRunnig then
|
||||
l2c_runWalk();
|
||||
l2h_delay( 50 );
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
function is_in_party()
|
||||
local party = l2c_getParty();
|
||||
local nMembers = #party;
|
||||
if nMembers < 1 then return false end -- no party
|
||||
return true
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeoutSecs <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> false
|
||||
function targetObject( objectID, timeoutSecs )
|
||||
if timeoutSecs == nil then timeoutSecs = 2 end
|
||||
local targetStartTime = l2h_time();
|
||||
local targetObjectId = 0;
|
||||
local timePassed = 0;
|
||||
targetObjectId = l2c_getTarget();
|
||||
if targetObjectId == objectID then return true end -- <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2c_action( objectID ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
l2h_delay( 100 );
|
||||
repeat -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
targetObjectId = l2c_getTarget();
|
||||
if sys_should_exit() then return end
|
||||
local curTime = l2h_time(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
timePassed = curTime - targetStartTime;
|
||||
l2h_delay( 100 );
|
||||
if targetObjectId ~= objectID then l2c_action( objectID ); l2h_delay( 100 ); end
|
||||
until (timePassed > timeoutSecs) or (targetObjectId == objectID) -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if( targetObjectId ~= objectID ) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (x,y,z), <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> timeout <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- * tolerance - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- * randomness - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> false
|
||||
function moveTo( x, y, z, timeout, tolerance, randomness )
|
||||
if timeout == nil then timeout = 30 end
|
||||
if tolerance == nil then tolerance = 50 end
|
||||
if randomness == nil then randomness = 0 end
|
||||
local start_time = l2h_time();
|
||||
repeat
|
||||
if sys_should_exit() then return false end -- stop script
|
||||
local cx, cy, cz = l2c_getPos(); -- get cur pos
|
||||
-- target pos reached?
|
||||
if (math.abs(cx - x) <= tolerance) and (math.abs(cy - y) <= tolerance) and (math.abs(cz - z) <= tolerance) then
|
||||
return true
|
||||
end
|
||||
-- target not reached, try to move there
|
||||
-- random XY offset (not exact move)
|
||||
local x_rand = math.random( (0-randomness), randomness );
|
||||
local y_rand = math.random( (0-randomness), randomness );
|
||||
l2c_moveTo( x + x_rand, y + y_rand, z );
|
||||
--- timeout expired?
|
||||
local cur_time = l2h_time();
|
||||
if (cur_time - start_time) > timeout then
|
||||
l2h_print( "MOVETO: (",x,",",y,",",z,") ERROR: move timeout!\n" );
|
||||
return false
|
||||
end
|
||||
l2h_delay( 300 ); -- delay 300 ms
|
||||
until false
|
||||
return false
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> NPC <20> <20><><EFBFBD><EFBFBD><EFBFBD> npcName;
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> false
|
||||
function npcSel( npcName )
|
||||
if sys_should_exit() then return end
|
||||
local oid = l2c_getNpcObjectIdByName( npcName );
|
||||
if oid == nil then return false end
|
||||
local ret = targetObject( oid, 5 );
|
||||
if ret == false then l2h_print( "NPCSEL: cannot target [", npcName, "]!\n" ); end
|
||||
return ret
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
|
||||
-- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>! <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 50
|
||||
-- * timeoutSecs - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>, <20><><EFBFBD>
|
||||
function npcDlg( timeoutSecs )
|
||||
if sys_should_exit() then return end
|
||||
if timeoutSecs == nil then timeoutSecs = 5 end
|
||||
local toid = l2c_getTarget();
|
||||
if toid == 0 then -- no target :(
|
||||
l2h_print( "NPCDLG: ERROR: No targeted NPC?\n" );
|
||||
return false
|
||||
end
|
||||
local info = l2c_getObjectInfoByObjectId( toid );
|
||||
if info == nil then
|
||||
l2h_print( "NPCDLG: cannot get info about objectID [", toid, "]! Target disappeared??\n" );
|
||||
return false
|
||||
end
|
||||
if info.type ~= "npc" then
|
||||
l2h_print( "NPCDLG: ERROR: target [", toid, "] is not npc!..\n" );
|
||||
return false
|
||||
end
|
||||
moveTo( info.x, info.y, info.z, 20, 50, 20 );
|
||||
l2c_npcDlgClear(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||||
l2c_action( toid ); -- "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><> <20><><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (NpcHtmlMessage)
|
||||
local st_time = l2h_time(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
while true do
|
||||
l2h_delay( 50 );
|
||||
local ok = l2c_npcDlgExists(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?)
|
||||
if ok then return true end -- <20><>, <20><>
|
||||
local nowTime = l2h_time(); -- <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (nowTime - st_time) > timeoutSecs then
|
||||
l2h_print( "NPCDLG: ERROR: timeout waiting for NpcHtmlMessage!\n" );
|
||||
return false -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
|
||||
-- * talk_delay_ms - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>" <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function npcDlgSel( str, talk_delay_ms )
|
||||
if talk_delay_ms == nil then talk_delay_ms = 500 end
|
||||
l2c_npcDlg( str );
|
||||
l2h_delay( talk_delay_ms );
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function waitEndOfCast()
|
||||
while l2c_isCastingNow() do l2h_delay( 50 ) end
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 100<30><30> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
function useSkill( skillID, delay_ms )
|
||||
if delay_ms == nil then delay_ms = 100 end
|
||||
l2c_useSkill( skillID, true );
|
||||
l2h_delay( delay_ms )
|
||||
end
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> true, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> skillID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> have_buffs
|
||||
function buffIsPresent( skillID, have_buffs )
|
||||
if not have_buffs then return false end
|
||||
local i
|
||||
for i=1, #have_buffs do
|
||||
if have_buffs[i].skillID == skillID then return true end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> name <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> distance
|
||||
function follow( name, distance )
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> objectID <20><><EFBFBD><EFBFBD>
|
||||
local randomness = 60;
|
||||
local objectID = l2c_getCharObjectIdByName( name );
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
if objectID == nil then
|
||||
l2h_print( "FOLLOW: Character [", name, "] is not visible!\n" );
|
||||
return
|
||||
end
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
if randomness >= distance then randomness = distance/2 end -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
local x_rand = math.random( (0-randomness), randomness )
|
||||
local y_rand = math.random( (0-randomness), randomness )
|
||||
local x, y, z -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
local gox, goy, goz -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
local c -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
||||
-- <20> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||||
x,y,z = l2c_getPos(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID ); -- <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
if c == nil then
|
||||
l2h_print( "FOLLOW: char [", name, "] suddenly disappeared!\n" );
|
||||
return false
|
||||
end
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox = c.xDst;
|
||||
goy = c.yDst;
|
||||
if c.zDst ~= 0x7FFFFFFF then goz = c.zDst else goz = c.z end
|
||||
else
|
||||
gox = c.x;
|
||||
goy = c.y;
|
||||
goz = c.z;
|
||||
end
|
||||
if (math.abs(gox - x) > distance) or (math.abs(goy - y) > distance) then
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
else
|
||||
return -- <20><> <20><> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
|
||||
end
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
repeat
|
||||
if sys_should_exit() then return end -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
c = l2c_getObjectInfoByObjectId( objectID )
|
||||
--l2h_print( "Following [", name, "] to (", c.x, ",", c.y, ",", c.z, ")\n" )
|
||||
if (c.xDst ~= 0x7FFFFFFF) and (c.yDst ~= 0x7FFFFFFF) then
|
||||
gox = c.xDst;
|
||||
goy = c.yDst;
|
||||
if c.zDst ~= 0x7FFFFFFF then goz = c.zDst else goz = c.z end
|
||||
else
|
||||
gox = c.x;
|
||||
goy = c.y;
|
||||
goz = c.z;
|
||||
end
|
||||
l2c_moveTo( gox + x_rand, goy + y_rand, goz ) -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
|
||||
l2h_delay( 300 ); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 300 ms
|
||||
x,y,z = l2c_getPos(); -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
|
||||
-- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
until ((math.abs(gox - x) < distance) and (math.abs(goy - y) < distance) and (math.abs(goz - z) < distance))
|
||||
end
|
BIN
l2ooghelper/scripts/stdlib.luac
Normal file
BIN
l2ooghelper/scripts/stdlib.luac
Normal file
Binary file not shown.
Reference in New Issue
Block a user