Examples
From Project X Wiki
Creating functions
int DistBetweenObjs(CGObject* ObA, CGObject* ObB) { dx = ObA->PosX - ObB->PosX; dy = ObA->PosY - ObB->PosY; r = sqrt(dx * dx + dy * dy); return r; };
Let's analyze this:
- Create a function named DistBetweenObjs which returns an integer (int) which takes the arguments:
- Calculate the X distance between the two objects (simple mathematics here)
- Calculate the Y distance between the two objects
- Calculate the square root of the X distance squared plus the Y distance squared
- Return the square root.
- End the function
As you can see, all the lines end with ";".
Overriding functions
override void CMine::Message(CObject* sender, EMType Type, int MSize, CMessageData* MData) { super; if (Type != M_FRAME) return; for (local i = 1; i < Env->Objs.Count - 1; i+=1) { local obj = Env->Objs.Objs[i]; if (obj == NullObj) continue; if (obj->ClType != OC_Worm) continue; local worm = CWorm(obj); if (ShootData.Team == worm->WormTeam) continue; if (DistBetweenObjs(obj, this) < 65) { PrintMessage(111); Active = 1; nPulses = 1; break; }; }; };
- A pointer to a CObject
- An EMType
- An integer which is the size of the message
- A pointer to a CMessageData which is almost unused.
- super; -> Call the original function with exactly the same arguments we have (the game might want to draw or calculate the physics on us)
- Check, if it isn't message for calculations, exit.
- Iterate through every single object
- If the object is a null object, continue (next object)
- If the object's type isn't OC_Worm (not a worm), continue (next object)
- Define a local variable (only usable inside this function) named "worm" which is a CWorm object.
- If ShootData (CShootDesc)'s team (basically, the team of who fired this weapon) is the same team as our worm, continue (next object)
- If the distance between the two objects (function above defined) is less than 65, then
- Print the number 111 in a panel at the top (debugging)
- Activate the mine
- Without this line, mine wouldn't pulse correctly.
- End the loop
- End of distance comparison
- End of loop
- End of function
Please note that it is not needed to include ; after }
|