Dead Hungry Diner

Dead Hungry Diner

Not enough ratings
Waiter III Automated Solution
By Pinski
This guide shows you a simple way to use AutoHotKey and a script to grind out the achievement Waiter III.
   
Award
Favorite
Favorited
Unfavorite
Introduction
For the Waiter III achievement you need to serve 8,000 customers. After I beat the game on Expert, Master, and ground out all of my stars, I still only had about 5,800 customers. You can just replay levels over and over to get customers, but that's lot of grinding. If you were anything like me, you enjoyed the game but were probably bored of it after beating it twice.

The easiest way I found to get customers was to play the 2nd level (1-2) over and over again. This gets you 14 customers in about 2.5-3 minutes. That's still a lot of grinding.
AutoHotKey Scripting
If you want to automate the grinding though, there's a way. You can run an automation script on your computer to grind the achievement for you. It's just like using a turbo controller but for your computer.

The automating script program I prefer is AutoHotKey (AHK). Just go to the official AutoHotKey website[ahkscript.org], download it, and install it. (Do not go to autohotkey(dot)com as it's not the actual website any more.)
The Script
Once the program is installed, you should save this script in a text file.

SetDefaultMouseSpeed,0 WinWaitActive, Dead Hungry Diner global STANDARD_SLEEP := 10, SEATING_DELAY := 200, EXTRA_DELAY := 500, WALKING_DELAY := 1000, WAITING_TO_ORDER := 9500, BERRY_HARVEST := 4500, MONSTER_EAT := 7000, RED_ZOMBIE_WAITING_TO_ORDER := 4000, RED_ZOMBIE_EAT := 5000 Run() ; To stop the application at any time, simply press the Escape button Escape::ExitApp Run() { Sleep EXTRA_DELAY Click 475,375 ; Story button Sleep STANDARD_SLEEP ; You can add a number here to make it loop a certain amount of times. ; For example, Loop 200 to loop 200 times. Loop { ;;; New game selection and intro Click 200,175 ; Level 1-2 button Sleep STANDARD_SLEEP Click 965,60 ; Play button Sleep STANDARD_SLEEP Click 950,530 ; Skip story screen Sleep EXTRA_DELAY Click 565,500 ; Play button Sleep STANDARD_SLEEP ;;; Gameplay Sleep 1000 SkipInstructionScreen() ; 1st set of monsters - 1 green, 1 green MonstersToTablesOnePersonFirst() SkipInstructionScreen() ; Streak instructions ClickOnePersonTable() ; Order won't register until a table is clicked on TakeOrdersToTree(true, false) CollectBerries() DeliverFood(false) CollectMoney() Sleep 1000 ; Extra long delay to wait for instructions in order to sync correctly SkipInstructionScreen() ; Bigger group of zombies instructions CleanUp() ; 2nd set of monsters - 2 green, 1 green MonstersToTablesTwoPersonFirst() TakeOrdersToTree(false, false) CollectBerries() DeliverFoodCollectMoneyCleanUp(false) Sleep 2500 ; Extra long delay to wait for instructions in order to sync correctly SkipInstructionScreen() ; Red guy instructions ; 3rd set of monsters - 1 green, 2 red MonstersToTablesOnePersonFirst() TakeOrdersToTree(false, false) CollectBerries() DeliverFoodCollectMoneyCleanUp(false) Sleep 11000 ; Extra long delay to wait for instructions in order to sync correctly SkipInstructionScreen() ; Overwhelmed instructions ; 4th set of monsters - 2 red, 1 red MonstersToTablesTwoPersonFirst() TakeOrdersToTree(false, true) CollectBerries() DeliverFoodCollectMoneyCleanUp(true) ; 5th set of monsters - 2 red, 1 red MonstersToTablesTwoPersonFirst() TakeOrdersToTree(false, true) CollectBerries() DeliverFoodCollectMoneyCleanUp(true) ; Reset for next run Sleep 2500 ; Sleep for stage ending Click 445,535 ; Click on stages button } } ; skip = 515,615 SkipInstructionScreen() { Click 515,615 Sleep EXTRA_DELAY } ; Head monster = 430,555 SelectHeadMonster() { Click 430,555 Sleep STANDARD_SLEEP } ; 1st table = 435,400 ClickOnePersonTable() { Click 435,400 Sleep STANDARD_SLEEP } ; 2nd table = 640,360 ClickTwoPersonTable() { Click 640,360 Sleep STANDARD_SLEEP } ; Tree = 895,170 ClickTree() { Click 895,170 Sleep STANDARD_SLEEP } ; Buckets = 850,310 ClickBuckets() { Click 850,310 Sleep STANDARD_SLEEP } MonstersToTablesOnePersonFirst() { Sleep EXTRA_DELAY SelectHeadMonster() Sleep SEATING_DELAY ClickOnePersonTable() Sleep SEATING_DELAY SelectHeadMonster() Sleep SEATING_DELAY ClickTwoPersonTable() Sleep SEATING_DELAY } MonstersToTablesTwoPersonFirst() { Sleep EXTRA_DELAY SelectHeadMonster() Sleep SEATING_DELAY ClickTwoPersonTable() Sleep SEATING_DELAY SelectHeadMonster() Sleep SEATING_DELAY ClickOnePersonTable() Sleep SEATING_DELAY } TakeOrdersToTree(onePersonTableFirst, isRedZombies) { ; Pick up orders and walk to tree if (isRedZombie) { Sleep RED_ZOMBIE_WAITING_TO_ORDER } else { Sleep WAITING_TO_ORDER } if (onePersonTableFirst) { ClickOnePersonTable() ClickTwoPersonTable() } else { ClickTwoPersonTable() ClickOnePersonTable() } ClickTree() } DeliverFoodCollectMoneyCleanUp(isRedZombie) { DeliverFood(isRedZombie) CollectMoney() CleanUp() } DeliverFood(isRedZombie) { ; Deliver food ClickTwoPersonTable() ClickOnePersonTable() Sleep WALKING_DELAY Sleep WALKING_DELAY Sleep WALKING_DELAY if (isRedZombie) { Sleep RED_ZOMBIE_EAT } else { Sleep MONSTER_EAT } } CollectMoney() { ClickTwoPersonTable() ClickOnePersonTable() Sleep WALKING_DELAY Sleep WALKING_DELAY } CleanUp() { ClickOnePersonTable() ClickTwoPersonTable() Sleep WALKING_DELAY Sleep WALKING_DELAY } CollectBerries() { Sleep BERRY_HARVEST ; Sleep for the berries to be harvested ClickBuckets() }

Change the file name to have the ahk extension. For example, I named my file "Dead Hungry Diner Customers.ahk" without the quotes. Run Dead Hungry Diner in windowed mode. All of the coordinates are set for when the game is in Windowed mode so it shouldn't matter what resolution you run your computer at. Leave the game at the main menu, then double click on the script file, make Dead Hungry Diner the active window, and the script will do the rest. The script is set to only start running once Dead Hungry Diner is the active window and at any time you can press the Escape (Esc) key to stop the script.

This script WILL NOT ERASE ANYTHING. It just plays the same level (1-2) over and over again and will use whatever profile you currently have selected. As long as the profile has 1-2 unlocked (which I believe happens when you start a new game) it'll continue to run.
Summary
You'll get 14 customers about every 2.5-3 minutes. So that works out to about 280 an hour. That's the absolute maximum I could optimize it. So for 1000 customers you'll need to run the script for about 4 hours. So go do something else fun and get your achievement. :D

If you have feedback on the script, let me know.

If you don't like automation, then this solution is probably not for you.

If you want more information on this solution check out TrueSteamAchievements[truesteamachievements.com] and tell them Pinski sent you.
1 Comments
SixthBlackWing 26 Jul, 2020 @ 3:53pm 
Won't fix it for you. HF

F2::
MouseGetPos, xpos, ypos
MsgBox, The cursor is at X%xpos% Y%ypos%.
return