Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////////////////////////////////////////////////////////////////////////
- //
- // |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
- // |*| eDistance System |*|
- // |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
- //
- // =====================================
- // INTRODUÇÃO
- // =====================================
- //
- // Essa include permite a você verificar
- // quanto um veículo percorreu em Metros,
- // Quilômetros ou Milhas.
- //
- // =====================================
- // NATIVES
- // =====================================
- //
- // native GetMeters(vehicleid);
- // native GetKilometers(vehicleid);
- // native GetMiles(vehicleid);
- // native E_SetVehiclePos(vehicleid, float:X, float:Y, float:Z);
- //
- // =====================================
- // EXEMPLOS (MODO DE USO)
- // =====================================
- //
- // *-- | METROS RODADOS | --*
- // format(string, sizeof(string), "Esse veículo percorreu %d Metros Rodados.", GetMeters(GetPlayerVehicleID(playerid)));
- // SendClientMessage(playerid, -1, string);
- //
- // *-- | QUILÔMETROS RODADOS | --*
- // format(string, sizeof(string), "Esse veículo percorreu %s Quilômetros Rodados.", GetKilometers(GetPlayerVehicleID(playerid)));
- // SendClientMessage(playerid, -1, string);
- //
- // *-- | MILHAS RODADOS | --*
- // format(string, sizeof(string), "Esse veículo percorreu %s Milhas Rodados.", GetMiles(GetPlayerVehicleID(playerid)));
- // SendClientMessage(playerid, -1, string);
- //
- // =====================================
- // CRÉDITOS
- // =====================================
- //
- // * Include Criada por EditPawn *
- // * BlueX e Paulor por me ajudar com algumas funções *
- // * Lordz pelo tutorial de ligar Funções e Callbacks *
- //
- // =====================================
- // BUGS, DÚVIDAS E SUGESTÕES
- // =====================================
- //
- // Acesse: http://forum.sa-mp.com/forumdisplay.php?f=56
- //
- //
- ///////////////////////////////////////////////////////////////////////////////////
- /* ----- INCLUDE ----- */
- #include a_samp
- /* ----- DEFINES ----- */
- #define GetMeters(%0) E@_R[%0]
- #define GetKilometers(%0) (E@_R[%0] * 0.001)
- #define GetMiles(%0) (E@_R[%0] * 0.000621)
- #define ResetMetersTraveled(%0) E@_R[%0] = 0;
- #define Paste "KMRodados/Veículo %d.ini" //Pasta para salvar a distância que cada veículo percorreu
- #define SaveDistance 1 // (0 - Desabilitar | 1 - Abilitar) O salvamento da distancia percorrida
- /* ----- VARS ----- */
- new E@_R[MAX_VEHICLES] = 0,
- Float:v@_P[3],
- E@_Timer[MAX_PLAYERS];
- #if SaveDistance == 1
- new File:E@_Arq;
- static E@_S[32],
- E@_Ss[24];
- #endif
- /* ----- FORWARDS ----- */
- forward E@_OnPlayerDisconnect(playerid, reason);
- forward E@_OnPlayerStateChange(playerid, newstate, oldstate);
- forward E@_At(playerid);
- forward E@_OnPlayerExitVehicle(playerid, vehicleid);
- forward E@_OnGameModeExit();
- forward E@_OnGameModeInit();
- /* ----- CALLBACKS ----- */
- public OnGameModeInit() {
- #if SaveDistance == 1
- for(new x; x < MAX_VEHICLES; ++x) {
- format(E@_S, sizeof(E@_S), Paste, x);
- if(fexist(E@_S)) {
- E@_Arq = fopen(E@_S, io_read);
- fread(E@_Arq, E@_Ss);
- E@_R[x] = strval(E@_Ss);
- fclose(E@_Arq);
- }
- }
- #endif
- return CallLocalFunction("E@_OnGameModeInit", "");
- }
- #if defined _ALS_OnGameModeInit
- #undef OnGameModeInit
- #endif
- #define OnGameModeInit E@_OnGameModeInit
- public OnGameModeExit() {
- #if SaveDistance == 1
- for(new x; x < MAX_VEHICLES; ++x) {
- if(E@_R[x] > 0) {
- format(E@_S, sizeof(E@_S), Paste, x);
- format(E@_Ss, sizeof(E@_Ss), "%d", E@_R[x]);
- E@_Arq = fopen(E@_S, io_write);
- fwrite(E@_Arq, E@_Ss);
- fclose(E@_Arq);
- }
- }
- #endif
- return CallLocalFunction("E@_OnGameModeExit", "");
- }
- #if defined _ALS_OnGameModeExit
- #undef OnGameModeExit
- #endif
- #define OnGameModeExit E@_OnGameModeExit
- public OnPlayerDisconnect(playerid, reason) {
- KillTimer(E@_Timer[playerid]);
- return CallLocalFunction("E@_OnPlayerDisconnect", "id", playerid, reason);
- }
- #if defined _ALS_OnPlayerDisconnect
- #undef OnPlayerDisconnect
- #else
- #define _ALS_OnPlayerDisconnect
- #endif
- #define OnPlayerDisconnect E@_OnPlayerDisconnect
- public OnPlayerExitVehicle(playerid, vehicleid) {
- KillTimer(E@_Timer[playerid]);
- return CallLocalFunction("E@_OnPlayerExitVehicle", "id", playerid, vehicleid);
- }
- #if defined _ALS_OnPlayerExitVehicle
- #undef OnPlayerExitVehicle
- #endif
- #define OnPlayerExitVehicle E@_OnPlayerExitVehicle
- public E@_At(playerid) {
- if(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]) <= 100) {
- E@_R[GetPlayerVehicleID(playerid)] += floatround(GetVehicleDistanceFromPoint(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]));
- }
- GetVehiclePos(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]);
- /*
- OBS: Caso queira fazer teste, apenas abilite essa parte e irá aparecer todas as formas de distância que o veículo está rodando.
- new E@_Str[129];
- format(E@_Str, sizeof(E@_Str), "(%d) Metros - (%0.3f) Quilômetros - (%0.3f) Milhas", GetMeters(GetPlayerVehicleID(playerid)), GetKilometers(GetPlayerVehicleID(playerid)), GetMiles(GetPlayerVehicleID(playerid)));
- SendClientMessage(playerid, -1, E@_Str);
- */
- }
- public OnPlayerStateChange(playerid, newstate, oldstate) {
- if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) {
- GetVehiclePos(GetPlayerVehicleID(playerid), v@_P[0], v@_P[1], v@_P[2]);
- E@_Timer[playerid] = SetTimerEx("E@_At", 1000, true, "i", playerid);
- }
- else if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT) KillTimer(E@_Timer[playerid]);
- return CallLocalFunction("E@_OnPlayerStateChange", "idd", playerid, newstate, oldstate);
- }
- #if defined _ALS_OnPlayerStateChange
- #undef OnPlayerStateChange
- #else
- #define _ALS_OnPlayerStateChange
- #endif
- #define OnPlayerStateChange E@_OnPlayerStateChange
- /* ----- STOCK ----- */
- stock E_SetVehiclePos(vehicleid, float:X, float:Y, float:Z) {
- SetVehiclePos(vehicleid, X, Y, Z);
- V@_P[0] = X, V@_P[1] = Y, V@_P[2] = Z;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement