> Hello to all the respected established coders of this list. My names Richard > and I'm yet another one of those annoying newbie coders who has 100 questions > but I'll them brake down to one.
<snip> There isn't any kind of "overall reference" or "API reference" to the Half-Life SDK. Fully understanding the SDK requires a medium to advanced level of knowledge in C++. The only way you will learn how things work is by looking at and playing with the SDK source code. You will run into MANY, MANY times when something doesn't work (the game crashes, goes into an infinite loop, or doesn't do some effect that you are trying to do). In fact, you will find that there are more times when something doesn't work than you have when something does work. You will learn by trial and error. Some of these errors you will repeat over and over and will eventually learn not to do those things (via negative reinforcement). The best way to become completely frustrated with the SDK is to start out by ripping out 70% or 80% of what's there and completely replacing it with all your own code. You will find that you get dozens/hundreds of compiler errors and when you finally do get rid of all the compiler errors, the game crashed deep inside the Half-Life engine (where you can't determine what caused the crash). The best way to NOT get frustrated with the SDK is making very tiny small changes one by one to the SDK source code and testing things out after each small change. Once you begin to understand how the variables, classes and functions are used, you will find yourself making much larger changes at a time and will find that you have fewer and fewer problems with new code. The time span for this learning curve can be anywhere from 2 or 3 months up to 6 months or more, depending on your skill level in programming and your experience with programming in C++. Also, ALWAYS save backup copies of stuff that you are about to change so that you can easily roll back to a working version when you completely screw something up (which you will do more than once). When browsing through the SDK source code, it's useful to have several editor windows open at once to view the .cpp and .h files in the dlls folder and also to be able to view the .h files in the engine and common folders as well. Start with the thing that the engine deals with, the edict_t structure. This can be found in the engine\progdefs.h file. Every entity created in the game has one of these structures. It contains things like origin (3D world coordinates), health, velocity, angles and so on. This edict_t structure is pointed to by a class member variable called "pev". Wherever you see "pev" used, just think "edict_t". For example you'll see "pev->health", or "pev->angles" or "pev->velocity" used all over the place. Every entity in the SDK source code is based on the CBaseEntity class and every other class inherits directly or indirectly from this CBaseEntity class. Look in the cbase.h and cbase.cpp files for the member variables and functions for this base class. Everything else is just inheritance of the CBaseEntity class with stuff throw in for that specific type of entity (for example, weapons contain ammo, players have weapons, etc.). Pretty much all "basic" C++ type stuff. If you can resist the urge to try to change too much stuff at once and try to understand one small piece of the puzzle at a time, it won't be too long before you are getting up to speed on how to create your own MOD with the SDK. Jeffrey "botman" Broome _______________________________________________ To unsubscribe, edit your list preferences, or view the list archives, please visit: http://list.valvesoftware.com/mailman/listinfo/hlcoders