<<<NOTE>>>
THIS PROXY IS WRITTEN IN C# AND DOES NOT CONTAIN ANY BOTTING FUNCTIONALITY!
IF YOU WANT IT TO DO ANYTHING YOU WILL NEED TO PROGRAM IT YOURSELF!
For those using my hellmouth source... here's how you can make this proxy log npc scripts/locations for your server
If you are not familiar with the C# programming language then I STRONGLY recommend reading this e-book
Also if you want more information about packets or proxies then read this thread
IF YOU HAVE NOT READ THROUGH THESE TWO THINGS AND/OR DO NOT HAVE A BASIC LEVEL OF PROGRAMMING KNOWLEDGE THEN DON'T EXPECT ANY HELP FROM ME!
So for those who were interested in working on a proxy. Here's the source code to project alchemy with botting functionality, password decryption and speed hack removed.
Don't ask for it with those things added. They no longer exist on my computer.
Basically this is for those who want to learn to make their own bot/proxy but hard time understanding packets/encryption/etc. This is FAR from a perfect proxy (hell, it's not even super stable if you get too many ppl online) but it does work quite nicely as an example.
It's kinda messy atm but w/e.
I left most of the packets in there so you just need to link up the bot thread with your own system of logic to call the packets.
I've left packet handling in there so it SHOULD still work to update most of the local values.
Enjoy!
Note: Feel free to release updates to this to help others but I request that you do not simply re-release the entire proxy or claim it as your own.
<edit>
I made the assumption after having worked with so many random pserver sources that setting up something like this would be rather self explanatory... But I suppose I'll make a mini guide here.
Step 1:
Download visual studio or some other C# editor in order to edit the source.
(express is free, ultimate is super easy to find a key for online)
(not really used much but another free option)
Step 2:
Install mysql server. Needed to set up the database
(Full proper version)
(other version packed in with a bunch of other tools...)
Step 3:
Setup your database using the provided backup. Personally I <3 navicat.
Now open up navicat, setup your connection with sql (enter the user/pass setup for it... should be root with no password by default with xampp, full mysql install should request a password)
So once you've executed the .sql file that is stored in the upload then you're good to go on that front.
Now you need to modify your settings file in the source.
AlchemyProxy>Bin>Debug>Settings.txt
In this case IP = local ip for where you are hosting the proxy. If you are hosting it off a vps or w/e that will need to be the public up for it but if you are hosting just for yourself you will want to use a hamachi ip or a router ip. NOTE: 127.0.0.1 will dc you!
Now add in the database username, password and database name and you should be good to go!
General Help
When I start up the source I get missing smap errors!!
-This is cause the gamemap.dat is referencing dmaps that don't exist. Just ignore them or modify the gamemap.dat file (yah... doubt most of you know how lol). It shouldn't pose any real issue right now.
I'm lost in the source! How do I add features?!?
Well it's quite simple as basically everything is still added to the proxy.
Currently there is a bot thread setup when a character logs in (everything is super messy but w/e!) which if you open the Handlers>Bot.cs file you will notice the method
NewBot(Client)
this is where you will start your entry into the bot code. You could add things like dropping unwanted items (ores?) or looting/hunting/dc checks! It's all quite simple to code as you have a ton of pre-written useful methods.
Right now almost all of them are packet into the calculations>Distance.cs (late night programming + lazyness made me forget to create new calculation files ahaha)
Main one you'll want to consider is the Distance(x1,y1,x2,y2) method.
It will return an int value measuring the distance between two points. You will use this for almost all bot functionality such as calculating if a mob/loot is in range.
It's also implemented in the OnScreen bool which will tell you if a coord or x/y set are on screen for the character.
Something I never fully finished but you may find incredibly useful is the "PullWeights" method. What it does is returns a list of valid coords on your screen and how close they are to a target location. This will let you easily move towards a target blindly (it's NOT path finding... but it works decently well for blindly calculating a coord near where you want to go)
I MAY release some basic codes for this at some point but I really wanna see some ppl working on some releases for this. I feel it would be good to force some budding coders to LEARN this kind of stuff.