Page 1 of 2 12 LastLast
Results 1 to 15 of 27
  1. #1
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685

    Sneak peek of a Meme Cheating API/Client or something

    Started working on my terraria hack again recently because i got bored; God knows how many times I've re-coded/refactored this thing over the past year or so(It's due for another cleanup soon...). It's been basically feature-complete for a while but I got the itch to make a UI with imgui to test some stuff for future projects.

    This is from a couple hours of work:



    The cheat originally started as a couple of things tacked onto TerrariaPatcher(google it) and based off of TerraMod. Why the hell would I want to modify the client when I can set up the base and barely touch it every update?
    (Why does anyone hardcode stuff into the client? God it's so cancer. Annoying to update and inevitably abandoned after a few updates if that)

    That being said, there's almost nothing left of them now. Most of the patched methods/interfaces are still there but the patching is now handled by Harmony and there will quite a bit more patches for more possibilities. You'll be able to make your own mods/commands/GUI options/etc with your own files without making modifications to the actual assembly just like TerrariaPatcher. These will, of course, work in multiplayer.

    It's nowhere near as sophisticated and extensive as say, TModLoader, but it's not really meant to be. That being said, you can do quite a bit with it regardless, including easily adding new UI elements and such(not the cheat UI. Game UI). This really is just a glorified modding API that I put mingy shit into.

    Current/Planned General Features:
    AutoTrash command/UI for automatically trashing specific items you pick up (Yes, I totally stole this idea from a mod)
    A UI for modifying items, toggling stuff, sending packets(WIP), doing shit to players/npcs, logging, tooltips everywhere, etc etc. Still a WIP in general.
    Packet Sender with descriptions for different packet types(Needs to be ported from old, shitty UI). You can do a lot with this.
    Command autocomplete for chat(WIP)
    Able to navigate chat history with up/down keys. (Chat scroll changed to PgUp/PgDn)
    Up to 7 working extra accessory slots just because.
    Item spawning or anything that can use a name as an argument in a command will accept full item names in quotes or the name without spaces.
    Binds for commands
    Existing TerrariaPatcher plugins (some removed/replaced)

    Currently available commands(<text> - Required argument(s) [text] - optional argument(s)):
    .autotrash - Adds the selected item to the auto-trash list where items will be deleted on pickup.
    .bind/unbind/unbindall/binds - Who knows what this does. Truly a mystery one could spend their life pondering.
    .blocktp - Toggles whether all teleporting using the player's TP method are blocked(typically used by the server to teleport the player)
    .butcher [all] - Kills all hostile NPCs on screen. (Yes, this works in multiplayer. It can also kill every NPC in the server.)
    .butchernpcs [all] - Kills all hostile & friendly NPCs on screen.
    .clearproj - Deletes any projectiles that belong to you(They will also disappear for other players).
    .godmode - Yet another mystery command

    I really don't feel like copy/pasting these 1 by 1 or typing them out so i'm just going to copy the command table.
    Item Customization Commands
    {"shoot", "<int> - Sets the projectile your current item will shoot."},
    {"homing", "- Toggles projectile homing for all weapons."},
    {"autoreuse", "- Toggles auto-reuse on your current item."},
    {"damage", "<int> - Sets the damage of your current item. Who would've guessed."},
    {"usetime", "<int> - How long before this item can be used again. Use with .autoreuse & .useanim"},
    {"utime", "- Alias of .usetime"},
    {"ut", "- Alias of .usetime"},
    {"usestyle", "<int> - The animation that this item uses."},
    {"anitime", "<int> - Sets the animation speed of your current item. Use in tandem with .usetime for cancer."},
    {"atime", "- Alias of .anitime"},
    {"power", "<int> - Sets the power % of all tools."},
    {"pick", "<int> - Sets the pickaxe speed % on your current item."},
    {"axe", "<int> - Sets the axe speed % on your current item."},
    {"hammer", "<int> - Sets the hammer speed % on your current item."},
    {"useturn", "<int> - no fucking clue"},
    {"itemset", "<fieldName> <integer/float/boolean> - Sets the specified field to a int/float/bool on your selected item."},
    {"itemget", "<fieldName> - Tells you the value of the specified field on your selected item."},
    {"shootspeed", "<int> - How fast projectiles created by this item will travel."},
    {"pspeed", "<int> - Alias of .shootspeed"},
    {"syncitem", "- Sync your current inventory/items to the server"},
    {"scale", "<int> - Sets the model scale of your current item. (Not shown to other players, affects melee hitbox)."},
    {"knockback", "<int> - Sets the knockback of your current item."},
    {"kb", "<int> - Alias of .knockback"},
    {"useAmmo", "<int> - Sets the ammo your current item uses. Specify 0 if you don't want a gun to use ammo." },
    {"prefix", "<name/id> - Sets the prefix of your current item. 0 to reset." },
    {"getid", "- Gets the ID of the item you're currently holding." },
    {"cdtime", "<int> - Sets both usetime & animation time on your current item." }

    Back to other commands...

    .item <ID/Name> [amount] - Spawns the specified item with optional amount.
    .giveitem <Player ID/Name> <Item ID/Name> [amount] - Spawns the specified item for the specified player with optional amount.
    .killme <text> - Kills you with a specified message. No message will just kill you(with a beach ball)
    .ndb [ID/Name/'list'] - - Toggles No Debuffs on/off. Optionally specify a buff ID/Name to blacklist that specific buff(even if it's not a debuff). Also accepts a list argument.

    .send <type> <client> <ignoreclient> <string> <num1> <num2> <num3> <num4> <num5> - Send a packet
    .capture <num> - Add specified ID to packet capture list.
    .nocapture <num> - Remove specified ID from packet capture list.
    .clearcaptures - Clears the packet capture list
    .plist - Lists players and their id
    .whoami

    .heal [int] - Heal yourself to full health.
    .healmana [int] - Heal your mana to full.
    .health <int> - Sets your HP.
    .hp <int> - Alias of .health
    .mana <int> - Sets your mana
    .mp - Alias of .mana
    .infmana - Mana will be locked at maxMana while enabled.
    .infbreath - Breath level will be locked at the max breath + 1 while enabled.
    .infammo - Will set the stack of anything in your ammo slots to max. (Will be changed to just not use ammo while shooting)
    .infflight - Infinite wings/rocketboots/carpet/mount flight time
    .radar/players - Toggles player radar
    .say - Sends a chat message directly to the server. Will not trigger cheat commands.
    .blockmsg <text> - Will block a chat message if it contains the specified text. Some of the more perceptive people may notice how this works well with another 2 other commands for meme potential.

    .spawn - Teleports you to the map's spawnpoint
    .goto <playername> - Teleports you to the specified player
    .tp <playername> - Alias of .goto
    .back - Teleports you to your last teleport(by command). You can .back up to your last 5 teleports.
    .home <name> - Teleports you to the specified(or default) home.
    .sethome <name> - Sets the specifed(or default) home to your current position
    .listhomes - Prints all of your set homes & their positions.
    .movetomouse - Teleports you to your cursor. Who would've guessed, right?

    .wiki - Will attempt to find the name of the item/npc/tile under your cursor(in that order) and open the wiki page for it. *cough*
    ------------------------
    End of Cancer
    ------------------------

    Enjoy reading that clusterfuck? What's that you say? You skimmed through it? *sigh*.
    The command descriptions are pretty inconsistent and all over the place since I've changed things so many times and a lot were added at completely different times. I have yet to go through them and make them... Not shit.
    There are still a few commands and other stuff I have yet to add.

    The only modifications made to the game client are making a bunch of fields & methods public so reflection isn't being used out the ass as well as the 1 line of code added to actually load the cheat assembly.

    Feel free to make suggestions for features. Stuff you've seen in old clients or something. The client/API also has no name yet. Have no clue what to call it.

    I promise the release thread will be more tidy. Probably.
    Last edited by IDontReallyKnowEither; 07-28-2018 at 04:48 AM.

  2. The Following User Says Thank You to IDontReallyKnowEither For This Useful Post:

    lolololipoo (11-19-2022)

  3. #2
    HiImKyle's Avatar
    Join Date
    Oct 2015
    Gender
    male
    Location
    England
    Posts
    233
    Reputation
    10
    Thanks
    206
    Never really liked imgui but with it filled like that, doesn't look half bad.

    Looks good.

  4. #3
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685
    Quote Originally Posted by HiImKyle View Post
    Never really liked imgui but with it filled like that, doesn't look half bad.

    Looks good.
    Thanks. It could use a lot of touching up. What you see is more or less just base imgui with some colored text and such. I'm testing it out for future projects because i can easily apply it to just about any game or application I work on in the future. The base of an all-purpose framework if you will, since I'd basically have an already set-up and very extensive UI system waiting for me that doesn't look like trash(looking at you unity). Still, screwing around with terraria is always entertaining and there was already an example of XNA integration, so i decided to start with Terraria.
    Last edited by IDontReallyKnowEither; 07-27-2018 at 06:42 PM.

  5. #4
    jungkookie6921's Avatar
    Join Date
    Oct 2017
    Gender
    male
    Posts
    24
    Reputation
    10
    Thanks
    2
    Would butcher work on online servers?
    I would also suggest a bind command, to bind commands to a key otherwise nice work

  6. #5
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685
    Quote Originally Posted by jungkookie6921 View Post
    Would butcher work on online servers?
    I would also suggest a bind command, to bind commands to a key otherwise nice work
    Yes; butcher works in servers. Yes; There a bind command. Both are mentioned in the thread.

  7. #6
    HiImKyle's Avatar
    Join Date
    Oct 2015
    Gender
    male
    Location
    England
    Posts
    233
    Reputation
    10
    Thanks
    206
    Is the imgui just an external window, or is it bound to terraria like what csgo had a bit ago? I know C# has a Wrapper for imgui which i tried for a bit a while back and thats the main reason i dont like it, plus with the way that worked im not sure if you could replicate what you have here, so im going to assume you either have your own wrapper or you are referencing imgui directly?

  8. #7
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685
    Quote Originally Posted by HiImKyle View Post
    Is the imgui just an external window, or is it bound to terraria like what csgo had a bit ago? I know C# has a Wrapper for imgui which i tried for a bit a while back and thats the main reason i dont like it, plus with the way that worked im not sure if you could replicate what you have here, so im going to assume you either have your own wrapper or you are referencing imgui directly?
    Take a look at ImGuiCS on ******/google. It's what I'm currently working off of. The UI is currently using the game's Update/Draw methods rather than having an external overlay for it. It causes some weird quirks since blockInput/blockMouse/blockKeyboard in Main don't actually stop all input, and i have yet to make IL patches to stop certain things if the UI is currently focused and/or I'm about to click on it(So I don't use an item when I'm clicking on the window to focus)
    Last edited by IDontReallyKnowEither; 07-28-2018 at 07:55 PM.

  9. #8
    HiImKyle's Avatar
    Join Date
    Oct 2015
    Gender
    male
    Location
    England
    Posts
    233
    Reputation
    10
    Thanks
    206
    Quote Originally Posted by IDontReallyKnowEither View Post
    Take a look at ImGuiCS on ******/google. It's what I'm currently working off of. The UI is currently using the game's Update/Draw methods rather than having an external overlay for it. It causes some weird quirks since blockInput/blockMouse/blockKeyboard in Main don't actually stop all input, and i have yet to make IL patches to stop certain things if the UI is currently focused and/or I'm about to click on it(So I don't use an item when I'm clicking on the window to focus)
    Will do, thanks.

    Might incorporate it into my Stardew Valley one. I'll even consider it in my Terraria one if you're not going to get annoyed about the UI idea steal lol

  10. #9
    derpyguy89's Avatar
    Join Date
    Jan 2015
    Gender
    male
    Posts
    25
    Reputation
    10
    Thanks
    3
    My Mood
    Tired
    This looks promising, I'd love to see the final version if it ever gets there.

  11. #10
    HiImKyle's Avatar
    Join Date
    Oct 2015
    Gender
    male
    Location
    England
    Posts
    233
    Reputation
    10
    Thanks
    206
    I noticed you're using the InputInt method from imGui but ImGuiCS doesn't seem to have that. I had a look at saw that it was ready with the native methods but when adding a method to use it, i cant seem to get past the issue of "int*". Upon googling anything referring int* i just get int? stuff that doesn't seem to apply to what I'm trying to do. Are you using your own fork of ImGuiCS? If so can i use it?

    EDIT: Ok, so i managed to get it to work but i guess changing the value is the next part..
    I can't get the InputText to work either, its acting as though its readonly even though i can delete the contents but not add to it.

    Fixed InputInt. (but is bound from -10 to 10 which sucks)

    Can you just share your version? If thats not too much to ask? ****** or just the dll?
    Last edited by HiImKyle; 07-29-2018 at 02:38 AM.

  12. #11
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685
    Quote Originally Posted by HiImKyle View Post
    I noticed you're using the InputInt method from imGui but ImGuiCS doesn't seem to have that. I had a look at saw that it was ready with the native methods but when adding a method to use it, i cant seem to get past the issue of "int*". Upon googling anything referring int* i just get int? stuff that doesn't seem to apply to what I'm trying to do. Are you using your own fork of ImGuiCS? If so can i use it?

    EDIT: Ok, so i managed to get it to work but i guess changing the value is the next part..
    I can't get the InputText to work either, its acting as though its readonly even though i can delete the contents but not add to it.

    Fixed InputInt. (but is bound from -10 to 10 which sucks)

    Can you just share your version? If thats not too much to ask? ****** or just the dll?
    Code:
    public static unsafe bool InputInt(string label, ref int value, int step, int step_fast, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt(label, ref value, step, step_fast, extra_flags);
    
            public static bool InputInt2(string label, ref Int2 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt2(label, ref value, extra_flags);
    
            public static bool InputInt3(string label, ref Int3 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt3(label, ref value, extra_flags);
    
            public static bool InputInt4(string label, ref Int4 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt4(label, ref value, extra_flags);
    You can simply do this for InputInt and similar methods that use pointers (Just change the native import method parameters from something like 'x* name' to 'ref x name'

    Here are examples of the methods:
    Code:
    private TextInputBuffer modalTextBuffer = new TextInputBuffer(512); // You need to initialize this outside of your draw func for fairly obvious reasons.
    ImGui.InputText("Name", modalTextBuffer.Buffer, 512, ImGuiInputTextFlags.AutoSelectAll);
    Code:
    ImGui.InputInt("Type", ref item.type, 1, 5, ImGuiInputTextFlags.CharsDecimal);
    Here's a little extension class I've made to make some things easier:
    https://hastebin.com/naneruhagi.cs

    Keep in mind you can change the method parameters in the source or create your own overloads with different parameters with defaults to fit your needs. See the cimgui/imgui source to see what's possible without crashing everything.

    And no, I don't care what you use it for. It's certainly better than people making these god-awful UI's and pretending it's a good thing just because there's nothing better out there.
    Last edited by IDontReallyKnowEither; 07-29-2018 at 05:59 AM.

  13. The Following User Says Thank You to IDontReallyKnowEither For This Useful Post:

    HiImKyle (07-29-2018)

  14. #12
    HiImKyle's Avatar
    Join Date
    Oct 2015
    Gender
    male
    Location
    England
    Posts
    233
    Reputation
    10
    Thanks
    206
    Quote Originally Posted by IDontReallyKnowEither View Post
    Code:
    public static unsafe bool InputInt(string label, ref int value, int step, int step_fast, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt(label, ref value, step, step_fast, extra_flags);
    
            public static bool InputInt2(string label, ref Int2 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt2(label, ref value, extra_flags);
    
            public static bool InputInt3(string label, ref Int3 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt3(label, ref value, extra_flags);
    
            public static bool InputInt4(string label, ref Int4 value, ImGuiInputTextFlags extra_flags)
                => ImGuiNative.igInputInt4(label, ref value, extra_flags);
    You can simply do this for InputInt and similar methods that use pointers (Just change the native import method parameters from something like 'x* name' to 'ref x name'

    Here are examples of the methods:
    Code:
    private TextInputBuffer modalTextBuffer = new TextInputBuffer(512); // You need to initialize this outside of your draw func for fairly obvious reasons.
    ImGui.InputText("Name", modalTextBuffer.Buffer, 512, ImGuiInputTextFlags.AutoSelectAll);
    Code:
    ImGui.InputInt("Type", ref item.type, 1, 5, ImGuiInputTextFlags.CharsDecimal);
    Here's a little extension class I've made to make some things easier:
    https://hastebin.com/naneruhagi.cs

    Keep in mind you can change the method parameters in the source or create your own overloads with different parameters with defaults to fit your needs. See the cimgui/imgui source to see what's possible without crashing everything.

    And no, I don't care what you use it for. It's certainly better than people making these god-awful UI's and pretending it's a good thing just because there's nothing better out there.
    Neither work but oh well, I'll just wait till you release yours and have a look.

  15. #13
    KoishiR's Avatar
    Join Date
    Feb 2016
    Gender
    male
    Posts
    7
    Reputation
    10
    Thanks
    3
    Interesting. It is a source-code based(like tModLoader) or a patched client?

  16. #14
    IDontReallyKnowEither's Avatar
    Join Date
    Jun 2018
    Gender
    male
    Posts
    21
    Reputation
    10
    Thanks
    685
    Quote Originally Posted by KoishiR View Post
    Interesting. It is a source-code based(like tModLoader) or a patched client?
    Instead of compiled assemblies like tModLoader, "modules"/commands are just loaded from .cs files (See TerrariaPatcher)

  17. #15
    qwertyuiophjhjh's Avatar
    Join Date
    Aug 2018
    Gender
    male
    Posts
    6
    Reputation
    10
    Thanks
    0
    Actually has 10iq lol

Page 1 of 2 12 LastLast

Similar Threads

  1. [SNEAK PEEK]Project MA
    By |The One| in forum Art & Graphic Design
    Replies: 16
    Last Post: 01-09-2011, 06:59 AM
  2. [Game-Up]Sneak Peek at the Newest Combat Arms Map: Kill Creek
    By Mc565 in forum Combat Arms Discussions
    Replies: 21
    Last Post: 04-23-2010, 12:21 PM
  3. Some kind of crosshair.
    By zazack in forum CrossFire Discussions
    Replies: 4
    Last Post: 03-22-2010, 09:49 AM
  4. CS5 Sneak Peek
    By Nicckk in forum Art & Graphic Design
    Replies: 10
    Last Post: 01-08-2010, 02:48 PM
  5. Combat Arms June 25 Patch Sneak Peek
    By thinkyo in forum Combat Arms Hacks & Cheats
    Replies: 16
    Last Post: 06-18-2009, 03:03 AM