#include <a_samp>#pragma tabsize 0public OnFilterScriptInit(){ print(\"--------------------------------\"); print(\"A Headshot filterscript betöltve\"); print(\"--------------------------------\"); return true;}public OnFilterScriptExit(){ print(\"--------------------------------\"); print(\"A Headshot filterscript kilépve.\"); print(\"--------------------------------\"); return true;}Float:DistanceCameraTargetToLocation(Float:CamX, Float:CamY, Float:CamZ, Float:ObjX, Float:ObjY, Float:ObjZ, Float:FrX, Float:FrY, Float:FrZ) { new Float:TGTDistance; TGTDistance = floatsqroot((CamX - ObjX) * (CamX - ObjX) + (CamY - ObjY) * (CamY - ObjY) + (CamZ - ObjZ) * (CamZ - ObjZ)); new Float:tmpX, Float:tmpY, Float:tmpZ; tmpX = FrX * TGTDistance + CamX; tmpY = FrY * TGTDistance + CamY; tmpZ = FrZ * TGTDistance + CamZ; return floatsqroot((tmpX - ObjX) * (tmpX - ObjX) + (tmpY - ObjY) * (tmpY - ObjY) + (tmpZ - ObjZ) * (tmpZ - ObjZ));}stock Float:GetPointAngleToPoint(Float:x2, Float:y2, Float:X, Float:Y) { new Float:DX, Float:DY; new Float:angle; DX = floatabs(floatsub(x2,X)); DY = floatabs(floatsub(y2,Y)); if (DY == 0.0 || DX == 0.0) { if(DY == 0 && DX > 0) angle = 0.0; else if(DY == 0 && DX < 0) angle = 180.0; else if(DY > 0 && DX == 0) angle = 90.0; else if(DY < 0 && DX == 0) angle = 270.0; else if(DY == 0 && DX == 0) angle = 0.0; } else { angle = atan(DX/DY); if(X > x2 && Y <= y2) angle += 90.0; else if(X <= x2 && Y < y2) angle = floatsub(90.0, angle); else if(X < x2 && Y >= y2) angle -= 90.0; else if(X >= x2 && Y > y2) angle = floatsub(270.0, angle); } return floatadd(angle, 90.0);}stock GetXYInFrontOfPoint(&Float:x, &Float:y, Float:angle, Float:distance) { x += (distance * floatsin(-angle, degrees)); y += (distance * floatcos(-angle, degrees));}stock IsPlayerAimingAt(playerid, Float:x, Float:y, Float:z, Float:radius) { new Float:camera_x,Float:camera_y,Float:camera_z,Float:vector_x,Float:vector_y,Float:vector_z; GetPlayerCameraPos(playerid, camera_x, camera_y, camera_z); GetPlayerCameraFrontVector(playerid, vector_x, vector_y, vector_z); new Float:vertical, Float:horizontal; switch (GetPlayerWeapon(playerid)) { case 34,35,36: { if (DistanceCameraTargetToLocation(camera_x, camera_y, camera_z, x, y, z, vector_x, vector_y, vector_z) < radius) return true; return false; } case 30,31: {vertical = 4.0; horizontal = -1.6;} case 33: {vertical = 2.7; horizontal = -1.0;} default: {vertical = 6.0; horizontal = -2.2;} } new Float:angle = GetPointAngleToPoint(0, 0, floatsqroot(vector_x*vector_x+vector_y*vector_y), vector_z) - 270.0; new Float:resize_x, Float:resize_y, Float:resize_z = floatsin(angle+vertical, degrees); GetXYInFrontOfPoint(resize_x, resize_y, GetPointAngleToPoint(0, 0, vector_x, vector_y)+horizontal, floatcos(angle+vertical, degrees)); if (DistanceCameraTargetToLocation(camera_x, camera_y, camera_z, x, y, z, resize_x, resize_y, resize_z) < radius) return true; return false;}public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){ if(newkeys == KEY_FIRE && (GetPlayerWeapon(playerid) == 33 || GetPlayerWeapon(playerid) == 34)) { new Float:cam_y,Float:cam_x,Float:cam_z,Float:vec_x,Float:vec_y,Float:vec_z; new Float:Pos[3]; GetPlayerCameraPos(playerid,cam_x,cam_y,cam_z); GetPlayerCameraFrontVector(playerid,vec_x,vec_y,vec_z); for(new i = 0,j=GetMaxPlayers(); i < j; i++) { if(!IsPlayerConnected(i)) continue; GetPlayerPos(i,Pos[0],Pos[1],Pos[2]); if(IsPlayerAimingAt(playerid, Pos[0], Pos[1], Pos[2]+0.8, 0.2)) { SetPlayerHealth(i,0.0); SendDeathMessage(playerid,i,GetPlayerWeapon(playerid)); new String[256]; new Name[MAX_PLAYER_NAME]; GetPlayerName(i,Name,MAX_PLAYER_NAME); format(String,256,\"Lelõtted az illetõt!\",Name); SendClientMessage(playerid,0x0000ff77,String); break; } else { SetPlayerHealth(i,20.0); ApplyAnimation(playerid,\"SWAT\",\"gnstwall_injurd\",4.1,1,1,1,0,4000,1); SendClientMessage(i, -1, \"Elkapott egy golyó próbálj meg gyorsan elmenekülni!\"); new String[256]; new Name[MAX_PLAYER_NAME]; GetPlayerName(i,Name,MAX_PLAYER_NAME); format(String,256,\"Lábon kaptad az illetõt!\",Name); SendClientMessage(playerid,0x0000ff77,String); } } return true;}
#define PRESSED(%0) \\(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
SendClientMessage(playerid,0x0000ff77,String); } } return true;}}
else { SetPlayerHealth(i,20.0); ApplyAnimation(playerid,\"SWAT\",\"gnstwall_injurd\",4.1,1,1,1,0,4000,1); SendClientMessage(i, -1, \"Elkapott egy golyó próbálj meg gyorsan elmenekülni!\"); new String[256]; new Name[MAX_PLAYER_NAME]; GetPlayerName(i,Name,MAX_PLAYER_NAME); format(String,256,\"Lábon kaptad az illetõt!\",Name); SendClientMessage(playerid,0x0000ff77,String); } } } return true;}
Olyat, hogy fejlösvésnél megkülönböztesse, nem tudok szerezni. De van egy hasznos dolog http://forum.sa-mp.com/showthread.php?t=403713! Azt takarja, hogy fej,láb,kéz megvan különböztetve. Szerintem megtudod csinálni...