Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Attacking S.W.A.T. NPC/BOT by GangSteR]
- */
- #include <a_samp>
- #include <foreach>
- forward OnSurvivorActions(playerid, targetid, name[]);
- enum sInfo
- {
- Timer,
- Run
- };
- new Spawned[MAX_PLAYERS]; // Nem bool változó kell ,mert az túlterheli a timert (tesztelve)!
- new Shot[MAX_PLAYERS];
- new Survivor[MAX_PLAYERS][sInfo];
- new Float:zx,
- Float:zy,
- Float:zz,
- Float:hp;
- stock SetPlayerToFacePlayer(playerid, targetid)
- {
- new
- Float:pX,
- Float:pY,
- Float:pZ,
- Float:X,
- Float:Y,
- Float:Z,
- Float:ang;
- if(!IsPlayerConnected(playerid) || !IsPlayerConnected(targetid)) return 0;
- GetPlayerPos(targetid, X, Y, Z);
- GetPlayerPos(playerid, pX, pY, pZ);
- if( Y > pY ) ang = (-acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
- else if( Y < pY && X < pX ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 450.0);
- else if( Y < pY ) ang = (acos((X - pX) / floatsqroot((X - pX)*(X - pX) + (Y - pY)*(Y - pY))) - 90.0);
- if(X > pX) ang = (floatabs(floatabs(ang) + 180.0));
- else ang = (floatabs(ang) - 180.0);
- SetPlayerFacingAngle(playerid, ang);
- return 0;
- }
- stock Float:GetDistanceToPlayer(playerid,playerid2)
- {
- new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
- if (!IsPlayerConnected(playerid) || !IsPlayerConnected(playerid2)) {
- return -1.00;
- }
- GetPlayerPos(playerid,x1,y1,z1);
- GetPlayerPos(playerid2,x2,y2,z2);
- return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
- }
- stock ClosestPlayer(p1)
- {
- new Float:dis,Float:dis2,playerid;
- playerid = -1;
- dis = 99999.99;
- foreach (Player,i){
- dis2 = GetDistanceToPlayer(p1,i);
- if (dis2 < dis && dis2 != -1.00)
- {
- dis = dis2;
- playerid = i;
- }
- }
- return playerid;
- }
- stock Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
- {
- new Float:a;
- GetPlayerPos(playerid, x, y, a);
- GetPlayerFacingAngle(playerid, a);
- x += (distance * floatsin(-a, degrees));
- y += (distance * floatcos(-a, degrees));
- return a;
- }
- public OnFilterScriptInit()
- {
- ConnectNPC("Survivor", "test");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(IsPlayerNPC(playerid))
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- if(!strcmp(name, "Survivor", true))
- {
- Survivor[playerid][Timer] = SetTimerEx("OnSurvivorActions", 400, true, "i", playerid);
- SpawnPlayer(playerid);
- }
- }
- else{
- Spawned[playerid] = 0;
- Shot[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- if(!IsPlayerNPC(playerid))
- {
- Spawned[playerid] = 0;
- Shot[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- if(IsPlayerNPC(playerid))
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, MAX_PLAYER_NAME);
- if(!strcmp(name, "Survivor", true))
- {
- SetPlayerSkin(playerid, 285);
- SetPlayerColor(playerid, 0x1B57C4AA);
- Survivor[playerid][Run] = 1;
- }
- }
- else
- {
- Spawned[playerid] = 1;
- Shot[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(!IsPlayerNPC(playerid))
- {
- Spawned[playerid] = 0;
- Shot[playerid] = 0;
- }
- return 1;
- }
- public OnSurvivorActions(playerid, targetid, name[])
- {
- targetid = ClosestPlayer(playerid);
- if(IsPlayerNPC(playerid) && !IsPlayerNPC(targetid))
- {
- GetPlayerPos(playerid, zx, zy, zz);
- if(Survivor[playerid][Run] == 1 && Spawned[targetid] == 1)
- {
- SetPlayerToFacePlayer(playerid, targetid);
- if(GetDistanceToPlayer(playerid, targetid) < 36)
- {
- Shot[playerid] ++;
- if(Shot[playerid] == 1 || Shot[playerid] == 2)
- {
- SetPlayerAttachedObject(playerid, 0, 356, 6, -0.088831, -0.041855, 0.081119, 0.000000, 20.000000, 0.000000, 1.000000, 1.000000, 1.000000);
- SendClientMessage(targetid, 0xF51D1DAA, "A kommandós lő téged!");
- }
- GetPlayerHealth(targetid, hp);
- SetPlayerHealth(targetid, hp-5.5);
- PlayerPlaySound(targetid, 1057,0.0,0.0,0.0);
- ApplyAnimation(playerid, "Ped","gun_stand", 1,1,1,0,0,0);
- if(hp < 5.6)
- {
- SendDeathMessage(playerid, targetid, 53);
- }
- }
- if(GetDistanceToPlayer(playerid, targetid) > 45)
- {
- ApplyAnimation(playerid, "Ped","run_civi", 1,1,1,0,0,0);
- GetXYInFrontOfPlayer(playerid, zx, zy, 2.3);
- SetPlayerPos(playerid, zx, zy, zz);
- Shot[playerid] = 0;
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment