Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // -YOUICE 2014
- //Y_Vehicle Lasers
- #include <a_samp>
- //Laser Property
- #define LASER_SPEED 100.4
- #define DRAWDISTANCE 250.0
- #define EXPLOSION_RADIUS 10.0
- //Buttons
- #define PRESSED(%0) \
- (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
- new Lasers[] =
- {
- //normal lasers
- 18647,
- 18648,
- 18649,
- 18650,
- //xmas
- 19059,
- 19060,
- 19061,
- 19062,
- 19063,
- //pompom
- 19090,
- 19091,
- 19092
- };
- new LaserMod[MAX_PLAYERS];
- new CanFireAgain[MAX_PLAYERS];
- new LaserObject[MAX_PLAYERS];
- new IsAllowedToFire[MAX_PLAYERS];
- new LocalTimer[MAX_PLAYERS][5];
- new MustWait[MAX_PLAYERS];
- new LaserAmmo[MAX_PLAYERS];
- new Count[MAX_PLAYERS];
- new InMode[MAX_PLAYERS];
- new PlayerText:Textdraw[3];
- public OnFilterScriptInit()
- {
- print("\n----------------------------------");
- print(" [FS]Y_Vehicle Lasers is now loaded...");
- print("----------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- for(new i; i<MAX_PLAYERS; i++)
- {
- HideTDs(i);
- }
- return 1;
- }
- main(){}
- public OnPlayerConnect(playerid)
- {
- Textdraw[0] = CreatePlayerTextDraw(playerid, 436.000000, 37.000000, "BOX");
- PlayerTextDrawBackgroundColor(playerid,Textdraw[0], 255);
- PlayerTextDrawFont(playerid,Textdraw[0], 1);
- PlayerTextDrawLetterSize(playerid,Textdraw[0], 0.450000, 3.199999);
- PlayerTextDrawColor(playerid,Textdraw[0], 0);
- PlayerTextDrawSetOutline(playerid,Textdraw[0], 0);
- PlayerTextDrawSetProportional(playerid,Textdraw[0], 1);
- PlayerTextDrawSetShadow(playerid,Textdraw[0], 0);
- PlayerTextDrawUseBox(playerid,Textdraw[0], 1);
- PlayerTextDrawBoxColor(playerid,Textdraw[0], 68);
- PlayerTextDrawTextSize(playerid,Textdraw[0], 487.000000, 90.000000);
- Textdraw[1] = CreatePlayerTextDraw(playerid,446.000000, 61.000000, "%d-0");
- PlayerTextDrawBackgroundColor(playerid,Textdraw[1], 255);
- PlayerTextDrawFont(playerid,Textdraw[1], 1);
- PlayerTextDrawLetterSize(playerid,Textdraw[1], 0.250000, 1.100000);
- PlayerTextDrawColor(playerid,Textdraw[1], 16777215);
- PlayerTextDrawSetOutline(playerid,Textdraw[1], 1);
- PlayerTextDrawSetProportional(playerid,Textdraw[1], 1);
- Textdraw[2] = CreatePlayerTextDraw(playerid,441.000000, 38.000000, "Laser");
- PlayerTextDrawBackgroundColor(playerid,Textdraw[2], -16776961);
- PlayerTextDrawFont(playerid,Textdraw[2], 2);
- PlayerTextDrawLetterSize(playerid,Textdraw[2], 0.300000, 2.300000);
- PlayerTextDrawColor(playerid,Textdraw[2], -1);
- PlayerTextDrawSetOutline(playerid,Textdraw[2], 1);
- PlayerTextDrawSetProportional(playerid,Textdraw[2], 1);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(IsLasered(playerid) == 1) {
- HideTDs(playerid);
- }
- return 1;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- if(IsLasered(playerid) == 1) {
- ShowTDs(playerid);
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- if(IsLasered(playerid) == 1) {
- HideTDs(playerid);
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/addlaser", cmdtext, true, 10) == 0)
- {
- if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- if(InMode[playerid] == 1) return SendClientMessage(playerid, -1, "{FFFA00}/removelaser {FAFAFA}, To remove lasers!");
- HideTDs(playerid);
- ShowTDs(playerid);
- IsAllowedToFire[playerid] = 1;
- CanFireAgain[playerid] = 1;
- LaserMod[playerid] = 0;
- LaserAmmo[playerid] = 15;
- UpdateAmmo(playerid);
- InMode[playerid] = 1;
- GameTextForPlayer(playerid, "~g~Lasers Are Loaded.", 2000, 1);
- }
- else {
- SendClientMessage(playerid, -1, "You must be driving.");
- }
- return 1;
- }
- else if (strcmp("/removelaser", cmdtext, true, 10) == 0)
- {
- if(InMode[playerid] == 0) return SendClientMessage(playerid, -1, "{FFFA00}/addlaser {FAFAFA}, To add lasers!");
- HideTDs(playerid);
- IsAllowedToFire[playerid] = 0;
- CanFireAgain[playerid] = 0;
- InMode[playerid] = 0;
- GameTextForPlayer(playerid, "~r~Lasers Are Unloaded.", 2000, 1);
- return 1;
- }
- else if (strcmp("/lasermods", cmdtext, true, 10) == 0)
- {
- if (IsPlayerInAnyVehicle(playerid) && IsAllowedToFire[playerid] == 1)
- {
- if(MustWait[playerid] == 1) return GameTextForPlayer(playerid, "~r~Wait before switching modes", 3000, 1);
- ShowPlayerDialog(playerid, 1998, DIALOG_STYLE_LIST, "Laser Modes", "Normal\nBlast Fire\nSuicide Bomb","Select","Cancel");
- }
- return 1;
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if (PRESSED(KEY_FIRE))
- {
- if (IsPlayerInAnyVehicle(playerid) && IsAllowedToFire[playerid] == 1)
- {
- if(CanFireAgain[playerid] == 1 && LaserAmmo[playerid] >= 1)
- {
- FireLaser(playerid);
- CanFireAgain[playerid] = 0;
- LaserAmmo[playerid]--;
- UpdateAmmo(playerid);
- }
- }
- }
- return 1;
- }
- forward public FireLaser(playerid);
- public FireLaser(playerid)
- {
- new
- RandLaser = random(sizeof(Lasers));
- new
- Float:pX,
- Float:pY,
- Float:pZ,
- Float:vA,
- Float:distance = 65.0,
- vid = GetPlayerVehicleID(playerid)
- ;
- new Float:Velocity[3];
- GetVehicleVelocity(vid, Velocity[0], Velocity[1], Velocity[2]);
- GetVehiclePos(vid, pX, pY, pZ);
- GetVehicleZAngle(vid, vA);
- LaserObject[playerid] = CreateObject(Lasers[RandLaser], pX, pY, pZ, vA, 0, 0, DRAWDISTANCE);
- for(new target; target<MAX_PLAYERS; target++)
- {
- if(target == playerid)
- continue;
- if(IsPlayerInRangeOfPoint(target,65.0, pX, pY, pZ))
- {
- new
- Float:tmpX, Float:tmpY, Float:tmpZ;
- GetPlayerPos(target, tmpX, tmpY, tmpZ);
- distance = GetPlayerDistanceFromPoint(target, pX, pY, pZ);
- }
- }
- MoveObject(LaserObject[playerid], pX + (distance * floatsin(-vA, degrees)), pY + (distance * floatcos(-vA, degrees)), pZ, LASER_SPEED);
- return 1;
- }
- public OnObjectMoved(objectid)
- {
- for(new i;i<MAX_PLAYERS;i++)
- {
- if(objectid == LaserObject[i])
- {
- CreateExplosionEx(i);
- }
- }
- return 1;
- }
- forward public CreateExplosionEx(playerid);
- public CreateExplosionEx(playerid)
- {
- new Float:x, Float:y, Float:z;
- GetObjectPos(LaserObject[playerid], x, y, z);
- DestroyObject(LaserObject[playerid]);
- if(LaserMod[playerid] == 0)
- {
- CreateExplosion(x, y, z, 0, EXPLOSION_RADIUS);
- }
- else if(LaserMod[playerid] == 1)
- {
- CreateExplosion(x, y, z, 2, EXPLOSION_RADIUS);
- }
- else if(LaserMod[playerid] == 2)
- {
- CreateExplosion(x, y, z, 7, 50);
- }
- switch(LaserMod[playerid])
- {
- case 0,1:
- {
- LocalTimer[playerid][3] = SetTimerEx("CanShootAgain", 100, false, "i", playerid);
- }
- case 2:
- {
- LocalTimer[playerid][4] = SetTimerEx("CanShootAgain", 6000, false, "i", playerid);
- }
- }
- return 1;
- }
- forward public CanShootAgain(playerid);
- public CanShootAgain(playerid)
- {
- CanFireAgain[playerid] = 1;
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == 1998)
- {
- if(response)
- {
- switch(listitem)
- {
- case 0: { LaserMod[playerid] = 0; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
- case 1: { LaserMod[playerid] = 1; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
- case 2: { LaserMod[playerid] = 2; LocalTimer[playerid][1] = SetTimerEx("StopRest",5000,false, "i",playerid); MustWait[playerid] =1; }
- }
- UpdateAmmo(playerid);
- }
- }
- return 1;
- }
- forward public StopRest(playerid);
- public StopRest(playerid)
- {
- MustWait[playerid] = 0;
- KillTimer(LocalTimer[playerid][1]);
- return 1;
- }
- forward public UpdateAmmo(playerid);
- public UpdateAmmo(playerid)
- {
- new tdstring[32];
- format(tdstring, sizeof(tdstring), "%d-0", LaserAmmo);
- PlayerTextDrawSetString(playerid,Textdraw[1], tdstring);
- PlayerTextDrawShow(playerid, Textdraw[1]);
- if(LaserAmmo[playerid] == 0)
- {
- KillTimer(LocalTimer[playerid][3]);
- KillTimer(LocalTimer[playerid][4]);
- LocalTimer[playerid][2] = SetTimerEx("StartGameTexts", 1000, true, "i", playerid);
- Count[playerid] = 0;
- CanFireAgain[playerid] = 0;
- }
- return 1;
- }
- forward public StartGameTexts(playerid);
- public StartGameTexts(playerid)
- {
- Count[playerid]++;
- GameTextForPlayer(playerid, "~r~Loading Lasers...", 500, 1);
- if(Count[playerid] >= 7)
- {
- Count[playerid] = 6;
- }
- if(Count[playerid] == 6)
- {
- switch(LaserMod[playerid])
- {
- case 0: LaserAmmo[playerid] = 15;
- case 1: LaserAmmo[playerid] = 10;
- case 2: LaserAmmo[playerid] = 1;
- }
- KillTimer(LocalTimer[playerid][2]);
- CanFireAgain[playerid] = 1;
- GameTextForPlayer(playerid, "~g~Lasers Are Loaded.", 2000, 1);
- new tdstring[32];
- format(tdstring, sizeof(tdstring), "%d-0", LaserAmmo);
- PlayerTextDrawSetString(playerid,Textdraw[1], tdstring);
- PlayerTextDrawShow(playerid, Textdraw[1]);
- Count[playerid] = 0;
- }
- return 1;
- }
- stock ShowTDs(playerid)
- {
- for(new i; i<sizeof(Textdraw); i++)
- {
- PlayerTextDrawShow(playerid, Textdraw[i]);
- }
- }
- stock HideTDs(playerid)
- {
- for(new i; i<sizeof(Textdraw); i++)
- {
- PlayerTextDrawHide(playerid, Textdraw[i]);
- }
- }
- stock IsLasered(playerid)
- return InMode[playerid];
Advertisement
Add Comment
Please, Sign In to add comment