Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // This is a comment
- // uncomment the line below if you want to write a filterscript
- //#define FILTERSCRIPT
- #include <a_samp>
- #include <zcmd>
- #include <sscanf2>
- #include <streamer>
- #define COLOR_RED 0xFF0000FF
- #define COLOR_WHITE 0xFFFFFFFF
- main()
- {
- print("\n----------------------------------");
- print(" By Achraf Hindir");
- print("----------------------------------\n");
- }
- #define MAX_SPIKESTRIPS 200
- enum sInfo
- {
- sCreated,
- Float:sX,
- Float:sY,
- Float:sZ,
- sObject,
- };
- new SpikeInfo[MAX_SPIKESTRIPS][sInfo];
- public OnGameModeInit()
- {
- // Don't use these lines if it's a filterscript
- SetGameModeText("Blank Script");
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- return 1;
- }
- public OnGameModeExit()
- {
- return 1;
- }
- public OnPlayerRequestClass(playerid, classid)
- {
- SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
- SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- return 1;
- }
- public OnVehicleSpawn(vehicleid)
- {
- return 1;
- }
- public OnVehicleDeath(vehicleid, killerid)
- {
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- return 1;
- }
- CMD:veh(playerid, params[])
- {
- new id, Float:pos[4], col[2];
- if(sscanf(params, "iii", id, col[0], col[1])) return SendClientMessage(playerid, -1, "USAGE: /veh [vehicleid/destroy] [color1] [color2]");
- if(id < 400 || id > 611) return SendClientMessage(playerid, -1, "Vehicles are between 400 and 611.");
- GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
- GetPlayerFacingAngle(playerid, pos[3]);
- CreateVehicle(id, pos[0], pos[1], pos[2], pos[3], col[0], col[1], 12000);
- return 1;
- }
- CMD:dropspike(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "You are not driving a vehicle.");
- new Float:X, Float:Y, Float:Z, Float:A, Float:Ang;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- new currentveh;
- currentveh = GetPlayerVehicleID(playerid);
- new Float:vehx, Float:vehy, Float:vehz, Float:angle, Float:x2, Float:y2;
- GetVehiclePos(currentveh, vehx, vehy, vehz);
- GetVehicleDistanceFromPoint(currentveh, vehx, vehy, vehz);
- GetVehicleZAngle(currentveh, angle);
- GetVehicleZAngle(currentveh, Ang);
- GetXYBehindPoint(vehx, vehy, x2, y2, angle, 5);
- new obj = Createspike(x2,y2,vehz,Ang);
- SetTimerEx("destroyThisObject", 480000, 0, "i", obj);
- SendClientMessage(playerid, COLOR_WHITE, "NOTE : You have drop spike!");
- return 1;
- }
- CMD:removespike(playerid, params[])
- {
- DeleteClosestspike(playerid);
- return 1;
- }
- CMD:removespikes(playerid, params[])
- {
- DeleteAllspike();
- return 1;
- }
- stock GetXYBehindPoint (Float:x,Float:y,&Float:x2,&Float:y2,Float:angle,Float:distance)
- {
- x2 = x - (distance * floatsin(-angle,degrees));
- y2 = y - (distance * floatcos(-angle,degrees));
- return 1;
- }
- encode_tires(tires1, tires2, tires3, tires4) {
- return tires1 | (tires2 << 1) | (tires3 << 2) | (tires4 << 3);
- }
- stock Createspike(Float:x,Float:y,Float:z,Float:Angle)
- {
- for(new i = 0; i < sizeof(SpikeInfo); i++)
- {
- if(SpikeInfo[i][sCreated] == 0)
- {
- SpikeInfo[i][sCreated]=1;
- SpikeInfo[i][sX]=x;
- SpikeInfo[i][sY]=y;
- SpikeInfo[i][sZ]=z-0.7;
- SpikeInfo[i][sObject] = CreateDynamicObject(2899, x, y, z-0.88, 0, 0, Angle-90);
- return 1;
- }
- }
- return 0;
- }
- stock DeleteAllspike()
- {
- for(new i = 0; i < sizeof(SpikeInfo); i++)
- {
- if(SpikeInfo[i][sCreated] == 1)
- {
- SpikeInfo[i][sCreated]=0;
- SpikeInfo[i][sX]=0.0;
- SpikeInfo[i][sY]=0.0;
- SpikeInfo[i][sZ]=0.0;
- DestroyDynamicObject(SpikeInfo[i][sObject]);
- }
- }
- return 1;
- }
- stock DeleteClosestspike(playerid)
- {
- new done;
- for(new i = 0; i < sizeof(SpikeInfo); i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 2.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
- {
- if(SpikeInfo[i][sCreated] == 1)
- {
- SpikeInfo[i][sCreated]=0;
- SpikeInfo[i][sX]=0.0;
- SpikeInfo[i][sY]=0.0;
- SpikeInfo[i][sZ]=0.0;
- DestroyDynamicObject(SpikeInfo[i][sObject]);
- done = 1;
- }
- }
- }
- if(!done) SendClientMessage(playerid, -1, "You are not near a spike strip.");
- return 1;
- }
- forward destroyThisObject(objid);
- public destroyThisObject(objid) {
- DestroyObject(objid);
- }
- public OnPlayerUpdate(playerid)
- {
- if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
- {
- for(new i = 0; i < sizeof(SpikeInfo); i++)
- {
- if(IsPlayerInRangeOfPoint(playerid, 3.0, SpikeInfo[i][sX], SpikeInfo[i][sY], SpikeInfo[i][sZ]))
- {
- if(SpikeInfo[i][sCreated] == 1)
- {
- new panels, doors, lights, tires;
- new carid = GetPlayerVehicleID(playerid);
- GetVehicleDamageStatus(carid, panels, doors, lights, tires);
- tires = encode_tires(1, 1, 1, 1);
- UpdateVehicleDamageStatus(carid, panels, doors, lights, tires);
- }
- }
- }
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement