le bot que j'ai ne fait pas tourner ouragan constament, et les tornades sont bien trop loin pour toucher les mobs ^^ je sais qu'il y a déjà un post similaire mais pas de réponse ^^ je ne pense pas que ca soit impossible a configurer etant donné que j'en ai croisé pas mal de bot druide en no ladder ^^ reste a savoir comment il a fait =D
Ouragan/tornades Bot Druide
Started By
zankukan
, Oct 13 2010 23:53
- Veuillez vous connecter pour répondre
3 réponses à ce sujet
#1
zankukan
zankukan
-
- Membres
-
- 89 messages
Débutant lvl 4
#2
gms-mat
gms-mat
-
- Bannis
-
- 2819 messages
Collectionneur
- Hobbies :Énigmes, Gudei
Posté 14 October 2010 - 07:14
Bonjour! !!
Dis nous quel bot tu utilises...
Si c'est d2nt, va dans mon sijet sur le guide de la soso tri element. Je file tout mon répertoire, et j'ai adapté le range d'attaque pour les tornades.
A+
Mat
Dis nous quel bot tu utilises...
Si c'est d2nt, va dans mon sijet sur le guide de la soso tri element. Je file tout mon répertoire, et j'ai adapté le range d'attaque pour les tornades.
A+
Mat
Clavier qwerty, mes excuses pour le manque d'accents

#3
bYx.
bYx.
-
- Membres GMS
-
- 1373 messages
Fragger Pro
- Location :FR/95
-
Hobbies :D
I
E
[.] - Trade : Trusted
Posté 14 October 2010 - 09:40
zankukan > D2Bs
*parle en connaissance de cause...*
Direction : \OOG with 1.3.3\scripts-ntbot\libs\common\
puis prends une copie de ton "NTAttack" actuel et met le quelque part d'autre (sur le bureau par exemple
)
et sur la seconde, tu vas tout effacer et coller ceci :
Pas encore test.
Tiens nous en courant.
*parle en connaissance de cause...*
Direction : \OOG with 1.3.3\scripts-ntbot\libs\common\
puis prends une copie de ton "NTAttack" actuel et met le quelque part d'autre (sur le bureau par exemple
et sur la seconde, tu vas tout effacer et coller ceci :
Spoiler
const NTA_DAMAGE_NONE = 0;
const NTA_DAMAGE_PHYSICAL = 1;
const NTA_DAMAGE_MAGIC = 2;
const NTA_DAMAGE_FIRE = 3;
const NTA_DAMAGE_LIGHTNING = 4;
const NTA_DAMAGE_COLD = 5;
const NTA_DAMAGE_POISON = 6;
var _NTA_SkillDamage=[];
var _NTA_SkillDelay =[];
var _NTA_SkillHand =[];
var ignoreKorpse =[];
const DEAD_MODE = (1<<29)|(1<<12);
function NTA_KillBoss(classid)
{
var _target;
if(NTConfig_AttackBoss < 1)
return false;
_target = NTC_FindMonster(classid);
if(_target)
{
if(NTConfig_AttackFirst > 0 && NTA_GetResistance(_target, NTA_GetDamageType(NTConfig_AttackFirst)) < 100)
{
if(NTC_IsLeftSkill(NTConfig_AttackFirst))
NTC_DoCast(NTConfig_AttackFirst, 2, _target);
else
NTC_DoCast(NTConfig_AttackFirst, NTC_HAND_RIGHT, _target);
}
return NTA_Attack(_target, true, 100);
}
return false;
}
function NTA_ClearPosition(range, spectype)
{
var _orgx, _orgy;
var _target;
var _killnum = 0;
var _units = 0;
//if(NTConfig_AttackOthers < 1)
// return false;
if(arguments.length < 1)
range = 20;
if(arguments.length < 2)
spectype = 0;
_orgx = me.x;
_orgy = me.y;
_target = NTC_GetUnit(NTC_UNIT_MONSTER);
_units = 0;
if(_target)
{
// print("Start Unit Loop.");
do
{
if(NTA_IsValidTarget(_target) && (spectype == 0 || (_target.spectype & spectype)) && getDistance(_orgx, _orgy, _target.x, _target.y) < range)
{
// print("Step 1");
_target = copyUnit(_target);
// print("Step 2");
if(_killnum == 0 && _target.hp > 0)
{
// print("Step 3");
if(NTConfig_AttackFirst > 0 && NTA_GetResistance(_target, NTA_GetDamageType(NTConfig_AttackFirst)) < 100 && checkCollision(me, _target, 3) == 0)
{
// print("Step 4");
if(NTC_IsLeftSkill(NTConfig_AttackFirst))
{
// print("Step 5A");
NTC_DoCast(NTConfig_AttackFirst, 2, _target);
// print("Step 6A");
}
else
{
// print("Step 5B");
NTC_DoCast(NTConfig_AttackFirst, NTC_HAND_RIGHT, _target);
// print("Step 6B");
}
// PickIt (FastSnag)
NTSI_FastSnag();
// print("Step 7");
}
}
// print("Step 8");
if(NTA_Attack(_target, false, 20))
{
// print("Step 9");
_killnum++;
}
// print("Step 10");
}
// print("Unit : " + _units++);
}
while(_target.getNext() && _target);
// print("End Unit Loop.");
// print("-------------------------------------");
}
if (me.classid == NTC_CHAR_CLASS_NECROMANCER){ //build army
if (XP_useSkel) {
var success = XP_CheckRevives(70,363);
}
// Check Skeleton Mages
if (XP_useSkelMage && success) {
success = XP_CheckRevives(80,364);
}
// Check Revives
if (XP_useRevive && success) {
success = XP_CheckRevives(95);
}
}
if(me.classid == NTC_CHAR_CLASS_PALADIN)
{
if(NTConfig_UseRedemption && _killnum > 1 && NTC_PutSkill(124, NTC_HAND_RIGHT))
{
NTC_PingDelay(750);
}
}
return (_killnum > 0);
}
function isRoomReachable(room){
var col = room.getCollision();
//print("x size"+ room.xsize+" y size"+ room.ysize);
/*
for (var x =1; x < room.xsize; x++){
if (col[0][x] ==0)
return [room.x*5+x,room.y*5]
if (col[room.ysize-1][x] ==0)
return [room.x*5+x,room.y*5+room.ysize]
}
for (var y =1; y < room.ysize; y++){
if (col[y][0] ==0)
return [room.x*5,room.y*5+y]
if (col[y][room.xsize-1] ==0)
return [room.x*5+room.xsize,room.y*5+y]
}
*/
var size = (room.ysize > room.xsize ? room.ysize : room.xsize)
for (var y =1; y < room.xsize -1; y++){
for (var x =1; x < room.ysize-1; x++){
if (col[x][y] == 0)
//if(col[x-1][y] == && col[x-1][y-1] == 0 && col[x+1][y] == 0 && col[x+1][y+1] == 0 )
return [room.x*5+y,room.y*5+x,size]; // this is probly wrong fixed x/y swap
}
}
// dumpRoom(room)
return false;
}
function dumpRoom(room){
var col = room.getCollision();
var output ="";
sendCopyData(null, "OOG", 0,room.x+" "+room.y);
for (var x =0; x < room.xsize ; x++){
output=" ";
for (var y =0; y < room.ysize; y++){
output= output + col[x][y];
}
sendCopyData(null, "OOG", 0,output+" ");
}
return false;
}
function NTA_ClearRooms(AttackRoutine,minX,minY,maxX,maxY)
{
if (minX > maxX){
var tempx = maxX;
maxX = minX;
minX = tempx;
}
if (minX > maxX){
var tempy = maxY;
maxY = minY;
minY = tempy;
}
var _room;
var _rooms;
var rx,ry,path,reachable;
_room = getRoom();
if(!_room)
return false;
_rooms = new Array();
var size = (_room.xsize > _room.ysize) ? _room.xsize : _room.ysize ;
do
{
rx = parseInt(_room.x*5 + _room.xsize/2);
ry = parseInt(_room.y*5 + _room.ysize/2)
//path= getPath(me.area, me.x, me.y, rx, ry,false);
reachable =isRoomReachable(_room);
if (reachable){
//if (reachable[0]==7741)
// dumpRoom(_room);
//
if (maxX && maxY){
if (rx <maxX && ry <maxY && rx > minX && ry > minY){
_rooms.push([reachable[0],reachable[1]])//([parseInt(_room.x*5 + _room.xsize/2), parseInt(_room.y*5 + _room.ysize/2)]);
}
}else{
_rooms.push([reachable[0],reachable[1]])//[parseInt(_room.x*5 + _room.xsize/2), parseInt(_room.y*5 + _room.ysize/2)]);
}
}
} while(_room.getNext());
while(_rooms.length > 0)
{
_rooms.sort(NTA_SortRoomInt);
_room = _rooms.shift();
// print(_rooms.toSource());
NTM_MoveTo(_room[0], _room[1]);
if(typeof(AttackRoutine) == 'function'){
if(!AttackRoutine(size))
return false;
}else{
NTA_ClearPosition(size); //clear as big as the room are some are up to 60
NTSI_PickItems();
NTP_UpdatePrecast();
}
}
return true;
}
function NTA_IsValidTarget(monster, simple)
{
if(!monster || monster.type != NTC_UNIT_MONSTER)
return false;
if(monster.mode == 0 || monster.mode == 12 || monster.hp <= 0)
return false;
if(arguments.length < 2)
simple = false;
if(!simple)
{
if(!monster.name)
return false;
switch(monster.name.toLowerCase())
{
case "dummy":
case "an evil force":
return false;
}
switch(monster.classid)
{
case 271: // Merc
case 338:
case 359:
case 561:
case 356: // Decoy
case 357: // Valkyrie
case 418: // Shadow Warrior
case 419: // Shadow Master
case 363: // Necro Skeleton
case 364: // Necro Mage
case 366: // Compelling Orb
case 406: // Izual's Spirit
case 266: // Act1: Flavie (Navi) -> Between BloodMoor & ColdPlains
case 408: // Act4: Hadriel (Malachai) -> Entrance of River of Flames
case 516: // Act5: Impact point for Catapults (Invisible) -> Frigid Highlands
case 517: // Act5: Impact point for Catapults (Invisible)
case 518: // Act5: Impact point for Catapults (Invisible) -> Bloodyfoot Hill
case 519: // Act5: Impact point for Catapults (Invisible)
case 522: // Act5: Combatant Barbarian
case 523: // Act5: Combatant Barbarian
case 543: // Baal on stairs outside Worldstone Chamber
case 545: // Baal taunts
return false;
}
if(monster.classid >= 289 && monster.classid <= 292) // Necro's Golem
return false;
if((monster.classid >= 326 && monster.classid <= 330) || (monster.classid >= 410 && monster.classid <= 417)) // Traps
return false;
if(monster.classid >= 351 && monster.classid <= 353) // Hydra
return false;
if(monster.classid >= 420 && monster.classid <= 432) // Druid's friend
return false;
}
if(((monster.classid >= 110 && monster.classid <= 113) || monster.classid == 608) && monster.mode == 8)
return false;
if(monster.classid == 68 && monster.mode == 14)
return false;
if((monster.classid == 258 || monster.classid == 261) && monster.mode == 14)
return false;
if(monster.getStat(172) == 2 || monster.getState(105) == 0)
return false;
if(monster.getState(53) || monster.getState(96)) // Conversion, Revive
return false;
//if(getBaseStat(1, monster.classid, 23))
// return false;
return true;
}
// cwkim - Check later
function NTA_GetDamageType(skillid)
{
switch(skillid)
{
case 74: // Corpse Explosion
case 106: // Zeal
case 107: // Charge
case 151: // Whirlwind
return NTA_DAMAGE_PHYSICAL;
case 112: // Blessed Hammer
return NTA_DAMAGE_MAGIC;
case 47: // Fire Ball
case 56: // Meteor
return NTA_DAMAGE_FIRE;
case 48: // Nova
case 49: // Lightning
case 53: // Chain Lightning
return NTA_DAMAGE_LIGHTNING;
case 59: // Blizzard
case 64: // Frozen Orb
return NTA_DAMAGE_COLD;
case 92: // Poison Nova
return NTA_DAMAGE_POISON;
}
var _etype;
if(skillid == 74)
return NTA_DAMAGE_PHYSICAL;
if(skillid == 101)
return NTA_DAMAGE_NONE;
_etype = getBaseStat(3, parseInt(skillid, 10), 211);
switch(_etype)
{
case 0: return NTA_DAMAGE_PHYSICAL;
case 1: return NTA_DAMAGE_FIRE;
case 2: return NTA_DAMAGE_LIGHTNING;
case 3: return NTA_DAMAGE_MAGIC;
case 4: return NTA_DAMAGE_COLD;
case 5: return NTA_DAMAGE_POISON;
}
return NTA_DAMAGE_NONE;
}
function NTA_GetResistance(enemy, type)
{
if(!enemy)
return false;
if(arguments.length == 2)
{
switch(type)
{
case NTA_DAMAGE_PHYSICAL:
return enemy.getStat(36);
case NTA_DAMAGE_MAGIC:
return enemy.getStat(37);
case NTA_DAMAGE_FIRE:
return enemy.getStat(39);
case NTA_DAMAGE_LIGHTNING:
return enemy.getStat(41);
case NTA_DAMAGE_COLD:
return enemy.getStat(43);
case NTA_DAMAGE_POISON:
return enemy.getStat(45);
}
}
return 0;
}
function NTA_Attack(target, boss, maxattacks)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
return NTA_AmazonAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_SORCERESS:
return NTA_SorceressAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_NECROMANCER:
return NTA_NecromancerAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_PALADIN:
return NTA_PaladinAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_BARBARIAN:
return NTA_BarbarianAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_DRUID:
return NTA_DruidAttackInt(target, boss, maxattacks);
case NTC_CHAR_CLASS_ASSASSIN:
return NTA_AssassinAttackInt(target, boss, maxattacks);
}
return false;
}
// Internal function
function NTA_AmazonAttackInt(target, boss, maxattacks)
{
while(NTA_IsValidTarget(target, true))
{
NTSI_FastSnag();
if(checkCollision(me, target, 3))
return false;
if(getDistance(me,target)>5){
NTM_MoveTo(target.x, target.y)
}
NTC_DoCast(24, 3,target.x,target.y);
}
return true;
}
function NTA_SorceressAttackInt(target, boss, maxattacks)
{
var _attackprimary;
var _primaryindex = boss ? 1 : 2;
var _maxattacks = 0;
var _usehand1, _usehand2;
var _damagetype1, _damagetype2;
var _range1, _range2;
var _prehp;
_attackprimary = boss ? NTConfig_AttackBoss : NTConfig_AttackOthers;
_usehand1 = NTC_IsLeftSkill(_attackprimary) ? 2 : NTC_HAND_RIGHT;
_damagetype1 = NTA_GetDamageType(_attackprimary);
if(NTConfig_AttackSecondary > 0)
{
_usehand2 = NTC_IsLeftSkill(NTConfig_AttackSecondary) ? 2 : NTC_HAND_RIGHT;
_damagetype2 = NTA_GetDamageType(NTConfig_AttackSecondary);
}
switch(_attackprimary)
{
case 48: // Nova
_range1 = 10;
break;
default:
_range1 = 20;
break;
}
switch(NTConfig_AttackSecondary)
{
case 48: // Nova
_range2 = 10;
break;
default:
_range2 = 20;
break;
}
if(NTConfig_CastStatic < 100)
{
var _staticlevel = NTC_CheckSkill(42);
if(_staticlevel > 0 && NTA_GetResistance(target, NTA_DAMAGE_LIGHTNING) < 100 && (boss || checkCollision(me, target, 3) == 0))
{
var _cast = 0;
var _staticrange = Math.floor(1.0 + 0.668*_staticlevel);
while(_cast++ < 10 && parseInt(target.hp*100/128) > NTConfig_CastStatic)
{
if (me.area != 102 && NTConfig_Moattrick)
NTA_MoveCloseInt(target, _staticrange);
NTC_DoCast(42, NTC_HAND_RIGHT, target);
NTSI_FastSnag();
}
}
}
_prehp = target.hp;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true))
{
NTSI_FastSnag();
if(NTA_GetResistance(target, _NTA_SkillDamage[_primaryindex]) < 100)
{
if((_maxattacks % 2) == 1)
{
if (me.area != 102 && NTConfig_Moattrick){
if(!NTA_MoveCloseInt(target, _range1) && !boss)
return false;
}
}
NTA_DoCastInt(_primaryindex, target);
}
else if(NTConfig_AttackSkill[4] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[4]) < 100)
{
if((_maxattacks % 2) == 1)
{
if (me.area != 102 && NTConfig_Moattrick){
if(!NTA_MoveCloseInt(target, _range2) && !boss)
return false;
}
}
NTA_DoCastInt(4, target);
}
else
{
if(boss)
{
if (me.area != 102 && NTConfig_Moattrick){
if((_maxattacks % 2) == 1)
NTA_MoveCloseInt(target, _range1);
}
NTA_DoCastInt(_primaryindex, target);
}
else
return false;
}
if(boss)
{
if((_maxattacks % 4) == 0 && target.hp >= _prehp)
{
if(target.classid == 526)
return false;
}
if((_maxattacks % 8) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
else
{
if((_maxattacks % 4) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
if(NTConfig_CheckSafe)
{
if(!NTTMGR_CheckSafe(1))
return false;
}
}
NTSI_FastSnag();
return true;
}
function getCurseState(curse){
if (curse == 66) // Amplify Damage
return 9;
if (curse == 76) //iron maden
return 55;
if (curse == 82) //life tap
return 58;
if (curse == 87)//Decrepify
return 60;
if (curse == 91) //lower resist
return 61;
return 1;
}
function getIntoLOS(target){
//for (var j = 0 ; j <15 ; j++){
// sendCopyData(null, "OOG", 0,"col "+j +" " +checkCollision(me, target,j)+ "x: "+target.x);
//}
if(checkCollision(me, target,10)){
//print("moving closer collision")
NTA_MoveCloseInt(target, Math.round(getDistance(me, target)/2));
}
if(checkCollision(me, target,2)){
//print("moving closer collision")
NTA_MoveCloseInt(target, Math.round(getDistance(me, target)/2));
}
if(checkCollision(me, target,1)){
//print("moving closer collision")
NTA_MoveCloseInt(target, Math.round(getDistance(me, target)/2));
}
}
function NTA_NecromancerAttackInt(target, boss, maxattacks)
{
var _maxattacks = 0
//move these to global
var armySize = 0;
var success;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true) && target.hp > 0){
armySize =me.getMinionCount(4)+me.getMinionCount(5)+me.getMinionCount(6);
if (armySize > XP_BuildArmyThresh){
if(target && (!target.getState(getCurseState(XP_Curse)) ) && target.classid != 371)
NTC_DoCast(XP_Curse,0,target);
}else{
if(target && (!target.getState(getCurseState(XP_BuildArmyCurse)) ) && target.classid != 371)
NTC_DoCast(XP_BuildArmyCurse,0,target);
}
getIntoLOS(target);
if (boss)
NTC_DoCast(NTConfig_AttackBoss,0,target);
else
NTC_DoCast(NTConfig_AttackOthers,0,target);
if (armySize > XP_BuildArmyThresh && getDistance(me.x,me.y,target.x,target.y)>5){
//sendCopyData(null, "OOG", 0,"going closer");
NTM_MoveTo(target.x+1, target.y, 0) //stay on mob if we got army going
clickMap(0,0,me.x,me.y+1);
}
if (XP_CorpseExplosion) {
XP_UseNecroCE(target);
}
if (XP_useSkel) {
var success = XP_CheckRevives(70,363);
}
// Check Skeleton Mages
if (XP_useSkelMage && success) {
success = XP_CheckRevives(80,364);
}
// Check Revives
if (XP_useRevive && success) {
success = XP_CheckRevives(95);
}
}
}
function XP_CheckRevives(reviveSkill,reviveID) {
if (reviveSkill != 70 && reviveSkill != 80 && reviveSkill != 95){
//DC_DPrint("XP_CheckRevives() -> Invalid skill passed!");
return false;
}
var success = false;
var haveRevive = 0;
var maxRevives = XP_MaxRevives(reviveSkill);
var needMana = 0;
var skeltype = 0;
var XP_ToRevive = 3;
var i = 0;
// get the right skeltype id (4 = skeleton, 5 = skeletonmage, 6 = revive)
switch(reviveSkill){
case 70:
needMana = 5 + NTC_CheckSkill(reviveSkill);
skeltype = 4;
break;
case 80:
needMana = 7 + NTC_CheckSkill(reviveSkill);
skeltype = 5;
break;
case 95:
needMana = 45;
skeltype = 6;
break;
}
// Count my revives
haveRevive = me.getMinionCount(skeltype);//0;
success = (haveRevive >= maxRevives || me.mp <= needMana);
//XP_ToRevive controls how many corpses to proccess per function call
while (haveRevive < maxRevives && me.mp > needMana && i++ < XP_ToRevive) {
var korpse = getBodyTarget(25);
if (reviveSkill == 95) {
if (korpse && ((korpse.spectype & 0x07) == 0) && korpse.classid != 571
&& korpse.classid != 572 && korpse.classid != 573
&& korpse.classid != 312 && korpse.classid != 702
&& getBaseStat(6, korpse.classid, 8) && getBaseStat(6, korpse.classid, 9)) {
//DC_DPrint("Reviving " + korpse.name + " from range " + DA_GetRange(korpse));
// print("Reviving " + korpse.name + " from range " + DA_GetRange(korpse));
getIntoLOS(korpse);
//print("Raising " + (reviveSkill == 70 ? "Skel": "Mage") + " from " + korpse.name + " from range " + getDistance(me,korpse));
NTC_DoCast(reviveSkill,0,korpse.x,korpse.y,1); // casting revive fails some times so im just going to try once
//delay(500);
success = true;
}
else if (!korpse){
break;
}
}
else { // Skel or SkelMage
if(korpse){
var iLoop = 0;
//DC_DPrint("Raising " + (reviveSkill == 70 ? "Skel": "Mage") + " from " + korpse.name + " from range " + DA_GetRange(korpse));
while(korpse && haveRevive == me.getMinionCount(skeltype) && iLoop++ < XP_ToRevive){
//print("in loop: "+iLoop+" haveRevive = " + haveRevive + " minionCount = " + me.getMinionCount(skeltype));
getIntoLOS(korpse);
if(getDistance(me.x,me.y,korpse.x,korpse.y) <40){
//print("Raising " + (reviveSkill == 70 ? "Skel": "Mage") + " from " + korpse.name + " from range " + getDistance(me,korpse));
NTC_DoCast(reviveSkill,0,korpse.x,korpse.y,1);
//delay(500);
//delay(((typeof me.serverip !== "undefined") ? me.ping : 50));
}
}
success = true;
}
else{
break;
}
}
delay(300);
haveRevive = me.getMinionCount(skeltype);
}
return success;
}
function XP_MaxRevives(revSkill) {
switch(revSkill){
case 70:
return((me.getSkill(70,1) < 4) ? me.getSkill(70,1) : 2 + Math.floor(me.getSkill(70,1) / 3));
case 80:
return((me.getSkill(80,1) < 4) ? me.getSkill(80,1) : 2 + Math.floor(me.getSkill(80,1) / 3));
case 95:
return(me.getSkill(95,1));
}
return false;
}
function XP_UseNecroCE(target) {
if (!target || target.hp < 1 || (target.getStat(36) > 99 && target.getStat(39) > 99)) return;
var CE_level = NTC_CheckSkill(74);
var CEa = (CE_level - 1) / 3;
var CE_rad = 2.6 + CEa;
var bomb = getBodyTarget(25,target.x,target.y,CE_rad);
//if (bomb && target && target.hp > 0 && me.mp > 20 && DA_GetRangeXY(target,bomb.x,bomb.y) <= CE_rad) {
if (bomb && target && target.hp > 0 && me.mp > 20 && getDistance(target.x,target.y,bomb.x,bomb.y) <= CE_rad) {
//DC_DoCast(74,0,bomb);
NTC_DoCast(74,0, bomb);
delay(100);
}
}
function getBodyTarget(range,tagX,tagY,dist) {
var body_target = false;
var BodyTarget = getUnit(1, null, DEAD_MODE);
if(BodyTarget) do {
if (BodyTarget.getStat(172) == 2 || BodyTarget.getState(105) == 0) {
continue;
}
if (BodyTarget.getState(99) || BodyTarget.getState(104) || BodyTarget.getState(118)) {
continue;
}
// Use NeverCount base monstat for traps, hydra, etc.
if (getBaseStat(1,BodyTarget.classid,23)) {
continue;
}
if(getDistance(me, BodyTarget) < (!range ? 25 : range) && !BodyTarget.getParent() &&
/*BodyTarget.classid != 271 && BodyTarget.classid != 289 &&
BodyTarget.classid != 290 && BodyTarget.classid != 291 &&
BodyTarget.classid != 292 && BodyTarget.classid != 338 &&
BodyTarget.classid != 351 && BodyTarget.classid != 352 &&
BodyTarget.classid != 353 && BodyTarget.classid != 359 &&
BodyTarget.classid != 363 && BodyTarget.classid != 364 &&
BodyTarget.classid != 371 && BodyTarget.classid != 543 &&
BodyTarget.classid != 561 && */
getBaseStat(6, BodyTarget.classid, 8) &&
(((me.area == 132 || me.area == 131) && ((me.x < 15099) && (me.x > 15088)) && ((me.y < 5022) && (me.y > 5006))) ||
!checkCollision(me.area,me.x,me.y,3,BodyTarget.x,BodyTarget.y,3,7))) {
var skipTarget=false;
for(var tk = 0; tk<ignoreKorpse.length; tk++) {
if(ignoreKorpse[tk] == BodyTarget.gid) {
skipTarget=true;
break;
}
}
if (tagX && getDistance (tagX,tagY, BodyTarget.x,BodyTarget.y) > dist)
skipTarget = true;
if(!skipTarget) {
ignoreKorpse.push(BodyTarget.gid);
return BodyTarget;
}
}
}while(BodyTarget.getNext(null,DEAD_MODE));
return false;
}
function NTA_PaladinAttackInt(target, boss, maxattacks){
var _attackprimary;
var _maxattacks = 0;
var _usehand1, _usehand2;
var _damagetype1, _damagetype2;
var _range1, _range2;
var _prehp1, _prehp2;
var _nohit = true;
_attackprimary = boss ? NTConfig_AttackBoss : NTConfig_AttackOthers;
_usehand1 = NTC_IsLeftSkill(_attackprimary) ? 2 : NTC_HAND_RIGHT;
_damagetype1 = NTA_GetDamageType(_attackprimary);
if(NTConfig_AttackSecondary > 0)
{
_usehand2 = NTC_IsLeftSkill(NTConfig_AttackSecondary) ? 2 : NTC_HAND_RIGHT;
_damagetype2 = NTA_GetDamageType(NTConfig_AttackSecondary);
}
switch(_attackprimary)
{
case 101: // Holy Bolt
case 121: // Fist of the Heavens
_range1 = 20;
break;
default:
_range1 = 2;
break;
}
switch(NTConfig_AttackSecondary)
{
case 101: // Holy Bolt
case 121: // Fist of the Heavens
_range2 = 20;
break;
default:
_range2 = 2;
break;
}
_prehp1 = target.hp;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true) && target.hp > 0)
{
//print("--Sub Step 1");
if(checkCollision(me, target, 3))
{
if(boss)
{
if(_attackprimary == 101 || _attackprimary == 121)
NTA_MoveCloseInt(target, Math.round(getDistance(me, target)/2));
}
else if(me.area != 131)
return false;
}
_prehp2 = target.hp;
//print("--Sub Step 2");
if(NTA_GetResistance(target, _damagetype1) < 100)
{
//print("--Sub Step 3A");
if((_maxattacks % 2) == 1 && _nohit)
{
if(_attackprimary == 112)
{
//print("--Sub Step 3A-B");
if(!NTM_MoveTo(target.x+1, target.y, 0) && !boss)
return false;
}
else
{
//print("--Sub Step 3A-C");
if(!NTA_MoveCloseInt(target, _range1) && !boss)
return false;
}
//print("--Sub Step 3A-D");
if(NTConfig_PutAura > 0)
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT);
}
//print("--Sub Step 3A-E");
NTC_DoCast(_attackprimary, _usehand1, target);
//print("--Sub Step 3A-F");
NTSI_FastSnag();
//print("--Sub Step 4A");
}
else if(NTConfig_AttackSecondary > 0 && NTA_GetResistance(target, _damagetype2) < 100)
{
//print("--Sub Step 3B");
if((_maxattacks % 2) == 1 && _nohit)
{
if(NTConfig_AttackSecondary == 112)
{
if(!NTM_MoveTo(target.x+1, target.y, 0) && !boss)
return false;
}
else
{
if(!NTA_MoveCloseInt(target, _range2) && !boss)
return false;
}
if(NTConfig_PutAura > 0)
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT);
}
NTC_DoCast(NTConfig_AttackSecondary, _usehand2, target);
NTSI_FastSnag();
//print("--Sub Step 4B");
}
else
{
//print("--Sub Step 3C");
if(boss)
{
if((_maxattacks % 2) == 1 && _nohit)
{
if(_attackprimary == 112)
NTM_MoveTo(target.x+1, target.y, 0);
else
NTA_MoveCloseInt(target, _range1);
if(NTConfig_PutAura > 0)
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT);
}
NTC_DoCast(_attackprimary, _usehand1, target);
NTSI_FastSnag();
}
else
return false;
//print("--Sub Step 4C");
}
//print("--Sub Step 4");
if(boss)
{
if((_maxattacks % 8) == 0)
{
if(target.hp < _prehp1)
_prehp1 = target.hp;
else
return false;
}
}
else
{
if((_maxattacks % 4) == 0)
{
if(target.hp < _prehp1)
_prehp1 = target.hp;
else
return false;
}
}
//print("--Sub Step 5");
_nohit = (target.hp >= _prehp2);
if(NTConfig_CheckSafe)
{
if(!NTTMGR_CheckSafe(1))
return false;
}
//print("--Sub Step 6");
}
return true;
}
function NTA_BarbarianAttackInt(target, boss, maxattacks){
return false;
}
function NTA_DruidAttackInt(target, boss, maxattacks)
{
var _attackprimary;
var _primaryindex = boss ? 1 : 2;
var _maxattacks = 0;
var _usehand1, _usehand2;
var _damagetype1, _damagetype2;
var _range1, _range2;
var _prehp;
_attackprimary = boss ? NTConfig_AttackBoss : NTConfig_AttackOthers;
_usehand1 = NTC_IsLeftSkill(_attackprimary) ? 2 : NTC_HAND_RIGHT;
_damagetype1 = NTA_GetDamageType(_attackprimary);
if(NTConfig_AttackSecondary > 0)
{
_usehand2 = NTC_IsLeftSkill(NTConfig_AttackSecondary) ? 2 : NTC_HAND_RIGHT;
_damagetype2 = NTA_GetDamageType(NTConfig_AttackSecondary);
}
switch(_attackprimary)
{
case 245: // Tornado
_range1 = 2;
break;
default:
_range1 = 2;
break;
}
switch(NTConfig_AttackSecondary)
{
case 245: // Tornado
_range2 = 2;
break;
default:
_range2 = 2;
break;
}
_prehp = target.hp;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true))
{
NTSI_FastSnag();
if(NTA_GetResistance(target, _NTA_SkillDamage[_primaryindex]) < 100)
{
if((_maxattacks % 2) == 1)
{
if(!NTA_MoveCloseInt(target, _range1) && !boss)
return false;
}
NTA_DoCastInt(_primaryindex, target);
if (!me.getState(149)) //refresh oak sage
NTC_DoCast(226,0);
if (!me.getState(144)) //refresh hurricane
NTC_DoCast(250,0);
if (!me.getState(151)) //refresh Cyclone Armor
NTC_DoCast(235,0);
}
else if(NTConfig_AttackSkill[4] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[4]) < 100)
{
if((_maxattacks % 2) == 1)
{
if(!NTA_MoveCloseInt(target, _range2) && !boss)
return false;
}
NTA_DoCastInt(4, target);
if (!me.getState(149)) //refresh oak sage
NTC_DoCast(226,0);
if (!me.getState(144)) //refresh hurricane
NTC_DoCast(250,0);
if (!me.getState(151)) //refresh Cyclone Armor
NTC_DoCast(235,0);
}
else
{
if(boss)
{
if((_maxattacks % 2) == 1)
NTA_MoveCloseInt(target, _range1);
NTA_DoCastInt(_primaryindex, target);
if (!me.getState(149)) //refresh oak sage
NTC_DoCast(226,0);
if (!me.getState(144)) //refresh hurricane
NTC_DoCast(250,0);
if (!me.getState(151)) //refresh Cyclone Armor
NTC_DoCast(235,0);
}
else
return false;
}
if(boss)
{
if((_maxattacks % 4) == 0 && target.hp >= _prehp)
{
if(target.classid == 526)
return false;
}
if((_maxattacks % 8) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
else
{
if((_maxattacks % 4) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
if(NTConfig_CheckSafe)
{
if(!NTTMGR_CheckSafe(1))
return false;
}
}
NTSI_FastSnag();
return true;
}
function NTA_AssassinAttackInt(target, boss, maxattacks)
{
var _primaryindex;
var _maxattacks = 0;
var _range1, _range2;
var _prehp;
_primaryindex = boss ? 1 : 2;
switch(NTConfig_AttackSkill[_primaryindex])
{
case 256: // Shock Field
case 271: // Lightning Sentry
_range1 = 10;
break;
default:
_range1 = 20;
break;
}
switch(NTConfig_AttackSkill[4])
{
case 256: // Shock Field
case 271: // Lightning Sentry
_range2 = 10;
break;
default:
_range2 = 20;
break;
}
_prehp = target.hp;
while(_maxattacks++ < maxattacks && NTA_IsValidTarget(target, true) && target.hp > 0)
{
if(NTConfig_UseTraps)
NTA_CheckTraps(target,boss);
NTSI_FastSnag();
if(!target.hp > 0)
break;
if(!getCollision(me.area, target.x,target.y))
{
if(boss)
NTA_MoveCloseInt(target, Math.round(getDistance(me, target)/2));
else if(me.area != 131)
return false;
}
if(NTA_GetResistance(target, _NTA_SkillDamage[_primaryindex]) < 100)
{
if((_maxattacks % 2) == 1)
{
if(!NTA_MoveCloseInt(target, _range1) && !boss)
return false;
}
NTA_DoCastInt(_primaryindex, target);
}
else if(NTConfig_AttackSkill[4] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[4]) < 100)
{
if((_maxattacks % 2) == 1)
{
if(!NTA_MoveCloseInt(target, _range2) && !boss)
return false;
}
NTA_DoCastInt(4, target);
}
else
{
if(boss)
{
if((_maxattacks % 2) == 1)
NTA_MoveCloseInt(target, _range1);
NTA_DoCastInt(_primaryindex, target);
}
else
return false;
}
if(boss)
{
if((_maxattacks % 4) == 0 && target.hp >= _prehp)
{
if(target.classid == 526)
return false;
}
if((_maxattacks % 8) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
else
{
if((_maxattacks % 4) == 0)
{
if(target.hp < _prehp)
_prehp = target.hp;
else
return false;
}
}
if(NTConfig_CheckSafe)
{
if(!NTTMGR_CheckSafe(1))
return false;
}
}
return true;
}
function NTA_CheckTraps(target,boss)
{
var traps=NTC_GetUnit(NTC_UNIT_MONSTER);
var trapcount =0;
var warr=0;
var secondTrap =276;
var x,y;
if (traps){
do{
if (traps.classid == 412 || traps.classid == 413 || traps.classid == 416 || traps.classid == 417){
if(traps.getParent() == me.name)
if(getDistance(target.x,target.y,traps.x,traps.y)<35 && traps.hp > 100 )
trapcount=trapcount+1;
}
if (traps.classid == 418 || traps.classid == 419 && traps.mode != 12){
warr=1;
}
}while(traps.getNext())
if (trapcount < 5 && target.hp>0){
x=target.x; y=target.y;
if(target.classid == 243 || target.classid == 544)
secondTrap =271;
NTSI_FastSnag();
NTC_DoCast(258, NTC_HAND_RIGHT); //quickness
NTSI_FastSnag();
NTC_DoCast(271, NTC_HAND_RIGHT, x+2,y);
NTC_DoCast(271, NTC_HAND_RIGHT, x+1,y);
NTSI_FastSnag();
NTC_DoCast(271, NTC_HAND_RIGHT, x,y);
NTSI_FastSnag();
NTC_DoCast(secondTrap, NTC_HAND_RIGHT, x-1,y);
NTC_DoCast(secondTrap, NTC_HAND_RIGHT, x-2,y);
if (NTConfig_CastFade)
NTC_DoCast(267, NTC_HAND_RIGHT); //fade
NTSI_FastSnag();
}
if (warr==0)
NTP_UpdatePrecast();
}
}
function NTA_MoveCloseInt(target, maxrange)
{
var _dist = getDistance(me, target);
if(_dist > maxrange)
{
var _destx, _desty;
_destx = me.x + Math.round((_dist-maxrange)*(target.x-me.x) / _dist);
_desty = me.y + Math.round((_dist-maxrange)*(target.y-me.y) / _dist);
return NTM_MoveTo(_destx, _desty, 0);
}
return true;
}
function NTA_SortRoomInt(a, <img src='http://img.gmstemple.com/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />
{
if(getDistance(me.x, me.y, a[0], a[1]) < getDistance(me.x, me.y, b[0], b[1]))
return -1;
return 1;
}
function NTA_Initialize()
{
if (me.classid == 1){
//NTConfig_AttackFirst=NTConfig_AttackSkill[0];
//NTConfig_AttackBoss=NTConfig_AttackSkill[1];
//NTConfig_AttackOthers=NTConfig_AttackSkill[2];
//NTConfig_AttackSecondary=NTConfig_AttackSkill[4];
//if (NTConfig_AttackSecondary == 0)
// NTConfig_AttackSecondary = NTConfig_AttackSkill[4];
if (NTConfig_AttackSkill[0] == 0 && NTConfig_AttackSkill[1] == 0 && NTConfig_AttackSkill[2] == 0 && NTConfig_AttackSkill[3] == 0 && NTConfig_AttackSkill[4] == 0 ){
// old config file
NTConfig_AttackSkill[0] = NTConfig_AttackFirst;
NTConfig_AttackSkill[1] = NTConfig_AttackBoss;
NTConfig_AttackSkill[2] = NTConfig_AttackOthers;
NTConfig_AttackSkill[4] = NTConfig_AttackSecondary;
}
}
for(var i = 0 ; i < 6 ; i++)
{
if(NTConfig_AttackSkill[i] > 0)
{
_NTA_SkillHand[i] = getBaseStat("skills.txt", NTConfig_AttackSkill[i], 166) ? 2 : NTC_HAND_RIGHT;
_NTA_SkillDamage[i] = NTA_GetDamageType(NTConfig_AttackSkill[i]);
_NTA_SkillDelay[i] = NTC_GetCastDelay(NTConfig_AttackSkill[i]);
}
}
}
function NTA_DoCastInt(index, target)
{
var _untimedindex = index < 4 ? 3 : 5;
if (NTConfig_AttackSkill[index] == 0)
return false;
if(!NTC_DoCast(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target))
return false;
if (me.area != 102)
getIntoLOS(target)
if(_NTA_SkillDelay[index] > 0)
{
if(NTConfig_AttackSkill[_untimedindex] > 0)
{
var _starttick = getTickCount();
while(NTA_IsValidTarget(target, true))
{
NTC_DoCast(NTConfig_AttackSkill[_untimedindex], _NTA_SkillHand[_untimedindex], target);
if(getTickCount()-_starttick >= _NTA_SkillDelay[index])
break;
}
}
else
NTC_Delay(_NTA_SkillDelay[index]);
}
return true;
}Pas encore test.
Tiens nous en courant.
[color=#8B0000;]My Jsp <[/color]

#4
fog_nemrod
fog_nemrod
-
- Membres
-
- 121 messages
Gamer lvl 1
- Location :Troyes / Lille
- Hobbies :Moto - Fantasy - D2 - Arts Martiaux - Volley-Ball
Posté 14 February 2011 - 10:01
range 2 c moyen pr les nado, moi j'avais mis 7-8 (pile celui de ouragan) histoire de pas prendre trop de claques et ca marchai bien
Répondre aux messages cités Effacer




