Basic Image Recognition: PyAutoGUI Video Game Bot Tutorial 4/4 - Completed MMO Bot!

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
congratulations on making it to the final video thanks for sticking with me your perseverance is gonna pay off because in this video we're finally going to talk about basic image recognition we're going to capture information from the screen and use it to inform our bots actions hey it's Ben and this is Lin code by gaming in this video we're going to learn how to use piyo degrees screenshot functions to figure out what's going on inside the game that way we can use information from the screen to figure out how our bots should behave if you haven't seen the previous videos in this series was the link to a full playlist in the description so today we're gonna close the loop this is the last piece we need to complete our trading route so that our bots can run completely automated what we'll end up with is a very primitive artificial intelligence but these first steps are what everything else can build off of ok so at this point our back into almost a full trading loop the one problem we still have is when we enter a station we start at a random location and we want to go from there to our starting position and right now we have to do that manually so your character should be just docking at lucky station after coming back from Earth station since we automated that portion and when we land here we're going to start at one of a number of different possible starting positions so I think at a previous video I thought there was maybe four starting positions but after going through this I think it was more like 20 maybe even a little bit more than 20 possible starting positions and what we want to do today is we want to try to figure out when we load into a station where exactly is our character and then once we figure out where our character is we want to write action scripts to go from this starting location to our Universal starting location which year in lucky station is against this wall talking too loud and MacEwan so the way we're going to do this is is we're going to use peyote gooeys screenshot functions to figure out when we load in here what position we're at so what we'll need to do is we'll take a screenshot of each one of these positions and then from that screenshot we're going to crop out a small tiny portion of that image and we want to get a portion of that image that's unique to just that starting location but that also isn't going to change every time we're at their starting position so for example right now there's some things moving in our in our image and there's some things that aren't so a bad screenshot to take or bad portion of the screenshot to crop to would be this section at the top above the doorway where we have this gold emblem that's spinning around that's not constant so we won't be able to match a image to that position consistently we want something and it's going to be the same exact pixels every time we land at this same exact starting location so generally I'm going to take a screenshot of something in the background something without any lighting effects and that should stay consistent in between each each time we land at the station and then once we have those images to help us figure out where we're at going to record actions to get from this location to our Universal starting location so to accomplish this PI auto GUI uses pillow pillow is the Python image library and it should be installed already when you installed peyote GUI which is the case you might want to check that you do have it in your pip packages and to get started today your character should have just docked at Loki station and it'll be in one of these random starting locations so getting into the code we're going to reuse some of the things that we vote for re-recording about we're going to use playback and the recorder still and I'm going to create a new folder for today's BOTS I'll call it image bot and we could do some fancy importing to just import this playback and this recording script but to keep things simple and I keep them separated out I'm just going to go ahead and copy the playback and record scripts into the image folder and in the playback script we're just going to use this as a library for the functions that it has so we don't actually need any of the main stuff anymore because we're not going to run this file so I'll go ahead and delete all that and then for our recorder script we still need the folder for our recordings to go into so I'll go ahead and create that and our new code today I'm going to put it in a file called controller and in our controller this is going to be the file that we're going to run and it'll basically just control which actions we're going to playback under which circumstances so to write our controller script I'm just going to borrow the main syntax in our recorder script we do want to maintain the main calls because we are going to continue to run our recorder script to record each one of the actions that we still need and then in our controller script I still want to initialize peyote GUI and then give us a countdown timer I'm going to use these from the playback script so I can just call them easily enough and then I'll need to import those from playback I can import the initialize peyote GUI and the countdown timer and let's say I've done print statement and before you write any more code let's just outline what exactly it is we want to try to accomplish here so first we want to start docked at Loki station and from there what we want to do is we want to get to our Universal starting position and then once we're in our Universal starting position we can just play back those playback those four steps to get to the trader go to the trader do the buying and selling go back to the ship and finally fly to fly to earth station and once we're docked at Earth station now docked at earth station get to that starting position and once we've accomplished that we can just play back our four steps for Earth station going to the trader and buying selling going back to the ship and then flying back to Loki station and once we've accomplished those things that'll be a completed loop so you can print that out and once we've completed an entire loop totally automated that we can just run that loop again and keep running it over and over again so now that we've planned out our logic all we have to do is fill in the steps so let's fill in first the part that we already know how to do so we want to play our actions here and then between each action we still want to sleep and of course to be able to call play actions we need to import it from play back play actions and then we also need to import sleep from time import sleep and then we'll have a similar set of actions when we're doing the trading at Earth station and when we get all this working after we finish one loop we want to go through and do another loop so let's just go ahead and put that in a loop right now let's start it off with three times through the entire trading loop so now the only other parts we have to fill in are these parts where we first dock at a station and we need to get to our Universal starting position for that station so we don't have the code waiting for this yet but let's go ahead and fill in this part of our main function as if we had that done so we're going to get some sort of identifier about what the starting position is we'll probably write a function for that get starting position I will want to know what what location are at what station so low key for lucky station get the starting position and then based off of what's returned we want to load a different actions file based off of where we start at and when we have that we just want to play those actions play actions Lukie station start and then this could be a string that we give it or maybe I'll just make it an integer so starting position get starting position it's going to return an integer that'll indicate which one of our starting positions action scripts we should run and then we still need to sleep afterwards let's make note of what we want to do get starting position should return an integer that indicates or I should say that corresponds with switch action recorded action scripts called that recorded action script should be played and then we should have a very similar situation for when we land at earth station we need to get from there to that starting location and we'll just look up earth instead of Loki the station where it and we'll load a file called earth station start one two three four something like that and then let's go ahead and create the stub for this new function get starting position station that's where the codes gonna go that will return which of the actions we should run and then one final piece we're missing is we need to sleep one more time when we go from Loki station to earth station wouldn't we dock at earth station there's going to be a pause while that station is loading we don't want to immediately start searching for what location we're in so let's add sleep here to account for that and then we're gonna have a similar situation when our loop comes back around and we're docking at lucky station but instead of we don't want to wait 10 seconds the first time goes to the loop though so only if is greater than Ciera do we want to add that extra 10 seconds of sleep it's the first time it goes to the loop we'll ignore that part okay so we've got the logic for script all right now all we need to do now is write this kid starting position function so before we start to go crazy with writing the logic in here let's just test to make sure that we can find at least one image inside of a screen shot so to do this in which position equals PI out of GUI it has a function called locate on screen and you give it an image file and it'll search the entire screen for this smaller image to see if we can find it anywhere on the screen and if it does find it it'll return the position and if it doesn't it should return none so these needle images that we're searching for we'll have to create these and in our case we'll just create them manually and let's make a folder to hold them let's call that images maybe maybe needles for now let's just look up one image see if we can find it on the screen so I'm going to borrow the code for opening a file we don't actually need to open it though we can just pass it a file path so from our controller script directory we then want to look in the needles folder and then we'll call our first one test image one I think it'll be a PNG then let's adjust our variable names here I guess the needle path would be a little better so we're gonna pass it in that path to look at on screen let's print out see what we get and when we run the controller we don't want to run through all of our steps yet we really just want to run this get started position function so I'll go up to the top let's do it to the timer still and then we can just exit the script from that point after it runs but before we run it we'll need to create our needle image that we're going to search for so I'll open up the game here and all I'm going to do is I'm going to take a screenshot using the screenshot button on my keyboard open up paint paste the image and then you want to crop some section out of this image that will always be there whenever you begin in this starting location so for example that would be a bad crop because a lot of McEwan likes to move around a little bit I find that stuff up you know the top here is a good good area to pick because it doesn't change you know down lower here you have to worry about other players being present and potentially messing you up and if you make your crop image very large that increases the chances that it'll be different between each time you land the station because it's going to check every single little pixel inside your image and it needs to match exactly so you want to keep it small but you don't want to keep it so small to it something's really tiny like that where it's just black in the background because it's going to find that that needle in your screenshot haystack it's going to find that all the time for lots of different starting positions so then you're going to get lots of false positives and that's problematic as well so I find something sort of a size like 30 pixels by 10 pixels works pretty good something that has at least a couple different colors in it so for this starting position something like that I'm just going to crop it and I'm going to save it save it to our needles folder what did I call this file test image one and I decided to use PNG here because that's what the PI auto GUI documentation uses you do need to be careful not to use a format that is going to compress because that compression changes the colors of the pixels a little bit and that'll throw it off and it'll say that it can't find your needle even though it looks like it should be there so I saved that I now have that file in my needles folder let's go ahead and run this and make sure our game is open let's see if it finds that exact needle image anywhere on my screen so there I've finished and need to give the starting position argument station that makes sense it's an odd optional parameter I'll just say it's low-key I believe we also forgot to import high auto GUI and we also forgot the import OS for opening up that file so that should be all we need let's give it another try to fish it did okay so we return to value there that's exactly what we were hoping for so that means that it successfully found that needle somewhere on that screen so you saw me just create the needle image using the Print Screen button on my keyboard and just pasting it into paint and cropping it from there but this might not always line up perfectly with peyote GUI I haven't found any issue with it but if you do and you're curious to see exactly what peyote GUI is seeing it does have this screenshot function where you pass in the file path of where it should write out the screenshot image and then it also returned the image for you and this is just another way to create those screenshots that you could crop from and it's anything to know if you're debugging and you want to see exactly what PI out of GUI is saying but for the rest of this video I'm not going to use this I'm just going to continue to manually create the screenshots so now that we've convinced ourselves that located on screen is working let's go ahead and fill in more this logic for getting the starting position so if the station it's lucky let's make a list of images to check I'll have names like lucky station start 1 PNG what if the station is earth it's going to have a different list images to check and I decided to use these lists so that you can name these needle files however you want whichever way makes sense to you I'm going to end up using just like a looking station to start 1 2 3 4 5 6 7 I just found that easy way to go through it and make these really quickly because you're going to end up with a lot of these you know like 15 to 20 for each station and then once we have our list of images we're going to loop through each one of them and check them to see which one we find on the screen so loop over images till one is found then we turn the index because member we wanted to return an integer from this starting position that'll correspond to one of our recordings so we turn the index of found image so I know I want to be turn the index so it's going to use in any numeration for index and we're looping over images to check oh but that's what we're looping over what should we call it I guess each one of these is a image filename for looping over images to check and in order to get this index we need to wrap this and leave enumeration which one of these images we want to check to see if we can locate it on the screen and when we do it'll be not none and then in that case when we find it we just want to be turn the index I'm actually going to turn the index plus one so that like the first loop returns one in that zero and so on so that'll line up well with our naming scheme over here for our images so like to start one image the location we'll line up with the Loki station start one JSON file actions and then if we loop through all of our cropped images and we can't find any of them on the screen let's go ahead and specify that we're returning none so it's starting position will return none in that case and when that happens you'll try to load Loki station to start none and as long as we don't have that file in our recordings I'll just throw an exception and stop our script and I think that's good enough for now so back at the top of our main function let's go ahead and get rid of this debugging code we know that get starting position with searching the image is fine so what's gonna happen now is we're going to go through our countdown timer it's going to enter the loop and it's going to search for the starting position in loki station so it's going to go through our needle images that we have listed here and if it can find it on the screen somewhere it'll return so if it finds number one it'll return 1 if we have more images that we'll be turning to 3 for whichever one it found they'll come back up and it'll pass into here and then it'll try to run this action script we don't have this action script created yet but if I run our controller we should at least see an arrow that indicates that I can't find this file so let's see if we can get it to that point named heir enumeration not defined I spell it wrong let's see where else I've used it I know it's not an enumeration it's just an enumerate isn't it have another go I mean just to checked reference before assignment so that means it didn't enter any of these ifs I bet I didn't capitalize yeah that's lower case that's lower case so down here they should also be lower case just your typical script debugging sort of stuff happening and this time it couldn't find our image and it's looking for a lucky station start 1 dot PNG but of course all we have is this test image 1 PNG well I know this test image aligns with our starting position here so I'll just go ahead and rename it this time and I'm getting a little annoyed how long it's taking to to run our countdown timing let's just go ahead and adjust that just doing 10 seconds I think 6 seconds is more than enough time for me to select that screen and that's right again okay now we have the error that we were expecting so it returned one and now it's trying to load local stations start one chat JSON to play those actions we don't have that recording yet so what we can do is we can go ahead and record those actions now so I'll copy that expected file name go to the recorder in the output file name go ahead and paste that and then just like before I'm going to run the recorder open the game and now I just need to record how do I get from this initial starting location inside the station to our Universal starting location so in this case I'll leave pretty simple set of actions I'll just turn left here going along the wall maybe turn towards them a little bit click on loud in close it up hit escape to stop our recording and now inside our recordings folder we have this new actions file just like before manual even move to click on manual leave it move the Escape key and that's going to get annoying as well because we need to make a lot of these so I'm going to go into the recorder and modify the code so it doesn't save that escape key anymore so inside the court event here just gonna say if the string of the button equals that key that escaped there's going to be turn so I don't actually record that event okay so you'll notice back in the game we're no longer at the position we were at when we first landed in the station so unfortunately there's no easy way to test if our image recognition and then running of that action worked correctly so we're going to need to do is we just need to go like to the station real and at it and we'll probably end up in a different starting location so I'll create a screenshot and crop an image for that needle from that position that'll create a new recording and then I'll just do that over and over until you start getting some repeats and we start seeing our character actually run through the actions because they recognized where it started at so I'll gone through that whole process with you one more time we just landed at this station I'm going to create a screen shot I'm going to open paint paste it and I'm going to search for some pixels to capture for a needle image I'm pretty sure this lighting here doesn't change that's a good unique set of pixels after you like then I'll simply save this as the second possible starting location I'll need to update the get starting position function to now look for this image and then what I can do is I can run the controller just to make sure that it is finding that needle on the current screen and of course when you're doing all this be very careful not to accidentally move your character at all because it'll throw the whole thing off it completed and yeah it's looking for that second JSON file now so that means that that it found it correctly so then I'm going to go to my recorder update the output file name to the start location number two then I'll begin recording this action and in the game I'll just take a series of actions to get to our position next to Loudon McEwen once that's done I'll open up the EMU recording well that's the image file day recording number two I'll get rid of those first couple of clicks to select the screen let's see if it correctly left off the Escape key and it did so we don't have to worry about that in the future and that's everything we need to do to set up our second starting location so then we'll just go back exit the station again we'll come back in and we'll do it all over again so I spent an hour to going through and making all of the cropped images and all of the recordings for all the possible starting locations both that looking station and I went over in dr. earth station and made a bunch of needles and recorded actions for there as well so I'll save you the boredom of watching me do all that you can see I've got all my recording files in here and then I've also got all of the different images that I'm trying to find to figure out where we're starting in a station and that in my recordings I also went ahead and copied it over the go to trader go to ship all the sections in these actions that we did in the recording video so from that last video in this series you should already have all of the earth station steps for going to the trader doing the trading going back and flying over the lowkick station and then if you did the suggested homework in that video you'll also have those for looking station if you don't have those yet you can go and create those at local station as well so as you are creating these needle images and your recordings if you're going through and running your controller each time that you reel and at the station you'll eventually start to notice once you get to five or six that it actually does recognize where you landed and it should start running through your actions and then if you've copied over the actions for the rest of the script go into the trader doing the trading going back it should run all of those now so it probably takes you know unity of five or six of these first definitely by the time you get to you know ten or twelve you should be starting to see you know fifty percent of the time and more you planted the station it recognizes where you're at and it starts running through your actions so let me show you what that looks like when that happens successfully so you will notice that as your list of images gets longer and longer it does take longer and longer to recognize which which location you're at the peyote we locate on-screen function is a little bit slow and so as you're running it more and more times it does take a while to recognize where you've beginning at so in this instance it didn't find where I started at so this would be a good opportunity for me to once again take a screenshot and go through my process of recording my actions there we've got one that was recognized so this is interesting I made these recordings yesterday using a different character that I've been using for testing and this character seems to work out right but when I used the other character I was showing you it was not recognizing any of the any of the needles that you're searching for it makes me think that maybe because the characters are two different heights just the height of the character is changing the camera position slightly which is making the images that work for this character not work at all for the other character that I have that's slightly shorter so the images that I have in the github repo might not work for you exactly unless your character is also the same height as mine so what I'd like to do now is just clean up our code a little bit instead of throwing that exception err if it can't find the action file or if it can't find the position let's throw just a little nicer errors we'll just print out nicer errors and just exit our script soft or this in a try except file not found err if that happens I might even want that error message well let's print out well I would say if the starting position if not sorry position so if we didn't find a starting position that should be one air starting position not recognized low key but if we did find a starting position we just didn't have an action script for that let's print out a different air recorded actions for position to be like position one or two good three or so on but if we were able to play it let's print out something to say that with which action we played so this will help us to identify which one of our actions are working correctly and which ones maybe we need to delete the action file and try it again the next time we start at that position just say played starting actions so I'd like to print out the name of the JSON file that we ran so let's update the code up here to save that to the action file name variable and that we can just play that okay so that I'll give us some nicer print statements an error message is I guess if we do hit this file not found error though we still want to exit our script because we don't really want to try to continue past there so I'll just add an exit the number 0 there says that our our script exited successfully you can do it like a one day if you wanted it to be an air exit but this is fine and now that we've cleaned up the error handling for looking station we can do the same thing for the earth station so here we're getting the starting position for earth still earth station for the starting files mention that we couldn't find a position at earth station - that looks good so we can remove that holder code that's that okay and before we finish up this tutorial I want to teach you one more thing you'll notice sometimes as you're running through your script that it'll get off it might just pause though it might take longer to load or something and instead of your character running straight to the store it might run off to the side and then just get stuck or something like that and you know if you're running your bot while you're away from your computer it could be stuck here for you know 30 minutes an hour who knows how long and we what we want to do is we want to be able to detect when this happens that way we can just exit our script so we don't continue to just click and move everywhere in a way that doesn't make sense because our character is so far off so to do this I'm going to show you how to check individual pixel values we can use peyote GUI to do this so for instance when we get to our starting position here next to a Lhari MacEwan there are certain pixels that should always probably be the same I find some good pixels to check are here on his name because the name tag you know it's always relative to where he is you don't want to check like his hair color because he's moving around all the time but like the yellow and said Ye is pretty much always gonna be at that pixel if you're in the right location if your characters off if you're like over here somewhere then that pixel is not going to be that yellow color and so we can detect that and then when that happens we can throw out in air and start our script so to do this I'm going to write a new function let's see here first going through the loop we get to low key station hopefully be recognized where we started at and then we got to our universal starting position we can check to see if that happened or not so it's 5 new function called confirm position and let's just give it a string that says what position you want to check so we'll say this is low-key station starting position and I can go ahead and write a function for that position name be the name that parameter okay so I'm back here on the biotic GUI documentation and I'm looking at this pixel matching section and it has this power to give a pixel matches color function available and it'll just return true if the pixel does match or if false it doesn't match and I also noticed that it had this handy tolerance parameter so that we can just find if it almost matches that will help us to overcome any errors where the pixel is just slightly off but we're still actually in the right location so the way that this function works is this is the x position on the screen the y position and then these are the RGB values and so the red green and blue values of that particular pixel and then the tolerance will let us be off by a certain value so I think like if you give it ten here this means that any one of these values could be plus or minus ten of what you tell it and it'll still return true otherwise if it's completely off it'll return false so this will be a good way for us to check to make sure that we're on course so in the game here I want to check the pixel like I said the yellow inside this II I think is a good standout color for us to check so what I'm gonna do is I'm going to take another screen capture using the Print Screen button and just back in paint again it's a handy little program I'm going to take the color picker tool here and I'm gonna go over to where this e is I'm going to aim somewhere like in the middle and then you'll notice down in the lower left hand corner of paint it'll tell us the XY position that our mouse is at right now I'm at 897 exposition and a 153 y-position and then I can click and it'll select the color at that position up above and then I can click the Edit colors and over here on the right hand panel they'll tell us the RGB values of that color is selected so we want to check that coordinate position and match it up with this RGB value and then give it a bit of a tolerance and then anytime that pixel is is about that color then we'll return true because we know we're on path but if it's something totally different it'll be turned false and that'll be a good indication to us that we're off path and we should just stop our script so back in our code let's write that in the confirm position function so if position name is what did we call this we're confirming that loci station starting position so if that's the position that we want to confirm and we'll need an XY and RGB and X y equals those will be our XY values just put something placeholder in there for now and then our RGB this will be a single variable can you hold this as a table I suppose so this will be the R value G value and the blue value these go from 0 to 255 I believe and then let's actually check our paint program here and get the real values so 172 178 41 what's 4 to 178 41 that's the color I picked from where believe that was about right there 898 153 and I'll just double check a 98 153 grab that color 170 170 841 that's good now we want to look for is does the pixel match the pixel matches equals we're gonna call that power to GUI function check the documentation it was called pixel matches color let's just grab that alright so this way the x value that's the y value this is the RGB and let's leave that tolerance 10 that sounds all right so what do we do if the pixel match is that means we're on course that matches means we're not on course and in this case let's Ave just an exception this will stop our program detected off course or we'll give it the position name that we checked and then let's give some debug information that way we can see if it does detector off course but it looks like we are on course what are we testing this we'll see what XY and RGB it's looking for so I'll need to pass in some sort of debug string let's make our debug string will say position is something that we want to know our RGB of the expected and then what RGB did we actually find found so we know the position is that XY I also know the expected RGB and then what they actually find so we can figure this out by calling hi argue II believe it's just called pixel right yeah so if you call pixel it all of you turned the RGB value at that location so here we can just give it the X and the y that'll make for a good debug string there's also the possibility that we don't recognize the position name that we are looking for so let's make it else down here that'll raise an exception also just say position to confirm that recognized so now when we run our script when it gets to our universal starting location at low key station it's gonna call this confirmed position if it confirms that we are on track it's going to just print out it's not gonna print out let's print out something to say we're on track let's print on track for position name so say on track for okie station starting position but if it detects that we're off it always an exception we'll get this exception message depending on what the problem was and then by raising that exception it'll also stop our script so I'm gonna reenter the reenter loke station and see if our detection is working properly I forgot : I forgot a parenthesis alright so recognized our starting location and now we're going to the universal starting location for a lucky station no hands alright now we're talking allowed in to make sure we're oriented correctly and now it's doing our check and it's said that we're on track so that's perfect I'll go ahead and stop the script we can look at our output to make sure that says on track for the looking station so it recognizes the pixel there another good place to check to make sure you're on track is when you're doing a trading once you talk to the trader I've been checking this flag color over here it's a pretty distinct color you're not likely to find anywhere else so I'll put that in the code too I'll do another confirm position on that that pixel over there so to do that I'll copy that after we do the trading that's what I'm talking about the character let's confirm the position lucky station done trading go down to the function L lift position name it's done trading set the x and y's for those so once again I'll take a screenshot I use my dropper let's try to get over here 450 by 296 452 96 what color can we find there there's our RGB 79 78 13 all right so now we've got another position that we're checking to make sure we're still on track and then if we're not it'll go ahead and exit our script so that about does it for this tutorial there's obviously a ton of optimizations you can make to this one that comes to mind right away is when we're searching for what our starting position is inside of a station that obviously takes a while what's happening is I auto GUI is taking a screenshot each time when it's comparing those needles so you might find a way to adjust that so that peyote GUI takes just one screenshot and then it searches for all of the needle images inside of it that might help speed up the process we also took all of our needle images just from the top few rows of pixels on the screen so you might also be able to adjust it to just search the top 100 and 200 rows of pixels or so and I should also speed up the locate on screen process one other option that's a lot easier it's already built in is that peyote GUI has a grayscale option so it says in the documentation you get about a 30% boost if you turn on the grayscale option so more likely to find false positives there but in most cases that's probably a performance boost they'll be worth it and I'll probably still work really well also if you decide to set up more trading routes I think a lot of these stations are pretty similar they might even be identical so it'd be interesting because if you could find a way to use one set of needle images and have it work for a bunch of different stations in order to do in order to determine your starting location you'd still need to create different actions for each station of course because each one's going to have a different Universal starting position that you'll find within it all right if you've missed anything there's a link to the github in the description and it has all of the source code of everything that I've written here in these videos and then if you're enjoying earth and Beyond and you really enjoying the spot that we're making you know there's tons more you could do with it one big improvement you might make is you know if you detect that you're off course instead of just stopping your script you might consider having it automatically log out of the game and then log back in and then hopefully you can detect from there where you're starting and then pick up where you left off that way your about is a lot more resilient it can withstand hiccups a lot better without you being around to help fix it so some other things you could do is you could set up a longer maybe more lucrative trade route the one that I picked and show from this tutorial is really a beginner trade route so there's definitely tons more out there to do you could also automate travel a lot more in this game sometimes in the game you need to move across the galaxy and that can take quite a while so if you're able to automate something like that that could save you a lot of headache inside the game for something more advanced you could also try automate combat with those guys over there you can also try automating mining within the game feels looking for another way to increase your exploration rank or just make more credits though and of course the techniques that I've taught you here can be applied to other games so I encourage you to explain that as well that's all I've got for this tutorial series I hope you've enjoyed it and that you've learned something new here and before you go I've got a quick favor to ask of you since I'm just getting started with this YouTube channel I'd love to hear from you what am i doing well what could I do better what kind of videos do you want to see from me my goal here is to help more people learn how to code and have fun doing it the world needs more programmers and there's no reason why learning how to code shouldn't be a rewarding and joyful experience so my email is in the description you can reach me there I'd also be happy to hop on a Skype or discord chat with you if you're interested and just talk about coding or leave a comment below I know it might seem minor but hearing from you would really mean a lot to me so that's it I've already started working on the next tutorial series it's going to be about another type of video game botting probably in Python so subscribe to get notified when I release that if you haven't already and I'll see you then thanks for watching you
Info
Channel: Learn Code By Gaming
Views: 17,678
Rating: undefined out of 5
Keywords: pyautogui, pyautogui game bot, mmo bot, image bot, locateonscreen, pixel matching, pixelMatchesColor, pyautogui image recognition, gaming bot code, pyautogui bot, video game bot tutorial, beginner video game bot, video game botting tutorial, write a video game bot, python video game bot, python, simple game bots, basic botting, begginer botting, video game automation, mmorpg bot, how to make a video game bot, mmorpg bot programming, learncodebygaming, learn code by gaming
Id: iA95DvehUoM
Channel Id: undefined
Length: 60min 1sec (3601 seconds)
Published: Tue Nov 26 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.