SA-MP Forums

SA-MP Forums (http://forum.sa-mp.com/index.php)
-   Includes (http://forum.sa-mp.com/forumdisplay.php?f=83)
-   -   [Include] eDistance System (http://forum.sa-mp.com/showthread.php?t=404367)

EditPawn 02/01/2013 08:02 PM

eDistance System
 
• eDistance System •

Introduction

It is an include that lets you check the distance a vehicle has traveled in being Meters, Kilometers or Miles.


Natives

• GetMeters(vehicleid);.........................Checks the distance traveled in meters
• GetKilometers(vehicleid);...............Checks the distance traveled in kilometers
• GetMiles(vehicleid);..............................Checks the distance traveled in miles
• ResetMetersTraveled(vehicleid);.............Reset the footage covered the vehicle


Method of Use

• GetMeters(vehicleid) - returns the integer numbers, or:
Code:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {
    static String[56]; //We define a string with 56 cells

    format(String, sizeof(String), "The vehicle %d traveled %d meters.", vehicleid, GetMeters(vehicleid));
    //We formatted string showing the ID of the vehicle and walked footage

    SendClientMessage(playerid, -1, String); //We show the player the message

    return true;
}

Example: The vehicle 542 traveled 1265 meters.

...

• GetKilometers(vehicleid) - returns the floating numbers, or:
Code:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {
    static String[56]; //We define a string with 56 cells

    format(String, sizeof(String), "The vehicle %d traveled %0.3f kilometers.", vehicleid, GetKilometers(vehicleid));
    //We formatted string showing the ID and vehicle mileage

    SendClientMessage(playerid, -1, String); //We show the player the message

    return true;
}

Example: The vehicle 542 traveled 1.265 kilometers. (Equivalent to 1265m)

...

• GetKilometers(vehicleid) - returns the floating numbers, or:
Code:

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {
    static String[56]; //We define a string with 56 cells

    format(String, sizeof(String), "The vehicle %d traveled %0.3f miles.", vehicleid, GetMiles(vehicleid));
    //We formatted string showing the ID of the vehicle and the miles traveled

    SendClientMessage(playerid, -1, String); //We show the player the message

    return true;
}

Example: The vehicle 542 traveled 0.786 miles. (Equivalent to 1265m)


Bugs / Questions / Suggestions

Comment below :mrgreen:


Download

Code:

///////////////////////////////////////////////////////////////////////////////////
//
//                                  |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
//                              |*|          eDistance System    |*|
//                              |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
//
//              =====================================
//                          INTRODUCTION
//              =====================================
//
//                        This allows you to check include
//                              as a vehicle traveled in meters,
//                                  Kilometers or Miles.
//
//              =====================================
//                            NATIVES
//              =====================================
//
//                        native GetMeters(vehicleid);
//                        native GetKilometers(vehicleid);
//                          native GetMiles(vehicleid);
//                      native ResetMetersTraveled(vehicleid);
//
//              =====================================
//                      EXAMPLES (METHOD OF USE)
//              =====================================
//
//                    *-- | METERS TRAVELED | --*
//              format(string, sizeof(string), "This vehicle traveled %d Meters Traveled.", GetMeters(GetPlayerVehicleID(playerid)));
//              SendClientMessage(playerid, -1, string);
//
//                    *-- | KILOMETERS TRAVELED | --*
//              format(string, sizeof(string), "This vehicle traveled %s Kilometers Traveled.", GetKilometers(GetPlayerVehicleID(playerid)));
//              SendClientMessage(playerid, -1, string);
//
//                    *-- | MILES TRAVELED | --*
//              format(string, sizeof(string), "This vehicle traveled %s Miles Traveled.", GetMiles(GetPlayerVehicleID(playerid)));
//              SendClientMessage(playerid, -1, string);
//
//              =====================================
//                              CREDITS
//              =====================================
//
//                  * Include Built by EditPawn *
//      * BlueX Paulor and for helping me with some functions *
//        * Lordz tutorial by calling Functions and Callbacks *
//
//              =====================================
//                  BUGS, SUGGESTIONS AND QUESTIONS
//              =====================================
//
//                  Visit: [url]http://forum.sa-mp.com[/url]
//
//
///////////////////////////////////////////////////////////////////////////////////

/* ----- INCLUDE ----- */
#include        a_samp

/* ----- VARS ----- */
new [email protected]_R[MAX_VEHICLES] = 0,
        Float:[email protected]_P[3],
        [email protected]_Timer[MAX_PLAYERS],
        [email protected]_S[12];

/* ----- DEFINES ----- */
#define          GetMeters(%0)                        [email protected]_R[%0]
#define  GetKilometers(%0)        ([email protected]_R[%0] * 0.001)
#define  GetMiles(%0)                    ([email protected]_R[%0] * 0.000621)
#define  ResetMetersTraveled(%0)    [email protected]_R[%0] = 0;

/* ----- FORWARDS ----- */
forward [email protected]_OnPlayerDisconnect(playerid, reason);
forward [email protected]_OnPlayerStateChange(playerid, newstate, oldstate);
forward [email protected]_At(playerid);

/* ----- CALLBACKS ----- */
public OnPlayerDisconnect(playerid, reason) {
    KillTimer([email protected]_Timer[playerid]);
        return CallLocalFunction("[email protected]_OnPlayerDisconnect", "id", playerid, reason);
}

public OnPlayerExitVehicle(playerid, vehicleid) {
        KillTimer([email protected]_Timer[playerid]);
        return CallLocalFunction("[email protected]_OnPlayerExitVehicle", "id", playerid, vehicleid);
}

public [email protected]_At(playerid) {
        if(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), [email protected]_P[0], [email protected]_P[1], [email protected]_P[2]) <= 100) {
            [email protected]_R[GetPlayerVehicleID(playerid)] += floatround(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), [email protected]_P[0], [email protected]_P[1], [email protected]_P[2]));
    }
    GetVehiclePos(GetPlayerVehicleID(playerid), [email protected]_P[0], [email protected]_P[1], [email protected]_P[2]);
/*
        OBS: If you want to test, just abilite this part will appear and all forms of distance that the vehicle is running.

    new [email protected]_Str[129];
    format([email protected]_Str, sizeof([email protected]_Str), "(%d) Meters - (%s) Kilometers - (%s) Miles", GetMeters(GetPlayerVehicleID(playerid)), GetKilometers(GetPlayerVehicleID(playerid)), GetMiles(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid, -1, [email protected]_Str);
*/
}

public OnPlayerStateChange(playerid, newstate, oldstate) {
        if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) {
            GetVehiclePos(GetPlayerVehicleID(playerid), [email protected]_P[0], [email protected]_P[1], [email protected]_P[2]);
                [email protected]_Timer[playerid] = SetTimerEx("[email protected]_At", 1000, true, "i", playerid);
        }
        else if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT) KillTimer([email protected]_Timer[playerid]);
        return CallLocalFunction("[email protected]_OnPlayerStateChange", "idd", playerid, newstate, oldstate);
}

/* ----- HOOKS ----- */
#if defined _ALS_OnPlayerDisconnect
    #undef OnPlayerDisconnect
#else
    #define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect [email protected]_OnPlayerDisconnect

#if defined _ALS_OnPlayerStateChange
    #undef OnPlayerStateChange
#else
    #define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange [email protected]_OnPlayerStateChange

#if defined _ALS_OnPlayerExitVehicle
        #undef OnPlayerExitVehicle
#endif
#define OnPlayerExitVehicle [email protected]_OnPlayerExitVehicle

Pastebin


Comments

ΉIt took me a few minutes to create and 1 day to test and improve the optimization of some codes.
²This is my first include that do, may contain errors or inattention to, if it contains something you do not agree please comment below.
³I'm not good at English because I'm Brazilian so I translate to a better understanding to post my project to you.
IMPORTANT: Save as e_km.inc


Credits

Include created by EditPawn
Paulor e BlueX for helping me in some functions
Lordz tutorial by connecting Functions and Callbacks http://forum.sa-mp.com/showthread.php?t=392061
Source of Calculations: http://www.convertworld.com/pt/comprimento/


Hope you enjoy :D

Kar 03/01/2013 04:17 AM

Re: eDistance System
 
no feet?

TugaBR 03/01/2013 04:31 AM

Re: eDistance System
 
Quote:

Originally Posted by Kar (Post 2303442)
no feet?

Quote:

This allows you to check include
// as a VEHICLE traveled in meters,
// Kilometers or Miles.
Understand?

Mr.Anonymous 03/01/2013 04:35 AM

Re: eDistance System
 
Feet - Wikipedia, the free encyclopedia

EditPawn 03/01/2013 08:20 PM

Re: eDistance System
 
No friend, just decided to do in Meters, Kilometers and Miles. Ai depends on the person using the most appropriate way and any way they want.


Topic updated and some bugs fixed.


I noticed that the staff is not very welcoming there, just wanted to show my work to you. But thanks anyway.

Kar 04/01/2013 02:59 AM

Re: eDistance System
 
Quote:

Originally Posted by TugaBR (Post 2303450)
Understand?

In simple terms, I asked why he did not add Feet too, to expand the usage of his include.

UNDERSTAND?

EditPawn 04/01/2013 11:16 AM

Re: eDistance System
 
Quote:

Originally Posted by Kar (Post 2305092)
In simple terms, I asked why he did not add Feet too, to expand the usage of his include.

UNDERSTAND?

But it is very easy my dear.
Only just add these sets:

Code:

#define    GetFeet(%0)    ([email protected]_R[%0] * 3.280)

Example of use:

Code:

static Str[129];
format(Str, sizeof(Str), "Your vehicle traveled %0.3f feet.", GetFeet(vehicleid));


I believe that to be the value from meters to feet.

Thanks for commenting :mrgreen:

emit 04/01/2013 02:43 PM

Re: eDistance System
 
thanks, good.

AzaMx 17/08/2014 10:41 AM

Re: eDistance System
 
It's doesn't show clientmessage for it. Please anyone help! create me some this

Swedky 17/08/2014 10:51 PM

Respuesta: eDistance System
 
You know how use static and new?


All times are GMT. The time now is 02:20 PM.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.