Distance vehicle not set!
#1

Код HTML:
Veh[r][ServerID] = CreateVehicleEx(Veh[r][Model], Veh[r][PosX], Veh[r][PosY], Veh[r][PosZ], Veh[r][VAngle], Veh[r][Color1], Veh[r][Color2], -1);
KMVeh[Veh[r][ServerID]] = Veh[r][KM];
SetDistanceTraveled(Veh[r][ServerID], KMVeh[Veh[r][ServerID]]);

printf("KMVeh: %0.1f", KMVeh[Veh[r][ServerID]]);
printf("Server ID: %d", Veh[r][ServerID]);
printf("Distance: %0.1f", GetDistanceTraveled(Veh[r][ServerID])/1000);
Debug LOG:
Код HTML:
[18:29:43] KMVeh: 69.4
[18:29:43] Server ID: 352
[18:29:43] Distance: 0.0
Distance is "69.4", not 0.0.

Код HTML:
stock SetDistanceTraveled(vehicleid, Float:value)
{
    Percorreu[vehicleid] = value;
    return 1;
}
All .INC:
Код HTML:
/************************* FORWARDS ***************************/
forward ModeInit();
forward StateChange(playerid, newstate, oldstate);
forward GetPositionAll();
forward Corrida(vehicleid);
 
/********************** VARIБVEIS ****************************/
new Float:VehicleX[MAX_VEHICLES];
new Float:VehicleY[MAX_VEHICLES];
new Float:VehicleZ[MAX_VEHICLES];
new Float:Percorreu[MAX_VEHICLES];
new Timer[MAX_VEHICLES];
new ppID[MAX_PLAYERS];
/************************************************************/
public OnGameModeInit()
{
    SetTimer("GetPositionAll", 5000, false);
    return CallLocalFunction("ModeInit", "");
}
public GetPositionAll()
{
    for(new v; v < MAX_VEHICLES; v++)
    {
           if(GetVehicleModel(v) != 0) GetVehiclePos(v, VehicleX[v], VehicleY[v], VehicleZ[v]);
    }
    return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
        ppID[playerid] = GetPlayerVehicleID(playerid);
        Timer[ppID[playerid]] = SetTimerEx("Corrida", 5000, true, "i", ppID[playerid]);
    }
    if(oldstate == PLAYER_STATE_DRIVER)
    {
        KillTimer(Timer[ppID[playerid]]);
    }
    return CallLocalFunction("StateChange", "iii",playerid, newstate, oldstate);
}
public Corrida(vehicleid)
{
        Percorreu[vehicleid] += GetVehicleDistanceFromPoint(vehicleid, VehicleX[vehicleid], VehicleY[vehicleid], VehicleZ[vehicleid]);
        GetVehiclePos(vehicleid, VehicleX[vehicleid], VehicleY[vehicleid], VehicleZ[vehicleid]);
        return 1;
}
/********************************** STOCKS ***************************************/
stock Float:GetDistanceTraveled(vehicleid)
{
     Corrida(vehicleid);
     return Percorreu[vehicleid];
}
stock SetVehiclePosEx(vehicleid, Float:X, Float:Y, Float:Z)
{
    SetVehiclePos(vehicleid, X, Y, Z);
        VehicleX[vehicleid] = X;
        VehicleY[vehicleid] = Y;
        VehicleZ[vehicleid] = Z;
        return 1;
}
stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay)
{
    new nID = CreateVehicle(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawn_delay);
    GetVehiclePos(nID,VehicleX[nID], VehicleY[nID], VehicleZ[nID]);
    return nID;
}
stock SetDistanceTraveled(vehicleid, Float:value)
{
    Percorreu[vehicleid] = value;
    return 1;
}

/********** HOOKS **************/
#if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
#else
    #define _ALS_OnGameModeInit
#endif
#if defined _ALS_OnPlayerStateChange
    #undef OnPlayerStateChange
#else
    #define _ALS_OnPlayerStateChange
#endif
 
#define OnGameModeInit ModeInit
#define OnPlayerStateChange StateChange
Reply
#2

use
PHP код:
stock Float:GetDistanceBetweenPoints3D(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2){
    return 
VectorSize(x1-x2y1-y2z1-z2);

Reply
#3

Not work.
Reply
#4

Anyone?
Reply
#5

Can you explain more detail pls ?
Reply
#6

Do not set correct distance traveled!
Reply
#7

Calculate distance traveled by speed instead, much easier and the code will be more efficient.
Reply
#8

Quote:
Originally Posted by liquor
Посмотреть сообщение
Calculate distance traveled by speed instead, much easier and the code will be more efficient.
Can you give an example please?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)