Jump to content

ScripterQQ

Members
  • Posts

    484
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

ScripterQQ's Achievements

  1. Sorry for bump, but recently a HUGE banwave about scripters happened. (W4rmane Server, specifically Icecr0wn) I can't change my ip and try with a trash account right now, can someone tell me if this version is now detected too? Thanks!
  2. I solved it, the command is "return true". The rustiness is real...:(
  3. I recently started to make rotations again, and needless to say I'm very rusty. I still remember some good tricks, but I fail at basic stuff. Basically I am using the "rotation we all know", It's divided in different pages on the left (Abilities), and I remember I managed to add a line to stop the rotation (like when im drinking, or having a particular debuff and so on). Example: Ability 1: if UnitBuff("player","Drink") then --code to stop rotation and go back to top of the page, kinda like a while 1=1 end Ability 2 print("Hello World") The idea was not reading the second page/ability because the rotation was stuck in the Ability 1 loop. I can't recall exactly how I managed to do that but I clearly remember it was very basic. The best example is Sindragosa ICC, I registered all 4 different scenarios (10, 10HC, 25, 25HC) and set a "stop healing" command based on the Instability Debuff stacks (lets say >=5 for 10, >=2 for 10HC, >=5 for 25, >=1 or 2 for 25HC) The fact is can't really remember how did I do that, for sure it wasn't a while 1=1, because that stuff immediately starts not responding and forces me to ALT+F4. There is the "return" command, it returns correctly to the top of the page of the ability without executing the code below, but it keeps doing the other abilities that come after in the rotation, the other pages to make it simple. So yeah I really don't remember how did I do that, and I lost all rotations (thats why Im writing them again) Any help, tip?
  4. Oh okay no problem. I will do the string.match, I just wanted to make the code more compact and easier, but I guess I have no choice! Thanks for the help as always @Matenia ?
  5. I was thinking, instead of writing something like if UnitBuff("player","Seal of Light") or UnitBuff("player","Seal of Wisdom") and so on.. Is it possible to do something like if UnitBuff("player","Seal of"*) ? I did some google search and the "." is used to match any character (like when comparing some strings), but I don't see it working with string concatenation For example, in my case I should write something like if UnitBuff("player","Seal of"...) because ".." separates text from variables, and "." should be the "any character", but clearly this isn't the right way to do what I want to do. Any idea? Thanks!
  6. @MateniaYeah the fact is I had that API page in my bookmarks since years and I always used it, I never thought it was so outdated since I never encountered any problems, again I apologize... kind feel stupid relying on a TBC page while experts here are telling me some LUA basics... /facepalm
  7. UPDATE: I just tried the command and I am still confused because 1) It actually shows the duration 10/5/2.5, not always 10 as I was insisting, so I messed up there somehow 2) That being said, I was expecting to not get any duration result if the debuff was NOT casted by me, so I logged a 3rd char and used the command to see the duration of the poly casted from my mage towards my paladin, and well, it was still saying the duration, despite the debuff being NOT applied by me (I was on Priest, and not even in a group with them) So first of all I apologize for the confusion, second, the LUA API is not updated, or the server I am playihng is bugging, or again, I miss some brain cells lol. anyway for those who wants to try it this is the command I used /run local _, _, _, _, _, duration, expires = UnitDebuff("target","Polymorph") print("Duration: "..duration.." Expires: "..expires-GetTime()) I will do further tests, im not sure if it will give the duration if the poly is casted by arena1/2/3 EDIT: Tried in duel zone, apparently it works, need to test it in Arena, but its very weird, I mean the API clearly says it should return "nil" if not casted by me, so idk..Maybe I miss something..Sorry again for the confusion (and not my intention to sound arrogant or c*cky I was just trying to understand) This is the full test script: --test if UnitDebuff("player","Polymorph") then local _, _, _, _, _, duration, expires = UnitDebuff("player","Polymorph") if expires-GetTime() <= duration - 2 then print("2 seconds has passed since the debuff") end end
  8. Duration is always a fixed number (dont recall if 10 seconds for pvp, or 2min for pve), it doesnt change based on DR Thats the first thing I tested and I clearly remembered that it was always showing the "ideal duration", despite the debuff being full, dr, or even immune. Thats why its written "full duration" But even in the case I am completely wrong and I have a bad memory (I dont have time now to test the command again), it clearly says "nil if the debuff was NOT cast by the player", means that if arena1/2/3 cast Polymoprh, "duration" will always return nil. So again, the only information I can gather from that is the expiration time. Other stuff must be grabbed from the combat log. EDIT: Strikethrough because it was not correct, see posts below.
  9. Wait sorry Im doing confusion again. The LUA Api of UnitDebuff doesn't provide itself when the debuff has been applied, it only gives duration "10" which is the static default duration of the debuff (Polymorph, no matter if Full or DR), and expiration, which (combined to GetTime()) gives the remaining seconds when the debuff has been applied. So basically I have a static 10 seconds that tells me that the Poly is supposed to last max 10 seconds. This duration doesnt tell me where or when or how, its just a static number, kinda like a SpellID. This 10 will NEVER change. And then a value that changes which is the expiration, it can be 10 if full, 5 if first DR and so on. I dont see any connection with the starting time, the UnitDebuff just tells me "The poly should last 10 seconds. but in this moment, it lasts 5 seconds", or "The poly should last 10 seconds. but in this moment, it lasts 2.5 seconds". As already said, the 10 doesnt change, only the "expiration" changes. Again, unless I track the combat log and grab the start duration from there, the time where the target actually got the debuff, I cant understand your last message. Maybe time to go to school or something... EDIT: Strikethrough because it was not correct, see posts below.
  10. I dont get this code. Where is supposed to be located the starting duration of the debuff applied by arena1/2/3 (example: Polymorph) As far as I know, the only way is listening to combat log events and grab the start duration from there. And then eventually do the maths. EDIT: Strikethrough because it was not correct, see posts below.
  11. I just figured out why it doesnt work my way: doing if expiration < 8 a normal poly would be dispelled with a 2 seconds delay doing if expiration <= expiration - GetTime() - 2 won't work, because its like writing if 5 <= 3 so thats why it doesnt dispel...Simple maths.. Sometimes I trip over banal things and I think this is one of them. You are correct the only way is getting the start duration and substract the expiration! Later I do some tests
  12. Yes it changes, but why do you think it matters exactly? Look: if X = X - 2 I don't care if X (expiration - GetTime()) changes, because the offset (-2) doesnt change if 10 = 10-2 the result witll be 8 if 25 = 25-2 the result witll be 23 This is what I had in my head. I had to read the combat log to get the time applied, there is no other way as far as I know, not with LUA at least. EDIT: Strikethrough because it was not correct, see posts below.
  13. @Matenia No lua error, the condition is never met. GetTime() changes, that's why instead of putting a number like if expiration - GetTime() <= 6 I want a number that can change so if expiration - GetTime() <= expiration - GetTime() - 2 Should do the trick? As already said, I don't think I'm mixing apples with bananas, in fact if I just ignore the rotation, and apply a debuff on myself, and then print a expiration - GetTime() - 2 I get the exact second remaining of that Debuff, but with -2 offset: expiration - GetTime() would print out 9.9, but since I added a -2, it prints out 7.9 correctly So the syntax is correct, but the rotation program somehow doesn't recognize the if statement if put like that. I can compare expiration - GetTime() only to a number of seconds, not to "itself modified" I already tried to set a variable like local duration = expiration - GetTime() and then if expiration - GetTime() <= duration -2 still doesn't work, I can't understand. I know for sure that expiration - GetTime() will give out a number, so why adding or removing a certain amount of seconds won't make trigger the if statement, but siomehow the print function works? I will check about the start time, but Im afraid I need to use a Frame and register combat log events? That would be annoying. @TheSmokie No the program is fine and I run it at 1000ms delay, no spells are skipped the rotation is flawless I just wanted to make it more human and less bottish ?
  14. Hello, it's been a while since I don't post here. But I'm kinda back, so I'm working again on some profiles. One is at a good point, but the rotation program (you know the name I dont need to write it so it appears on google and stuff), is too fast, even if I put max delay, I want to set my "reaction" in a more human way and less suspicious. So let's assume someone in Arena/BG gets a Polymorph, I can dispel it, but that can be istant if I'm not on GCD, or max 1sec delay. Either way it raises some suspects if someone keeps watching me. So I was thinking about dispel only after X seconds of the debuff and there is LUA: local _,_,_,_,_,_,expiration = UnitDebuff("target","Polymorph") First 6 arguments are -useless- so I'll use the 7th (expiration) becasue I need that one specifically. By using a simple /run local _,_,_,_,_,_,expiration = UnitDebuff("target","Polymorph"); print(expiration-GetTime()) you get in your chat the exact amount of seconds remaining before the debuff disappears. So my first attempt to automatize the dispel was just if expiration - GetTime() <= 8 then CastSpellByName("Dispel Magic-Cleanse-Whatever","target") end and after 2 seconds of 10 seconds Polymorph it correctly dispels the target, simulating a human delay. But what if the Poly is in DR? The duration is now 5 seconds not 10, so the script will trigger istantly because 5 is <= 8, thus it doesn't wait those 2 seconds. Ok, easy I thought: if expiration - GetTime() < expiration - GetTime() - 2 then CastSpellByName("Dispel Magic-Cleanse-Whatever","target") end In this way, the Polymorph in DR lasting 5 seconds should be dispelled at 3, exactly after 2 seconds. Guess what? It doesn't work. But if I do a print(expiration-GetTime()-2) or any other number, the seconds are correctly delayed so it's not a syntax problem, expiration is a number, GetTime is a number and 2 is a number. Im not mixing banans with apples. Why when using the " if " statement I can't substract seconds and the script doesn't work, but the print command can add and substract numbers to GetTime()? What am I missing? Greetings, have a nice day!
  15. Regarding Garrote/Cheap Shot/Ambush whatever needs to be to do in Stealth, the Bot as far as I know, is designed basically to spam right click on the mouse to engage combat, so it may happen that you miss the opening and get out of stealth. This is not a problem of the fight class, it's just the Bot behaviour. Maybe in future updates this will be fixed.
×
×
  • Create New...