Page 1 of 2
1
2
LastLast
  1. #1

    Razer's "Turbo" mode & other Similar Software

    Anyone that's actively using them? Talking about Razer's Turbo, AutoHotkey, Icue etc. I'm not talking about macros that let you perform multiple actions with one key-press etc. talking about alternatives to button mashing, where you hold down "2" for example and it can keep casting that Frostbolt for as long as you keep said button pressed. Getting old and I was thinking of starting to use the Razer one as my fingers can already feel the pain after a 3 hour raid, but I'm a bit paranoid as I've heard Blizzard banning for less over the years.

  2. #2
    I am Murloc! WskyDK's Avatar
    10+ Year Old Account
    Join Date
    Oct 2010
    Location
    20 Miles to Texas, 25 to Hell
    Posts
    5,802
    Blizzard will ban you for automation if they catch you using that stuff.
    Quote Originally Posted by Vaerys View Post
    Gaze upon the field in which I grow my fucks, and see that it is barren.

  3. #3
    You're probably fine if you dont set it to super fast.

  4. #4
    The Lightbringer GKLeatherCraft's Avatar
    10+ Year Old Account
    Join Date
    Jul 2009
    Location
    England
    Posts
    3,835
    Quote Originally Posted by fatgunn View Post
    You're probably fine if you dont set it to super fast.
    I don't think speed has anything to do with it, I think it's more if they detect keypresses at exact intervals over a period of time they know it's automated, I wouldn't suggest it OP. Also though I've played with a lot of people over the years and hear them just spamming their mouse/keybinds and seem to forget there's a global cooldown on most skills, so you don't have to mash buttons to time it right

  5. #5
    Quote Originally Posted by fatgunn View Post
    You're probably fine if you dont set it to super fast.
    I think razer's is like 1 to 20 presses per second. Not sure how many I should put.
    Quote Originally Posted by GKLeatherCraft View Post
    I don't think speed has anything to do with it, I think it's more if they detect keypresses at exact intervals over a period of time they know it's automated, I wouldn't suggest it OP. Also though I've played with a lot of people over the years and hear them just spamming their mouse/keybinds and seem to forget there's a global cooldown on most skills, so you don't have to mash buttons to time it right
    Yeah, that is what I'm scared of, since it's all very exact, but at this point my tendon isn't getting any better, it's a chronic thing, so sooner than later I'm going to be 'forced' to use it.
    Last edited by Santas; 2021-03-01 at 05:13 PM.

  6. #6
    I honestly think WoW should have an option where a spell just repeat casts if you hold the button down.

    Have they never heard of RSI?

  7. #7
    The Lightbringer GKLeatherCraft's Avatar
    10+ Year Old Account
    Join Date
    Jul 2009
    Location
    England
    Posts
    3,835
    Quote Originally Posted by Santas View Post
    Yeah, that is what I'm scared of, since it's all very exact, but at this point my tendon isn't getting any better, it's a chronic thing, so sooner than later I'm going to be 'forced' to use it.
    Ah that sucks, I hope you find a legit workaround that doesn't get you banned then!

  8. #8
    Quote Originally Posted by Blackmist View Post
    I honestly think WoW should have an option where a spell just repeat casts if you hold the button down.

    Have they never heard of RSI?
    That would be amazing and let's face it, injury (my case) or not.. the demographic isn't getting any younger. This should be a thing.

  9. #9
    Dunno about razer but corsair macros have option to add random interval and toggle/push/once keys. Logitech got lua macros.
    Ship has been abandoned.
    ---

    NextUI for XIV


  10. #10
    Blizzard has no intention of banning players who have a rapid-fire ability that allows you to hold a button down instead of pressing it over and over really fast.

    What Blizzard does want to prevent is people using software to play the game for them. So if you were to, for example, use an auto-firing ability to keep from being flagged as AFK, or to spam an ability to kill mobs unattended, this would be a problem.

    Similarly, if you were using more complex automation to string together multiple button presses to have get an unreasonable advantage, this would be against the spirit of the rules. So maybe you have a difficult rotation that you can somehow work into a macro so that there is a wide margin in performance between players who try to play it the intended way and players whos keyboard or mouse plays it for them. However, there are few situations where this is actually reasonable with the software that you're talking about, as it would have to be able to react to events in the game to do well.

    Their official rule is one hardware action per in game action. So one click per button press. However, you can also look at something like spinning a scroll wheel, this is one physical action for a bunch of hardware events, and nobody really will think that is a bannable offense. Something like rapid fire is in a similar grey area. You're pressing the button, it's sending a bunch of button press signals, but it's always the same. But this process doesn't allow you to do anything special. With the way that spell queueing works, there's no actual advantage in game that you can get over someone who spams the button if those rapid fire keys are only pressing one button. You have quite a long window where an action will be queued, as well as a factor of latency generally, that there's no advantage to a healthy person pressing a key fast.

    So if you were to have a button press an action button 6-7 times a second, that's nothing that a healthy person can't do.

    On the other hand, if you're using a complex script to press a button and make a bunch of decisions or try to use an ability and if it fails, try and use the next one, etc. then that is something that takes away decision making from the player and is against the spirit of the rules.

    Then there is what Blizzard can ban you for. Again, what Blizzard wants to ban is things that are ruining the game for other players, this is going to be bots, and exploiters. If there's an action in arena for instance that can only be accomplished by a hardware macro that leads to an unavoidable death, then this is going to be looked at. If there's automated economic activity, this is going to be looked at. These are kind of hard to determine, but there's different ways that they might detect it. It's possible that in looking to stop certain negative behaviors your turbo hardware is discovered and you get in trouble too, because you're still technically breaking the rules.

    However, the chances of that are super unlikely. For instance, they could potentially look and see if inputs are too regular, like if you are constantly sending button presses 200ms apart, chances are this is hardware assisted. However, for a botter, this is trivially easy to avoid. They would only catch people using rapid fire hardware and not actually botters, because botters would be intentionally evading detection and would randomize time between events. If they were looking for botters for instance, chances are better that they look at things like behavioral trends, login locations, number of herbs gathered, number of hours online, behavior at the AH, etc. You're more likely to catch a botter if you look for someone who logs on and does nothing but herb the same path for 16 hours a day than someone whose inputs are too regular.

    So short answer, it's against the rules. But it's not against the rules because they're particularly against that, it's against the rules because the rules are broad to catch automation that is damaging to the game. It's possible, though highly unlikely that you can get in trouble for using rapid fire to click the same button over while a button is held. It gives no in-game advantage over just pressing a button over and over. If you, however, start to make more complex macros, you're breaking the spirit of the rules. Chances are you won't get caught unless it's particularly exploitative because that kind of thing is really hard to discover. If you start doing things that give you an advantage over others, then it's against the spirit of the rules as well as something that is actively sought out and punished.

    I've used rapid fire for years to avoid RSI problems. It has never been an issue, nor has it given me a significant advantage except for avoiding physical injury. I've never heard of someone ever being banned for rapid fire of a single key. It is technically against the rules. If I get banned, I guess it saves me a bit of money and a lot of time. I wouldn't want to support a company that will punish me for choosing to avoid injury.

    However at the same time, I would avoid using software which can be used to do complex automation. One method of detecting bad behavior can be looking at what software you're running. If you're using the same tools as botters, you're more likely to get swept up. On the other hand, if you're using your regular mouse software or firmware, they're not going to ban for that being installed and running. Again, then just look at your behavior. Are you trying to automate gameplay? And finally, it's still against the rules, so you can get in trouble or be banned. There's just no reason they would want to, you're paying them and not hurting other players. They struggle enough to ban the accounts that are hurting other players.

  11. #11
    Quote Originally Posted by GKLeatherCraft View Post
    I don't think speed has anything to do with it, I think it's more if they detect keypresses at exact intervals over a period of time they know it's automated, I wouldn't suggest it OP. Also though I've played with a lot of people over the years and hear them just spamming their mouse/keybinds and seem to forget there's a global cooldown on most skills, so you don't have to mash buttons to time it right
    Big part of their method for catching cheaters is Warden, spyware that reads background processes for programs that are on their black list.

  12. #12
    Warchief Freedom's Avatar
    10+ Year Old Account
    Join Date
    Oct 2009
    Location
    Texas, USA
    Posts
    2,157
    I used to be paranoid about such things, but eventually gave in and started using autoclick things. When crafting was still a viable way of making gold back in MoP, and I did the ink stuff for inscription and shuffling for jewelcrafting, I used to have a special Microsoft mouse with programmable buttons that would click once a second, so I could prospect/mill while doing something else afk and I never got banned for using it. If I were playing now and got banned over such a thing, I'd just quit playing. I don't have the inclination to sit there and spam a macro button over and over to do something that by rights should have been/should be a simple one click in the in-game interface to chain prospect/mill.
    Quote Originally Posted by Scrod View Post
    Ok, I give up. This is pointless.
    Many Multitudes Online Constantly Harping About Minor Problems
    FIRE GIVES ME BIGGER BLOOD SHIELDS

  13. #13
    Thank you all for your replies, especially @zeidrich -- I think I'll just go ahead and use the rapid fire and hope nothing happens, I'll let you know if it does lol. I hear it is quite difficult to defend a case after you get banned (and trust me, I have no interest in using anything more other than the rapid fire thingy) so if it does happen, it's for that. It would suck if I lost my 16 year old account, but like @Freedom said, I wouldn't want to support a company that would ban me for something like that, especially if they decide to keep me banned after explaining my situation.

  14. #14
    Scarab Lord
    15+ Year Old Account
    Join Date
    Dec 2008
    Location
    One path
    Posts
    4,907
    Common and innocuous stuff like that should be fine.
    If you knew the candle was fire then the meal was cooked a long time ago.

  15. #15
    The Lightbringer Lollis's Avatar
    10+ Year Old Account
    Join Date
    Sep 2009
    Location
    England
    Posts
    3,522
    The only AutoHotKey script I use is one to make my push to talk mute my speakers when pressed and unmute them when it isn't since Discord's attenuation function doesn't work properly if you have Voice through headset and other sounds through Speakers.
    Speciation Is Gradual

  16. #16
    Your prayers are answered.

    Code:
    ~$1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 1
    }
    return

    Autohotkey. That, spams "1" for as long as you hold it down. The toggle for the program is ScrollLock. If scrolllock is toggled, the program works. When it's not toggled, pressing 1 works as usual and only sends a single keypress.

    Compile with AHK v1.1.33.02. Install it without UTF-8 support and compile with the default binary image.

    For example, F1(note the curly braces. This is because it's written as 2 letters):

    Code:
    ~$F1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, F1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, {F1}
    }
    return

    A different chunk of code:
    Code:
    ~$!q::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, q, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !q
    }
    return
    
    ~$!e::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, e, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !e
    }
    return

    The above will spam "alt+q" and "alt+e".

    A full working script example:

    Code:
    ~$1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 1
    }
    return
    
    ~$2::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 2, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 2
    }
    return
    
    ~$3::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 3, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 3
    }
    return
    
    ~$4::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 4, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 4
    }
    return
    
    ~$5::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 5, P
      if (state = "U" || scrollstate = "U")
        break
      Send, 5
    }
    return
    
    ~$+1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +1
    }
    return
    
    ~$+2::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 2, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +2
    }
    return
    
    ~$+3::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 3, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +3
    }
    return
    
    ~$+4::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 4, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +4
    }
    return
    
    ~$+5::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 5, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +5
    }
    return
    
    ~$!1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !1
    }
    return
    
    ~$!2::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 2, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !2
    }
    return
    
    ~$!3::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 3, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !3
    }
    return
    
    ~$!4::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 4, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !4
    }
    return
    
    ~$!q::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, q, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !q
    }
    return
    
    ~$!e::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, e, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !e
    }
    return
    
    ~$!r::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, r, P
      if (state = "U" || scrollstate = "U")
        break
      Send, !r
    }
    return
    
    ~$^1::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 1, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^1
    }
    return
    
    ~$^2::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 2, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^2
    }
    return
    
    ~$^3::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 3, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^3
    }
    return
    
    ~$^4::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 4, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^4
    }
    return
    
    ~$^5::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 5, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^5
    }
    return
    
    ~$^6::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, 6, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^6
    }
    return
    
    ~$^q::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, q, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^q
    }
    return
    
    ~$^e::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, e, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^e
    }
    return
    
    ~$^r::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, r, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^r
    }
    return
    
    ~$q::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, q, P
      if (state = "U" || scrollstate = "U")
        break
      Send, q
    }
    return
    
    ~$e::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, e, P
      if (state = "U" || scrollstate = "U")
        break
      Send, e
    }
    return
    
    ~$t::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, t, P
      if (state = "U" || scrollstate = "U")
        break
      Send, t
    }
    return
    
    ~$r::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, r, P
      if (state = "U" || scrollstate = "U")
        break
      Send, r
    }
    return
    
    ~$f::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, f, P
      if (state = "U" || scrollstate = "U")
        break
      Send, f
    }
    return
    
    ~$z::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, z, P
      if (state = "U" || scrollstate = "U")
        break
      Send, z
    }
    return
    
    ~$c::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, c, P
      if (state = "U" || scrollstate = "U")
        break
      Send, c
    }
    return
    
    ~$v::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, v, P
      if (state = "U" || scrollstate = "U")
        break
      Send, v
    }
    return
    
    ~$+q::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, q, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +q
    }
    return
    
    ~$+e::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, e, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +e
    }
    return
    
    ~$+t::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, t, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +t
    }
    return
    
    ~$+c::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, c, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +c
    }
    return
    
    ~$+v::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, v, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +v
    }
    return
    
    ~$+g::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, g, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +g
    }
    return
    
    ~$+h::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, h, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +h
    }
    return
    
    ~$+z::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, z, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +z
    }
    return
    
    ~$+r::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, r, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +r
    }
    return
    
    ~$+f::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, f, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +f
    }
    return
    
    ~$+x::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, x, P
      if (state = "U" || scrollstate = "U")
        break
      Send, +x
    }
    return
    
    ~$^v::
    loop
    {
      Sleep, 1
      GetKeyState, scrollstate, ScrollLock, T
      GetKeyState, state, v, P
      if (state = "U" || scrollstate = "U")
        break
      Send, ^v
    }
    return
    Functional keys above:

    No modifier: 1, 2, 3, 4, 5, q, e, t, r, f, z, c, v...
    Shift modifier: 1, 2, 3, 4, 5, q, e, t, c, v, g, h, z, r, f, x...
    Alt modifier: 1, 2, 3, 4, q, e, r...
    Ctrl modifier: 1, 2, 3, 4, 5, 6, q, e, r, v...

    Bind ScrollLock to a key on your mouse or keyboard somewhere comfortable for on/off switching and you're good to go.
    Add/Remove keys as you see fit. There are lots in the full example that I use.

    If you find Kriparrians code, use that. For some dumb reason it seems to work a bit better. Could be the "," in the Send. AHK is weird.
    Last edited by ahkscript; 2021-03-04 at 10:05 AM.

  17. #17
    Actual bots that drive the economy into the ground don't get banned. Why would a simple autoclick get banned?

    No one's getting banned for widespread use of rotation bots in high-end PvE either

  18. #18
    Quote Originally Posted by Vegas82 View Post
    Or, idk, let the tendon heal instead of continuing to damage it.
    Tendon damage is more often than not permanent. I have RSI in both of my hands from years of raiding. External help is totally justified to keep up with Blizzard's bullshit APM design if you value your health.

  19. #19
    Quote Originally Posted by Wilfire View Post
    Actual bots that drive the economy into the ground don't get banned. Why would a simple autoclick get banned?

    No one's getting banned for widespread use of rotation bots in high-end PvE either
    Tell me about it, I keep seeing trains picking herbs etc. to this day, even chase after in order to report them all, the economy on my server at least is FUBAR.

    And yeah, my tendon situation is something I can't deal with, also because of my job, it's either work or starve and WoW is what's keeping my shit together right now. Anyway, there's no excuse on why they haven't implemented this yet as an option, I have been suggesting this over the years.. no luck..

  20. #20
    Quote Originally Posted by Santas View Post
    Anyone that's actively using them? Talking about Razer's Turbo, AutoHotkey, Icue etc. I'm not talking about macros that let you perform multiple actions with one key-press etc. talking about alternatives to button mashing, where you hold down "2" for example and it can keep casting that Frostbolt for as long as you keep said button pressed. Getting old and I was thinking of starting to use the Razer one as my fingers can already feel the pain after a 3 hour raid, but I'm a bit paranoid as I've heard Blizzard banning for less over the years.
    Why are you button mashing in the first place? This isn't that kind of game.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •