Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define MAX_AMMO 500
- new mid;
- new Float:hp, Float:armour;
- new Killing[MAX_PLAYERS];
- new MKill[MAX_PLAYERS];
- new MAmmo[MAX_PLAYERS];
- new MinigunC[MAX_PLAYERS];
- forward OnMinigunAttacking(targetid);
- stock Float:GetDistanceToMinigun(minigunid,targetid)
- {
- new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
- if (!IsPlayerConnected(targetid)) {
- return -1.00;
- }
- GetObjectPos(minigunid,x1,y1,z1);
- GetPlayerPos(targetid,x2,y2,z2);
- return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
- }
- stock GetTargetStats(Float:X, Float:Y, Float:tX, Float:tY, &Float:Angle)
- {
- Angle = atan2(Y-tY, X-tX);
- Angle = floatsub(Angle, 90.0);
- if(Angle < 0.0){Angle = floatadd(Angle, 360.0);}
- }
- stock CreateMinigun(targetid, Float:X, Float:Y, Float:Z, Float:Rx, Float:Ry, Float:Rz)
- {
- mid = CreateObject(2985, X, Y, Z,Rx, Ry, Rz, 0.0);
- Killing[targetid] = 1;
- }
- stock DeleteMinigun(targetid, modo)
- {
- DestroyObject(mid);
- Killing[targetid] = 0;
- MinigunC[targetid] = 0;
- KillTimer(MKill[targetid]);
- if(modo == 0){SendClientMessage(targetid,0x2E66BFAA,"MINIGUN: {FFFFFF}Kifogyott a Minigun tölténye!");}
- else if(modo == 1){SendClientMessage(targetid,0x2E66BFAA,"MINIGUN: {FFFFFF}Törölted a Minigunt!");}
- }
- public OnPlayerDisconnect(playerid)
- {
- if(Killing[playerid] == 1){Killing[playerid] = 0;}
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- Killing[playerid] = 1;
- SetPlayerHealth(playerid, 100.0);
- SetPlayerArmour(playerid, 100.0);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- Killing[playerid] = 0;
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(strcmp("/createminigun", cmdtext, true, 10) == 0)
- {
- new Float:x, Float:y, Float:z;
- MinigunC[playerid] = 1;
- GetPlayerPos(playerid, x, y, z);
- CreateMinigun(playerid, x-1.5, y-1.5, z-1.0, 0.0, 0.0, 0.0);
- SendClientMessage(playerid,0x2E66BFAA,"MINIGUN: {FFFFFF}A Minigun elindításához használd az /UseMinigun parancsot, a Minigun törléséhez használd a /DeleteMinigun parancsot!");
- return 1;
- }
- if(strcmp("/useminigun", cmdtext, true, 10) == 0)
- {
- MAmmo[playerid] = MAX_AMMO;
- if(MinigunC[playerid] == 1){MKill[playerid] = SetTimerEx("OnMinigunAttacking", 250, 1, "i", playerid);}
- SendClientMessage(playerid,0x2E66BFAA,"MINIGUN: {FFFFFF}Elindítotttad a Minigunt!");
- return 1;
- }
- if(strcmp("/deleteminigun", cmdtext, true, 10) == 0)
- {
- DeleteMinigun(playerid, 1);
- return 1;
- }
- return 0;
- }
- public OnMinigunAttacking(targetid)
- {
- if(Killing[targetid] == 1)
- {
- if(GetDistanceToMinigun(mid, targetid < 15.5))
- {
- MAmmo[targetid] -= 1.5;
- if(MAmmo[targetid] < 0.1){DeleteMinigun(targetid, 0);}
- else if(MAmmo[targetid] > 0.1)
- {
- new Float:mx, Float:my, Float:mz, Float:xp, Float:yp, Float:zp, Float:ang;
- GetObjectPos(mid, mx, my, mz);
- GetPlayerPos(targetid, xp, yp, zp);
- GetPlayerFacingAngle(targetid, ang);
- GetPlayerHealth(targetid, hp);
- GetPlayerArmour(targetid, armour);
- GetTargetStats(xp, yp, mx, my, ang);
- SetObjectRot(mid,0.0,0.0,ang+90.0);
- PlayerPlaySound(targetid, 1057,0.0,0.0,0.0);
- if(armour > 0.1){SetPlayerArmour(targetid, armour-3.5);}
- else if(armour < 0.1){SetPlayerHealth(targetid, hp-4.5);}
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement