ich bräuchte eine tele switch funktion für meinen barb hat jemand eine ahnund wie ich die in meine move datei einbauen kann? hier mal die datei. vielen dank im vorraus
Code:
function NTM_MoveTo(areaid, x, y, retry, clearpath)
{
var i, n;
var _teleport;
var _path;
var _retry = 0;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 4)
retry = 3;
if(arguments.length < 5)
clearpath = false;
if(NTC_InTown() || NTC_GetSkillLevel(54) < 1)
_teleport = false;
else
_teleport = true;
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);
if(!_path)
return false;
for(i = 0 ; i < _path.length ; i++)
{
for(n = 0 ; n < 2 ; n++)
{
if(_teleport)
{
if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n)))
break;
}
else
{
if(NTC_InTown()) {
if(NTM_WalkTo(_path[i][0], _path[i][1]))
break;
}
else {
NTC_SendLogToOOG(NTC_LOG_COMMON, "ÿc8" + "Enigmabug - quit game");
ExitGame();
}
}
}
if(n < 2)
{
if(clearpath)
{
if(!NTA_ClearPosition(20, true, 2))
return false;
NTP_DoPrecast(false);
NTM_MoveTo(me.areaid, _path[i][0], _path[i][1], 1);
}
}
else if(_retry < retry)
{
_path = GetPath(areaid, me.x, me.y, x, y, _teleport);
if(!_path)
return false;
i = -1;
_retry++;
}
else
return false;
}
return true;
}
function NTM_MoveToPresetUnit(areaid, unittype, classid, offsetx, offsety, clearpath)
{
var i, n;
var _unit;
if(arguments.length < 4)
{
offsetx = 0;
offsety = 0;
}
if(arguments.length < 6)
clearpath = false;
for(i = 0 ; i <= 2 ; i++)
{
_unit = GetPresetUnits(areaid, unittype);
if(_unit)
{
for(n = 0 ; n < _unit.length ; n++)
{
if(_unit[n].id == classid)
return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath);
}
}
if(i < 2)
NTC_Delay(500);
}
return false;
}
function NTM_MoveToStair(areaid, subareaid, offsetx, offsety, clearpath)
{
var i, n;
var _unit;
if(arguments.length < 3)
{
offsetx = 0;
offsety = 0;
}
if(arguments.length < 5)
clearpath = false;
for(i = 0 ; i <= 2 ; i++)
{
_unit = GetPresetUnits(areaid, NTC_UNIT_TILE);
if(_unit)
{
for(n = 0 ; n < _unit.length ; n++)
{
if(_unit[n].subareaid == subareaid)
return NTM_MoveTo(areaid, _unit[n].roomx*5+_unit[n].x+offsetx, _unit[n].roomy*5+_unit[n].y+offsety, 3, clearpath);
}
}
if(i < 2)
NTC_Delay(500);
}
return false;
}
function NTM_TeleportTo(x, y)
{
NTC_CastSkill(54, NTC_HAND_RIGHT, x, y);
for(var i = 0 ; i < 15 ; i++)
{
if(Math.abs(me.x-x) < 4 && Math.abs(me.y-y) < 4)
return true;
NTC_Delay(NTC_DELAY_FRAME);
}
return false;
}
function NTM_WalkTo(x, y)
{
var i;
var _prex1, _prey1;
var _prex2, _prey2;
if(me.runwalk == 0)
me.runwalk = 1;
for(i = 0 ; i < 480 ; i++)
{
if((i % 10) == 0)
{
if((i % 60) == 0)
{
_prex1 = me.x;
_prey1 = me.y;
if((i % 120) == 0)
{
_prex2 = me.x;
_prey2 = me.y;
}
}
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
}
NTC_Delay(NTC_DELAY_FRAME);
if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
break;
if((i % 10) == 9)
{
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
if((i % 60) == 59)
{
if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
{
NTA_ClearPosition(2);
NTP_DoPrecast(false);
}
if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
return false;
}
}
}
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
return (i < 480);
}
function NTM_TakeUnit(unittype, classid)
{
var _unit;
var _prearea;
_unit = NTC_FindUnit(unittype, classid, 5);
if(!_unit)
return false;
_prearea = me.areaid;
for(var i = 0 ; i < 20 ; i++)
{
if((i % 5) == 0)
{
if(i == 10)
NTM_MoveTo(_prearea, me.x+6, me.y+6);
if(NTM_GetCloserInt(_unit))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
}
NTC_Delay(200);
if(me.areaid != _prearea)
break;
}
while(me.areaid == 0)
NTC_Delay(200);
if(me.areaid == _prearea)
return false;
NTC_PingDelay(NTConfig_AreaDelay);
return true;
}
function NTM_TakeStair(areaid)
{
var _unit;
var _prearea;
_unit = NTM_GetStairInt(areaid);
if(!_unit)
return false;
_prearea = me.areaid;
for(var i = 0 ; i < 20 ; i++)
{
if((i % 5) == 0)
{
if(i == 10)
NTM_MoveTo(_prearea, me.x+6, me.y+6);
if(NTM_GetCloserInt(_unit))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
}
NTC_Delay(200);
if(me.areaid != _prearea)
break;
}
while(me.areaid == 0)
NTC_Delay(200);
if(me.areaid == _prearea)
return false;
NTC_PingDelay(NTConfig_AreaDelay);
return true;
}
function NTM_TakeWaypoint(areaid)
{
var _unit;
if(me.areaid == areaid)
return true;
_unit = NTM_GetWaypointInt();
if(!_unit)
return false;
if(NTC_InTown())
me.Cancel(1);
for(var i = 0 ; i < 20 ; i++)
{
if((i % 10) == 0)
{
if(NTM_GetCloserInt(_unit))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _unit);
}
NTC_Delay(200);
if(GetUIState(0x14))
{
if(me.TakeWaypoint(areaid))
{
NTC_PingDelay(NTConfig_AreaDelay);
return true;
}
break;
}
}
return false;
}
function NTM_UsePortal(how, dest, ownername, portal)
{
if(me.areaid == dest)
return true;
if(NTC_InTown())
me.Cancel(1);
if(NTM_ChangeAreaInt(how, dest, ownername, portal))
{
NTC_PingDelay(NTConfig_AreaDelay);
return true;
}
return false;
}
function NTM_MakeTP(dest)
{
var _usetp = true;
var _portal;
var _portalname;
if(NTC_InTown())
return true;
if(arguments.length < 1)
_usetp = false;
if(!NTC_CastSkill(220, NTC_HAND_RIGHT))
return false;
NTC_PingDelay(500);
_portalname = GetLocaleString(3226);
for(var i = 0 ; i <= 2 ; i++)
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
if(_portal)
{
do
{
if(_portal.mode == 2 && NTC_CheckOwner(_portal))
{
if(_usetp)
return NTM_UsePortal("BluePortal", dest, me.name, _portal);
return true;
}
} while(_portal.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
return false;
}
// Internal function
function NTM_GetStairInt(areaid)
{
var _tile;
for(var i = 0 ; i <= 2 ; i++)
{
_tile = NTC_FindUnit(NTC_UNIT_TILE);
if(_tile)
{
do
{
if(!areaid || _tile.subareaid == areaid)
return _tile;
} while(_tile.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
return null;
}
function NTM_GetWaypointInt()
{
var _waypoint;
var _classid;
for(var i = 0 ; i <= 2 ; i++)
{
_waypoint = NTC_FindUnit(NTC_UNIT_OBJECT);
if(_waypoint)
{
do
{
_classid = _waypoint.classid;
if(_classid == 119 || _classid == 145 || _classid == 156 || _classid == 157
|| _classid == 237 || _classid == 238 || _classid == 288 || _classid == 323
|| _classid == 324 || _classid == 398 || _classid == 402 || _classid == 429
|| _classid == 494 || _classid == 496 || _classid == 511 || _classid == 539)
return _waypoint;
} while(_waypoint.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
return null;
}
function NTM_ChangeAreaInt(how, dest, ownername, myportal)
{
var _portal;
var _playerportal = false;
var _prearea;
if(how == "BluePortal")
{
if(!ownername)
ownername = me.name;
_playerportal = true;
}
if(arguments.length > 3 && myportal)
_portal = myportal;
else
{
_portal = NTM_FindCorrectPortalInt(_playerportal, ownername);
if(_portal < 0)
_portal = NTM_FindPortalAreaInt(dest);
if(_portal == -1)
return false;
}
if(!_portal)
return false;
_prearea = me.areaid;
for(var i = 0 ; i < 20 ; i++)
{
if((i % 5) == 0)
{
if(i == 10)
NTM_MoveTo(_prearea, me.x+6, me.y+6);
if(NTM_GetCloserInt(_portal))
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
}
NTC_Delay(200);
if(me.areaid != _prearea)
break;
}
while(me.areaid == 0)
NTC_Delay(200);
return (me.areaid == dest);
}
function NTM_FindCorrectPortalInt(blueportal, ownername)
{
var _portal;
var _portalname;
_portalname = GetLocaleString(3226);
if(blueportal)
{
for(var i = 0 ; i <= 2 ; i++)
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
if(_portal)
{
do
{
if(_portal.mode == 2 && NTC_CheckOwner(_portal, ownername) && GetDistance(me, _portal) <= 30)
return _portal;
} while(_portal.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
return -2;
}
else
{
for(var i = 0 ; i <= 2 ; i++)
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
if(_portal)
{
do
{
if(_portal.mode == 2 && !_portal.GetParent())
return _portal;
} while(_portal.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
}
return -3;
}
function NTM_FindPortalAreaInt(dest)
{
var _portal;
var _portalname;
_portalname = GetLocaleString(3226);
for(var i = 0 ; i <= 2 ; i++)
{
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, _portalname);
if(_portal)
{
do
{
if(_portal.mode == 2 && _portal.subareaid == dest)
{
if(_portal.GetParent())
{
if(NTC_CheckOwner(_portal) || NTC_InMyParty(_portal.GetParent()))
return _portal;
}
else
return _portal;
}
} while(_portal.GetNext());
}
if(i < 2)
NTC_Delay(500);
}
return -1;
}
function NTM_GetCloserInt(unit)
{
if(GetDistance(me, unit) > 2)
return NTM_MoveTo(unit.areaid, unit.x, unit.y);
return true;
}
// vector class
function vector()
{
if(arguments.length == 2)
{
this.x = arguments[0];
this.y = arguments[1];
}
else if(arguments.length == 1)
{
this.x = arguments[0].x;
this.y = arguments[0].y;
}
else
{
this.x = 0;
this.y = 0;
}
this.rotate = vector_rotate;
this.normalize = vector_normalize;
this.length = vector_length;
this.setlength = vector_setlength;
this.toString = vector_toString;
this.set = vector_set;
this.angle = vector_angle;
}
function vector_rotate(degree)
{
if(!degree)
return true;
l = this.length();
if(!l)
return false;
this.normalize();
rad = degree * (Math.PI/180);
nx = this.x * Math.cos(rad) - this.y * Math.sin(rad);
ny = this.x * Math.sin(rad) + this.y * Math.cos(rad);
this.x = nx;
this.y = ny;
this.normalize();
if(l != 1)
this.setlength(l);
return true;
}
function vector_angle(v)
{
rad_degree = 180 / Math.PI;
return Math.acos((this.x*v.x) + (this.y*v.y)) * rad_degree;
}
function vector_length()
{
return Math.sqrt((this.x*this.x) + (this.y*this.y));
}
function vector_setlength(length)
{
this.normalize();
this.x *= length;
this.y *= length;
}
function vector_normalize()
{
l = this.length();
if(!l)
return false;
this.x /= l;
this.y /= l;
return true;
}
function vector_toString()
{
str = "(";
str += Math.round(this.x*1000)/1000;
str += " , ";
str += Math.round(this.y*1000)/1000;
str += ") : ";
str += Math.round(this.length()*1000)/1000;
return str;
}
function vector_set(tx, ty)
{
if(arguments.length == 1)
{
this.x = tx.x;
this.y = tx.y;
}
else if(arguments.length == 2)
{
this.x = tx;
this.y = ty;
}
}
// coord class
function coord()
{
this.data = null;
if(arguments.length == 3)
{
this.x = arguments[0];
this.y = arguments[1];
this.data = arguments[2];
}
else if(arguments.length == 2)
{
this.x = arguments[0];
this.y = arguments[1];
}
else if(arguments.length == 1)
{
this.x = arguments[0].x;
this.y = arguments[0].y;
}
else
{
this.x = 0;
this.y = 0;
}
this.dist = coord_dist;
this.dist2 = coord_dist2;
this.dir = coord_dir;
this.move = coord_move;
this.set = coord_set;
this.toString = coord_toString;
}
function coord_set(tx, ty, d)
{
if(arguments.length == 1)
{
this.x = tx.x;
this.y = tx.y;
if(tx.data)
this.data = tx.data;
else
this.data = null;
}
else if(arguments.length == 2)
{
this.x = tx;
this.y = ty;
this.data = null;
}
else if(arguments.length == 3)
{
this.x = tx;
this.y = ty;
this.data = d;
}
}
function coord_dist(tx, ty)
{
if(arguments.length == 1)
{
vx = this.x - tx.x;
vy = this.y - tx.y;
return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
}
else if(arguments.length == 2)
{
vx = this.x - tx;
vy = this.y - ty;
return Math.round(Math.sqrt((vx*vx) + (vy*vy)));
}
}
function coord_dist2(tx, ty)
{
if(arguments.length == 1)
{
vx = this.x - tx.x;
vy = this.y - tx.y;
return Math.floor((vx*vx) + (vy*vy));
}
else if(arguments.length == 2)
{
vx = this.x - tx;
vy = this.y - ty;
return Math.floor((vx*vx) + (vy*vy));
}
}
function coord_dir(tx, ty)
{
if(arguments.length == 1)
{
v = new vector(tx.x-this.x, tx.y-this.y);
v.normalize();
return v;
}
else if(arguments.length == 2)
{
v = new vector(tx-this.x, ty-this.y);
v.normalize();
return v;
}
}
function coord_move(vec, d)
{
if(d)
{
this.x += Math.round(vec.x*d);
this.y += Math.round(vec.y*d);
return true;
}
else if(vec.length())
{
this.x += Math.round(vec.x);
this.y += Math.round(vec.y);
return true;
}
return false;
}
function coord_toString()
{
return "( " + this.x + " , " + this.y + " ) " + this.data;
}