darknesscrysis Posted June 20, 2017 Share Posted June 20, 2017 (edited) Does this work for you? It seems to me that the condition (NpcList.Items(i).Target = User) never gives true. Maybe it doesn't work in interlude? var AggroMobs:integer; function MobsAttacking : integer; //Сколько мобов нас атакует? var i, n: Integer; begin n := 0; AggroMobs:=0; for i := 0 to NpcList.Count - 1 do if (NpcList.Items(i).Target = User) and not NpcList.Items(i).Dead then inc(n); AggroMobs:= n; Result := n; end; begin print(MobsAttacking); end. How do I configure the bot interface to attack only agro mobs? Edited June 20, 2017 by darknesscrysis Quote Link to comment Share on other sites More sharing options...
adr.bot Posted June 20, 2017 Share Posted June 20, 2017 Does this work for you? It seems to me that the condition (NpcList.Items(i).Target = User) never gives true. Maybe it doesn't work in interlude? var AggroMobs:integer; function MobsAttacking : integer; //Сколько мобов нас атакует? var i, n: Integer; begin n := 0; AggroMobs:=0; for i := 0 to NpcList.Count - 1 do if (NpcList.Items(i).Target = User) and not NpcList.Items(i).Dead then inc(n); AggroMobs:= n; Result := n; end; begin print(MobsAttacking); end. How do I configure the bot interface to attack only agro mobs? yes this doesnt work for interlude, check this http://www.maxcheaters.com/topic/189997-l2-adrenaline-scripts/?p=2637922 Quote Link to comment Share on other sites More sharing options...
darknesscrysis Posted June 23, 2017 Author Share Posted June 23, 2017 (edited) function checkAgro: boolean;var npc: TL2Npc; begin result := Engine.FindEnemy(npc, user, 1100)); end; begin engine.moveto(123,123,123); engine.useskill(123); engine.facecontrol(0,true); while checkAgro do delay(1111); engine.facecontrol(0,false); end. The problem with that is that it only kills the mobs after it arrives to the point. So when you cross a chamber you would have a lot of mobs to kill at once. I think this way would work better, you create a config that doesn't attack any mob but beat off attacking mobs, you load that config before moving to the hunting zone, and when you arrive you change it for the usual config to attack all the mobs in that zone. BEGIN Engine.LoadConfig ('KillAggroMobs'); Engine.FaceControl (0, True); Engine.MoveTo ... move.. move.. ... if User.InRange (x, y, z, range, zRange) then begin Print ('Arrived to hunting zone'); Engine.LoadConfig (User.Name); Engine.LoadZone ('huntingZoneName.zmap'); end; END. Edited June 23, 2017 by darknesscrysis Quote Link to comment Share on other sites More sharing options...
adr.bot Posted June 23, 2017 Share Posted June 23, 2017 The problem with that is that it only kills the mobs after it arrives to the point. So when you cross a chamber you would have a lot of mobs to kill at once. I think this way would work better, you create a config that doesn't attack any mob but beat off attacking mobs, you load that config before moving to the hunting zone, and when you arrive you change it for the usual config to attack all the mobs in that zone. BEGIN Engine.LoadConfig ('KillAggroMobs'); Engine.FaceControl (0, True); Engine.MoveTo ... move.. move.. ... if User.InRange (x, y, z, range, zRange) then begin Print ('Arrived to hunting zone'); Engine.LoadConfig (User.Name); Engine.LoadZone ('huntingZoneName.zmap'); end; END. i still prefer that function xd Quote Link to comment Share on other sites More sharing options...
darknesscrysis Posted June 23, 2017 Author Share Posted June 23, 2017 (edited) It would be nice if it stopped when there's a mob attacking, but it would need to pause the movement. How would that be? Something like.. function checkAgro: boolean; var npc: TL2Npc; begin result := Engine.FindEnemy(npc, user, 1100)); end; procedure killAgroMobs; begin if checkAgro // suspend thread movingToHuntingZone // resume thread after killing mobs end; procedure movingToHuntingZone; ... begin script.newThread(@killAgroMobs); script.newThread(@movingToHuntingZone); end. Edited June 23, 2017 by darknesscrysis Quote Link to comment Share on other sites More sharing options...
adr.bot Posted June 23, 2017 Share Posted June 23, 2017 (edited) It would be nice if it stopped when there's a mob attacking, but it would need to pause the movement. How would that be? Something like.. procedure checkAgroMobs; ... // if true suspend thread movingToHuntingZone // resume thread after killing mobs procedure movingToHuntingZone; ... begin script.newThread(@checkAgroMobs); script.newThread(@movingToHuntingZone); end. simply before each move check for agro mobs, and if agro true then turn on bot and do delay for example procedure CustomMoveTo(x,y,z:integer); begin if checkAgro then begin engine.facecontro(0, true); while checkAgro do delay(20); engine.facecontrol(0,false); end; engine.moveto(x,y,z); end; begin CustomMoveTo(123,123,123); end. it before start use engine.moveto it will check if mobs hit u, gl! Edited June 23, 2017 by adr.bot Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.