Para's Script Library

07/10/2019 21:51 Paraly#2296
Quote:
Originally Posted by agua2o View Post
Ok. So all that I need to do is to thrown the HPPotions function in the scritpt and at the end of every round the script will check if I have the potions on my inventory and set Var3 with the ID. Is that it? And the number 3 means what? (not the %Var3, the other number 3)
Yes that's how it works, not sure which number 3 you mean though.

There're 40 variable slots %Var1, %Var2, %Var39, %Var40

If we save the item ID in variable 3 then the script will replace any %Var3 with the itemID, which happens at the _ACPotions line

So again when you put this function at the end of the combat routine script and you also need to add
Code:
#EXECUTE=HPPotions;
below this part
Code:
#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
it will at the beginning of each round check which potions you have and use them in combat
07/10/2019 21:54 agua2o#2297
Quote:
Originally Posted by Paraly View Post
Yes that's how it works, not sure which number 3 you mean though.

There're 40 variable slots %Var1, %Var2, %Var39, %Var40

If we save the item ID in variable 3 then the script will replace any %Var3 with the itemID, which happens at the _ACPotions line

So again when you put this function at the end of the combat routine script and you also need to add
Code:
#EXECUTE=HPPotions;
below this part
Code:
#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
it will at the beginning of each round check which potions you have and use them in combat
Understood. And the "number 3" that I'm referring to is this one
Code:
_SetVar=PotionsPerRound,3;
07/10/2019 21:57 Paraly#2298
Quote:
Originally Posted by agua2o View Post
Understood. And the "number 3" that I'm referring to is this one
Code:
_SetVar=PotionsPerRound,3;
This line declares a dynamic variable, they work similar to the 40 variable slots I explained above

we save the value "3" in a variable called "PotionsPerRound"

we can access this variable with %Var[PotionsPerRound], and we use that in all the following _IFInventoryContains lines, so it always checks if we have at least 3 of these potions at the beginning of each round before declaring them to be used in combat
07/10/2019 21:58 agua2o#2299
Quote:
Originally Posted by Paraly View Post
This line declares a dynamic variable, they work similar to the 40 variable slots I explained above

we save the value "3" in a variable called "PotionsPerRound"

we can access this variable with %Var[PotionsPerRound], and we use that in all the following _IFInventoryContains lines, so it always checks if we have at least 3 of these potions at the beginning of each round before declaring them to be used in combat
OK. Thanks for the help!

Hey @[Only registered and activated users can see links. Click Here To Register...]!

What does the number after the / means in this line?

_ACItems=160040031/5061;
07/11/2019 01:25 Paraly#2300
Quote:
Originally Posted by agua2o View Post
OK. Thanks for the help!

Hey @[Only registered and activated users can see links. Click Here To Register...]!

What does the number after the / means in this line?

_ACItems=160040031/5061;
That's the buff ID, you get buff IDs by checking "Show IDs" at the Script Editor and hovering above the buff ingame
07/11/2019 01:31 agua2o#2301
Quote:
Originally Posted by Paraly View Post
That's the buff ID, you get buff IDs by checking "Show IDs" at the Script Editor and hovering above the buff ingame
Oh damn. I need to use the potion to see the buff ID. Gotcha.
07/11/2019 04:14 crazymonkey84#2302
never mind
07/11/2019 22:40 agua2o#2303
So I have seen the bot use Return a few times when it wasn't needed. And I also have seen it get stuck trying to execute the start_Return and start_Reset functions when it was dead. To remedy that I have added a "#EXECUTE=CheckDead;" inside those functions, which appears to have solved that problem (at least it didn't get stuck trying to execute the function again).

Now I have noticed that it uses start_Return when it's apparently not needed and it adds a "Stuck" count.

Here is how I have my combat routine set up (I only use Rangers as bots so I have removed a lot of stuff from it):
Code:
#COMBAT ROUTINE VER 2.47
#IF=%FirstTime,;
RequireVersion=6.37;
UseSpeed=1;
#UseLoop
#EnableSpeech
#EnableChatLog
_SetVar3=162005006;
_SetVar4=1; //Wanna use NoAnimation while grinding?/n/nType 1 for yes or 0 for no
_SetVar7=0; //Enable selling when inventory is full?/n/nType 0 for no/nType 1 for selling at inventory/nType 2 for selling at merchant
_SetVar2=1; //Enable Anti-Stuck detection at the beginning of each round?/n/nType 1 for yes or 0 for no
_SetVar10=1; //Enable Transformation Potion usage?
_SetVar9=1; //Enable an improved cooldown detection?
_SetVar=Timeout,360; //Want to stop grinding after a certain amount of minutes?/n/nEnter the amount of minutes or 0 if you don't want any time limit
_SetVar=WhisperAnswer,0; //Enter your automatic reply text to whispers/n/nMake sure "T" is binded to "Reply to Whisper" at Aion/n/n(Recommended to paste "#EXECUTE=CheckWhisper" every few lines at your path)/n/nIf you don't want to reply to whispers enter 0
_Calc[TimeoutMS]=%Var[Timeout]*60000;
#AUTOSELLMARK

#SmoothBackground
Command=;
MemWrite=%AddrFreeMem4,%Var4,BYTE;
MemWrite=%AddrFreeMem2,%Var5,BYTE;
MemWrite=%AddrFreeMem6,0,BYTE;
#EXECUTE=CombatSort;
MemPtrWrite=%AddrFPS,%OffsetFPS1,30,BYTE; <-- these 2 lines cap the fps at 30
MemPtrWrite=%AddrFPS,%OffsetFPS2,30,FLOAT; <-- these 2 lines cap the fps at 30
#IF=%Var7,>0;
#SetArray2=Enter the ItemIDs the bot is allowed to sell/nExample: 182010036,182010037,182010038;
#ENDIF
#IF=%FirstTime,;
#EXECUTE=GetPetID;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;
#EXECUTE=DetectObelisk;
CreateTimer=9999998;
#ShowLog
MemWrite=%AddrFreeMem0,%Var[WhisperAnswer],CHAR[1];
_IFMemRead=%AddrFreeMem0,BYTE,>48;
#EXECUTE=InjectWhisperDetection;
#ENDIF


#EXECUTE=CheckDead;
#EXECUTE=CheckWhisper; // copy paste this line frequently after every few waypoints

#IF=%Var7,>0;
_MemPtrReadVar=%AddrMaxSlots,%OffsetMaxSlots,BYTE,6;
_Calc6=%Var6-5;
_IFMemPtrRead=%AddrSlots,%OffsetSlots,BYTE,>%Var6;
#EXECUTE=InventoryCheck;
#ENDIF

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
#ELSE
#IF=%Timer=9999998,43200000;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has grinded for more than 12 hours, longer periods of botting can be dangerous at europe.;
#ENDIF

#IF=%Var[Timeout],>0;
#IF=%Timer=9999998,%Var[TimeoutMS];
#EXECUTE=Stop;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has finished his grind session after %Var[Timeout] minutes.;
#UseNoLoop
#EndScript
#ENDIF


#IF=%FirstTime,;
_MemPtrReadVar=%PlayerBase,%OffsetPosX,FLOAT,StartPosX;
_MemPtrReadVar=%PlayerBase,%OffsetPosY,FLOAT,StartPosY;
_MemPtrReadVar=%PlayerBase,%OffsetPosZ,FLOAT,StartPosZ;
_Calc[StartPosX1]=%Var[StartPosX]-7.5;
_Calc[StartPosY1]=%Var[StartPosY]-7.5;
_Calc[StartPosZ1]=%Var[StartPosZ]-3;
_Calc[StartPosX2]=%Var[StartPosX]+7.5;
_Calc[StartPosY2]=%Var[StartPosY]+7.5;
_Calc[StartPosZ2]=%Var[StartPosZ]+3;
_Calc[ResetPosZ]=%Var[StartPosZ]+10;
#ELSE
#LogAddRound
FlySmooth=%Var[StartPosX],%Var[StartPosY],%Var[StartPosZ];
#ENDIF

#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
#EXECUTE=HPPotions;

_IFMemPtrRead=%PlayerBase,%OffsetPosX,FLOAT,%Var[StartPosX1]-%Var[StartPosX2];
_IFMemPtrRead=%PlayerBase,%OffsetPosY,FLOAT,%Var[StartPosY1]-%Var[StartPosY2];
_IFMemPtrRead=%PlayerBase,%OffsetPosZ,FLOAT,%Var[StartPosZ1]-%Var[StartPosZ2];
#ELSE
#IF=%Var2,=1;
#EXECUTE=Reset;
#ENDIF


#GRINDMARK


start_CheckDead;

_SetVar=Dead,0;

_IFFrameVisible=267;
_SetVar=Dead,1;
#ENDIF

_IFMemRead=%AddrResurrect,BYTE,<8;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetHP,DWORD,=0;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=0;
_SetVar=Dead,1;
#ENDIF

#IF=%Var[Dead],=1;
#EXECUTE=SetResolution;
#LogAddDeath
#DO=20000;
MemWrite=%AddrResurrect,1,BYTE; <- Resurrect
Delay=500;
_UNTILMemPtrRead=%PlayerBase,%OffsetHP,DWORD,>0;
Delay=5000;
MemWrite=%AddrResurrect,8,BYTE; <- Reset Resurrect
#EXECUTE=FindSoulHealer;
Delay=1000;
#EXECUTE=Return;
#EXECUTE=CheckAutoLoot;
#ENDIF

end_CheckDead;


start_Stop;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF
Delay=4500;

end_Stop;



start_Reset;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF

Delay=4500;
#LogAddStuck
#EXECUTE=Return;

end_Reset;


start_DetectObelisk;

Command=/select Obelisk;
Command=/select Obélisque;
Command=/select Obelisco;
Delay=125;
_IFMemPtrRead=%TargetBase,%OffsetName,WCHAR[2],=Ob;
#EXECUTE=Return;
#ENDIF

end_DetectObelisk;


start_FindSoulHealer;

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
_SetVar11=527; Soulhealer FrameID NA
#ELSE
_SetVar11=527; Soulhealer FrameID EU
#ENDIF


MemWrite=%AddrCamY,85,FLOAT;
#DO=7000;
SendKey=0x77;
Delay=35;
_UNTILMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
_IFMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
#DO=15000;
Command=/attack;
Delay=1550;
DialogClick=NpcFunc128;
Delay=750;
_UNTILMemPtrRead=%AddrFrameID[%Var11],0x28,BYTE,=175;
FrameAction=%Var11,XPOS,0;
FrameAction=%Var11,YPOS,0;
Delay=550;
Mouse=160,95;
Delay=750;
_UNTILMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=100;
#ELSE
_ACReg=;
#ENDIF
SendKey=0x1B;
Delay=15;
SendKey=0x1B;
MemPtrWrite=%AddrFrameID[19],0x28,142,BYTE;
MemWrite=%AddrCamY,25,FLOAT;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;

end_FindSoulHealer;


start_CheckAutoLoot;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+748;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50045;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

_IFMemRead=%Var[CATempAddr],DWORD,=0;
_ACMob_Looting=True;
#ELSE
_ACMob_Looting=False;
#ENDIF

end_CheckAutoLoot;


start_CheckAutoBuff;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+696;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50044;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

end_CheckAutoBuff;


start_GetPetID;

_SetVar=PetAvailable,0;

_IFMemRead=%AddrPet,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,46;
#ENDIF

_IFMemRead=%AddrMinion,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrMinion,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,86;
#ENDIF

end_GetPetID;



start_Return;

#RETURNMARK

end_Return;


start_CombatSort;


;;;;;;;;BASIC SETTINGS;;;;;;;;;;;

#IF=%Var4,=1;
_ACUseAnimation=True;
#ENDIF

#IF=%Var3,>0;
_ACPotion=%Var3,HP/MP,50,66;
#ENDIF

_ACRegenerateEnabled=True;
_ACRegMPPercentage=30;
_ACRegHPPercentage=35;
_ACTimeout=300000;
_ACMob_Looting=False;
_ACAllowAllMobs=True;
_ACResetPosition=False;
_ACIgnoreAtDistance=20;

;;;;;;;END BASIC SETTINGS;;;;;;;;



_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5;
;;;;;;;;;Settings Ranger;;;;;;;;; by widoxd02

_ACRelyOnBuff=813,813;
_ACRelyOnBuff=796,796;
_ACRelyOnBuff=1057,1057;
_ACRelyOnBuff=867,867;
_ACRelyOnBuff=3235,3235;
_ACRelyOnBuff=889,889;
_ACRelyOnBuff=4875,4875;
_ACRelyOnBuff=4724,4724;

_ACIsActive=889,True;
_ACIsActive=4724,True;
_ACIsActive=4875,True;

_ACRelyOnDP=4875,2000;

_ACManaPercentage=66;
_ACHealPercentage=50;

_ACInitialRange=15;

_ACBuffs=889,4724,4875,813,796,1057,867,3235;
_ACSkills=961,4722,795,871,825,1052,1026,1005,4723,1134;

;;;;;;;End Settings Ranger;;;;;;;
#ENDIF


#IF=%Var9,=1;
_ACExperimentalCooldown=True; --- Please wait...
#ENDIF

end_CombatSort;




start_TransformationPotions;

_SetVar=PotionsPerRound,1;

_IFInventoryContains=160040031,%Var[PotionsPerRound];
_ACItems=160040031/5061;
#ENDIF

_IFInventoryContains=160020030,%Var[PotionsPerRound];
_ACItems=160020030/5060;
#ENDIF

_IFInventoryContains=160040029,%Var[PotionsPerRound];
_ACItems=160040029/5059;
#ENDIF

_IFInventoryContains=160040028,%Var[PotionsPerRound];
_ACItems=160040028/5058;
#ENDIF

_IFInventoryContains=160040027,%Var[PotionsPerRound];
_ACItems=160040027/5057;
#ENDIF

_IFInventoryContains=160040026,%Var[PotionsPerRound];
_ACItems=160040026/5056;
#ENDIF

_IFInventoryContains=160040025,%Var[PotionsPerRound];
_ACItems=160040025/5055;
#ENDIF

_IFInventoryContains=160040024,%Var[PotionsPerRound];
_ACItems=160040024/5054;
#ENDIF

_IFInventoryContains=160040023,%Var[PotionsPerRound];
_ACItems=160040023/5053;
#ENDIF

_IFInventoryContains=160040022,%Var[PotionsPerRound];
_ACItems=160040022/5052;
#ENDIF

_IFInventoryContains=160040021,%Var[PotionsPerRound];
_ACItems=160040021/5051;
#ENDIF

_IFInventoryContains=160040020,%Var[PotionsPerRound];
_ACItems=160040020/5050;
#ENDIF

_IFInventoryContains=160040019,%Var[PotionsPerRound];
_ACItems=160040019/5049;
#ENDIF

_IFInventoryContains=160040018,%Var[PotionsPerRound];
_ACItems=160040018/5048;
#ENDIF

_IFInventoryContains=160040017,%Var[PotionsPerRound];
_ACItems=160040017/5047;
#ENDIF

_IFInventoryContains=160040016,%Var[PotionsPerRound];
_ACItems=160040016/5046;
#ENDIF

_IFInventoryContains=160040015,%Var[PotionsPerRound];
_ACItems=160040015/5045;
#ENDIF

_IFInventoryContains=160040014,%Var[PotionsPerRound];
_ACItems=160040014/5044;
#ENDIF

_IFInventoryContains=160040013,%Var[PotionsPerRound];
_ACItems=160040013/5043;
#ENDIF

_IFInventoryContains=160040012,%Var[PotionsPerRound];
_ACItems=160040012/5042;
#ENDIF

_IFInventoryContains=160040011,%Var[PotionsPerRound];
_ACItems=160040011/5041;
#ENDIF

_IFInventoryContains=160040010,%Var[PotionsPerRound];
_ACItems=160040010/5040;
#ENDIF

_IFInventoryContains=160040009,%Var[PotionsPerRound];
_ACItems=160040009/5039;
#ENDIF

_IFInventoryContains=160040008,%Var[PotionsPerRound];
_ACItems=160040008/5038;
#ENDIF

_IFInventoryContains=160040007,%Var[PotionsPerRound];
_ACItems=160040007/5037;
#ENDIF

_IFInventoryContains=160040006,%Var[PotionsPerRound];
_ACItems=160040006/5036;
#ENDIF

_IFInventoryContains=160040005,%Var[PotionsPerRound];
_ACItems=160040005/5035;
#ENDIF

_IFInventoryContains=160040004,%Var[PotionsPerRound];
_ACItems=160040004/5034;
#ENDIF

_IFInventoryContains=160040003,%Var[PotionsPerRound];
_ACItems=160040003/5033;
#ENDIF

_IFInventoryContains=160040002,%Var[PotionsPerRound];
_ACItems=160040002/5032;
#ENDIF

_IFInventoryContains=160040001,%Var[PotionsPerRound];
_ACItems=160040001/5031;
#ENDIF

_IFInventoryContains=160040000,%Var[PotionsPerRound];
_ACItems=160040000/5030;
#ENDIF

end_TransformationPotions;

start_HPPotions;

_SetVar=PotionsPerRound,2;

_IFInventoryContains=162005006,%Var[PotionsPerRound]; // If has 3 or more of this potion
_SetVar3=162005006; // set item ID as variable 3
#ENDIF

_IFInventoryContains=162005002,%Var[PotionsPerRound];
_SetVar3=162005002; // set item ID as variable 3
#ENDIF

//highest priority potions should be declared as late as possible

#EXECUTE=CombatSort; // call combatsort function so %Var3 gets applied at the _ACPotion line

end_HPPotions;

start_SetResolution; <-- resizes client without using real mouse

Console=\r_Height 600;
Console=\r_Width 800;

end_SetResolution;
Could I have removed something that shouldn't be? It's not always that it bugs, though. But sometimes I have to move the bot to the starting point and start it all over for it to stop being stuck when it's not stuck, if you know what I mean.

Also, it deactivates the usage of Power Shards sometimes. I haven't been able to check when that happens exactly. Even if you have them in the slot (right now I have 50k equiped and had it activated 100% sure before I left home, and I just got back home and the bot had deactivated the Power Shards, but kept them equiped).
07/12/2019 00:07 Paraly#2304
Quote:
Originally Posted by agua2o View Post
So I have seen the bot use Return a few times when it wasn't needed. And I also have seen it get stuck trying to execute the start_Return and start_Reset functions when it was dead. To remedy that I have added a "#EXECUTE=CheckDead;" inside those functions, which appears to have solved that problem (at least it didn't get stuck trying to execute the function again).

Now I have noticed that it uses start_Return when it's apparently not needed and it adds a "Stuck" count.

Here is how I have my combat routine set up (I only use Rangers as bots so I have removed a lot of stuff from it):
Code:
#COMBAT ROUTINE VER 2.47
#IF=%FirstTime,;
RequireVersion=6.37;
UseSpeed=1;
#UseLoop
#EnableSpeech
#EnableChatLog
_SetVar3=162005006;
_SetVar4=1; //Wanna use NoAnimation while grinding?/n/nType 1 for yes or 0 for no
_SetVar7=0; //Enable selling when inventory is full?/n/nType 0 for no/nType 1 for selling at inventory/nType 2 for selling at merchant
_SetVar2=0; //Enable Anti-Stuck detection at the beginning of each round?/n/nType 1 for yes or 0 for no
_SetVar10=1; //Enable Transformation Potion usage?
_SetVar9=1; //Enable an improved cooldown detection?
_SetVar=Timeout,360; //Want to stop grinding after a certain amount of minutes?/n/nEnter the amount of minutes or 0 if you don't want any time limit
_SetVar=WhisperAnswer,0; //Enter your automatic reply text to whispers/n/nMake sure "T" is binded to "Reply to Whisper" at Aion/n/n(Recommended to paste "#EXECUTE=CheckWhisper" every few lines at your path)/n/nIf you don't want to reply to whispers enter 0
_Calc[TimeoutMS]=%Var[Timeout]*60000;
#AUTOSELLMARK

#SmoothBackground
Command=;
MemWrite=%AddrFreeMem4,%Var4,BYTE;
MemWrite=%AddrFreeMem2,%Var5,BYTE;
MemWrite=%AddrFreeMem6,0,BYTE;
#EXECUTE=CombatSort;
MemPtrWrite=%AddrFPS,%OffsetFPS1,30,BYTE; <-- these 2 lines cap the fps at 30
MemPtrWrite=%AddrFPS,%OffsetFPS2,30,FLOAT; <-- these 2 lines cap the fps at 30
#IF=%Var7,>0;
#SetArray2=Enter the ItemIDs the bot is allowed to sell/nExample: 182010036,182010037,182010038;
#ENDIF
#IF=%FirstTime,;
#EXECUTE=GetPetID;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;
#EXECUTE=DetectObelisk;
CreateTimer=9999998;
#ShowLog
MemWrite=%AddrFreeMem0,%Var[WhisperAnswer],CHAR[1];
_IFMemRead=%AddrFreeMem0,BYTE,>48;
#EXECUTE=InjectWhisperDetection;
#ENDIF


#EXECUTE=CheckDead;
#EXECUTE=CheckWhisper; // copy paste this line frequently after every few waypoints

#IF=%Var7,>0;
_MemPtrReadVar=%AddrMaxSlots,%OffsetMaxSlots,BYTE,6;
_Calc6=%Var6-5;
_IFMemPtrRead=%AddrSlots,%OffsetSlots,BYTE,>%Var6;
#EXECUTE=InventoryCheck;
#ENDIF

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
#ELSE
#IF=%Timer=9999998,43200000;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has grinded for more than 12 hours, longer periods of botting can be dangerous at europe.;
#ENDIF

#IF=%Var[Timeout],>0;
#IF=%Timer=9999998,%Var[TimeoutMS];
#EXECUTE=Stop;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has finished his grind session after %Var[Timeout] minutes.;
#UseNoLoop
#EndScript
#ENDIF


#IF=%FirstTime,;
_MemPtrReadVar=%PlayerBase,%OffsetPosX,FLOAT,StartPosX;
_MemPtrReadVar=%PlayerBase,%OffsetPosY,FLOAT,StartPosY;
_MemPtrReadVar=%PlayerBase,%OffsetPosZ,FLOAT,StartPosZ;
_Calc[StartPosX1]=%Var[StartPosX]-7.5;
_Calc[StartPosY1]=%Var[StartPosY]-7.5;
_Calc[StartPosZ1]=%Var[StartPosZ]-3;
_Calc[StartPosX2]=%Var[StartPosX]+7.5;
_Calc[StartPosY2]=%Var[StartPosY]+7.5;
_Calc[StartPosZ2]=%Var[StartPosZ]+3;
_Calc[ResetPosZ]=%Var[StartPosZ]+10;
#ELSE
#LogAddRound
FlySmooth=%Var[StartPosX],%Var[StartPosY],%Var[StartPosZ];
#ENDIF

#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
#EXECUTE=HPPotions;

_IFMemPtrRead=%PlayerBase,%OffsetPosX,FLOAT,%Var[StartPosX1]-%Var[StartPosX2];
_IFMemPtrRead=%PlayerBase,%OffsetPosY,FLOAT,%Var[StartPosY1]-%Var[StartPosY2];
_IFMemPtrRead=%PlayerBase,%OffsetPosZ,FLOAT,%Var[StartPosZ1]-%Var[StartPosZ2];
#ELSE
#IF=%Var2,=1;
#EXECUTE=Reset;
#ENDIF


#GRINDMARK


start_CheckDead;

_SetVar=Dead,0;

_IFFrameVisible=267;
_SetVar=Dead,1;
#ENDIF

_IFMemRead=%AddrResurrect,BYTE,<8;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetHP,DWORD,=0;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=0;
_SetVar=Dead,1;
#ENDIF

#IF=%Var[Dead],=1;
#EXECUTE=SetResolution;
#LogAddDeath
#DO=20000;
MemWrite=%AddrResurrect,1,BYTE; <- Resurrect
Delay=500;
_UNTILMemPtrRead=%PlayerBase,%OffsetHP,DWORD,>0;
Delay=5000;
MemWrite=%AddrResurrect,8,BYTE; <- Reset Resurrect
#EXECUTE=FindSoulHealer;
Delay=1000;
#EXECUTE=Return;
#EXECUTE=CheckAutoLoot;
#ENDIF

end_CheckDead;


start_Stop;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF
Delay=4500;

end_Stop;



start_Reset;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF

Delay=4500;
#LogAddStuck
#EXECUTE=Return;

end_Reset;


start_DetectObelisk;

Command=/select Obelisk;
Command=/select Obélisque;
Command=/select Obelisco;
Delay=125;
_IFMemPtrRead=%TargetBase,%OffsetName,WCHAR[2],=Ob;
#EXECUTE=Return;
#ENDIF

end_DetectObelisk;


start_FindSoulHealer;

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
_SetVar11=527; Soulhealer FrameID NA
#ELSE
_SetVar11=527; Soulhealer FrameID EU
#ENDIF


MemWrite=%AddrCamY,85,FLOAT;
#DO=7000;
SendKey=0x77;
Delay=35;
_UNTILMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
_IFMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
#DO=15000;
Command=/attack;
Delay=1550;
DialogClick=NpcFunc128;
Delay=750;
_UNTILMemPtrRead=%AddrFrameID[%Var11],0x28,BYTE,=175;
FrameAction=%Var11,XPOS,0;
FrameAction=%Var11,YPOS,0;
Delay=550;
Mouse=160,95;
Delay=750;
_UNTILMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=100;
#ELSE
_ACReg=;
#ENDIF
SendKey=0x1B;
Delay=15;
SendKey=0x1B;
MemPtrWrite=%AddrFrameID[19],0x28,142,BYTE;
MemWrite=%AddrCamY,25,FLOAT;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;

end_FindSoulHealer;


start_CheckAutoLoot;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+748;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50045;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

_IFMemRead=%Var[CATempAddr],DWORD,=0;
_ACMob_Looting=True;
#ELSE
_ACMob_Looting=False;
#ENDIF

end_CheckAutoLoot;


start_CheckAutoBuff;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+696;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50044;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

end_CheckAutoBuff;


start_GetPetID;

_SetVar=PetAvailable,0;

_IFMemRead=%AddrPet,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,46;
#ENDIF

_IFMemRead=%AddrMinion,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrMinion,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,86;
#ENDIF

end_GetPetID;



start_Return;

#RETURNMARK

end_Return;


start_CombatSort;


;;;;;;;;BASIC SETTINGS;;;;;;;;;;;

#IF=%Var4,=1;
_ACUseAnimation=True;
#ENDIF

#IF=%Var3,>0;
_ACPotion=%Var3,HP/MP,50,66;
#ENDIF

_ACRegenerateEnabled=True;
_ACRegMPPercentage=30;
_ACRegHPPercentage=35;
_ACTimeout=300000;
_ACMob_Looting=False;
_ACAllowAllMobs=True;
_ACResetPosition=False;
_ACIgnoreAtDistance=20;

;;;;;;;END BASIC SETTINGS;;;;;;;;



_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5;
;;;;;;;;;Settings Ranger;;;;;;;;; by widoxd02

_ACRelyOnBuff=813,813;
_ACRelyOnBuff=796,796;
_ACRelyOnBuff=1057,1057;
_ACRelyOnBuff=867,867;
_ACRelyOnBuff=3235,3235;
_ACRelyOnBuff=889,889;
_ACRelyOnBuff=4875,4875;
_ACRelyOnBuff=4724,4724;

_ACIsActive=889,True;
_ACIsActive=4724,True;
_ACIsActive=4875,True;

_ACRelyOnDP=4875,2000;

_ACManaPercentage=66;
_ACHealPercentage=50;

_ACInitialRange=15;

_ACBuffs=889,4724,4875,813,796,1057,867,3235;
_ACSkills=961,4722,795,871,825,1052,1026,1005,4723,1134;

;;;;;;;End Settings Ranger;;;;;;;
#ENDIF


#IF=%Var9,=1;
_ACExperimentalCooldown=True; --- Please wait...
#ENDIF

end_CombatSort;




start_TransformationPotions;

_SetVar=PotionsPerRound,1;

_IFInventoryContains=160040031,%Var[PotionsPerRound];
_ACItems=160040031/5061;
#ENDIF

_IFInventoryContains=160020030,%Var[PotionsPerRound];
_ACItems=160020030/5060;
#ENDIF

_IFInventoryContains=160040029,%Var[PotionsPerRound];
_ACItems=160040029/5059;
#ENDIF

_IFInventoryContains=160040028,%Var[PotionsPerRound];
_ACItems=160040028/5058;
#ENDIF

_IFInventoryContains=160040027,%Var[PotionsPerRound];
_ACItems=160040027/5057;
#ENDIF

_IFInventoryContains=160040026,%Var[PotionsPerRound];
_ACItems=160040026/5056;
#ENDIF

_IFInventoryContains=160040025,%Var[PotionsPerRound];
_ACItems=160040025/5055;
#ENDIF

_IFInventoryContains=160040024,%Var[PotionsPerRound];
_ACItems=160040024/5054;
#ENDIF

_IFInventoryContains=160040023,%Var[PotionsPerRound];
_ACItems=160040023/5053;
#ENDIF

_IFInventoryContains=160040022,%Var[PotionsPerRound];
_ACItems=160040022/5052;
#ENDIF

_IFInventoryContains=160040021,%Var[PotionsPerRound];
_ACItems=160040021/5051;
#ENDIF

_IFInventoryContains=160040020,%Var[PotionsPerRound];
_ACItems=160040020/5050;
#ENDIF

_IFInventoryContains=160040019,%Var[PotionsPerRound];
_ACItems=160040019/5049;
#ENDIF

_IFInventoryContains=160040018,%Var[PotionsPerRound];
_ACItems=160040018/5048;
#ENDIF

_IFInventoryContains=160040017,%Var[PotionsPerRound];
_ACItems=160040017/5047;
#ENDIF

_IFInventoryContains=160040016,%Var[PotionsPerRound];
_ACItems=160040016/5046;
#ENDIF

_IFInventoryContains=160040015,%Var[PotionsPerRound];
_ACItems=160040015/5045;
#ENDIF

_IFInventoryContains=160040014,%Var[PotionsPerRound];
_ACItems=160040014/5044;
#ENDIF

_IFInventoryContains=160040013,%Var[PotionsPerRound];
_ACItems=160040013/5043;
#ENDIF

_IFInventoryContains=160040012,%Var[PotionsPerRound];
_ACItems=160040012/5042;
#ENDIF

_IFInventoryContains=160040011,%Var[PotionsPerRound];
_ACItems=160040011/5041;
#ENDIF

_IFInventoryContains=160040010,%Var[PotionsPerRound];
_ACItems=160040010/5040;
#ENDIF

_IFInventoryContains=160040009,%Var[PotionsPerRound];
_ACItems=160040009/5039;
#ENDIF

_IFInventoryContains=160040008,%Var[PotionsPerRound];
_ACItems=160040008/5038;
#ENDIF

_IFInventoryContains=160040007,%Var[PotionsPerRound];
_ACItems=160040007/5037;
#ENDIF

_IFInventoryContains=160040006,%Var[PotionsPerRound];
_ACItems=160040006/5036;
#ENDIF

_IFInventoryContains=160040005,%Var[PotionsPerRound];
_ACItems=160040005/5035;
#ENDIF

_IFInventoryContains=160040004,%Var[PotionsPerRound];
_ACItems=160040004/5034;
#ENDIF

_IFInventoryContains=160040003,%Var[PotionsPerRound];
_ACItems=160040003/5033;
#ENDIF

_IFInventoryContains=160040002,%Var[PotionsPerRound];
_ACItems=160040002/5032;
#ENDIF

_IFInventoryContains=160040001,%Var[PotionsPerRound];
_ACItems=160040001/5031;
#ENDIF

_IFInventoryContains=160040000,%Var[PotionsPerRound];
_ACItems=160040000/5030;
#ENDIF

end_TransformationPotions;

start_HPPotions;

_SetVar=PotionsPerRound,2;

_IFInventoryContains=162005006,%Var[PotionsPerRound]; // If has 3 or more of this potion
_SetVar3=162005006; // set item ID as variable 3
#ENDIF

_IFInventoryContains=162005002,%Var[PotionsPerRound];
_SetVar3=162005002; // set item ID as variable 3
#ENDIF

//highest priority potions should be declared as late as possible

#EXECUTE=CombatSort; // call combatsort function so %Var3 gets applied at the _ACPotion line

end_HPPotions;

start_SetResolution; <-- resizes client without using real mouse

Console=\r_Height 600;
Console=\r_Width 800;

end_SetResolution;
Could I have removed something that shouldn't be? It's not always that it bugs, though. But sometimes I have to move the bot to the starting point and start it all over for it to stop being stuck when it's not stuck, if you know what I mean.

Also, it deactivates the usage of PowerShards sometimes. I haven't been able to check when that happens exactly.
Code:
#COMBAT ROUTINE VER 2.47
#IF=%FirstTime,;
RequireVersion=6.37;
UseSpeed=1;
#UseLoop
#EnableSpeech
#EnableChatLog
_SetVar3=162005006;
_SetVar4=1; //Wanna use NoAnimation while grinding?/n/nType 1 for yes or 0 for no
_SetVar7=0; //Enable selling when inventory is full?/n/nType 0 for no/nType 1 for selling at inventory/nType 2 for selling at merchant
_SetVar2=1; //Enable Anti-Stuck detection at the beginning of each round?/n/nType 1 for yes or 0 for no
_SetVar10=1; //Enable Transformation Potion usage?
_SetVar9=1; //Enable an improved cooldown detection?
_SetVar=Timeout,360; //Want to stop grinding after a certain amount of minutes?/n/nEnter the amount of minutes or 0 if you don't want any time limit
_SetVar=WhisperAnswer,0; //Enter your automatic reply text to whispers/n/nMake sure "T" is binded to "Reply to Whisper" at Aion/n/n(Recommended to paste "#EXECUTE=CheckWhisper" every few lines at your path)/n/nIf you don't want to reply to whispers enter 0
_Calc[TimeoutMS]=%Var[Timeout]*60000;
#AUTOSELLMARK

#SmoothBackground
Command=;
MemWrite=%AddrFreeMem4,%Var4,BYTE;
MemWrite=%AddrFreeMem2,%Var5,BYTE;
MemWrite=%AddrFreeMem6,0,BYTE;
#EXECUTE=CombatSort;
MemPtrWrite=%AddrFPS,%OffsetFPS1,30,BYTE; <-- these 2 lines cap the fps at 30
MemPtrWrite=%AddrFPS,%OffsetFPS2,30,FLOAT; <-- these 2 lines cap the fps at 30
#IF=%Var7,>0;
#SetArray2=Enter the ItemIDs the bot is allowed to sell/nExample: 182010036,182010037,182010038;
#ENDIF
#IF=%FirstTime,;
#EXECUTE=GetPetID;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;
#EXECUTE=DetectObelisk;
CreateTimer=9999998;
#ShowLog
MemWrite=%AddrFreeMem0,%Var[WhisperAnswer],CHAR[1];
_IFMemRead=%AddrFreeMem0,BYTE,>48;
#EXECUTE=InjectWhisperDetection;
#ENDIF


#EXECUTE=CheckDead;
#EXECUTE=CheckWhisper; // copy paste this line frequently after every few waypoints

#IF=%Var7,>0;
_MemPtrReadVar=%AddrMaxSlots,%OffsetMaxSlots,BYTE,6;
_Calc6=%Var6-5;
_IFMemPtrRead=%AddrSlots,%OffsetSlots,BYTE,>%Var6;
#EXECUTE=InventoryCheck;
#ENDIF

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
#ELSE
#IF=%Timer=9999998,43200000;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has grinded for more than 12 hours, longer periods of botting can be dangerous at europe.;
#ENDIF

#IF=%Var[Timeout],>0;
#IF=%Timer=9999998,%Var[TimeoutMS];
#EXECUTE=Stop;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has finished his grind session after %Var[Timeout] minutes.;
#UseNoLoop
#EndScript
#ENDIF


#IF=%FirstTime,;
_MemPtrReadVar=%PlayerBase,%OffsetPosX,FLOAT,StartPosX;
_MemPtrReadVar=%PlayerBase,%OffsetPosY,FLOAT,StartPosY;
_MemPtrReadVar=%PlayerBase,%OffsetPosZ,FLOAT,StartPosZ;
_Calc[StartPosX1]=%Var[StartPosX]-7.5;
_Calc[StartPosY1]=%Var[StartPosY]-7.5;
_Calc[StartPosZ1]=%Var[StartPosZ]-3;
_Calc[StartPosX2]=%Var[StartPosX]+7.5;
_Calc[StartPosY2]=%Var[StartPosY]+7.5;
_Calc[StartPosZ2]=%Var[StartPosZ]+3;
_Calc[ResetPosZ]=%Var[StartPosZ]+10;
#ELSE
#LogAddRound
FlySmooth=%Var[StartPosX],%Var[StartPosY],%Var[StartPosZ];
#ENDIF

#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
#EXECUTE=HPPotions;

_IFMemPtrRead=%PlayerBase,%OffsetPosX,FLOAT,%Var[StartPosX1]-%Var[StartPosX2];
_IFMemPtrRead=%PlayerBase,%OffsetPosY,FLOAT,%Var[StartPosY1]-%Var[StartPosY2];
_IFMemPtrRead=%PlayerBase,%OffsetPosZ,FLOAT,%Var[StartPosZ1]-%Var[StartPosZ2];
#ELSE
#IF=%Var2,=1;
#EXECUTE=Reset;
#ENDIF


#GRINDMARK


start_CheckDead;

_SetVar=Dead,0;

_IFFrameVisible=267;
_SetVar=Dead,1;
#ENDIF

_IFMemRead=%AddrResurrect,BYTE,<8;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetHP,DWORD,=0;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=0;
_SetVar=Dead,1;
#ENDIF

#IF=%Var[Dead],=1;
#EXECUTE=SetResolution;
#LogAddDeath
#DO=20000;
MemWrite=%AddrResurrect,1,BYTE; <- Resurrect
Delay=500;
_UNTILMemPtrRead=%PlayerBase,%OffsetHP,DWORD,>0;
Delay=5000;
MemWrite=%AddrResurrect,8,BYTE; <- Reset Resurrect
#EXECUTE=FindSoulHealer;
Delay=1000;
#EXECUTE=Return;
#EXECUTE=CheckAutoLoot;
#Restart
#ENDIF

end_CheckDead;


start_Stop;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF
Delay=4500;

end_Stop;



start_Reset;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF

Delay=4500;
#LogAddStuck
#EXECUTE=Return;

end_Reset;


start_DetectObelisk;

Command=/select Obelisk;
Command=/select Obélisque;
Command=/select Obelisco;
Delay=125;
_IFMemPtrRead=%TargetBase,%OffsetName,WCHAR[2],=Ob;
#EXECUTE=Return;
#ENDIF

end_DetectObelisk;


start_FindSoulHealer;

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
_SetVar11=527; Soulhealer FrameID NA
#ELSE
_SetVar11=527; Soulhealer FrameID EU
#ENDIF


MemWrite=%AddrCamY,85,FLOAT;
#DO=7000;
SendKey=0x77;
Delay=35;
_UNTILMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
_IFMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
#DO=15000;
Command=/attack;
Delay=1550;
DialogClick=NpcFunc128;
Delay=750;
_UNTILMemPtrRead=%AddrFrameID[%Var11],0x28,BYTE,=175;
FrameAction=%Var11,XPOS,0;
FrameAction=%Var11,YPOS,0;
Delay=550;
Mouse=160,95;
Delay=750;
_UNTILMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=100;
#ELSE
_ACReg=;
#ENDIF
SendKey=0x1B;
Delay=15;
SendKey=0x1B;
MemPtrWrite=%AddrFrameID[19],0x28,142,BYTE;
MemWrite=%AddrCamY,25,FLOAT;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;

end_FindSoulHealer;


start_CheckAutoLoot;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+748;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50045;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

_IFMemRead=%Var[CATempAddr],DWORD,=0;
_ACMob_Looting=True;
#ELSE
_ACMob_Looting=False;
#ENDIF

end_CheckAutoLoot;


start_CheckAutoBuff;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+696;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50044;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

end_CheckAutoBuff;


start_GetPetID;

_SetVar=PetAvailable,0;

_IFMemRead=%AddrPet,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,46;
#ENDIF

_IFMemRead=%AddrMinion,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrMinion,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,86;
#ENDIF

end_GetPetID;



start_Return;

#RETURNMARK

end_Return;


start_CombatSort;


;;;;;;;;BASIC SETTINGS;;;;;;;;;;;

#IF=%Var4,=1;
_ACUseAnimation=True;
#ENDIF

#IF=%Var3,>0;
_ACPotion=%Var3,HP/MP,50,66;
#ENDIF

_ACRegenerateEnabled=True;
_ACRegMPPercentage=30;
_ACRegHPPercentage=35;
_ACTimeout=300000;
_ACMob_Looting=False;
_ACAllowAllMobs=True;
_ACResetPosition=False;
_ACIgnoreAtDistance=20;

;;;;;;;END BASIC SETTINGS;;;;;;;;



_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5;
;;;;;;;;;Settings Ranger;;;;;;;;; by widoxd02

_ACRelyOnBuff=813,813;
_ACRelyOnBuff=796,796;
_ACRelyOnBuff=1057,1057;
_ACRelyOnBuff=867,867;
_ACRelyOnBuff=3235,3235;
_ACRelyOnBuff=889,889;
_ACRelyOnBuff=4875,4875;
_ACRelyOnBuff=4724,4724;

_ACIsActive=889,True;
_ACIsActive=4724,True;
_ACIsActive=4875,True;

_ACRelyOnDP=4875,2000;

_ACManaPercentage=66;
_ACHealPercentage=50;

_ACInitialRange=15;

_ACBuffs=889,4724,4875,813,796,1057,867,3235;
_ACSkills=961,4722,795,871,825,1052,1026,1005,4723,1134;

;;;;;;;End Settings Ranger;;;;;;;
#ENDIF


#IF=%Var9,=1;
_ACExperimentalCooldown=True; --- Please wait...
#ENDIF

end_CombatSort;




start_TransformationPotions;

_SetVar=PotionsPerRound,1;

_IFInventoryContains=160040031,%Var[PotionsPerRound];
_ACItems=160040031/5061;
#ENDIF

_IFInventoryContains=160020030,%Var[PotionsPerRound];
_ACItems=160020030/5060;
#ENDIF

_IFInventoryContains=160040029,%Var[PotionsPerRound];
_ACItems=160040029/5059;
#ENDIF

_IFInventoryContains=160040028,%Var[PotionsPerRound];
_ACItems=160040028/5058;
#ENDIF

_IFInventoryContains=160040027,%Var[PotionsPerRound];
_ACItems=160040027/5057;
#ENDIF

_IFInventoryContains=160040026,%Var[PotionsPerRound];
_ACItems=160040026/5056;
#ENDIF

_IFInventoryContains=160040025,%Var[PotionsPerRound];
_ACItems=160040025/5055;
#ENDIF

_IFInventoryContains=160040024,%Var[PotionsPerRound];
_ACItems=160040024/5054;
#ENDIF

_IFInventoryContains=160040023,%Var[PotionsPerRound];
_ACItems=160040023/5053;
#ENDIF

_IFInventoryContains=160040022,%Var[PotionsPerRound];
_ACItems=160040022/5052;
#ENDIF

_IFInventoryContains=160040021,%Var[PotionsPerRound];
_ACItems=160040021/5051;
#ENDIF

_IFInventoryContains=160040020,%Var[PotionsPerRound];
_ACItems=160040020/5050;
#ENDIF

_IFInventoryContains=160040019,%Var[PotionsPerRound];
_ACItems=160040019/5049;
#ENDIF

_IFInventoryContains=160040018,%Var[PotionsPerRound];
_ACItems=160040018/5048;
#ENDIF

_IFInventoryContains=160040017,%Var[PotionsPerRound];
_ACItems=160040017/5047;
#ENDIF

_IFInventoryContains=160040016,%Var[PotionsPerRound];
_ACItems=160040016/5046;
#ENDIF

_IFInventoryContains=160040015,%Var[PotionsPerRound];
_ACItems=160040015/5045;
#ENDIF

_IFInventoryContains=160040014,%Var[PotionsPerRound];
_ACItems=160040014/5044;
#ENDIF

_IFInventoryContains=160040013,%Var[PotionsPerRound];
_ACItems=160040013/5043;
#ENDIF

_IFInventoryContains=160040012,%Var[PotionsPerRound];
_ACItems=160040012/5042;
#ENDIF

_IFInventoryContains=160040011,%Var[PotionsPerRound];
_ACItems=160040011/5041;
#ENDIF

_IFInventoryContains=160040010,%Var[PotionsPerRound];
_ACItems=160040010/5040;
#ENDIF

_IFInventoryContains=160040009,%Var[PotionsPerRound];
_ACItems=160040009/5039;
#ENDIF

_IFInventoryContains=160040008,%Var[PotionsPerRound];
_ACItems=160040008/5038;
#ENDIF

_IFInventoryContains=160040007,%Var[PotionsPerRound];
_ACItems=160040007/5037;
#ENDIF

_IFInventoryContains=160040006,%Var[PotionsPerRound];
_ACItems=160040006/5036;
#ENDIF

_IFInventoryContains=160040005,%Var[PotionsPerRound];
_ACItems=160040005/5035;
#ENDIF

_IFInventoryContains=160040004,%Var[PotionsPerRound];
_ACItems=160040004/5034;
#ENDIF

_IFInventoryContains=160040003,%Var[PotionsPerRound];
_ACItems=160040003/5033;
#ENDIF

_IFInventoryContains=160040002,%Var[PotionsPerRound];
_ACItems=160040002/5032;
#ENDIF

_IFInventoryContains=160040001,%Var[PotionsPerRound];
_ACItems=160040001/5031;
#ENDIF

_IFInventoryContains=160040000,%Var[PotionsPerRound];
_ACItems=160040000/5030;
#ENDIF

end_TransformationPotions;

start_HPPotions;

_SetVar=PotionsPerRound,2;

_IFInventoryContains=162005006,%Var[PotionsPerRound]; // If has 3 or more of this potion
_SetVar3=162005006; // set item ID as variable 3
#ENDIF

_IFInventoryContains=162005002,%Var[PotionsPerRound];
_SetVar3=162005002; // set item ID as variable 3
#ENDIF

//highest priority potions should be declared as late as possible

#EXECUTE=CombatSort; // call combatsort function so %Var3 gets applied at the _ACPotion line

end_HPPotions;

start_SetResolution; <-- resizes client without using real mouse

Console=\r_Height 600;
Console=\r_Width 800;

end_SetResolution;
I disabled the Anti-Stuck detections since the startpoint of your path seems to be further away than 7.5 meters from the endpoint

I also added a #Restart to the end of CheckDead, since you call it from many locations without thinking about what happens when it returns from the function
07/12/2019 00:45 agua2o#2305
Quote:
Originally Posted by Paraly View Post
Code:
#COMBAT ROUTINE VER 2.47
#IF=%FirstTime,;
RequireVersion=6.37;
UseSpeed=1;
#UseLoop
#EnableSpeech
#EnableChatLog
_SetVar3=162005006;
_SetVar4=1; //Wanna use NoAnimation while grinding?/n/nType 1 for yes or 0 for no
_SetVar7=0; //Enable selling when inventory is full?/n/nType 0 for no/nType 1 for selling at inventory/nType 2 for selling at merchant
_SetVar2=1; //Enable Anti-Stuck detection at the beginning of each round?/n/nType 1 for yes or 0 for no
_SetVar10=1; //Enable Transformation Potion usage?
_SetVar9=1; //Enable an improved cooldown detection?
_SetVar=Timeout,360; //Want to stop grinding after a certain amount of minutes?/n/nEnter the amount of minutes or 0 if you don't want any time limit
_SetVar=WhisperAnswer,0; //Enter your automatic reply text to whispers/n/nMake sure "T" is binded to "Reply to Whisper" at Aion/n/n(Recommended to paste "#EXECUTE=CheckWhisper" every few lines at your path)/n/nIf you don't want to reply to whispers enter 0
_Calc[TimeoutMS]=%Var[Timeout]*60000;
#AUTOSELLMARK

#SmoothBackground
Command=;
MemWrite=%AddrFreeMem4,%Var4,BYTE;
MemWrite=%AddrFreeMem2,%Var5,BYTE;
MemWrite=%AddrFreeMem6,0,BYTE;
#EXECUTE=CombatSort;
MemPtrWrite=%AddrFPS,%OffsetFPS1,30,BYTE; <-- these 2 lines cap the fps at 30
MemPtrWrite=%AddrFPS,%OffsetFPS2,30,FLOAT; <-- these 2 lines cap the fps at 30
#IF=%Var7,>0;
#SetArray2=Enter the ItemIDs the bot is allowed to sell/nExample: 182010036,182010037,182010038;
#ENDIF
#IF=%FirstTime,;
#EXECUTE=GetPetID;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;
#EXECUTE=DetectObelisk;
CreateTimer=9999998;
#ShowLog
MemWrite=%AddrFreeMem0,%Var[WhisperAnswer],CHAR[1];
_IFMemRead=%AddrFreeMem0,BYTE,>48;
#EXECUTE=InjectWhisperDetection;
#ENDIF


#EXECUTE=CheckDead;
#EXECUTE=CheckWhisper; // copy paste this line frequently after every few waypoints

#IF=%Var7,>0;
_MemPtrReadVar=%AddrMaxSlots,%OffsetMaxSlots,BYTE,6;
_Calc6=%Var6-5;
_IFMemPtrRead=%AddrSlots,%OffsetSlots,BYTE,>%Var6;
#EXECUTE=InventoryCheck;
#ENDIF

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
#ELSE
#IF=%Timer=9999998,43200000;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has grinded for more than 12 hours, longer periods of botting can be dangerous at europe.;
#ENDIF

#IF=%Var[Timeout],>0;
#IF=%Timer=9999998,%Var[TimeoutMS];
#EXECUTE=Stop;
_MemPtrReadVar=%PlayerBase,%OffsetName,WCHAR[64],25;
Speech=%Var25 has finished his grind session after %Var[Timeout] minutes.;
#UseNoLoop
#EndScript
#ENDIF


#IF=%FirstTime,;
_MemPtrReadVar=%PlayerBase,%OffsetPosX,FLOAT,StartPosX;
_MemPtrReadVar=%PlayerBase,%OffsetPosY,FLOAT,StartPosY;
_MemPtrReadVar=%PlayerBase,%OffsetPosZ,FLOAT,StartPosZ;
_Calc[StartPosX1]=%Var[StartPosX]-7.5;
_Calc[StartPosY1]=%Var[StartPosY]-7.5;
_Calc[StartPosZ1]=%Var[StartPosZ]-3;
_Calc[StartPosX2]=%Var[StartPosX]+7.5;
_Calc[StartPosY2]=%Var[StartPosY]+7.5;
_Calc[StartPosZ2]=%Var[StartPosZ]+3;
_Calc[ResetPosZ]=%Var[StartPosZ]+10;
#ELSE
#LogAddRound
FlySmooth=%Var[StartPosX],%Var[StartPosY],%Var[StartPosZ];
#ENDIF

#IF=%Var10,=1;
#EXECUTE=TransformationPotions;
#ENDIF
#EXECUTE=HPPotions;

_IFMemPtrRead=%PlayerBase,%OffsetPosX,FLOAT,%Var[StartPosX1]-%Var[StartPosX2];
_IFMemPtrRead=%PlayerBase,%OffsetPosY,FLOAT,%Var[StartPosY1]-%Var[StartPosY2];
_IFMemPtrRead=%PlayerBase,%OffsetPosZ,FLOAT,%Var[StartPosZ1]-%Var[StartPosZ2];
#ELSE
#IF=%Var2,=1;
#EXECUTE=Reset;
#ENDIF


#GRINDMARK


start_CheckDead;

_SetVar=Dead,0;

_IFFrameVisible=267;
_SetVar=Dead,1;
#ENDIF

_IFMemRead=%AddrResurrect,BYTE,<8;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetHP,DWORD,=0;
_SetVar=Dead,1;
#ENDIF

_IFMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=0;
_SetVar=Dead,1;
#ENDIF

#IF=%Var[Dead],=1;
#EXECUTE=SetResolution;
#LogAddDeath
#DO=20000;
MemWrite=%AddrResurrect,1,BYTE; <- Resurrect
Delay=500;
_UNTILMemPtrRead=%PlayerBase,%OffsetHP,DWORD,>0;
Delay=5000;
MemWrite=%AddrResurrect,8,BYTE; <- Reset Resurrect
#EXECUTE=FindSoulHealer;
Delay=1000;
#EXECUTE=Return;
#EXECUTE=CheckAutoLoot;
#Restart
#ENDIF

end_CheckDead;


start_Stop;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF
Delay=4500;

end_Stop;



start_Reset;

#EXECUTE=CheckDead;
#IF=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ELSE
#DO=1200000;
Delay=150;
#EXECUTE=CheckDead;
#UNTIL=%Timer=243,1200000;
SmartSkill=243,1200000,6500,False,False;
CreateTimer=243;
#ENDIF

Delay=4500;
#LogAddStuck
#EXECUTE=Return;

end_Reset;


start_DetectObelisk;

Command=/select Obelisk;
Command=/select Obélisque;
Command=/select Obelisco;
Delay=125;
_IFMemPtrRead=%TargetBase,%OffsetName,WCHAR[2],=Ob;
#EXECUTE=Return;
#ENDIF

end_DetectObelisk;


start_FindSoulHealer;

_IFMemRead=%AddrLangPack,CHAR[32],=L10N/ENU/;
_SetVar11=527; Soulhealer FrameID NA
#ELSE
_SetVar11=527; Soulhealer FrameID EU
#ENDIF


MemWrite=%AddrCamY,85,FLOAT;
#DO=7000;
SendKey=0x77;
Delay=35;
_UNTILMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
_IFMemPtrRead=%TargetBase,%OffsetData/0x1090,CHAR[10],=soulhealer;
#DO=15000;
Command=/attack;
Delay=1550;
DialogClick=NpcFunc128;
Delay=750;
_UNTILMemPtrRead=%AddrFrameID[%Var11],0x28,BYTE,=175;
FrameAction=%Var11,XPOS,0;
FrameAction=%Var11,YPOS,0;
Delay=550;
Mouse=160,95;
Delay=750;
_UNTILMemPtrRead=%PlayerBase,%OffsetPercentHP,BYTE,=100;
#ELSE
_ACReg=;
#ENDIF
SendKey=0x1B;
Delay=15;
SendKey=0x1B;
MemPtrWrite=%AddrFrameID[19],0x28,142,BYTE;
MemWrite=%AddrCamY,25,FLOAT;
#EXECUTE=CheckAutoLoot;
#EXECUTE=CheckAutoBuff;

end_FindSoulHealer;


start_CheckAutoLoot;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+748;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50045;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

_IFMemRead=%Var[CATempAddr],DWORD,=0;
_ACMob_Looting=True;
#ELSE
_ACMob_Looting=False;
#ENDIF

end_CheckAutoLoot;


start_CheckAutoBuff;

_IFMemRead=%AddrMinion,BYTE,=0;
_IFMemRead=%AddrPet,BYTE,=0;
#IF=%Var[PetAvailable],=1;
UseID=%Var[PetID],%Var[PetType];
Delay=250;
#ENDIF

MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]+696;

_IFMemRead=%Var[CATempAddr],DWORD,=0;
#DO=1000;
UseID=50044;
Delay=250;
_UNTILMemRead=%Var[CATempAddr],DWORD,=1;
#ENDIF

end_CheckAutoBuff;


start_GetPetID;

_SetVar=PetAvailable,0;

_IFMemRead=%AddrPet,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrPet,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,46;
#ENDIF

_IFMemRead=%AddrMinion,BYTE,>0;
_SetVar=PetAvailable,1;
MemWrite=%AddrFreeMem30,%AddrMinion,DWORD;
_MemReadVar=%AddrFreeMem30,DWORD,CATempAddr;
_Calc[CATempAddr]=%Var[CATempAddr]-4;
_MemReadVar=%Var[CATempAddr],DWORD,PetID;
_SetVar=PetType,86;
#ENDIF

end_GetPetID;



start_Return;

#RETURNMARK

end_Return;


start_CombatSort;


;;;;;;;;BASIC SETTINGS;;;;;;;;;;;

#IF=%Var4,=1;
_ACUseAnimation=True;
#ENDIF

#IF=%Var3,>0;
_ACPotion=%Var3,HP/MP,50,66;
#ENDIF

_ACRegenerateEnabled=True;
_ACRegMPPercentage=30;
_ACRegHPPercentage=35;
_ACTimeout=300000;
_ACMob_Looting=False;
_ACAllowAllMobs=True;
_ACResetPosition=False;
_ACIgnoreAtDistance=20;

;;;;;;;END BASIC SETTINGS;;;;;;;;



_IFMemPtrRead=%PlayerBase,%OffsetClassID,BYTE,=5;
;;;;;;;;;Settings Ranger;;;;;;;;; by widoxd02

_ACRelyOnBuff=813,813;
_ACRelyOnBuff=796,796;
_ACRelyOnBuff=1057,1057;
_ACRelyOnBuff=867,867;
_ACRelyOnBuff=3235,3235;
_ACRelyOnBuff=889,889;
_ACRelyOnBuff=4875,4875;
_ACRelyOnBuff=4724,4724;

_ACIsActive=889,True;
_ACIsActive=4724,True;
_ACIsActive=4875,True;

_ACRelyOnDP=4875,2000;

_ACManaPercentage=66;
_ACHealPercentage=50;

_ACInitialRange=15;

_ACBuffs=889,4724,4875,813,796,1057,867,3235;
_ACSkills=961,4722,795,871,825,1052,1026,1005,4723,1134;

;;;;;;;End Settings Ranger;;;;;;;
#ENDIF


#IF=%Var9,=1;
_ACExperimentalCooldown=True; --- Please wait...
#ENDIF

end_CombatSort;




start_TransformationPotions;

_SetVar=PotionsPerRound,1;

_IFInventoryContains=160040031,%Var[PotionsPerRound];
_ACItems=160040031/5061;
#ENDIF

_IFInventoryContains=160020030,%Var[PotionsPerRound];
_ACItems=160020030/5060;
#ENDIF

_IFInventoryContains=160040029,%Var[PotionsPerRound];
_ACItems=160040029/5059;
#ENDIF

_IFInventoryContains=160040028,%Var[PotionsPerRound];
_ACItems=160040028/5058;
#ENDIF

_IFInventoryContains=160040027,%Var[PotionsPerRound];
_ACItems=160040027/5057;
#ENDIF

_IFInventoryContains=160040026,%Var[PotionsPerRound];
_ACItems=160040026/5056;
#ENDIF

_IFInventoryContains=160040025,%Var[PotionsPerRound];
_ACItems=160040025/5055;
#ENDIF

_IFInventoryContains=160040024,%Var[PotionsPerRound];
_ACItems=160040024/5054;
#ENDIF

_IFInventoryContains=160040023,%Var[PotionsPerRound];
_ACItems=160040023/5053;
#ENDIF

_IFInventoryContains=160040022,%Var[PotionsPerRound];
_ACItems=160040022/5052;
#ENDIF

_IFInventoryContains=160040021,%Var[PotionsPerRound];
_ACItems=160040021/5051;
#ENDIF

_IFInventoryContains=160040020,%Var[PotionsPerRound];
_ACItems=160040020/5050;
#ENDIF

_IFInventoryContains=160040019,%Var[PotionsPerRound];
_ACItems=160040019/5049;
#ENDIF

_IFInventoryContains=160040018,%Var[PotionsPerRound];
_ACItems=160040018/5048;
#ENDIF

_IFInventoryContains=160040017,%Var[PotionsPerRound];
_ACItems=160040017/5047;
#ENDIF

_IFInventoryContains=160040016,%Var[PotionsPerRound];
_ACItems=160040016/5046;
#ENDIF

_IFInventoryContains=160040015,%Var[PotionsPerRound];
_ACItems=160040015/5045;
#ENDIF

_IFInventoryContains=160040014,%Var[PotionsPerRound];
_ACItems=160040014/5044;
#ENDIF

_IFInventoryContains=160040013,%Var[PotionsPerRound];
_ACItems=160040013/5043;
#ENDIF

_IFInventoryContains=160040012,%Var[PotionsPerRound];
_ACItems=160040012/5042;
#ENDIF

_IFInventoryContains=160040011,%Var[PotionsPerRound];
_ACItems=160040011/5041;
#ENDIF

_IFInventoryContains=160040010,%Var[PotionsPerRound];
_ACItems=160040010/5040;
#ENDIF

_IFInventoryContains=160040009,%Var[PotionsPerRound];
_ACItems=160040009/5039;
#ENDIF

_IFInventoryContains=160040008,%Var[PotionsPerRound];
_ACItems=160040008/5038;
#ENDIF

_IFInventoryContains=160040007,%Var[PotionsPerRound];
_ACItems=160040007/5037;
#ENDIF

_IFInventoryContains=160040006,%Var[PotionsPerRound];
_ACItems=160040006/5036;
#ENDIF

_IFInventoryContains=160040005,%Var[PotionsPerRound];
_ACItems=160040005/5035;
#ENDIF

_IFInventoryContains=160040004,%Var[PotionsPerRound];
_ACItems=160040004/5034;
#ENDIF

_IFInventoryContains=160040003,%Var[PotionsPerRound];
_ACItems=160040003/5033;
#ENDIF

_IFInventoryContains=160040002,%Var[PotionsPerRound];
_ACItems=160040002/5032;
#ENDIF

_IFInventoryContains=160040001,%Var[PotionsPerRound];
_ACItems=160040001/5031;
#ENDIF

_IFInventoryContains=160040000,%Var[PotionsPerRound];
_ACItems=160040000/5030;
#ENDIF

end_TransformationPotions;

start_HPPotions;

_SetVar=PotionsPerRound,2;

_IFInventoryContains=162005006,%Var[PotionsPerRound]; // If has 3 or more of this potion
_SetVar3=162005006; // set item ID as variable 3
#ENDIF

_IFInventoryContains=162005002,%Var[PotionsPerRound];
_SetVar3=162005002; // set item ID as variable 3
#ENDIF

//highest priority potions should be declared as late as possible

#EXECUTE=CombatSort; // call combatsort function so %Var3 gets applied at the _ACPotion line

end_HPPotions;

start_SetResolution; <-- resizes client without using real mouse

Console=\r_Height 600;
Console=\r_Width 800;

end_SetResolution;
I disabled the Anti-Stuck detections since the startpoint of your path seems to be further away than 7.5 meters from the endpoint

I also added a #Restart to the end of CheckDead, since you call it from many locations without thinking about what happens when it returns from the function
Damn me! I can just rework the Grind Path. No need to disable the anti stuck detections.

I'll keep the #Restart and rework the path. I'm bothering you so much with this lol. :S


Edit:
Just passing by to say that the bot is rocking! No flaws so far. Oh boy, kinah land! =)
07/19/2019 02:00 agua2o#2306
So here I am again. I have noticed that the bot doesn't use Remove Shock. I found a code in the Short Script Bundle but if I just add it to the code it goes into a neverending loop and it doesn't continue the script.

Where should I put the code?

Code:
#IF=%FirstTime,;
UseSpeed=1;
MemWrite=%AddrFreeMem10,0,BYTE;
#ENDIF
#DO=9999999999;
_AutoChain
_IFKey=77,1;
MemWrite=%AddrFreeMem10,1,BYTE;
#ENDIF
_UNTILMemRead=%AddrFreeMem10,BYTE,=1;
07/19/2019 02:03 Paraly#2307
Quote:
Originally Posted by agua2o View Post
So here I am again. I have noticed that the bot doesn't use Remove Shock. I found a code in the Short Script Bundle but if I just add it to the code it goes into a neverending loop and it doesn't continue the script.

Where should I put the code?

Code:
#IF=%FirstTime,;
UseSpeed=1;
MemWrite=%AddrFreeMem10,0,BYTE;
#ENDIF
#DO=9999999999;
_AutoChain
_IFKey=77,1;
MemWrite=%AddrFreeMem10,1,BYTE;
#ENDIF
_UNTILMemRead=%AddrFreeMem10,BYTE,=1;
You can't add _AutoChain to the _AC combat system, the _AC combat system already tries to use any chain / situational skill that's available.
07/19/2019 02:10 agua2o#2308
Quote:
Originally Posted by Paraly View Post
You can't add _AutoChain to the _AC combat system, the _AC combat system already tries to use any chain / situational skill that's available.
What about Remove Shock?
07/19/2019 02:12 Paraly#2309
Quote:
Originally Posted by agua2o View Post
What about Remove Shock?
that's a situational skill
07/19/2019 02:17 agua2o#2310
Quote:
Originally Posted by Paraly View Post
that's a situational skill
Well, it's not using it :S ever.

Found it in the _skillsNA file:

Code:
[283]
Skill_ID=283
Skill_Name=ALL_ShockReflect_G
Skill_Level=1
Skill_Cooldown=30000
Skill_ChainLevel=1
Skill_Class=BARD
Skill_PCLevel=40
That Class=BARD thing is supposed to be there?