#Codrineyes TowerTesting
1 messages ยท Page 2 of 1
out of region or out of 90 or on same difficulty lvl or since the script is started
yea, I don't know highscores, so idk what you expect it to be?
do you have the thing that sets your current waves, eras and infinities to your highscore?
oh it cant check it?
I mean, I could, but it's not worth the redesign for that. It doesn't add to the functionality and provides an inconvenient extra thing to do... people already don't like the fact that my script can either start from easy or impossible, if I had to start from forest as well, that'd be another thing people don't like
:const string counting_string "ABCDEFGHIJKLMNO"
```this is what regions mean, difficulties (if I'm in Difficulty>Region) are `ABCDEFG`
I don't know what region you are. I can figure out what difficulty you're on, but not the region
but it can rotate tho?
so it only needs to compare to previous ones to the existing ones
keeping 15 value should be enough for region rotation only version?(90 for region+diff)
or 3
yea, rotating just means I'm back to A if in mode Region>Difficulty, or I just don't care about what region I am at all on Difficulty>Region
exactly
so it only needs to compare to previous ones to the existing ones
That only works if I know the region I started in, which I don't, and just because I could, it doesn't mean the script really should
i doubt that someone would need region 1 diff 3 be higher than the region 7 diff 5
if they really need it they could set it instead
"ABCDEFGHIJKLMNO" checking relative to the start should be decent
I mean, I doubt people need ratios. You usually want wavegoals, which is the same value across x difficulties and regions.
at mt15, you'll usually just ignore additional_cond entirely and just let it go until your tower dies, or just don't use my script
it does. I just don't know what region I started in. I could be in forest, desert... any of the 15 ones. Unless I start from forest myself, yknow?
yeah but it doesnt need the "forest" in what i mentioned
yes, I just need a pre-defined starting point, and forest is the easiest one to guarantee
ok lemme say it like this
give the starting region "a" and save its value as highest or lowest
and then rotate it around until it reaches the predetermined condition of higher/lower than starting or check every region till it comes back to the "a" then if the lowest/highest value is at "k" use the copied value of "k" and go till it reaches a relative value to it
Starting from forest in itself is pretty easy. I just need to add a scrollrect to guarantee I'm at the top and click on forest.
It's simple to add, hard to implement, and absent because I can't see what possible value this information gives, because it's gonna be something extra for the user, sure, but something extra that will only be used by 1 or 2 people... it wouldn't be a problem if it didn't have an impact on the architecture, yknow?
using it would imply knowing what region I'm at. I don't. I'm using this
but what do u need the region for
the thing i mentioned doesnt need the exact region just relative region is enough
I don't need the region for anything. I'd need it for what you're saking for
same way u rotate
idk which part do u need to know the name of the region?
all things i asked works on relative region
the thing you're asking for requires the actual highscore() function
The thing you're suggesting implies the user buth has the Wave_Restart.pkg software installed and enabled at startup, and also to keep an internal array, that'll need to be in the global field, which I'll need to index for information that also needs to be updated and retrieved and it's genuinely an entire mess.
I can't just add 90 globals to the AI, at minimum I'd add 1, and adding 1 has a lot of consequences
what kinda consequences?
add a protected field, come up with a naming schema so I can actually work with it, make it easy for the user to retrieve info from it, guard against potential race conditions, retrieve region data right as I'm exiting, since waves, eras and infinities are still updating while I exit, keep the rest of the AI functioning, since I'm adding stuff that the script has to interact with... and all for something that people won't even use. Not a lot of people say they use my tool, and I know that from the small amount of users actually using it, a fraction of them actually uses additional_cond, so it's not even going to be used by people
it sounds messier than regular coding
welcome to tpt2 scripting XD
nah i stayed away from tpt2 scripts cause of that :D
you sure about that?
Because this is tpt2 scripting... this is what adding something new to a script implies
how about other "main ones" requests?
they seem easier
what do you mean by "main ones"?
isn't that what we've been talking about this whole time?
that is what requires the retrieval of high scores
wasnt it this?
do you have wave restart enabled?
I can make you something that should work for you
u can ignore the 2nd to bottom on this one
ok, so just something that lets you reach a certain ammount of infinities, eras and waves?
i have almost everything
i was at old endgame but not fully
inf is enough thoose were for general use
will check it out tomorrow
oh, ok... tho you didn't have to ping me for that
hmmm how about after 90 region multiplying the value with number n (10 in my case for what i need)
I guess technically possible, but quite the pain, you sure?
oh, and definitely impossible in Difficulty>Region without changing {diff.set}, which I'm not too keen on doing
i mean after it does the skip 90 times the expected value becomes x10
not specificly region chosen(so it covers the 15x6)
i wanna try something like
make everything 10k then 100k then 1m then 10m etc...
at this point, it's probably better to have another script help you
is that hard /got tired /i might find better?
hard-ish + tired
I don't think there's another cycler being maintained, no. You can give goals crawl a shot, but when I tried to use it, it didn't work, which is what actually created Codrineye's TowerTesting
this doesn't seem to cycle through regions for me or select easy, is there like a specific ui size or something that this needs? I'm pretty sure I run smallest ui size, but not dynamic ui.
if you're still available. What resolution and UI size are you using?
Smallest so 60? And reso is 1440 by 1080 iirc maximized but not full screen
smallest ui size?
that's 50%
No dynamic rendering, ye?
I am not at PC but can tell you tomorrow, just heading to bed
No dynamic
And yeah then 50%
I mean. Normal debugging steps:
Was Region Cycling on? I assume yes.
What mode were you on? If Region -> Difficulty, you'd stay on easy for 15 regions and then won't go back to easy for the next 75 go-throughs
Yes, tried both region -> diff and vice versa, left both on overnight before and they only do 1 region.
wait, was region cycling on?
Yes
W and D were both pressed, but I've tried both toggles of D and neither cycles through regions at all in 8+ hours
I can give more info if needed when I get back to my pc, I just got in bed
wait, are you maybe willing to run a small test?
probably too late, but hey, worth a try
I can't now but can when I wake up if you wanna give me instructions
oh, it's just to run this and to send me a ss of where the dots are drawn after you've entered all difficulties. But it's a-ok
Yeah I'll do that tomorrow
Computer is too far away and I'm too tired to do it tonight, about 4 hours past when I should be asleep lol
It's too bad tt buttons aren't part of the api
oh no, my monitor isn't big enough for x1080 XD
Ok. I might unfortunately end up needing your screenshot.
That's fine, I'll get it to you tomorrow ๐ thanks for your help and all your AI projects. I was gonna make a tt region walker at one point but I got frustrated with the coordinates stuff for clicking.
yea. No kidding XD
I unfortunately can't reproduce it
Using the script I just gave you. It draws a white square exactly where it clicks, and they're exactly on the buttons.
Yeah I'll try tomorrow, have a good day/evening wherever you are
How do I do this? This looks like it's just the tower testing ai
just import the new AI, press key.x, enable region cycling, and wait for the AI to enter easy thought impossible + change region
should've given them more contrast
oh yeah it's working
I thought this was a debug thing for you
not a completed script lol
uh don't think so
checking
no, dos autominer, dungeonmap, timer, timer actions, superclick2, and factory
do you see a software called boots.d0s in the Software tab?
go into adventure and activate dungeonmap 2 times in quick succession while the debug overlay is active
it'll unlock boots.d0s for you. Install it
what's the debug overlay
I'm doing something wrong, yeah, f2 works, but it's not unlocking anything in adventure
you activated dungeonmap multiple times such that Facility AI crashes?
lol
you ran it 2 times?
yeah
import```
zZBNCoNADIXvkvW0ONCVy16juogxtUEdBydBQbx78W/TE3TzePn5ePAWSDRK1AT5awEklSFsHgrLsuzdcOBR6M4zkykXFQ0hKQbdz49DlZOC+2PC+4uYUHT6SPfL+EOhdEBDqOWqoXQgfbQu8V7KhC1b3L4C9gw5nCERqcVmW4CDyuqGFfKbd2CJn+eoo/Farl8=
gad dangit
oh, right
this```
zVBLCsIwEL1KmbVKFFcuvYbtIk3HEGqTkMxQofTuTlPahV7AzYP3G4Y3QTbJRcpwqx4TaEMu+EKgZqXU06LH5MwJ32iYsG6N+KQ9Ffu6ImEmOFR/XNnjNlD4yl4Kql+ERqotdxZJFjmehUmxc/tGi++GyK+M62aj7pFj6Xk9oGiwvRC16bUt0kI54327TIlxbuYP
delete the other one
that did it
good. Now delete test and install boots.d0s
done
run my script again
and send the screenshot after it draws 7 squares
oh. I did not change additional_cond XD
hehehe
you willing to change it yourself to true?
I can probably, what line is it on?
just set it to true?
ye
done
ok, just run it and it'll finish quickly
green box?
Wut?
Eh, we'll find that when we get 7 squares
ye
oh that didn't keep the boxes hold on
did you press f4?
no
and send a ss of it, like I did here
oh. The green square is from BigManx4X, lol
oh, and bigmanx does a canvas.clear, so that's why it cleared the other white squares
so this one seems to be working, the other one wasn't
mind giving me the other one?
Or is it deleted?
It looked deleted in your last ss of Facility AI, but maybe you put it somewhere else?
nvm. It doesn't look deleted anymore.
Mind giving me that export code?
ty
-# [AutoMod has flagged a message in #1186247659233751140.]
I just disabled it
you can just upload message as file
how do I do that lol, or do I just have to make a file
oh cool
deleted the old one
I didn't know th at context menu changed when there was text in the box
yea. That one had a counting string shorter by 1 character, which is why it would skip easy mode and, for some reason I don't remember, skip pressing the next region button
sorry fireball :)
I got this off your github pretty sure, might wanna double check that
yea. And there've been like 3 or 4 patches since then
oh ok
yeah I got it idk maybe 2 or 3 days after 1.0 came out
maybe a little more
normally this is something I could debug myself but I just find this incomprehensible to read lol and I really don't like using the external script thingy
the version I gave you is basically the one on my github but with an additional cond made for Crafter.
I added the canvas.rect debuggers, but otherwise, it's virtually identical.
The version you were using was the one that was fixed after this message
#1186247659233751140 message
ok
yea. Only way to debug it is by looking at the sourcecode. And the only way to understand the source code is by knowing how the script works... so it's unfortunately unfixable by others.
It's funny, because I gave the source so anyone can know what's going on, but I'm like the only one who can know what's going on at this point
this is the way with coding lolol
anyways. This is basically what was wrong```
; This starts the block hider
; The difficulty variable holds a counter and the current coordinate
; The counter is used to decide what we're doing based on the mode.
; It uses index("ABCDEFGHIJKLMN", sub(diff, 0, 1), 0) + 1 to count up
; A = 0, B = 1 and O = 15. Thus, I can determine what to do by simply using a contains()
;
; How changing difficulty is determined:
; If we're in mode1, we're always moving to the next difficulty. If we're in mode2, we only move
; to the next difficulty after we've counted up to 15
;
; How changing region is determined:
; If mode1, we only change the region when our counter is at A. If mode2, we always move to the
; next region
;
:const string counting_string "ABCDEFGHIJKLMNO"
;
; We shut off the hider with a </size> block if the script is running
; or if start/cycling/mode were pressed while inside the headquarters/towertesting menu
(it's there now because it's been fixed, but the index() is the original counting string)
oh, nvm. I guess I just never learned to count```
; It uses index("ABCDEFGHIJKLMN", sub(hider, 0, 1), 0) + 1 to count up
; A = 0, B = 1 and N = 14. Thus, I can determine what to do by simply using a contains()
well thanks for the help
I was about to tell you it's not working again, but I just went and redownloaded the one I uploaded lmfao, grabbing the one you sent me with the unmodified cond argument now
how do i get the script?
Update to version 2.2.6
Fixed the default difficulty order being Impossible->Easy, fixed the counting string being shorter and fixed the logic I accidentally broke when updating to 2.2.5
It did not recieve an update. I just posted the message again
how do i use this script ot farm era 1, 90/90
set additional_cond to comparison.double game:era >= 1
if i want the code to restart for accelartion for era farming what best way to do that
have a 2nd script that starts when a run starst. waits a minute then kills it if accelration is too low?
you want auto-restart?
yea, it should be safe to have the other script active
will it mess with region orders?
nope. If additional_cond is only the 1 era rule, you should be golden
Yep got it working
2nd script starsrt on new round. Waits a few seconds. And if Wave Accelartion is below sofcap [1e9 from crit jump] it Restarts round.
this will get faster as the accealrtion bonus from eras finishes at least
but once i get era 1 90/90 i can start getting inf 2 and inf 1 fore MT13
ye.
Do you think your current blueprint can survive infinity?
asking because maybe you can set additional_cond to game: infinity >= 2
no
no, you can't live in infinity?
oh wait, I'm dumb, you need 90/90 era, not infinity, mb
use bluecat blueprint i believe
but yeah this works
eventually the accelartion bonus will make the crit jump stuff less neceassary
so it gets faster and faster to get all 90/90
do you think that you can reach era 1 in chaos impossible before achieving 89/90 era?
tha tmight fail
but still era 1, 89/90 is still good
Clear all diffiuclties on each region then go to next. or do all the easy 1 first
what you recomend
no, do you think it's possible for you to reach era 1 in chimp without it being the last era?
I'm asking for a certainty so that you can have a dynamic additional_cond
ill just check manually at the end
if it gets stuck
checking chaos impossible now
yeah i think i can surive it
oh wait, I can actually get you a dynamic additional cond, think you want that?
an additional cond that changes to infinity >= 1 once you reach 90/90 era
no
Why is script defualting to the hard diffuclty
Ok so im set the script to try to autogrind Inf
[inf 1]
but it DID NOT do them easy
????
this could mean 1 of 2 things.
- User error (which I don't really like as an option)
- My script messed up (what I hope happened)
So let's rule out user error. You're not on Region->Difficulty, the difficulty is "Hard" and you just didn't wait for a cycle to complete?
i think it i know what happend
I pausd script with X and it didnt refresh it
when i F4 to reset script it "fixed it"
oh, that's because it keeps what stage in the cycle it is in the global variable hider.
I assume that's what happened here as well?
yep
can this script work with Inf Farming
where it just moves to next zone after tower dies
the script can work with any blueprint if that blueprint works.
Yes, by default if your tower dies it will move by 1 step
Updated scripts source to new macro parsing. There should be difference in functionality
sorry if it is a stupid question but i dont get how to import your ai when i try i just have a bunch of code on the left and no ai folder on the right
what? How?
Can you send a screenshot of your game screen?
never mind im just fucking dumb and had trouble finding the proper script on you page now i found it and it work
@pearl forge has earned the Spark role!
hey, all good
I made the root README.md kinda poorly so it was bound to happen eventually
where do i get the import code on the github?
Link to the section of the script
thank you ๐
does it matter if i rescale the window if i still have ui scale on 100?
You just need to have Dynamic UI Scaling off. Messing with the UI scale and the window size is perfectly ok
Is this is on. My script can get a stroke, but as long as it's off, you're golden
@drifting python has earned the Spark role!
thanks a lot though
happy to help bud
sorry to keep asking questions but will having dynamic rendering on break things?
no. Just the UI scaling.
the thing is kinda resilient. You should, in theory, have a hard time breaking it. (just UI scaling since that's not something we can solve)
don't need to appologize for asking questions. I'm happy to help lad :)
Feel free to ping me
and if you do find a way to break it, please tell me, cus problems are fun to solve :)
will do!
how do you make it cycle through the easy modes of reach region?
Region Cycling = True
Current Mode = Region->Difficulty
so w changes region cycling but how do you change mode
Really? The UI should tell you the key. Do you have global variables off?
Current Mode(Q) by default
care to send a screenshot of the script in Facility AI?
Yup, that's the old boy
oh
Here's the github link
ah yes ty so much
That boy be ancient, Honestly a little surprised it still works just because I had no real clue how to do relative vectors back then
dam i just pressed on the one at the top message
Yea, it's rather confusing. I usually get by it through simply putting the link at the bottom of the post since not many people speak in here, but I should probably restructure by adding the link to the top
oh wait, I did?
huh
I did the bare minimum tho, I'm kinda impressed more people didn't ask out of confusion XD
lol fr
ig the only drawback of this is that I can't configure it to stop after reaching era 1
or maby i just need a bp that survives only until era 1
additional_cond = era() >= 1.0
this adds an additional condition that, if met, triggers an exit
do I add that in an AI somewhere
Enter the AI and you should have a condition that reads "click here for line numbers"
yea
; Condition that specifies the line number of the action the user might want to modify
#condition_comment.info={{lua(
local msg = {
"</size>",
"<br>additional_cond adds an additional condition that could be met to exit towertesting",
"<br>",
"<br>seconds, minutes and hours represent how much time you want to pass",
"in real world seconds becore exiting tower testing",
"<br>Leave all at 0 if you don't want this",
"</size=0>"
};
return table.concat(msg);
)}}
contains(concat("click here for line info!<size=0>", "{condition_comment.info}"), "")
yea, line info
you just click that and it should tell you where additional_cond is located
line + string 16?
action 16
you edit the action to be comparison:double game: era >= 1.0
not the name, the value
Form a scale of 1 to 10, about how confusing is all of this? ๐
ah crap, sorry lad
Under any other situation, I'd just give you the freebie by just making the pre-configured script, but I don't have access to the editor rn
oh
ey, you did it
heh, care to just send a ss bud?
No, that should not be in the green conditions, there's a variable called additional_cond, you should do that with that variable.
do that with the variable...
aka edit the variables value
I'm getting to uni in like 10 mins and I'll give you the pre-configured script
alternatively, fireball, you can just give bud the pre-configured to make life for em easier XD
eyy, good job
god dam writing ai kinda hard...
Doesn't look like there's a need in that anymore.
We have an external editor if you are interested in that.
For programmers, this is much better than using the in-game AI editor.
woop woop, nicely done lad
now i can actually leave this running
now to figure out if i can can get it to press 'r' every like 20 seconds
(too ambitious)
You don't need that anymore.
After ~10 Era 1s I think it's better to keep it running.
and that's after I did everything I could to make it as straightforward as possible
not a jab at you, the internal editor is just a pain
yea you guys are skilled
if only...
so does this 90/90 era 1 things actually make 100b eras faster
coz im already like 30b through
Yeah, a lot, because of Wave Horizon.
Down to ~30 minutes with optimal kill speed.
It's no longer a feature primarily for my sanity :/
best thing you got is just inside the additional_cond to add something like era() >= 1.0 || game.time() > 20.0 so you exit at the 20 second mark
o yea
thats a good idea actually
i will go through the intense laborous process of adding another condition
you want me to give ya the preconfig?
Pretty sure the AI will move on to the next reg/dif after exiting, not sure if that's a great idea.
Like I said, with an ||
Instead of Comparison: Double, you use Comparison: Bool, repeat the original condition on one of the 2 new arguments and make a new one on the other.
im still using the ingame one...
I gave you the preconfigured one
oop, reminder that you also have to set the globals again
it does skip regions
like you want or?
preferably stays in the same one
but i dont think it makes a difference
itll get back to the same region anyway
yea it does loop back
yup, that's primarily why I didn't do the restart after x seconds thing again, just for the nature of cycling
yea its alr ill work with it
more efficient than me manually pressing it
maybe ill change it to like 1 minute to be more efficient
If you want to restart, you can make another script, or I can make you one rq
also any idea what the variable hider is?
it's my script, how wouldn't I know XD
It's to not clutter the UI and for you to not have to stare at the ugly internal workings
alr
i can still change stuff with the keybinds yea
alr its working really well currently so imma leave it for a little
thx for all the help
this one. Use this one XD
oh alr
I forgot I turned to the old export format to dissect the external editor XD
oh god i have like 3 copies of the same thing
oh no it breaks itself now
it lags out alot then just turns off the ai
mhm, yea. I did not realise I messed up the AI on my laptop XD
you changed the timer to 1 minute?
nah its 80 seconds now
coz i felt like it lol
it doesn't really matter
i can change it myself
here's the non messed up version XD
ty
wait how in the hell? lmao how did I break it XD
it seems to be working for me
i just deleted the variable hider
so i could change stuff
but when will it change to medium?
does it know when all easy is done
you did what?
that breaks a lot more things. The thing I broke is just cosmetic, if you changed the name of the variable hider, a lot of things are now broken
oh
it does?
nothing seems to be broken lol
alr ill add it back
imma leave thisi over dinner be like 30 minutes
Yea, if you changed something, just delete it and import this one cus I just fixed the cosmetic problem
So, you asked what the variable hider is for. This is how the UI looks like with the variable hider hidden, and this is what it looks like with the variable hider shown
Obviously, the biggest different with having no variable hider is how the UI will no longer hide when the script shuts down
This script has had a lot of different versions.
The import code is found on the github README along with instructions for how to use it.
For post history, this is the top of the post #1186247659233751140 message
alr ty
@manic juniper care to pin this message pls? ^
and to unpin the old one at the top
yay it works just got about the easy difficulties done
thank you
Update to version 2.2.7
Changed the hiding blocker name so the <size=0> is no longer parsed by default and fix repo-wide typo curent with current, including Current Mode(Q).
A place where I dump random stuff in organized locations - Codrineye/Codrineye-s-TPT2-Compendium
The script has been updated. While this is major, nothing in the source is changed, so I haven't bumped the version.
Codrineye's TowerTesting now works even with dynamic UI scale on.
how would you change the additional_cond if instead of a certain time, you want the tower testing to end after reaching a certain wave||/era||||/infinity||?
if you wanted to exit when you reach wave 1, additional cond would be wave() >= 1.0.
Think what condition must be met for the script to exit
it doesn't seem to work with the zoltraak bp, like it runs then stops running immediately and does absolutely nothing, while the bp continues tower testing like normal
ok, what's your goal and what's inside of additional_cond?
my goal was simply to get my ||infinities|| to 1 million, so i set it to compare double, and the things i wanted to compare being ||game: infinity >= 1000000||
unless i should use the bool not before compare double?
Ok, so the value of the local variable additional_cond is that comparison double, ye?
yes
ok, welp. When you say like it runs then stops running immediately, what does that mean?
It's gone from the running scripts?
Can you send an mp4?
Or in VC?
i can use steam video record to make a video, yes
can you gimme an mp4 of this happening please?
sorry for the quality, had to be less than 10MB, since i don't have nitro (spoiler cause MT 12-15 stuff)
as you can see, it's active, and that's the only line i changed
i started in the ai editor, but the video should show me leaving the editor, starting the ai script, then starting tower testing like normal
oh gad dangit, wtf did I do XD
unless i was supped to press a key, which i didn't do (also how do u do that witchcraft of knowing which key you press outside of the impulse)
at which point, it's my own error
I do know the zoltraak script does pause the game for the toolkit at the start of every new round
Yea, it wasn't active, which idk why the variable hider kept hiding stuff. You're all good, dw. I royally messed up
wait what?
yea, so I can't actually reproduce it which makes me think that you're using an old version?
here, import this
i used the version at your github on this page https://github.com/Codrineye/Codrineye-s-TPT2-Compendium/tree/main/TPT2 Scripting
It's preconfigured
that version changes constantly and this script has no user-facing versioning, the versions are in the docs
same result with the thing I asked you to import?
hmm, can you gimme the other scripts that are running?
pics of them in the editor?
nono, just export
why does the exporter not use packages, even if part of the name
so a bunch of export strings good (all be in a text file)?
anyway, these are the scripts i used that could be used during tower testing (rest were things like the adventure script, autominer, stuff like that)
each line is a script outside a package or a package
I mean, you could've also just exported all and I would've isolated the ones of importance, but ty lad
The thing I find most likely is that you've got some leaking hiding block that covers my ui
well, it's not about drawing, it's about the variable names
in any case, I'll get back to you in like 30 mins or so
ok
you could test out if turning off some of your scripts fixes it
when it's the only script enabled, it still doesn't run
what?
Ok, well that's... And that's after you refreshed the overlay?
So, you press f4 to turn off the overlay, then f4 to turn it back on. This refreshes the AI overlay and removes all global variables
yeah
how?
and there's no double Codrineye's TowerTesting script enabled, right?
This is something super weird. Do the logs have something maybe?
!logs
%userprofile%\appdata\locallow\Fire Sword Studios\The Perfect Tower II
Current log: perfect.log
Previous log: perfect.1.log
yup, that's virtually empty
previous log was yesterday, and i didn't try your script till today
You've really stumped me with this. That's.. thank you lad, I didn't expect to get this
not exactly a lad, but you're welcome
Oh, sorry friendo
-# almost 40 years alive and i still can't spell
it's alright
thought your script was just one script, didn't realize you had an entire package of scripts
probably would be helpful if every script was in the package, to be fair, as i only stopped at the 1st new script i saw, and since all packagesless scripts are above all the packages, i just stopped at the init one outside all packages
unless it was just 1 script
Yes my script is indeed the size of just 1
alright, so just importing the script you have gives me this
So I can safely say that my script is not failing to show globals
And none of the other scripts you gave use a <size=0> block, so... are you willing to give me an export of all your scripts?
hope it helps
ty
Oh, was AllCat ACat active?
blucats script has never played nice with my script
even tho, no, that wouldn't make sense
nono, I love it bud :)
I'd mention my computer stats, but those are already in the log i posted
Wait, is Toolkit:Clear active?
i don't think so
Well, Zoltraak:Main does use an executesync
Altho, my script should, in theory, run before that happens, but who knows, maybe it does cause some weirdness? idk
Altho, even if the global unset was the culprit, importing Zoltraak and Toolkit still don't let me reproduce it
in case anyone else is reading this, it's solved, the answer was i didn't push X to start it
could it be possible to have it go through just the difficulties in the current region?
Yes, that's just turning off region cycling. Region Cycling(W) = false means that you will not cycle through regions
oh ok
Update to version 2.2.8
Updated the README.md to now highlight the impulse keys within surface view so it's hopefully harder to miss.
Added a 6th condition that includes the current script version so you can know if you should update the script or not
only thing that bugs me is while using zoltraak, the scripts it used get doubled sometimes for no apparent reason at the start of a run but only while this 1 is running at the same time, usually when switching to another difficulty/region
I think a good fix would be to replace the "wait for next frame" one to be changed to "wait for 0.1 secs" but I'm not sure which line to change, as there's more than 1.
zoltraak is just pretty easy to duplicate unfortunately.
And I can't really sacrifice on the timing given the purpose of this script
I mean, the goal is relatively simple The scripts goal is to get you in a game of towertesting as fast as possible and to get you out of the game as soon as it can.
I'm pretty sure I looked at zoltraak for like a few seconds and was able to figure out why it's so easy to duplicate, but I forgot what the problem was
it's just sad that the caster script gets doubled, so the module that multiples damage by a number the closer to 50% health the tower has doesn't really work when both instances of caster ends up putting it somewhere lower than 50%, rather than near 50%
wow...
I mean, the script is sensitive enough that just exiting and re-entering manually can duplicate it.
I did not know mp would let it be this way if duplication can actually have negative side effects
probably cause all the wait lines in mp's scripts don't have a check for if tower testing is still going, is my guess
all of em would run out pretty fast if all of em had that check (and the goto at the end be a change to goto-if, with the if being "is tower testing active")
It does have handling of duplication, but some of it won't work if the BP was restarted before RakStak finished casting
I have a work-in-progress updated AI that actually solves this
(This being said, I never used auto-switcher scripts, and I'm not accounting for them in my AIs)
Well, the problem isn't auto-switching scripts, the problem is that just exiting tower testing and re-entering creates script duplication
Yeah, it's 'cos Main is running RakStak in sync, and afterwards starts Caster
So if you re-enter before RakStak concluded, old Main is still running
New Main tries to clear old Caster, but old Caster is not there yet
And eventually both Mains start an instance of Caster
Anyway, the new version doesn't run RakStak in sync
Yea. Like, thing is, you don't need to take into account towertesting cycling scripts because unless they do something dumb, they can't really create script duplication for a script that prevents duplication
Ah, that's good to know
yeah, just adding a line that kills the script before executing that same script would prevent duplication (if the script isn't already running, the line killing the script does nothing)
It does have such a line
A bit earlier in the code, but it usually works - if RakStak got to finish
well, the problem with mps scripts is that the thing that duplicates is the main script which has the newround() impulse. and the script can't kill itself because then it just can't continue with its responsibilities
the problem is there is an edgecase where rakstack doesn't finish before it starts again
Anyway, moving Caster before RakStak might actually work as a quick fix - I think it only starts doing stuff after Rak should be done anyway
there are a lot of problems m8, the timing of rakstack is just one of them, but in theory, mp should've fixed it
As I've said, I do have a fix, but it's part of a bigger update and I still need to finish it
oh, I see
I'll probably do it after I finish clearing the current zone in SpaceChem ๐
Is it possible to use a variable to keep track of difficulties/regions passed, and if the tower test ends via the additional condition, to increase the value, and when the value gets passed a point, stop tower testing (and itself) so the script doesn't endlessly loop starting then quitting tower testing?
I think it can be done
w-wut?
First of, you want the script to have a self stop? That's a no-no. The point of the script is literally to blindly go through towertesting for you to idle. It's meant to keep on running, so I see no reason why you'd want it to end without user input.
The other things are, I don't really get why you're keeping track of difficulties/regions
Ok. So what do you want to accomplish?
Because I made the script so it's rather flexible, and maybe you're looking for something that doesn't require a redesign
I'd show a video, but I'm currently pushing for a better highscore
I take it that your goal is to get better highscores then?
yes, for the ||infinity stones, specifically, the 400h skip||
And your additional_cond is set to your desired highscore, ye?
yes
Ok. And I assume your problem is that, once the script reaches that highscore, you want the highscore to increase, no?
no, because I can't have the computer running all the time
I mean, if the computer isn't running, then neither is TPT2, so my script doesn't change anything?
cus I am trying to figure out why you want the script to have a self stop
Also, we don't have persistent memory, so even if I was to track what region/difficulty you're on and count the success, that data is gone as soon as the AI overlay turns off
Workersโข?
I'm just gonna wait till my current run is over, which may take a couple hours, then get a video
What is the video even meant to show?
what kind of nonsense question is that? it's to show exactly what I meant
I'm terrible with words
I mean, how?
how would you show the behaviour you want in a video?
And if you can show the behaviour that you want in a video, what's stopping you from describing the behaviour you want?
I mean. I'm not adding that without a reason outside of just some people wanting it.
but also, that's at minimum 90 characters. I don't think worker names can hold that much, can they?
I am not sure about the max length. Probably can't.
yea, we only get 32
this is what I was talking about, just ending it when it finishes easy (as it was set to impossible -> easy)
but i guess if it's not doable, then it's fine
Yea, that doesn't make things any clearer.
so why do you want to track it?
Fireball, maybe you can understand?
it was meant to be a way of tracking the difficulty when there is no current way to simply get the current difficulty/region when tower testing
sorry I didn't say that before
mp, please, for the love of hell, fix your damn script so it doesn't have a self duplication problem.
It hurts to see the execution stack with this many instances of the same script
Yea, that's kinda the only thing that tracking the current region/difficulty lets the script know. The question is why do you want that
For what purpose?
for the script to stop tower testing, which i said here: #1186247659233751140 message
gets passed a point, stop tower testing (and itself) so the script doesn't
EDIT: bolded the part where it said to stop tower testing
ok, so the script stops tower testing?
But why do you want the script to terminate?
I already fixed it, mostly - it no longer duplicates the scripts that are causing serious problems when duplicated. I have no further plans on fixing Main currently, though - it duplicates 'cos it has a lot of wait clauses
I fail to see a reason for the script to terminate by itself.
Termination through user input? Yea. But automatic termination? That doesn't make much sense
But there is a workaround: make a SuperMain that terminates Main, starts Main, and then ends
And move the triggers from Main to that one
Ok, so it's fixed?
nicely done.
I just pinged you cus I saw the mess in the video and went "gad dangit man" cus it's your script.
The parts that were the biggest issues are fixed. Main will still duplicate as seen in the video, but that's not too bad, and there's an easy workaround
So please. I want to understand why you want the script to automatically terminate
What do you gain from that? Convenience?
what would the script do when at town? be idle?
What do you gain from that? Convenience?
yes
but again, if you don't want to do it, it's fine, just forget about it
the script is literally never idle.
You're making it be idle for having region cycling off.
And hey. why do you want the additional cond then? mt15 isn't an MT where it's beneficial to exit the game to get a bigger boost, is it?
is this script wanted so that the script won't just continue going through regions an instantly leaving after hittting the goal?
wut?
from what i know, the script will continue cycling after its supposed to be done with whatever its doing, so itll go somewhere, hit the additional cond instantly, and leave
Yes. The point of additional cond is to have that desired ceiling everywhere.
That's why you'd usually set the goal to infinity 1, enable region cycling and it'll be done in like 2 hours.
In this case, tho. I don't really even see the point of using additional_cond
mt15 isn't an MT where it's beneficial to exit the game to get a bigger boost, is it?
I think you're just stuck on that thought, and you are just assuming i have to be thinking the same thing
also what if you wanted to get 100b infinities in all 90, and needed to go on vacation for a few weeks cause someone important to you demanded it, you already had 100b in several of em already. What are you supposed to do, magically teleport home to fix it?
EDIT: reminder that the "what if" part of this message means the rest of the sentence is a hypothetical, it may or may not be true
I mean, the solution there is just to not have an additional cond?
just have it run until it dies. I'm sure it'll be fine.
But, you can also make an additional cond that only kicks you out after x amount of time has passed
inf 100b doesnt really take a specific amount of time though
if you're already doing continuous infinite damage and using a bp like zoltraak, the tower likely won't die once it reaches 100b in any difficulty or region
use &&
additional_cond = game.time() > 120.0 && infinity() > 1e12
This way, additional_cond stays false for as long as you aren't at 100b infinity, and when you do reach it, it'll only kick you out once you've been in the game for 2 minutes.
and you can nest additional "comparison: bool" if you need to check additional things
I insist because you are a user that has made a suggestion which I do not understand, meaning that you want something from the script which the script currently doesn't provide, so, if there is a problem which I've missed, it'd be beneficial to know what it is you want to achieve.
yes, you've got a lot of blocks to work with.
I don't know why you'd want to know the current region/difficulty when you can already do so much with boolean algebra.
I thought it was possible to do it, considering your script runs this line when it stops from additional_cond
And I've already stated, serveral times, what I wanted.
But if the question is WHY I wanted it, as to know my motivation, that's a different question altogether
The reason I brought up the bigger boost is because I was reaching out for any conceivable reason for why additional_cond would be useful in this context. I don't know what blueprints are capable of, and just like this script, I don't need to know. The thing I built around is hypotheticals, the movement being smooth and the user being able to leave the computer and still reach wavegoals.
also, you said you didn't want to keep your computer running. If you're going on vacation, why are you keeping your computer running.
Also also, if the point is for someone important, I'm pretty sure TPT2 can take a back seat
I feel like you're just continuously trying to ragebait me, somehow
if you don't want to do it, just say it, and I'll accept it
I retract my suggestion then
i see the reason why this might be wanted, but this could also be accomplished with another script that just counts to 90 or something, or manually counts every region and difficulty to check how many infs they have
Yes, that is very easy. It's just this```
; Don't modify the job if we exited because of key.exit
; Otherwise, mention the reason we ended the run
{job.set(if(
contains({job.get}, "Exit caused by") || not({status.get}),
{job.get},
"</size><color=#0AFF00>Exit caused by " . if(
additional_cond,
"additional_cond",
if(isTowerTesting(), "tower death", "an external cause")
) . "</color>"
))}
the problem isn't knowing if additional_cond is true. The hard part is knowing what region and difficulty you're on.
Pokota showed that knowing what region you're on is possible thanks to the era elements, and the script is able to (tho in a rather weak manner) track what difficulty you're on.
The problem isn't of a want/can't. The problem is that I fail to see a reason behind it which benefit the user.
Especially since, 99% of the time, additional_cond is just 1 single comparison: double, and that boolean has a lot more blocks you can use.
The point is to make life easier for everyone involved. And I can't see any possible benefit which is more than what people can already do.
you can see a reason? What is it?
Please. I literally just need reasons for why this information could be useful
the reason i see is to force the script to not be idleish if youre away for a while, though this isnt really a huge thing i think, unless youre going on vacation for 17 weeks or something
Ok, but this kinda solves that, doesn't it?
You're not idling, you're doing towertesting. Doesn't that give some bonus? Resources/idk what.
yeah it would get xp and frags, which makes it not do nothing, which would help
But it's also like. What value can my script provide?
If you're going on vacation and want to keep TPT2 running, why pick a region cycler script instead of a resource/frag farming script?
to get inf 100b
ok. If getting to inf 100b is useful enough for my script to be picked, then idk why you'd go for the script shutdown instead of the game.time() timer
because not everyone has perfect recall and can just know or remember how long a climb can last
codboy suggested 2 minutes and inf 100b, so the run will always last at least 2 minutes
well, that's why you've got the wavegoal guard.
Again. additional_cond can only make the game exit if it becomes true.
That's why you have <timer> && <wavegoal>. If you wanted either the timer or the wavegoal, then you'd use ||, but we want an && here to create a guard
i made a script that at least stops the current run of CTT
EDIT: this doesn't quite do what i asked for, but it was what I'm willing to make, to do that (what i really wanted), it would use another int variable that adds 1 to itself every time the the difficulty changed, then once it reached enough to have gone through all the difficulties (be it for the 1 region, or all the regions, depending on a certain global bool), it would then force the script "Codrineye's TowerTesting" to end
the export (modified it a bit from the image above, 1st line points to line 7, with lines 6 and 7 changing places):
jVLNTsMwDH6VKRdAQiFlSENoTECvnKAHJDqktPWCtS6pGodqm/bupNnKoa2AiyX7+7HjeM9sXmNFlt1N3vdM5oRGh4SlTggBCjTUmHNlyOAqzXIPk9QU0OsQZyGKQVyp0mSy5JkxJVdAPfFNSs9AcZK8OM0uJ2yosb9qelB0jJ1TFHWTNxLJacIyEKbaBH40VXIDHG1iGqgTsIRaBXE3gtNj/VtpMbe4g3uxiD/ogebpVZsuHv3uvuD87eLkcmpvyVSjLrexKWrUsIUzOxlM0TIEmUbzBnVhGm4/TTPwWVGro6NudCHiH2/q/cOfo4vZq0e8gi09P3OF/1x/MpEQPvX0An+uqCXgpnKlheNVrWHLd0Gn/f59iXVevlTJfC1VqLaps/DUmVPt4LA8fAM=
as it is, it just stops it after the current tower test
Well. that is just what key.x does
Oh, and you managed to unset the correct variable? That means your script breakes the hiding block, and using global.unset is already bad even if it didn't break the hiding block
yeah, but key.x (whatever that is) does it immediately, mine waits for tower testing to end before stopping it
Oh, you'd like that?
It's super simple to do, and it doesn't really affect ease of use. If someone wants to exit quickly, they can just press key.x and then key.e
the point was to wait for it to end, not end IMMEDIATELY
yea. I just remove the status check inside the game loop and it should be what you want.
I also have an instance counter, to prevent duplication, which used to be the main benefit of key.x also instantly exiting the game
Update to version 2.2.9
Modified the gotoif() inside of the additional_cond loop to no longer check if the script is active. This means that you can no longer exit towertesting by shutting down the script with key.x.
If you want to exit after shutting down, you will have to use key.e
made an edit to this message (the 1 I'm replying to), that the script i made didn't do what I wanted, but it was what i was willing to make
additional_condition is a local variable, right? not a global?
i can work around that; just set my own global and set additional cond to test that instead
Yeppers. Your global, not mine. if it was my global, I'd need to keep it in the hiding block, and it'd be an unprotected global variable which I'm not a fan of
Update to version 2.3.0
Add an incrementation lock that prevents the script to advance the counting string blindly.
It will now only advance it if it actually made progress by entering another game of towertesting.