Neverwinter gateway - Profession Automation

Automatically selects professions for empty slots

< 脚本Neverwinter gateway - Profession Automation的反馈

评价:好评 - 脚本运行良好

§
发表于:2015-03-24

Anyway to SLOW this down.

This works great - many thanks.

I was wondering if it was possible to add a slight delay to its actions ( a second or two at each stage would be fine) as it seems to me to be carrying out this too FAST to be an actual human and this might make it detectable.

§
发表于:2015-03-24

If I was to change every instance of

dfdNextRun.resolve(delay.SHORT)

to

dfdNextRun.resolve(delay.MEDIUM)

would this work and appear more realistic?

Rotten_mind作者
§
发表于:2015-03-24
This works great - many thanks. I was wondering if it was possible to add a slight delay to its actions ( a second or two at each stage would be fine) as it seems to me to be carrying out this too FAST to be an actual human and this might make it detectable.

You mean that they start inspecting your internet behavior and start telling users "how fast you may click objects on their web page", xD.

OK, maybe someone have good and reliable way for that what you asking,

but I dont see problem here as long Chrome browser is not Cryptic property(after that they might change EULA)

ps. Maybe they hire NSA to look Gateway Botters, ;D.

Rotten_mind作者
§
发表于:2015-03-24

You can try find solution from this function,

 function vendorItemsLimited(_items)

Look,

var _delay = 400;

, and lines,

window.setTimeout(function () {
                    client.sendCommand('GatewayVendor_SellItemToVendor', vendor);
                }, _delay);

, and

                vendor.count = slot.count - _Limit;
                console.log('Selling', vendor.count, slot.name, 'to vendor.');
                window.setTimeout(function () {
                    client.sendCommand('GatewayVendor_SellItemToVendor', vendor);
                }, _delay);
                _delay = _delay + 400;
                break;

Delay is added here because script sold too fast items, you may want try use "Random" delay too.

§
发表于:2015-03-24

Well while Cryptic can't tell how fast someone is clicking on the various objects Cryptic can tell roughly how long it takes someone to finish their professions from the moment they log on. And if they always finish this very quickly they may get suspicious.....

So would my suggested alteration or even something like

dfdNextRun.resolve( delay.MEDIUM + Math.floor(Math.random()*1000) )

work?

§
发表于:2015-03-24

Ty for your tips - it seems you replied while I was typing my last post!

I will try your suggestions and get back so that anyone else who is interested can benefit form this also.

Rotten_mind作者
§
发表于:2015-03-24
Ty for your tips - it seems you replied while I was typing my last post! I will try your suggestions and get back so that anyone else who is interested can benefit form this also. dfdNextRun.resolve( delay.MEDIUM + Math.floor(Math.random()*1000) )

Well, if you make Function what adds that random time then it is easier enable/disable and that way it is possible add to script if it works as intended...

but still I will not wear "Tinfoilhat" while botting in gateway... xD

..they never catch me...

...or shuold we do, they look purrfect!!!! xD

§
发表于:2015-03-25
编辑于:2015-03-25

If you really think script is too fast, you can always change this:

    var delay = {
        SHORT: 1000,
        MEDIUM: 5000,
        LONG: 30000,
        MINS: 300000,
        DEFAULT: 10000, // default delay
        TIMEOUT: 60000, // delay for cycle processing timeout
    };

and random addition we have all from:

  • connection delay
  • page rendering by browser

§
发表于:2015-03-26

@zunga there is no script in the gateway site to control the time you click.
do you know how a website is make, how it use, wich programme are use, etc...

a bot program like astral need to do human right because it interact in the game.

if you prefer this script is like a signup robot's pub for forum.
you can't detect if it's a human or robot signup your forum but you put a captcha to prevent it.
the robot fill the field on the form but when it do that website can't detect if its human or robot.
this is the same here but with no captcha to prevent it and force a human action :)

§
发表于:2015-03-26

Ty for taking the time to explain this in detail. But my issue is simply to do with the possibility of detection by Cryptic checking how long (and regular) it takes an account to do professions.

i.e. If they notice that if an account always collects the rewards in a couple of seconds, takes almost exactly the same time to go through all the characters, etc.

While any one of these things might be chance, the combination of all of these might be viewed as very suspicious. So adding a random element(s) would make this sort of analysis much, much harder if not possible.

§
发表于:2015-03-26

@Zunga,

there is *no* doubt whatsoever that Cryptic knows/can detect that you are using a script. With enough data they can even tell which constant delay and multiplication factor you use for the random number. If the interval between each command is an even distribution between x and y it is a sure telltale you are not doing the clicking yourself. It is a simple matter of statistics.

@Lionel Paria,

it is easy to check if an action was triggered by an actual mouse click or by a script event. The code has been shown in another discussion thread.

§
发表于:2015-03-26

You said

"it is easy to check if an action was triggered by an actual mouse click or by a script event. The code has been shown in another discussion thread. "

Can you link to the discussion please?

Rotten_mind作者
§
发表于:2015-03-26
@Zunga, there is *no* doubt whatsoever that Cryptic knows/can detect that you are using a script. With enough data they can even tell which constant delay and multiplication factor you use for the random number. If the interval between each command is an even distribution between x and y it is a sure telltale you are not doing the clicking yourself. It is a simple matter of statistics. @Lionel Paria, it is easy to check if an action was triggered by an actual mouse click or by a script event. The code has been shown in another discussion thread.

...and if they take action against "Web Browser" -script like this bot....

...where they put line between legal and illegal Gateway action, what "extension", add ons, helpers we may use, what is allowed time between actions before they call it "gateway bot", what information script may extract from gateway and can it use that information for task execution...

Ingame botting is easier detect and clearly "forbidden" (EULA), GAteway botting is detectable and it stays in "Gray area", but if action is taken against gateway automation, then we have interesting situation to see "WHAT IS ALLOWED", can Stephen Hawking use gateway(quite automated browsing he use)... botting detected...

§
发表于:2015-03-26

you cannot make this undetectable, just think of this stuff-->
https://www.google.com/recaptcha/intro/index.html

and this is just "the tip of the iceberg"

maybe they just dont belive that i use the gateway 24/7 and bann me for it :P

§
发表于:2015-03-27

yes but if the gateway use reCAPTCHA it's a worsth for user.
you need to use it for all final action you use for task.
all of website use it only for creation account robot.

and there is a lot of http request for the gateway so they need to analyse all off the log if they log something.
we work in ms(like ping) so in the same second there are perhasp 10K http request.

do you think cryptic make a working script to analyse this.

and now the bot only do resquet in the time the task end they not spam like old version.

u can use it safely.
i use it 24/7 since the 1.0.0.3 version and i'm never ban.

§
发表于:2015-03-29

Thanks for all the info.

I'll probably try updating with random timers AFTER the next mod comes out.

§
发表于:2015-03-29
编辑于:2015-03-29

Grrr

Double post.......

Rotten_mind作者
§
发表于:2015-04-05
Grrr Double post.......

Got this from Ownedcore, I can add them to script, but "Enabling" them... not sure if they are needed? Any opinions, I still dont wear "Tinfoil_Hat"...

    SHORT: Math.floor((Math.random() * 1000) + 2000),                   //@KSC
    //SHORT: 1500,
    MEDIUM: Math.floor((Math.random() * 8000) + 5000),                  //@KSC
    //MEDIUM: 8000,
    LONG: Math.floor((Math.random() * 25000) + 30000),                  //@KSC
    //LONG: 30000,
    MINS: Math.floor((Math.random() * 300000) + 280000),                //@KSC
    //MINS: 300000,
    DEFAULT: Math.floor((Math.random() * 10000) + 9000),                //@KSC
    //DEFAULT: 10000, // default delay
    TIMEOUT: Math.floor((Math.random() * 60000) + 55000),               //@KSC
    //TIMEOUT: 60000, // delay for cycle processing timeout

    // Collect rewards for completed tasks and restart
    if (unsafeWindow.client.dataModel.model.ent.main.itemassignments.complete) {
        unsafeWindow.client.dataModel.model.ent.main.itemassignments.assignments.forEach(function (entry) {
            if (entry.hascompletedetails) {
                dfdNextRun.resolve(delay.SHORT);                  //@KSC
                unsafeWindow.client.professionTaskCollectRewards(entry.uassignmentid);
            }
        });
        dfdNextRun.resolve();
        return true;
    }


    // Check for Gateway down
    //if (window.location.href.indexOf("gatewaysitedown") > -1) {
    if ((window.location.href.indexOf("gatewaysitedown") > -1) | (window.location.href.indexOf("locked.html") > -1) | ((window.location.href.length == 0) || (window.location.href.length == "")) ) { //@KSC
        // Do a long delay and then retry the site
        console.log("Gateway down detected - relogging in " + (delay.MINS / 1000) + " seconds");
        window.setTimeout(function () {
            unsafeWindow.location.href = current_Gateway; // edited by RottenMind
        }, delay.MINS);
        return;
    }

Check, @KSC marked lines and do edits.

§
发表于:2015-04-05

The problem with the above code is that it only generates the constants SHORT MEDIUM LONG etc.... at start up and then they remain the same until the next gateway reload..... might be better to have a function for each instead like :


    function delayMinMax(min,max) {
        return Math.floor((Math.random() * (max-min)) + min);
    }

Then for short you'd call delayMinMax(1000,2000) for a 1.0-2.0 second delay or delayMinMax(5000,7500) for a 5.0-7.5 second delay etc which would be randomly evaluated each time the function is requested.

Rotten_mind作者
§
发表于:2015-04-05
The problem with the above code is that it only generates the constants SHORT MEDIUM LONG etc.... at start up and then they remain the same until the next gateway reload..... might be better to have a function for each instead like :

    function delayMinMax(min,max) {
        return Math.floor((Math.random() * (max-min)) + min);
    }
Then for short you'd call delayMinMax(1000,2000) for a 1.0-2.0 second delay or delayMinMax(5000,7500) for a 5.0-7.5 second delay etc which would be randomly evaluated each time the function is requested.

Not even tested it yet, but you are right.

It´s best if it is "Function" so its then easy enable and disable...

§
发表于:2015-04-05

Seriously, do you think adding random delays will make them think a real person is clicking the buttons? The fact that most of us run the script 24/7 is a sure sign it is scripted.

I say it again. It is a simple matter of statistics. They only need to look at the delays between the packets. If they collect enough data they will see that 90% of the delays between two packets are within 5.0 to 7.5 seconds. (Yes, there will be some extra time in the client and some extra random time over the net, but that just adds constant offset to the figures.) Would any human do that? No, he'll go to lunch, take a pee break, check facebook and forget to handle the next completed task.

There is no need to slow down the script even further. If they want to ban us they already have enough evidence.

§
发表于:2015-04-05

I stay awake and have OCD so I always click at the same time and I pee and poop in a bottle and have my food delivered to me. I am invincible!

Rotten_mind作者
§
发表于:2015-04-05
编辑于:2015-04-05
Serilously... xD
Seriously, There is no need to slow down the script even further.
§
发表于:2015-04-06
Seriously, do you think adding random delays will make them think a real person is clicking the buttons? The fact that most of us run the script 24/7 is a sure sign it is scripted.

....

There is no need to slow down the script even further. If they want to ban us they already have enough evidence.

Well given that not all of us run this 24/7 (I know I don't) means that this would make a nice OPTIONAL feature for those of us whose custom supports mining and millinery companies ...... :)

Rotten_mind作者
§
发表于:2015-04-06

Well given that not all of us run this 24/7 (I know I don't) means that this would make a nice OPTIONAL feature for those of us whose custom supports mining and millinery companies ...... :)

24/7 is how this script should work, fast it must be, slow down it you can if like, but its purpose generally is be "FAST" and stable...

No need add randoms wait times, it seems better leave it for users themself... if it helps with some unrecoverable errors then it will be added there where it helps.

BTW, anyone know "How to decompile AND recompile .NET -app."... xD (decompile is easy but recompile...)

§
发表于:2015-04-07

Very true RM (and others) - the default behaviour of this script should be as fast as possible.

If I manage to make some simple changes that slow it down 'realistically' then I will post them here. As my spare time this week will be spent in-game (for obvious reasons) I'll try to see if I can work on this next week.

§
发表于:2015-04-07

In that case I hope you go for a more sophisticated scheme than delayMinMax above.
When they plot the time between a task is completed and the next one starts and it looks like this:

Seconds / number of tasks that starts
0 0
1 0
2 0
3 0
4 293
5 892
6 905
7 784
8 43
9 2
10 1

they don't have to be rocket scientists to see that you have a fixed delay of 4 sec and a random delay of 0 to 4 seconds.

BTW, You do disable the script when you play, don't you?

Rotten_mind作者
§
发表于:2015-04-07
In that case I hope you go for a more sophisticated scheme than delayMinMax above. When they plot the time between a task is completed and the next one starts and it looks like this: Seconds / number of tasks that starts 0 0 1 0 2 0 3 0 4 293 5 892 6 905 7 784 8 43 9 2 10 1 they don't have to be rocket scientists to see that you have a fixed delay of 4 sec and a random delay of 0 to 4 seconds. BTW, You do disable the script when you play, don't you?

If I play... I keep script running and make sure that character "Vendor" all junk I pick up.

...still I dont need that "Tinfoil_Hat".

I wondering if "Skip profession if lvl20" is usefull. Something like this,
    if (settings["skip_lvl20"] && profname !== 'Leadership' && professionLevel > 19) {
        console.log(profname, "level is [" + professionLevel + "], maxed, we gon next PRofession");
        return false;
    }

Current script allocates slots different way so this can be used when level professions up and with "Vendor T1 - T3 gathered" -materials it makes script more automated...

§
发表于:2015-04-07
I wondering if "Skip profession if lvl20" is useful.
If you want to be able to leave the script for longer periods of time it would certainly be useful. Once level 20 has been reached, fall back to leadership instead of gathering stuff that will not be used. However, it would be best if we could set it per character. One might want to use a character for making Aqua Regia or Aqua Vitae for those levelling Alchemy or doing rare alchemy tasks. We don't want to disable that possibility.

Can we achieve the same effect by leaving the task list empty for lvl 20? If there are no suitable tasks, fall back to the lower prio professions.
Rotten_mind作者
§
发表于:2015-04-07

ZERO -tasklist is, big "NO", ;).

I think it works as "Option" so that way we can "Enable" punch "Options" by default what makes script,

  • level 3x profession lvl20

    • Vendor "Gathered" to get copper for refine
    • Vendor "Crafted Proff", no inventory full
    • skip task after LVL20 (better if lvl20 proff. is set ZERO)
  • fallback to leadership (excluded from Profession skip)

Because it will be "Option" then user must "disable" it, but because its "Default" set, script will allways start leveling... IF character names are correct (there is function to get char. names automaticly, just not sure if I want use it)... no more questions, -WHY IT DID NOT start task automagic!!!!

I think with those changes... script is 99.999% automatic

发表回复

登录以发表回复。