![]() |
|
#1
|
|||
|
|||
|
I started a Bsc in computer science this year and today i just finished my final exams.
I'm probably going to keep myself busy with a few personal projects during the summer so that i don't get rusty, it turns out from what my professors tell me that i'm quite good at it for a beginner, plus i like the whole coding deal and i'm looking to expand my horizons a bit. So, i'm thinking of taking up a side project on my free time that will revolve around CoD. I need some suggestions for books and/or online tutorials, but something that gets you through all key concepts. What we're working on in uni is Java, so i have a grasp of key concepts in object oriented programming and modeling things comes very naturally to me. From what little i could find on C# (there's a lot available, but i didn't have the free time through the academic year to spend learning a second language on my own), it seems that the syntax at least is very similar. However, i would prefer a comprehensive guide, because i think it's better to skip a chapter if i already know something, than not have documentation on something i lack knowledge of. What i came up a few months ago was C# station: http://www.csharp-station.com/Default.aspx At first glance it seems good, if someone with more knowledge on the subject could take a look and give me a second opinion it would be excellent. Any other suggestions welcome, so that i can get working on it my spare time. Thanks in advance guys P.S. What i'm thinking of is a supply tracking system for multiplayer, so that we can have some starting and victory conditions, then have a mini-campaign unfold depending on player actions. |
|
#2
|
|||
|
|||
|
The problem I have with many guides, especially online ones is they get too wordy.....because they can. When someone gets excited they have a need to purge all, .......
Anyway without falling into the same trap of wordy purging, I find dot pearl quite good for simple examples of basic methods for a newbie like me to understand. http://www.dotnetperls.com/ |
|
#3
|
|||
|
|||
|
The best way to learn a programming language is to use it
There are free e-books available for C#, you can take a look at: http://www.readwriteweb.com/hack/201...books-on-c.php And feel free to ask |
|
#4
|
|||
|
|||
|
Thanks for the suggestions everyone.
True. I also got to reading the official documentation on MSDN. The thing is that i'm in a spot where i know some things and foundation techniques that hold for most if not all OOP languages. For example, i had to create a card game for an assignment (we use Java in uni), so i'm familiar with modelling/extending classes properly, using control structures/statements, making a GUI with the built-in libraries and connecting it with the game state, exception handling, etc. This brings me to a spot where i know how to do most of what i want to do, but having to translate it to another language: a matter of syntax and the specific language peculiarities. For example, i see that C# can automatically create get/set methods, etc. It's the small things like that which will be different. I think i will start with the resources on MSDN and work in parallel with the links you guys gave me. Also, i have one more question. When coding for a standalone program, i can just use the Visual Studio IDE to test and debug/execute, while following the language conventions. But what are the conventions for using the code inside CoD? I always see people starting with a class declaration that is the same in all scripts, i think it's: public class Mission : AMission I assume the : symbol means extending a class, right? Plus, is this a limitation of the public interface we're given by CoD? I assume the filename and class name have to match the name of the FMB-created mission and the class has to extend AMission (which is given to us by CoD), so that it inherits all the properties/methods we need. Am i correct? |
|
#5
|
|||
|
|||
|
Quote:
the abstract class AMission contains: Code:
public abstract class AMission
{
// Methods
protected AMission();
public virtual void Init(ABattle battle, int missionNumber);
public virtual void Inited();
public virtual bool IsMissionListener(int missionNumber);
public virtual void OnActorCreated(int missionNumber, string shortName, AiActor actor);
public virtual void OnActorDamaged(int missionNumber, string shortName, AiActor actor, AiDamageInitiator initiator, NamedDamageTypes damageType);
public virtual void OnActorDead(int missionNumber, string shortName, AiActor actor, List<DamagerScore> damages);
public virtual void OnActorDestroyed(int missionNumber, string shortName, AiActor actor);
public virtual void OnActorTaskCompleted(int missionNumber, string shortName, AiActor actor);
public virtual void OnAiAirNewEnemy(AiAirEnemyElement element, int army);
public virtual void OnAircraftCrashLanded(int missionNumber, string shortName, AiAircraft aircraft);
public virtual void OnAircraftCutLimb(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, LimbNames limbName);
public virtual void OnAircraftDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiDamageInitiator initiator, NamedDamageTypes damageType);
public virtual void OnAircraftKilled(int missionNumber, string shortName, AiAircraft aircraft);
public virtual void OnAircraftLanded(int missionNumber, string shortName, AiAircraft aircraft);
public virtual void OnAircraftLimbDamaged(int missionNumber, string shortName, AiAircraft aircraft, AiLimbDamage limbDamage);
public virtual void OnAircraftTookOff(int missionNumber, string shortName, AiAircraft aircraft);
public virtual void OnAutopilotOff(AiActor actor, int placeIndex);
public virtual void OnAutopilotOn(AiActor actor, int placeIndex);
public virtual void OnBattleInit();
public virtual void OnBattleStarted();
public virtual void OnBattleStoped();
public virtual void OnCarter(AiActor actor, int placeIndex);
public virtual void OnMissionLoaded(int missionNumber);
public virtual void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex);
public virtual void OnPersonHealth(AiPerson person, AiDamageInitiator initiator, float deltaHealth);
public virtual void OnPersonMoved(AiPerson person, AiActor fromCart, int fromPlaceIndex);
public virtual void OnPersonParachuteFailed(AiPerson person);
public virtual void OnPersonParachuteLanded(AiPerson person);
public virtual void OnPlaceEnter(Player player, AiActor actor, int placeIndex);
public virtual void OnPlaceLeave(Player player, AiActor actor, int placeIndex);
public virtual void OnPlayerArmy(Player player, int army);
public virtual void OnPlayerConnected(Player player);
public virtual void OnPlayerDisconnected(Player player, string diagnostic);
public virtual void OnSingleBattleSuccess(bool success);
public virtual void OnTickGame();
public virtual void OnTickReal();
public virtual void OnTrigger(int missionNumber, string shortName, bool active);
public virtual void Timeout(double sec, DoTimeout doTimeout);
// Properties
public ABattle Battle { get; private set; }
public IGamePlay GamePlay { get; }
public int MissionNumber { get; private set; }
public int MissionNumberListener { get; protected set; }
public ITime Time { get; }
}
AMission and in addition the GamePlay Object (from interface class IGamePlay) are the two important classes to get informations from the Game. IGamePlay: Code:
public interface IGamePlay
{
// Methods
AiActor gpActorByName(string actorName);
bool gpActorIsValid(AiActor actor);
AiAirGroup gpAiAirGroup(int ID, int army);
AiAirGroup[] gpAirGroups(int Army);
AiAirport[] gpAirports();
int[] gpArmies();
string gpArmyName(int army);
void gpAviPlay(string args);
bool gpBattleIsRun();
void gpBattleStop();
AiBirthPlace[] gpBirthPlaces();
ISectionFile gpConfigUserFile();
ISectionFile gpCreateSectionFile();
ISectionFile gpCreateSectionFile(string line, out string firstWord);
DifficultySetting gpDifficultyGet();
IRecalcPathParams gpFindPath(Point2d a, double ra, Point2d b, double rb, PathType type, int army);
int gpFrontArmy(double x, double y);
double gpFrontDistance(int army, double x, double y);
bool gpFrontExist();
AiAction gpGetAction(string name);
AiTrigger gpGetTrigger(string name);
AiGroundGroup[] gpGroundGroups(int Army);
void gpHUDLogCenter(string msg);
void gpHUDLogCenter(Player[] to, string msg);
void gpHUDLogCenter(Player[] to, string msg, object[] parms);
void gpHUDLogCenter(Player[] to, string msg, object[] parms, double lifeTime);
object[] gpInvoke(object[] args);
bool gpIsServerDedicated();
bool gpIsServerSingle();
bool gpIsValidAccess();
LandTypes gpLandType(double x, double y);
ISectionFile gpLoadSectionFile(string fileName);
void gpLogServer(Player[] to, string format, object[] args);
void gpLogServerArg(bool newArg, string format, object[] parms);
void gpLogServerBegin(Player[] to, string format);
void gpLogServerEnd();
AiAirGroup gpMakeAirGroup(AiAircraft[] items, AiAirWayPoint[] way);
int gpNextMissionNumber();
Player gpPlayer();
void gpPostMissionLoad(ISectionFile file);
void gpPostMissionLoad(string fileName);
Player[] gpRemotePlayers();
string gpSectorName(double x, double y);
void gpSetOrderMissionMenu(Player player, bool thisSubMenu, int ID, string[] keys, bool[] bSubMenu);
ITime gpTime();
}
|
|
#6
|
|||
|
|||
|
Cheers, thanks a lot. I'll try to have a look over the weekend and see what i make out of it all.
|
|
#7
|
||||
|
||||
|
Good Luck Blackdog
If all goes well will you use these skills for missions building too?
__________________
ASUS Sabertooth MB--Intel 2600k@4.7--EVGA GTX580 3GB--Corasir 1200 watt psu--Corsair 16gb 1866--Corsair H70 cooler--Corsair 650d case--OCZ Vertex 3--Track IR5--CH Eclipse Yoke--CH Trottle Quadrant--CH MFP--CH Rudders-MSFF2 |
![]() |
|
|