People have been asking me about the army class since MCNR launched. I have said some things here and there to different people but never officially announced anything.
Since MCNR launched we have had the following classes/jobs:
- Civilian
- Police officer
- Paramedic
- Firefighter
- Mechanic
- Prostitute
- Taxi driver
The main thing missing is the army class. There is good reason behind this.
As a cop, when you kill an innocent civilian for example, you need to be punished for that. When a player dies in SA-MP the script knows who killed them - this is handled by SA-MP itself. The only time SA-MP can’t figure out who killed the player that dies is when their vehicle is hit by an explosion.
Because a majority of the deaths from the result of being shot at in a vehicle by a hydra, hunter or rhino tank, there is a major problem in that there will be no way to assign blame for the death. This means we can’t punish army players that blow up an innocent player’s (or even another army player or a cop) vehicle as there is simply no way to find out that they died as a result from the rocket that destroyed the vehicle they are driving.
It also means we can’t give out score/cash to army players that take down suspects in vehicles, because we can’t detect who blew their car up. When the player eventually dies inside the car (or gets out but then dies as the car explodes), it tells the script it was suicide.
So to summarise the problem:
- SA:MP doesn’t tell the script who the killer was when a player dies in their vehicle if it is blown up by someone in a Hydra for example.
- We don’t know when a player fires a rocket or where that rocket is going. We only know when a player presses the fire key but the game doesn’t shoot every time you press that there is a small delay. This delay could be incorporated into a script but it would be unreliable and inaccurate.
- You can’t detect when and where explosions happen and who/what caused them.
- You can’t detect who or what damaged a vehicle apart from bullets.
I created a topic on the SA-MP forums
5 years ago to try and get some help with this problem and my idea was this:
- When a player in a Hydra, Hunter or Rhino shoots a rocket (which we can sort of detect with key detection), simulate the path of the rocket originating from the vehicles current position and angle. This would involve some 3D maths which is far from my strong point.
- Save the path of the rocket in memory for later. Only remove it from memory once the rocket would have done its damage (maybe 15 seconds).
- When a player dies with no killer responsible and reason ‘suicide’, first simply check if anyone shot a rocket in the area recently.
- If someone did shoot a rocket recently in the area, load their paths stored in memory and check if those paths would have come near the player.
This is not a simple solution in the slightest. It might sound it but there are lots of variables* and it would not be accurate or reliable at all.
* Variables as in things that can change or be different, not as in the programming term.
Additional issues:
- Lag
- Paused players
- Detection of obstacles between rocket origin and final destination requires memory-intensive plugin
- Delay between rocket hitting target and vehicle exploding.
- Difference in target position between when the rocket got their vehicle and when they died.
- What if you miss then they drive into a gas station? It thinks you got them.
I’m sure some may come to me with ‘simple solutions’ but honestly after thinking on this for 6+ years there is no simple solution.
Because of this issue, my plan was to make the army super restricted to players that would have to be level 100, cop rank 10, and then have to apply on the forums to join the army. This would ensure we don’t have army players that are just going around blowing people up. We will have strict rules for army players and anyone breaking these rules will be banned from the army.
Here is a plan and set of rules I came up with before:
So basically this is not a simple addition. I have hundreds of other things to add and fix and this would take up a lot of time.
If anyone has any suggestions regarding this please let me know.
Thanks.