ja hallo brauch von euch hilfe
also des ist so wenn ich mit sniper in beine schiesse ist das headshot aber ich will nur kopf
und weis nicht ie die coords ich änder muss
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <a_samp>
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Macros
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//#define SENDE_NACHRICHT // ausklammmern, falls unerwünscht
#define WAFFE_SNIPER (34)
#define GEDRUECKT(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define SPIELER_GEDUCKT(%1) GetPlayerSpecialAction(%1) == SPECIAL_ACTION_DUCK
#define HAT_GESCHOSSEN(%1) GetPVarInt(%1, "HEADSHOT_GESCHOSSEN")
#define SETZE_GESCHOSSEN(%1) SetPVarInt(%1, "HEADSHOT_GESCHOSSEN", 1)
#define SETZE_NICHT_GESCHOSSEN(%1) SetPVarInt(%1, "HEADSHOT_GESCHOSSEN", 0)
#define TOETESPIELER(%1) SetPlayerHealth(%1, 0)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// CallBacks
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Überprüft, ob Spieler mit der Sniper abschießt
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
if(GEDRUECKT(KEY_FIRE) && ValideWaffe(playerid)) {
if(!HAT_GESCHOSSEN(playerid)) {
SETZE_GESCHOSSEN(playerid);
SetTimerEx("Headshot_AntiSpam", 1000, false, "d", playerid);
Headshot_ErmittleZielperson(playerid);
}
}
return 1;
}
// Setzt das AntiSpam
forward Headshot_AntiSpam(playerid);
public Headshot_AntiSpam(playerid) {
SETZE_NICHT_GESCHOSSEN(playerid);
return 1;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// private Funktionen
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Hier könnt ihr die Waffen setzen, mit welchen man Kopfschüße machen kann
stock ValideWaffe(waffe)
{
new ValideWaffen[] = {WAFFE_SNIPER};
for(new index = 0; index < sizeof(ValideWaffen); index++)
{
if(GetPlayerWeapon(waffe) == ValideWaffen[index]) return 1;
}
return 0;
}
// Überprüft, ob Spieler die Zielperson in den Kopf trifft
stock Headshot_ErmittleZielperson(playerid) {
// Erstellen der Speicherstellen für die Koordinaten des Vektors und der Kamera
new Float:x,Float:y,Float:z,Float:FrontX,Float:FrontY,Float:FrontZ,Float:CamX,Float:CamY,Float:CamZ;
// Setzen der Koordinaten in die Variablen
// Funktionen werden im Tutorial erklärt
GetPlayerCameraFrontVector(playerid, FrontX, FrontY, FrontZ);
GetPlayerCameraPos(playerid, CamX, CamY, CamZ);
for(new Float:i = 0.0; i < 100; i = i + 0.5) {
// Berechnung der Koordinaten mit Hilfe einer bekannten Rechnung
x = FrontX * i + CamX; y = FrontY * i + CamY; z = FrontZ * i + CamZ;
for(new zielperson = 0; zielperson < MAX_PLAYERS; zielperson ++) {
if(IsPlayerConnected(zielperson)) {
// Spieler kann sich zwar nicht selber anschießen, aber wir gehen auf eine Nummer sicher
if(zielperson != playerid) {
// Falls die Zielperson geduckt
if(SPIELER_GEDUCKT(zielperson)) {
// Überprüfen, ob die Zielperson tatsächlich auf den berechneten Koodinaten ist
if(IsPlayerInRangeOfPoint(zielperson, 0.4, x, y, z)) {
GameTextForPlayer(playerid, "~r~HEADSHOT", 2000, 6); // GameText für den Spieler
GameTextForPlayer(zielperson, "~r~HEADSHOT!", 2000, 6); // GameText für die Zielperson
TOETESPIELER(zielperson); // Töten der Tielperson
#if defined SENDE_NACHRICHT
SendDeathMessage(playerid, zielperson, 34);
#endif
}
}
// Falls die Zielperson steht
else {
// Überprüfen, ob die Zielperson tatsächlich auf den berechneten Koodinaten ist
if(IsPlayerInRangeOfPoint(zielperson, 0.4, x, y, z)){
GameTextForPlayer(playerid, "~r~HEADSHOT", 2000, 6); // GameText für den Spieler
GameTextForPlayer(zielperson, "~r~HEADSHOT", 2000, 6); // GameText für die Zielperson
TOETESPIELER(zielperson); // Töten der Tielperson
#if defined SENDE_NACHRICHT
SendDeathMessage(playerid, zielperson, 34);
#endif
}
}
}
}
}
}
return 1;
}