Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

SEngineer Scripter Application

Recommended Posts

1. Snippets


2. Tutorials



3. Scripts

https://github.com/sengineer-tribot - Contains all 3 repositories


4. Short Biography / Coding Experience

Professional Software Engineer / Dev Ops Engineer w/ 6 years professional experience


5. Why do you feel you deserve to be Scripter?

I don't like how this question is phrased haha. I'm not sure I deserve to be Scripter, but I would be interested in having the rank. To answer the question, I guess because I'm active in the discord, provided 3 open source scripts as per the requirements and give support to others in the discord where possible. I think having the Scripter rank will encourage and motivate me to provide more scripts and to also become more pedantic about the quality of my code.


6. What do you plan on providing the community with?

I will continue to provide support to others where possible. I will also continue to expand on my tribot script portfolio and personal API. As other scripters / premium scripters know by now, I am always happy to share the snippets of code that I have. As I flesh out my knowledge of the API and my code improves, I'll gladly continue to share it with other members of the community.


7. Do I agree to maintain and continue to write free open source scripts?


Edited by SEngineer
Link to post
Share on other sites

As discussed it would be good to see you make a script with a GUI. While it's not required, most users expect it and for anything more complex it'll need to be configurable.

You said in discord you were most happy with your agility script so I'll look at that - although your firemaking script is a bit of a joke, it's literally like 4 actual lines of code. Plus if someone just plants flowers or lights a fire or something under a dropped log on the floor you're going to get stuck.

1. You've got a lot of potentially infinite loops:

while (!isDistanceFrom(destination, 1)) {
  General.println("[Rooftops] WebWalking to " + destination.toString());
  Timing.waitCondition(() -> !Player.isMoving(), 5000);

If the player ever gets into a situation where it can't walk to the tile (e.g it accidentally enters a non-dax mapped region, or the dax walker fails for any reason) then you've got a infinite loop. You do this A LOT in your other scripts, for example the entire run method is filled with them in the bloodcrafter, asking for it to get stuck:

Just from a glance, this is the biggest problems with your scripts. It's fine until you have 100 users running at 5fps on vps's, then a lot more goes wrong than you might think.

2. You don't check the result of boolean methods:

if(SEngineerRooftops.shouldHop) {
  General.println("[Rooftops] Hopping world as player detected");
  SEngineerRooftops.lastHop = System.currentTimeMillis();
  SEngineerRooftops.shouldHop = false;

If the worldhopper was to fail here and return false, your script still acts as if it succeeded. You also don't ever check the result of a Timing.waitCondition call, which is useful because you're usually waiting for something to happen and it if hasn't, you likely want to react differently rather than plowing on.

3. Very static antiban

You're hardcoding this to activate energy every 5 minutes, and other things on static timers. This sounds like a really bad idea.

4. Null checking


You don't null check things that could be null, the getDefinition` class is notorious for doing this. This'll throw a nullpointer at some point

Some more general code things..
4. The number class

I really have nothing to say

5. Variable shadowing
Doing this is really confusing apart from a very basic setter, I would avoid at all costs.

6. You use protected variables directly from the subclass:

While this isn't wrong, generally accessing protected variables like this isn't great for a number of reasons, especially because you don't need to. Here I would expect the Course class to have a constructor, and the children to just call super() to set it.
Although really this just looks like a place for a Course enum instead - then you could have a CourseHandler class for example which contains your doCourse method and the such. Another point is that you're creating a ABC2 instance for each course variable currently where it's not really needed.
It would also make your main getCourse method nicer, as you could just have the level requirement as a field on the enum and loop through them all.

7. Some useless methods
What's wrong with just Inventory.getCount() ?

8. Just a few crappy bits of code. We all write them sometimes though
https://github.com/sengineer-tribot/SEngineer-BloodCrafter/blob/63cf0e82aaf03d3cac4911c17e2034d59b3f9524/src/scripts/rc/utils/Utils.java#L322 - this one's obvious

https://github.com/sengineer-tribot/SEngineer-BloodCrafter/blob/63cf0e82aaf03d3cac4911c17e2034d59b3f9524/src/scripts/rc/main/SEngineerBloodCrafter.java#L282 - Ideally would use a enum or something to loop over rather than a massive if-else block. Could also just return false instead of setting a variable
https://github.com/sengineer-tribot/SEngineer-F2P-Firemaker/blob/6597eaee3c1019ec82faac73774490e0fac7592e/src/scripts/fm/main/SEngineerFiremaker.java#107- Are you telling me you'll make a constant for the number 1, but not for your item id!?

There's more things that aren't perfect but they're not too big of a deal. Don't take all of these as "blockers" for you being a scripter - the main ones I'm concerned about are 1, 2, 3 and 4.


Edited by JustJ
  • Like 2
Link to post
Share on other sites

Its a No from me

You really gotta look into conditionals and not use infinite loops. I briefly looked through all three scripts and all of them used a ton of infinite loops in all methods instead of conditionals. These scripts will break quite easy and get stuck for hours. Ban rates are lower than usual right now so any script can last longer than it used to be able too but this shouldn't be an excuse for the quality of code.

All of the scripts main Run method look like this

while (true) {
// do script

Also alot of the scripts methods do the same thing.


Upon some further inspection, it doesn't appear that you use any sleeps in your while loops which could lead to very high cpu usage as well. Also like I mentioned before you should avoid static sleeps.

Looking at your FireMaker you don't appear to use constants for item IDs, these should be stored so that anyone looking at the script later can easily tell what the IDs belong too or even yourself when you go to edit it months later.


In the above image, you call a method which also has a static sleep inside it then you use another static sleep right after then call a waitCondition, you should try to just use waitConditions instead of the static sleeps because in this case the script will always sleep for roughly the same time which can develop a pattern easily.

Edited by God
  • Like 1
Link to post
Share on other sites

Some of the code is good and well structured, but some if it is very bad and it shows a poor understanding of the API and/or bad practices acquired over the years.

You're clearly capable of programming, and I wish that you have devoted more attention your the code contained within your application.


My vote is no.


Link to post
Share on other sites
  • 4 weeks later...
This topic is now closed to further replies.
  • Our picks

    • TRiBot 12 Release Candidate

      The TRiBot team has been hard at work creating the last major version of TRiBot before the TRiBot X release. We've noticed many problems with TRiBot 11 with a lot of users preferring TRiBot 10 over 11. We've heard you, so we took TRiBot 10, added the new features introduced with 11, introduced some other new things, and created TRiBot 12. So without further adieu, here's TRiBot 12.
      • 37 replies
    • Gradle is a build tool used to accelerate developer productivity.

      We recently setup a Maven repository (TRiBot Central) to make it easier for scripters to create scripts. Check it out here: https://gitlab.com/trilez-software/tribot/tribot-central/-/packages

      Furthermore, we've released a simple Gradle project to make it easy to run TRiBot and develop scripts for it. Check it out here: https://gitlab.com/trilez-software/tribot/tribot-gradle-launcher

      The goals of TRiBot Central are to:

      Deliver updates to TRiBot faster

      Better organize TRiBot's dependencies (AKA dependancies)

      Make it easier to develop scripts for TRiBot

      Make it easier to use and run TRiBot

      Note: TRiBot won't be able to run scripts from within this project until TRiBot's next release.
      • 10 replies
    • Hi everyone,

      I'd like to thank everyone for their patience in this transition period. Since last week, we've worked out the remaining bugs with this integration.

      Some users have still been having issues with connecting their forums account to their Auth0 account. To resolve this, we've imported all forums accounts into Auth0.

      Unfortunately, the accounts which were imported today were using an unsupported password hashing algorithm. Hence, random passwords were set during the import.

      What does this mean for me?

      If you've previously linked your forums account to your Auth0 account, you don't have to do anything. Nothing changes for you.

      If you haven't logged in via our new login yet,

      Try logging in with your forums email address and the last password you used

      If you are unable to login, please use the "Forgot password" tool on the login page:
      Follow the instructions to reset your password
      • 17 replies
    • Hello everyone,

      Last week we tried to roll out Auth0 Login, but we lost that battle. Now it's time to win the war!

      Important changes

      When logging into the client, you'll now have to enter your Auth0 account credentials instead of your forums credentials

      Note: 2FA is still handled through your forums account (for the time being)

      Changes for existing users

      You'll have to link your Auth0 account to your forums account here: https://tribot.org/forums/settings/login/?service=11

      Auth0 accounts have been created for most existing users. Please use your forums email address and password to login.

      Important notes

      Make sure to verify your email address upon creating a new Auth0 account

      When we mention your Auth0 account, we mean your account used for auth.tribot.org as displayed below
        • Like
      • 81 replies
    • To better support the upcoming changes (TRiBot X, new repository), we're switching our login handler to Auth0. Instead of logging in with the standard form, you'll now be required to login through our Auth0 application.

      All existing accounts which have been used within approximately the past year have been imported into Auth0 using the same email and password combination which has been stored on the forums.

      What does this mean for users?

      Your account credentials are now even more securely stored

      You'll be able to login via Facebook, Google, and others in the future

      Is there anything users have to do differently now?

      Existing users: You'll have to login with the standard login, open your Account Settings, then link your Auth0 account

      New users: You'll be redirected to our Auth0 app (auth.tribot.org) where you'll be able to create an account

      Why was this change made?

      The new apps we are creating (such as the new repository) aren't able to use the forums to handle user logins

      To centralize all user accounts in one area

      To ensure that the client login doesn't go down when the forums are having problems

      To speed up our development

      Other considerations

      There's no documentation or official support for using Invision Community combined with Auth0, so there are still a few kinks we're working out

      We're in the works of creating an account management panel specifically for Auth0 accounts (ETA August)

      It's not possible to change email addresses for the time being (this will be resolved this August)

      Changing passwords is a weird process for the time being. To change your password, you'll have to use the "Don't remember your password" tool on the Auth0 login page
      • 11 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...