[Ajuda] ID de Veнculo
#3

Й uma include que achei no fуrum, da uma olhada encima do cуdigo.

PHP код:
///////////////////////////////////////////////////////////////////////////////////
//
//                 |*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|*|
//                 |*|      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 PegarKMRodado(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.", PegarKMRodado(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   PegarKMRodado(%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               0 // (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(playeridreason);
forward E@_OnPlayerStateChange(playeridnewstateoldstate);
forward E@_At(playerid);
forward E@_OnPlayerExitVehicle(playeridvehicleid);
forward E@_OnGameModeExit();
forward E@_OnGameModeInit();

/* ----- CALLBACKS ----- */
public OnGameModeInit() {
    
#if SaveDistance == 1
        
for(new xMAX_VEHICLES; ++x) {
            
format(E@_Ssizeof(E@_S), Pastex);
            if(
fexist(E@_S)) {
                
E@_Arq fopen(E@_Sio_read);
                
fread(E@_ArqE@_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 xMAX_VEHICLES; ++x) {
            if(
E@_R[x] > 0) {
                
format(E@_Ssizeof(E@_S), Pastex);
                
format(E@_Sssizeof(E@_Ss), "%d"E@_R[x]);
                
E@_Arq fopen(E@_Sio_write);
                
fwrite(E@_ArqE@_Ss);
                
fclose(E@_Arq);
            }
        }
    
#endif
    
return CallLocalFunction("E@_OnGameModeExit""");
}

#if defined _ALS_OnGameModeExit
    #undef OnGameModeExit
#endif
#define OnGameModeExit E@_OnGameModeExit

public OnPlayerDisconnect(playeridreason) {
    
KillTimer(E@_Timer[playerid]);
    return 
CallLocalFunction("E@_OnPlayerDisconnect""id"playeridreason);
}

#if defined _ALS_OnPlayerDisconnect
    #undef OnPlayerDisconnect
#else
    #define _ALS_OnPlayerDisconnect
#endif
#define OnPlayerDisconnect E@_OnPlayerDisconnect

public OnPlayerExitVehicle(playeridvehicleid) {
    
KillTimer(E@_Timer[playerid]);
    return 
CallLocalFunction("E@_OnPlayerExitVehicle""id"playeridvehicleid);
}

#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)), PegarKMRodado(GetPlayerVehicleID(playerid)), GetMiles(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid, -1, E@_Str);
*/
}

public 
OnPlayerStateChange(playeridnewstateoldstate) {
    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"1000true"i"playerid);
    }
    else if(
oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOTKillTimer(E@_Timer[playerid]);
    return 
CallLocalFunction("E@_OnPlayerStateChange""idd"playeridnewstateoldstate);
}

#if defined _ALS_OnPlayerStateChange
    #undef OnPlayerStateChange
#else
    #define _ALS_OnPlayerStateChange
#endif
#define OnPlayerStateChange E@_OnPlayerStateChange

/* ----- STOCK ----- */
stock E_SetVehiclePos(vehicleidfloat:Xfloat:Yfloat:Z) {
    
SetVehiclePos(vehicleidXYZ);
    
V@_P[0] = XV@_P[1] = YV@_P[2] = Z;

Ah, e outra coisa nada haver com isso, na verdade, uma dъvida:
Eu estou salvando o Id dos veнculos pelo ARQUIVO, tipo, se jб possui Veiculo1, vai pro 2..
Tem algum problema? Ou eu tenho que identificar o Id exato do veнculo? Nгo tem como eu ser mais direto que isso.
Reply


Messages In This Thread
ID de Veнculo - by GuiKommander - 22.11.2018, 10:37
Re: ID de Veнculo - by ipsLuan - 22.11.2018, 11:18
Re: ID de Veнculo - by GuiKommander - 22.11.2018, 11:21
Re: ID de Veнculo - by ipsLuan - 22.11.2018, 11:23
Re: ID de Veнculo - by GuiKommander - 22.11.2018, 11:35
Re: ID de Veнculo - by ipsLuan - 22.11.2018, 12:17
Re: ID de Veнculo - by GuiKommander - 22.11.2018, 12:26
Re: ID de Veнculo - by ipsLuan - 22.11.2018, 13:22
Re: ID de Veнculo - by GuiKommander - 22.11.2018, 22:49
Re: ID de Veнculo - by RiqueP - 22.11.2018, 23:52

Forum Jump:


Users browsing this thread: 2 Guest(s)