u93132 / ShinyHunterUSUM

A python based program with GUI that assists user to shiny hunt in Ultra Sun/Ultra Moon
GNU General Public License v2.0
1 stars 0 forks source link

Type: Null Shiny Hunt Not Working #2

Closed nellikb closed 5 months ago

nellikb commented 5 months ago

Hi,

Thanks for making this cool program, I just successfully used it to get a shiny Poipole!

Next I've been trying to get a shiny Type: Null but unfortunately it's not working: After saving next to the event and starting the program it successfully starts the event and receives Type Null, resets and starts attempt #2 but after the game loads the bot never actually moves to the right to trigger the event.. The program just says 0.00% shiny then resets the game and repeats..

u93132 commented 5 months ago

That's interesting. Perhaps there is a lag after loading.

Please try the v0.3.2 and let me know if the issue still exists.

nellikb commented 5 months ago

I'm having this issue using v0.3.2 (downloaded from https://gbatemp.net/threads/shiny-hunter-usum-afk.648378/). I only have one system (2ds) with homebrew installed so I've got no idea about delay differences? I can make a snort video later if you'd like?

I just tried downloading your releases from here to try instead but windows defender is flagging all of them as virus's when I try to download them?! (Trojan:Win32/Sabsik.FL.A!ml)

u93132 commented 5 months ago

Ah... yes. That's the issue from Pyinstaller (a module to pack Python code to an exe). Windows often kills the executable file if Pyinstaller packages it at other PCs.

Are you using Win10 or Win11? Or, if you know how to run Python code, I can upload the Python version and dependency so that you can run it from Python IDLE.

BTW, your machine is N2DS, right?

nellikb commented 5 months ago

Ah I figured it'd be something like that.. It doesn't trigger on the GBATemp exe file though so whatever is different about that one seems to work?

Yeah N2DS + Win 10. Unfortunately no real coding experience here, I'm just an electrician that knows the Github releases page exists XD.

u93132 commented 5 months ago

I would try one thing which is to put it in a rar zipped folder. Please try again later.

nellikb commented 5 months ago

Hey so I finally had time to try the older versions (0.3 / 0.3.1) and unfortunately both of them have the same problem.. The bot still never moves to the right to trigger the event - made a quick video: https://youtu.be/JgYWgbJ1yaY

FYI when manually hunting I just jam the joystick to the right and leave it there so I only have to press A/reset, Programming this should work for the bot also/fix this problem?

Do you plan to update this app to fix this? Because I'm thinking about doing the full party/box trick to get past the slow Null event and hunt for Blacephalon for a while instead (resets are twice as fast receiving Null at Aether Paradise instead anyway, even if I have to do it manually). Does this bot also work for Blacephalon?

u93132 commented 5 months ago

You tried the latest 0.3.2 in a rar file on Github?

Edit: Oh i see what's the issue. The "naming" is an unexpected event. I will fix that.

u93132 commented 5 months ago

Please allow me some time to look into the code.

u93132 commented 5 months ago

If you prefer to go hunting Blacephalon first, it should be ok.

Please save in the middle of the grass that Blacephalon shows up. Note: there should be a point that allows you to move up and down without gradually moving out of the grass.

u93132 commented 5 months ago

In case you have time, please try this to help me debug.

  1. Save at a random place
  2. Start the Type: Null AFK procedure.
  3. See if the character is moving to the right at the beginning of every run.

Mine is moving to the right at every run, so I am confused.

nellikb commented 5 months ago

Just tested it, mine definitely only moves to the left on the initial attempt and only for about a second at best. Second+further attempts nothing happens. I can upload another vid if you'd like to see the behaviour yourself?

nellikb commented 5 months ago

Also - I just redownloaded the 0.3.2 release file from github again to be sure - both files appear exactly the same.

I'm wondering if this is a PC issue on my end so I'm going to fire up my old laptop and see what happens. I'll report back soon

u93132 commented 5 months ago

I uploaded the v0.3.2 Test. You should see the debug message below. Let me know if the "Moving to the right" shows up at every run.

image

image

nellikb commented 5 months ago

Okay done some experiments - The issue seems to be the timing for the move right command - it's sending it before my 2DS has even passed the trainer intro screen! See vid: https://youtu.be/UKecfjvZxJI&t=40

nellikb commented 5 months ago

Just tested it on my laptop (fairly fresh install of win 10) + Python 3.12.2 + your program and the result is the same.. Also Windows Defender REALLY doesn't like your files... I'm hoping it actually is just a false detection XD

u93132 commented 5 months ago

Oh! If you mean the Windows Defender is telling you some features are blocked. That is normal because the program has to send messages to the 3DS.

I will look into this issue soon. Seems like some functions are broken. Are you using 32-bit OS or 64-bit OS?

BTW, if you are running the exe file, there is no need to install Python. That is why I pack it as an exe file.

nellikb commented 5 months ago

Ah ic. I just saw the message on the main Github page saying python 3.6 or newer is needed so I installed it. I'm using 64bit win 10 on both PC's.

As for defender - it won't even let me download the rar file with protection turned on, deletes it immediately and can't reverse it - have to disable defender, download file, extract, turn on defender, it immediately detects the exe as a virus & quarantines it, manually allow it, get another virus warning, THEN the file will open and finally the usual windows firewall message. And it has been the same process for every version I've tried so I'm sure you can understand my hesitation XD..

Watching the vid again, the Move Right command seems to be getting sent around 5-6sec after a soft reset but it takes my 2DS about 11 sec to actually get ingame. I'm guessing the N3DS loads significantly faster? Hope it turns out to be an easy fix!

I'm not in too much of a rush to bypass Null, I'm just trying to get the shiny before bank shuts down next month it and becomes impossible to get legitimately.. I'll continue hunting Null manually for now!

u93132 commented 5 months ago

Quick reply here. I don't think Nintendo shut down Pokemon Bank soon. Instead, they are shutting down the 3DS network service in April.

Yeah, the defender is annoying and not friendly to home exe maker for Python now.

nellikb commented 5 months ago

I really hope you're right, there's still plenty of shiny hunts I want to do on the older games! It'd be nice if they could find a way to keep backwards compatibility around but I get the feeling they're just going to abandon all the older games. I'm currently in the process of moving my shiny collection to Home now anyhow just in case.

u93132 commented 5 months ago

There seem to be some bugs in the version of Python I am using. Please try the v0.3.2.1 and let me know if it works.

It is not the difference between N2DS and N3DS (I have both). It is more likely the time control is not working correctly (press a button for how many seconds and rest for how many seconds until the next button). Therefore, it is a deeper issue. I hope another version of Python works.

nellikb commented 5 months ago

Yeah just tried v0.3.2.1 and unfortunately it's still exactly the same - except windows defender didn't trigger this time!

u93132 commented 5 months ago

Ok. I put a temporary solution to lock the Cpad to the right (v0.3.2.2), but I am afraid this issue will also affect the check of shiny poke. Once it works and moves to the right, please let me know the message on the text box ('0.00% Shiny').

If the procedure always shows 0.00% shiny, there are other things to check.

nellikb commented 5 months ago

On the first attempt it receives Null and shows 0.63% shiny but now from the 2nd attempt onwards while it IS moving right it's not hitting A long enough to actually receive Null... I think you've got more timing problems to sort out XD

https://www.youtube.com/watch?v=-fcqxcYwg7Q

u93132 commented 5 months ago

Man, at least we solve the creepy Microsoft Defender. Guess it doesn't like old Pythons.

I want to calibrate the timer. If you run the procedure (v0.3.2.3) at least two cycles, that would be helpful. The procedure now shows the timer at the beginning of every run. Mine is like this:

image

nellikb commented 5 months ago

Here's another vid, hope it helps! https://www.youtube.com/watch?v=gFbTb8myM24

u93132 commented 5 months ago

This time let's check the A button hitting (v0.3.2.4)! Sorry for your time. lol.

nellikb commented 5 months ago

All good - I've actually had the week off work but here in Brisbane it's been raining every damn day so I've got plenty of time to mess around inside! Seems like I've been keeping you up late with all this too anyway!

Jeez that's a lot of A button mashing!! https://youtu.be/BfKoQirnj30

My manual solution is about 20x slower: https://youtube.com/shorts/Idl7MxRE254

u93132 commented 5 months ago

Now I see the exact issue: Between the very fast A button hitting and the slower A button hitting, there is an L+R+select button event to trigger the soft reset. But somehow, the soft reset is delayed for several seconds and happens during the slower A button hitting (which is re-entering the game). The good news is I see the shiny poke check is working (1.xx% Shiny).

I will take some time and see what I can do since this is quite weird. BTW, California here is raining more than usual also.

The physical bot is fantastic, lol.

u93132 commented 5 months ago

I added an 8-second delay in the procedure to ensure the slower A button hits after the soft reset. Let me know if v0.3.2.5 works for you.

If it works, I will add one more sanity check for the soft reset in the procedure.

nellikb commented 5 months ago

I think you're onto something, this version seems to be working! Though after the vid ends the next shiny check was '-0.34% Shiny' (there's since been a few more) and a few resets later there was a single '0.00% Shiny' reset. As of this post it's now done 16 successful resets! https://www.youtube.com/watch?v=JW6liV1tGvI

My bot may be simple bot but it's helped (at ~800 using it now). Resets take about a minute so not that much slower vs yours! I'm actually curious to see if the servo would last long enough to find Null.

Hopefully the weather improves soon for both if us then!

u93132 commented 5 months ago

Glad it works, haha. A negative number is OK, and 0.00 may be an issue. If the probability of 0.00% is less than 5%, it is acceptable.

nellikb commented 5 months ago

I'll let it run overnight and see what happens. Here's the results thus far:

Step 5: Start receiving pokemon... Receive 0066 - 18:16:35 - 9.16% Shiny Receive 0067 - 18:17:23 - 9.16% Shiny Receive 0068 - 18:18:09 - 1.54% Shiny Receive 0069 - 18:18:55 - -0.34% Shiny Receive 0070 - 18:19:42 - 0.63% Shiny Receive 0071 - 18:20:29 - 0.63% Shiny Receive 0072 - 18:21:22 - 4.58% Shiny Receive 0073 - 18:22:09 - -0.34% Shiny Receive 0074 - 18:23:00 - 0.00% Shiny Receive 0075 - 18:23:45 - 0.63% Shiny Receive 0076 - 18:24:30 - 1.54% Shiny Receive 0077 - 18:25:17 - 0.63% Shiny Receive 0078 - 18:26:02 - 0.63% Shiny Receive 0079 - 18:26:48 - 0.63% Shiny Receive 0080 - 18:27:33 - -0.34% Shiny Receive 0081 - 18:28:18 - 0.63% Shiny Receive 0082 - 18:29:04 - -0.34% Shiny Receive 0083 - 18:29:52 - 2.63% Shiny Receive 0084 - 18:30:48 - 2.63% Shiny Receive 0085 - 18:31:33 - 0.63% Shiny Receive 0086 - 18:32:21 - 1.54% Shiny Receive 0087 - 18:33:12 - 0.00% Shiny Receive 0088 - 18:33:58 - 0.63% Shiny Receive 0089 - 18:34:43 - -13.07% Shiny Receive 0090 - 18:35:28 - 2.12% Shiny Receive 0091 - 18:36:13 - 0.63% Shiny Receive 0092 - 18:36:59 - 0.63% Shiny Receive 0093 - 18:37:44 - 0.63% Shiny Receive 0094 - 18:38:32 - 2.63% Shiny Receive 0095 - 18:39:19 - 1.54% Shiny Receive 0096 - 18:40:03 - -0.34% Shiny Receive 0097 - 18:40:59 - 4.58% Shiny Receive 0098 - 18:41:46 - 0.63% Shiny Receive 0099 - 18:42:31 - 0.63% Shiny Receive 0100 - 18:43:17 - 1.54% Shiny Receive 0101 - 18:44:08 - 0.00% Shiny Receive 0102 - 18:44:59 - 0.00% Shiny Receive 0103 - 18:45:46 - 0.63% Shiny Receive 0104 - 18:46:31 - 0.63% Shiny Receive 0105 - 18:47:20 - 2.63% Shiny Receive 0106 - 18:48:05 - 1.54% Shiny Receive 0107 - 18:48:52 - 6.42% Shiny

u93132 commented 5 months ago

Just for my own curiosity, does the 2DS crash very often (Luma3DS error message)?

nellikb commented 5 months ago

Well no crashes so far hunting Null, but my 2DS did crash a handful of times back when I was hunting Poipole (1980 resets), I just restarted and carried on.

I had plenty of problems just trying to get USUM + the NTR streamer + your bot to play nice until I figured out I also had to turn on Enable Debugging in Luma and apply the NFC patch in NTR to get it all to work (might be a good idea to add that to your GBATemp setup guide BTW).

u93132 commented 5 months ago

Yes, same for me. The Luma3DS crash is basically nothing I can do. The issue highly relates to the soft reset, and zbash (the guy on GBAtemp working on improving NTR early this year) already tried his best since he is not the original developer.

Regarding the NFC patch to enforce the N3DS connecting to the internet during gameplay, there is a workaround you can try. Here are the steps: (1) Enable InputRedirection in the Luma menu when you are at the 3DS main menu. This enables the debugging mode at the same time. Also, the InputRedirection can only be turned on when the internet is connected. (2) Turn on the NTR. (3) Enter the game. Then, you don't need the NFC patch since the debugging mode forces the 3DS to stay on the internet connection.

I am also developing some more useful functions for the Shiny Hunter, ex: the infinity mode of hunting at grass areas. You only have to prepare many many Pokeballs and stand in the middle of the grass, then the Shiny Hunter will take care of all of them (find a shiny Poke and catch it.) For now, it is around 1~3 shiny Pokemon per day. This is a real AFK since there is no soft reset (only running away from the battle), which means almost no crash, and you can leave your 3DS on the desk for one whole day or more.

nellikb commented 5 months ago

Hmm interesting, Well it works well enough for now! I'll try your procedure next time I get a crash.

The grass hunting bot sounds cool! If you're developing more functions, here's some more suggestions:

Also I don't know how hard this would be to make, but I've always wanted a simple bot to manually automate repetitive tasks for ALL DS games - how hard would it be to make a program that simply reads a simple script written in a .txt file or something and sends them to the DS via input redirector? ie something like

Hold Dpad Left
Wait 100ms
Release Dpad Left
Hold A
Wait 100ms
Release A
Wait 1000ms
Hold L,R,Select
Wait 100ms
Release L,R,Select
Repeat x100

Anywho, we've finally got some actual sunshine here today so I'm off for a 25km bike ride!

u93132 commented 5 months ago

Hope you enjoy your bike trip, lol. I uploaded the v0.3.3 as a solution to the delayed soft resets. Let me know if there are other problems!

nellikb commented 5 months ago

Sorry got a bit distracted today, I'll give v0.3.3 a go overnight tonight. Amazingly the bot has been running perfectly without a single crash all day - up to 1700 resets now!

u93132 commented 5 months ago

Hmm interesting, Well it works well enough for now! I'll try your procedure next time I get a crash.

The grass hunting bot sounds cool! If you're developing more functions, here's some more suggestions:

  • A basic SOS hunting bot (esp. for the 3 call rate hunts which can drag on for weeks..) though this could probably end up getting quite complicated as some hunts are quite tricky.. Maybe just something that can just repeatedly spam Adrenaline Orbs to pass turns / get another pokemon to appear would be useful!
  • Surfing Pikachu reset bot
  • Shiny Partner Cap Pikachu reset bot
  • Daycare shiny egg hunting bot
  • Shiny Fossil pokemon hunting bot

Also I don't know how hard this would be to make, but I've always wanted a simple bot to manually automate repetitive tasks for ALL DS games - how hard would it be to make a program that simply reads a simple script written in a .txt file or something and sends them to the DS via input redirector? ie something like

Hold Dpad Left
Wait 100ms
Release Dpad Left
Hold A
Wait 100ms
Release A
Wait 1000ms
Hold L,R,Select
Wait 100ms
Release L,R,Select
Repeat x100

Anywho, we've finally got some actual sunshine here today so I'm off for a 25km bike ride!

Actually, for SOS battles and eggs, it is very hard to make it fully automatic. However, there is a good part regarding the sos battles -- infinity Ditto chain. This requires much preparation work, but once you have these required Pokemons, the chaining part can be done automatically. I developed two functions for this, one is to find Ditto in the grass, and then manually arrive at the situation that you only need to throw Adrenaline Orbs. After that, the second function is to hunt shiny Ditto in the SOS battle.

For the eggs, a developed three functions: (1) receiving eggs, (2) hatching eggs, and (3) releasing non-shiny pokemons. But unfortunately, wirelessly control the 3DS is not 100% reliable, which means if a packet from the PC is not received, then the whole procedure is broken. Especially the hatching part, so I am still thinking of a better way to achieve this.

BTW, if v0.3.3 works for receiving the Type: Null, I am gonna close this issue. You can create another issue here if you find something later.

nellikb commented 5 months ago

Yeah apart from the irregular DS crashes v0.3.3 seems to be working fine for me(for Null atleast!), close away! Sounds like you've got some interesting things coming, egg hunting in some form would be very handy! If you need someone to test new features let me know!

As for basic scripts, is there a way to run a program like that on the DS itself? Surely running a basic script like above should be possible somehow?

I suspect I may have figured out the DS crash issue but I haven't had time to reproduce it - last night my internet became intermittently down for ~5min and basically as it happened the DS crashed immediately and after resetting crashed immediately again. I wonder if these crashes are the result of brief connection interruptions?

Also just now Windows Defender has randomly decided the bot is a virus again and closed/deleted all the files... XD

u93132 commented 5 months ago

Yes, an unstable internet connection crashes your 3DS. I remember this will freeze your 3DS instead of throwing you an Luma error message.

I am not 100% sure if running a macro on 3DS is possible. Some plugins for specific applications might work. Surely, I once was thinking of developing a simple script language for controlling 3DS, but I don't have much time to do that.

u93132 commented 5 months ago

Do you have any progress on your shiny hunting?

nellikb commented 5 months ago

Not yet unfortunately - it's up to almost 13k resets now and no Null yet... :( I'm starting to wonder if my luck is just really bad or if the bot is resetting over shiny's?