|
You last visited: Today at 07:19
Advertisement
Para's Script Library
Discussion on Para's Script Library within the Aion forum part of the MMORPGs category.
|
View Poll Results: You want the scripts for any client language?
|
|
Yes, surely!
|
  
|
273 |
37.14% |
|
No, english and german are enough for me.
|
  
|
462 |
62.86% |
07/10/2019, 21:51
|
#2296
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
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
|
#2297
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
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
|
#2298
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
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
|
#2299
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
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 @  !
What does the number after the / means in this line?
_ACItems=160040031/ 5061;
|
|
|
07/11/2019, 01:25
|
#2300
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
OK. Thanks for the help!
Hey @  !
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
|
#2301
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
That's the buff ID, you get buff IDs by checking "Show IDs" at the Script Editor and hovering above the buff ingame
|
Oh ****. I need to use the potion to see the buff ID. Gotcha.
|
|
|
07/11/2019, 04:14
|
#2302
|
elite*gold: 0
Join Date: Jul 2016
Posts: 86
Received Thanks: 5
|
never mind
|
|
|
07/11/2019, 22:40
|
#2303
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
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
|
#2304
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
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
|
#2305
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
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
|
#2306
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
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
|
#2307
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
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
|
#2308
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
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
|
#2309
|
elite*gold: 27
Join Date: Sep 2009
Posts: 5,609
Received Thanks: 1,596
|
Quote:
Originally Posted by agua2o
What about Remove Shock?
|
that's a situational skill
|
|
|
07/19/2019, 02:17
|
#2310
|
elite*gold: 0
Join Date: Jun 2008
Posts: 50
Received Thanks: 3
|
Quote:
Originally Posted by Paraly
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?
|
|
|
Similar Threads
|
Script para todos os Lastchaos - Autohokey
01/29/2012 - Last Chaos - 1 Replies
I got a script that clicks several times with the click right mouse clicks when monster picks up the tarjeta. so he just throws the skill.
I used AutoHotkey program. in AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText
Needs improvement.
I accept any help.
I'm from Brazil.
------------------------------------------------- --------------------------
|
[Release]Big Script Library
07/25/2010 - SRO PServer Guides & Releases - 0 Replies
I think its a good idea to open this Topic.
I need Your Help.
Sent me your own made Scripts and i upload them here.
It does not matter if there is already a script by the mob.
Only Self made scripts!!!
What To Post?
Post me not the text file.Post me the script!!!
Scorpion 1 by Th3Stalker
|
All times are GMT +1. The time now is 07:20.
|
|