Moderator: MacroQuest Developers



HiSinging_Fool_29 wrote:As my first post here, hello everyone.
Thanks for not coming in here completely cluelessSinging_Fool_29 wrote:I've been reading the MQ2 messageboard for about a week looking also at the manual and the WIKI, as well as studying how commands work and also the best methods of macro non-detection.
The short answer is, the best form of non-detection is to not macro at all. The long answer is, the things that you find on these boards won't get you banned out-of-the-box unless you're a retard of massive proportions.Singing_Fool_29 wrote:The ideas of what to do and what not to do seem to be scattered all over the board. If I missed a specific thread or manual addition, then I apologize. If such a thing did not exist would it be entirely possible to add that?
Not necessary. Your anchor point will_never_be_exactly_at_the_same_point_when_you_return_to_it. You just can't get a degree of precision that fine out of the EQ client, and hence MQ2. The best you can do is get within X distance of your "leash" point, and then stop. In my AutoBot macro, it won't run back to the stake unless you're outside of your LeashLength value, and then it will only run to the stake until it is inside your LeashLength, at which point it will sit to med or just stop.Singing_Fool_29 wrote:My ideas for macro building center entirely around authentic keypressing. I would like to do the following with my code:
1)Build macros that randomize anchor points and return points.
The standard /face command turns you slowly to face your target. Once again, the EQ client isn't precise enough to EVER get you to face the mob perfectly every time, from the server's point of view. So once again, there's no need to make a bunch of code centered around making facing look more "human". Plus, anyone who uses their mouse to look can turn just as fast to face mobs as the /face fast command. In fact, I'm surprised anyone uses the keyboard to handle turning anymore. Also, LineOfSight has absolutely NOTHING to do with whether or not you're facing the mob, so your example won't work. LineOfSight ONLY returns FALSE if there is some obstruction preventing you from casting on the mob, like walls, ceilings, etc.Singing_Fool_29 wrote:2)Characters that instead of facing fast use the standard EQ turn keys until they have line of sight, and then checking if they are too far away. Something like:
/if (!LineOfSight[me.x, me.y, me.z : target.x, target.y, target.z]){
/keypress left
}
/if ((LineOfSight[me.x, me.y, me.z : target.x, target.y, target.z]) && (TargetFar == "true")){
/keypress forward
}
** this way the character only turns or moves during combat if it's flagged "cannot see target" or "too far away". It's a little generic but a rough idea of what I was thinking of.
fizzle: spell_routines.incSinging_Fool_29 wrote:3)Characters that only respond to local events such as fizzle, enrage, target too far away, etc. I don't want to depend on commands or stuff that has to be given from myself ingame. I'd like to automate my characters as much as possible within means of non-detection.
If you don't want to get caught, don't use blatant hacks. 90% of what you get from the standard MQ package is all but undetectable to SOE, and 90% of the bullshit you hear on other forums of SOE "cracking down" on MQ2 users is exactly that, bullshit. The people getting busted are fucking retards who use things like warp, zone, and other active hacks that you can't even get from the standard MQ package. Not only that, but they use them irresponsibly. MQ in the hands of an idiot will get accounts banned. MQ in the hands of someone with an IQ higher than that of a Tomato is prefectly safe.Singing_Fool_29 wrote:In asking for help I am really just trying to get some input from seasoned users into whats acceptable and what commands are really high risk of being caught. Also what kind of ingame behavior is a risk of getting caught(not trivial stuff, just things new people would be unaware of, like the /report issue). If at all possible for me to just emulate socials and do all of my work off of natural client recieved information, then so be it.

What I'm looking for is that 10%. I know that MQ looks into the memoryblock of EQ to figure out ServerToClient information. I know AFK macroing is bad. I know that a GM summoning an anchored character can be bad without precautions and that you shouldn't be sitting when using /face. Those things are pretty common sense, but some things don't seem to be. Stuff like MQ commands leaked into the EQ chat reply to the server seems like something that should be covered in the manual.If you don't want to get caught, don't use blatant hacks. 90% of what you get from the standard MQ package is all but undetectable to SOE, and 90% of the bullshit you hear on other forums of SOE "cracking down" on MQ2 users is exactly that, bullshit.
for melee movement, check out moveutils plugin, its in vip section nowadays.Singing_Fool_29 wrote:To be more specific, I 6-box. I'd like to automate the actions of my casters and tanks, while I control and pull with my enchanter.
For the moment I would like to focus my energy on the melee bot(s) and what routines would need to be constantly checked. I would like to construct it entirely around true and false statements which determine subroutine actions.
Code: Select all
/if (AUTO_ATTACK_MOBS && ${Me.Class.Name.Equal[Warrior]}) {
/varset SpawnId ${Spawn[npc radius 40].ID}
/i msg IRC_CHANNEL ##### MOB HERE !!!! AUTOATTACKING
/i msg IRC_CHANNEL ASSIST ${Zone.ID} ${SpawnId}
/call HandleAssistCall ${SpawnId}
}
Code: Select all
|Usage: Leader character use hotkey: /i msg #channel ASSIST ${Zone.ID} ${Spawn.ID}
#event HANDLE_ASSIST "<#1#> ASSIST #2# #3#"
Sub Event_HANDLE_ASSIST(string Line, string Sender, int ZoneId, int SpawnId)
/if (!${Ini[INI_FILE, BotNet, ${Sender}, NOT_FOUND]}) {
/i msg IRC_CHANNEL # IGNORING REQUEST!
/return
}
/if (${Zone.ID} == ${ZoneId}) {
/call HandleAssistCall ${SpawnId}
}
/returnCode: Select all
Sub HandleAssistCall(int SpawnId)
/if (${Me.Sitting}) {
|standing up on inc
/delay ${Math.Calc[${Math.Rand[10]}+1]}
/if (${Me.Sitting}) /stand
}
/if (${Me.Class.Name.Equal[Druid]}) {
/call HandleAssistCallDruid ${SpawnId}
/return
}
/if (${Me.Class.Name.Equal[Cleric]}) {
/call HandleAssistCallCleric ${SpawnId}
/return
}
|add more classes here..
/return
A_Druid_00 wrote:Technically you don't need a global string variable. A variable already exists that calculates your Heading To a target. So you check your headingto the target, and if you're not +/-XX degrees, then turn towards it.

use the code as u want, just posting to give you some hints on how you _could_ do this
i'm sorry i missed some of the whole relevant code, here it is:Singing_Fool_29 wrote:Thanks!
I really like it but I'm wondering where the activation comes into play. Do you have to set another if statement if it finds a spawnID within the specified radius?
Code: Select all
/if (${Spawn[npc radius 40].ID} && ${Spawn[npc radius 40].LineOfSight}) {
/call CheckNeutralZone
/if (!${Macro.Return}) {
/if (AUTO_ATTACK_MOBS && ${Me.Class.Name.Equal[Warrior]}) {
/varset SpawnId ${Spawn[npc radius 40].ID}
/i msg IRC_CHANNEL ##### MOB HERE !!!! AUTOATTACKING
/i msg IRC_CHANNEL ASSIST ${Zone.ID} ${SpawnId}
/call HandleAssistCall ${SpawnId}
}
}
}
