This guide will explain how you can fix the broken Gimli That Axe! achievement. Allowing you to unlock it if you meet the achievement criteria.
Gimli That Axe! Achievement Fix
This method is approved and endorsed by moderators of AStats and this group.
On other sites they may ban for this. Ask those trackers first if you don’t want to get banned. This method works in the same way as the fix that is out for Saints Row 3 & 4 which is approved on all achievement tracking sites so I don’t see any reason for them to disallow it.
Make sure to remove the hosts file line in Step 1 after unlocking the achievement so that the Steam client doesn’t have any issues.
Downloads
- Python Script: pastebin.com/raw/zdBuivnN (save as Gimli.py)
- Requirements: pastebin.com/raw/DUG59zU0 (save as requirements.txt)
or
Compiled exe:
- mega nz/file/TuAHxIqb#ZDwXxl5W3J9IGIVjYKPYLJd8YztXHJw_dwXvw00RHJ0
You only require the python script + requirements or compiled exe for Step 2 not all three. With the compiled exe you have to trust me that it’s clean which is why I also provided the python script so you can run it directly from the script itself instead. Some slight steps are provided in Step 2 of how to do that.
Step 1 – HTTP Server for api.steampowered.com
This step is required as it tells Windows to redirect any requests made to the Steam web api address to instead use the local server we will be running. This will allow us to send back to Killing Floor a response of the Steam web api that the game can parse correctly.
Open your favorite text editor as administrator.
Open the hosts file located at C:\Windows\System32\drivers\etc\hosts in the text editor.
Note that 32-bit text editors may not be able to see the etc directory inside drivers, so you might need to type that manually.
Add this line to the bottom of the file:
127.0.0.1 api.steampowered.com
Save the hosts file. Make sure it doesn’t get saved as hosts.txt; that won’t work.
Note: Make sure to remove the added line from the hosts file when you are done with getting the achievement.
Step 2 – Run the HTTP Server
Theres two options for this you can either run the compiled exe of the python script, or you can directly run the python script with python. The only difference between the two is that you can easily see the source of the python script but not of the exe.
Python Script
- Have python 3 installed.
- Install the requirements of the script with the command py -m pip install -r requirements.txt in a command prompt at where requirements.txt is saved.
- Run the script in a command prompt at the scripts location with the command py Gimli.py
The command syntax of py might be different depending on how your python enviroment is setup. You can try other variants such python or python3. I recommend looking up any console errors if you get them.
Compiled Exe
Double click to run.
Running either will output into the command window this:
Bottle v0.12.18 server starting up (using WSGIRefServer())…
Listening on http://localhost:80/
Hit Ctrl-C to quit.
If you see this then you can move on. If you get any errors here leave a comment and I’ll try assist.
Step 3 – The Achievement
Note: Make sure to remove the added line from the hosts file when you are done with getting the achievemnet
Firstly make sure your profile privacy is set to public and wait a minute or two if it wasn’t already. This is as the Steam web api won’t be able to check if you’ve unlocked the tied achievement in Dwarfs F2P.
Now with the hosts file addition, and the local server still running you can earn the achievement!
Load up the game and start up a singleplayer match. When you select a class and spawn the achievement should unlock if you meet the critera. This should happen within 1-10 seconds of spawning.
To meet the critera you need to have unlocked the Not-a-war-hammer Achievement in Dwarfs F2P.
What’s Actually Happening
- An entry to the hosts file is made for redirecting Steam api queries to your local machine which the local server will pick up when running.
- The python script / compiled exe runs the local web server that’ll handle the api request that KF makes.
- Upon spawning into a KF match the game sends a query to the Steam api which the local server handles.
- The local server sends the request it retrieves off to a python web server I have on Heroku. This web server queries the Steam api with the original request from KF and formats the Steam web api response in a way that the game can parse correctly.
- The local server then receives this formatted response from the web server and sends it back to KF to read.
Here’s a visual representation of the above.
Request tree: KF -> Local server -> Heroku server -> Steam api
Response tree: Steam api -> Heroku server -> Local server -> KF
Compared to without the fix.
Request tree: Kf -> Steam api
Response tree: Steam api -> KF
This works for me. Thank you!