Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Controllable Trollys By Psymetrix
- *
- * CreateTrolly(Float: X, Float: Y, Float: Z, Float: A);
- * DestroyTrolly(trollyid);
- */
- #include <a_samp>
- #include <zcmd>
- #define MAX_TROLLYS 5 // Maximum trolly that can be added.
- enum TROLLY_DATA {
- bool: Created,
- VehicleID,
- ObjectID,
- }
- new TrollyData[MAX_TROLLYS][TROLLY_DATA];
- new TrollyCount;
- forward bool:DoesVehicleHaveDriver(vehicleid);
- /*----------------------------------------------------------------------------*/
- public OnFilterScriptInit() {
- // Example
- //* Create a drivable trolly at the centre of the San Andreas map
- CreateTrolly(0.0, 0.0, 5.0, 0.0);
- return 1;
- }
- public OnFilterScriptExit() {
- for (new i; i < MAX_TROLLYS; i++) {
- DestroyTrolly(i);
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- if (GetPlayerState(playerid) == PLAYER_STATE_ONFOOT) {
- if (newkeys & KEY_SECONDARY_ATTACK) {
- new
- Float: X,
- Float: Y,
- Float: Z
- ;
- for (new i; i < MAX_TROLLYS; i++) {
- if (TrollyData[i][Created]) {
- GetVehiclePos(TrollyData[i][VehicleID], X, Y, Z);
- if(IsPlayerInRangeOfPoint(playerid, 2.0, X, Y, Z)) {
- if (!DoesVehicleHaveDriver(TrollyData[i][VehicleID])) {
- PutPlayerInVehicle(playerid, TrollyData[i][VehicleID], 0);
- break;
- }
- }
- }
- }
- }
- }
- return 1;
- }
- public OnPlayerExitVehicle(playerid, vehicleid) {
- for (new i; i < MAX_TROLLYS; i++) {
- if (TrollyData[i][Created]) {
- if (vehicleid == TrollyData[i][VehicleID]) {
- new
- Float: X,
- Float: Y,
- Float: Z
- ;
- GetVehiclePos(TrollyData[i][VehicleID], X, Y, Z);
- SetPlayerPos(playerid, X+1, Y+1, Z);
- }
- }
- }
- return 1;
- }
- /*----------------------------------------------------------------------------*/
- stock bool:DoesVehicleHaveDriver(vehicleid) {
- for (new i; i < MAX_PLAYERS; i++) {
- if (IsPlayerConnected(i)) {
- if (IsPlayerInVehicle(i, vehicleid)) {
- if (GetPlayerVehicleSeat(i) == 0) {
- return true;
- }
- }
- }
- }
- return false;
- }
- stock DestroyTrolly(trollyid) {
- if (trollyid < 0 || trollyid >= MAX_TROLLYS)
- return 0;
- if (!TrollyData[trollyid][Created])
- return 0;
- DestroyObject(TrollyData[trollyid][ObjectID]);
- DestroyVehicle(TrollyData[trollyid][VehicleID]);
- TrollyData[trollyid][Created] = false;
- return 1;
- }
- stock CreateTrolly(Float: X, Float: Y, Float: Z, Float: A) {
- if (TrollyCount == MAX_TROLLYS)
- return -1;
- new kart = CreateVehicle(571, X, Y, Z, A, 0, 0, -1);
- new object = CreateObject(1349, 0.00, 0.00, 0.27, 0.00, 0.00, 90.00, 300.0);
- AttachObjectToVehicle(object, kart, 0.00, 0.00, 0.27, 0.00, 0.00, 90.00);
- LinkVehicleToInterior(kart, -1);
- TrollyData[TrollyCount][Created] = true;
- TrollyData[TrollyCount][ObjectID] = object;
- TrollyData[TrollyCount][VehicleID] = kart;
- TrollyCount++;
- return kart;
- }
- /*----------------------------------------------------------------------------*/
- COMMAND:kart(playerid, params[]) {
- // Example command for spawning and placing a player in a controllable trolly
- new
- Float: X,
- Float: Y,
- Float: Z,
- Float: A
- ;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- new trolly = CreateTrolly(X, Y, Z, A);
- PutPlayerInVehicle(playerid, trolly, 0);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment