Jump to content
  • 0

Salvare Km Masina


Mark S.

Question

Problemă întâlnită (descriere): Salut, am kilometri la masina si vreau sa ii salvez in larp/vehicles/ blabla bla
Ero(area / rile) / warning-(ul / urile): nu am
Liniile de cod / sursa / script-ul:

la public OnPlayerUpdate(playerid)

new playerState = GetPlayerState(playerid);
    if(playerState == PLAYER_STATE_DRIVER)
    {
        new string[50];
        //KillTimer(timerkm[LastCar[playerid]]);
        format(string, sizeof(string), "ODO: %d Km", floatround(VehicleKM[LastCar[playerid]], floatround_ceil));//afisam cati kilometrii are parcursi
          TextDrawSetString(Textdraw69[playerid], string);
      }

 

si sus am declarat

 

new LastCar[MAX_PLAYERS];

    new Float:VehicleKM[MAX_VEHICLES];
    new Float:X1[MAX_VEHICLES];
    new Float:Y1[MAX_VEHICLES];
    new Float:Z1[MAX_VEHICLES];
    new Float:X2[MAX_VEHICLES];
    new Float:Y2[MAX_VEHICLES];
    new Float:Z2[MAX_VEHICLES];
    new timerkm[MAX_VEHICLES];
forward Actiunea(playerid);

forward km_counter(vehicleid);
public km_counter(vehicleid)
{
    //inlocuim valorile noi cu cele vechi
    printf("#Debug 1: %f %f %f", X1[vehicleid], Y1[vehicleid], Z1[vehicleid]);
    X1[vehicleid] = X2[vehicleid];
    Y1[vehicleid] = Y2[vehicleid];
    Z1[vehicleid] = Z2[vehicleid];
    printf("#Debug 2: %f %f %f", X2[vehicleid], Y2[vehicleid], Z2[vehicleid]);
    //stocam noile valori
    GetVehiclePos(vehicleid, X2[vehicleid], Y2[vehicleid], Z2[vehicleid]);
    printf("#Debug 3: %f %f %f", X2[vehicleid], Y2[vehicleid], Z2[vehicleid]);
    //calculam distanta dintre cele doua punce vehciul punct si cel nou
    X1[vehicleid] -= X2[vehicleid];
    Y1[vehicleid] -= Y2[vehicleid];
    Z1[vehicleid] -= Z2[vehicleid];
    printf("#Debug 4: %f %f %f", X1[vehicleid], Y1[vehicleid], Z1[vehicleid]);
    //acum il transformam in kilometrii(deoarece distanta este in metrii) impartind la 1000.0
    VehicleKM[vehicleid] += floatsqroot((X1[vehicleid]*X1[vehicleid])+(Y1[vehicleid]*Y1[vehicleid])+(Z1[vehicleid]*Z1[vehicleid])) / 1000.0;
    printf("#Debug 5: %f | %f", VehicleKM[vehicleid], floatsqroot((X1[vehicleid]*X1[vehicleid])+(Y1[vehicleid]*Y1[vehicleid])+(Z1[vehicleid]*Z1[vehicleid])) / 1000.0);
    return 1;
    }

 

 

Imagini / Video (optional): -
Aţi încercat să rezolvaţi singur?:

Am pus la

 

public LoadCar()

 

unde mai este

 

CarInfo[idx][cModel] = dini_Int(file,"Model");

am adaugat sub el

 

CarInfo[idx][VehicleKM] = dini_Int(file,"ODO"); iar acest VehicleKM sunt problema nu stiu cum sa scriu sa ii salveze stie cineva cum sa ii scriu?

Link to comment
Share on other sites

Recommended Posts

am modificar peste tot in odo si nu da nicio eroare dar tot nu se salveaza, scriptul de unde stie ca acel  CarInfo[idx][odo]  reprezinta kilometri facuti de masina prin scriptul acesta de unde stie sa contorizeze? http://forum.sa-mp.ro/index.php/topic/17855-masurarea-kilometrilor/?hl=%2Bvehiclekm[vehicleid]+%2Bfloatsqroot%28%28x1[vehicleid]*x1[vehicleid]

Edited by Selby
Link to comment
Share on other sites

pai si ce trebuie sa pun acolo la enum info sub cinfo sa pun vehiclekm?

 

si nu trebuie sa pun vehiclekm[vehicleid]?

 

 

Daca modific in CarInfo[idx][VehicleKM] = dini_Int(file,"km"); 

zice eroare    error 033: array must be indexed (variable "VehicleKM")

Edited by Selby
Link to comment
Share on other sites

Nu, nu pui asa. Cand se incarca masina lasi cum e acolo.

 

Cand ii setezi valoarea in fisier ii pui [pawn]dini_FloatSet(file,"odo", VehicleKM[idx]);[/pawn] sau [pawn]dini_FloatSet(file,"KM", VehicleKM[idx]);[/pawn] Cum ai tu in fisier, odo sau KM.

 

FloatSet - Pune KM cu decimale.

Link to comment
Share on other sites

Bun, eu am asa 3 linii unde pun [vehiclekm]

 

1

public LoadCar()
{
    new file[26];
    for(new idx = 1; idx < sizeof(CarInfo) ; idx++)
    {
            format(file, sizeof(file),"LARP/Vehicles/%d.ini", idx);
             CarInfo[idx][cModel] = dini_Int(file,"Model");
            CarInfo[idx][cLocationx] = dini_Float(file,"Location_X");
            CarInfo[idx][cLocationy] = dini_Float(file,"Location_Y");
            CarInfo[idx][cLocationz] = dini_Float(file,"Location_Z");
            CarInfo[idx][cAngle] = dini_Float(file,"Angle");
            CarInfo[idx][cColorOne] = dini_Int(file,"Color_1");
            CarInfo[idx][cColorTwo] = dini_Int(file,"Color_2");
            strmid(CarInfo[idx][cOwner], dini_Get(file,"Owner"), 0, strlen(dini_Get(file,"Owner")), 255);
            strmid(CarInfo[idx][cPlate], dini_Get(file,"Plate"), 0, strlen(dini_Get(file,"Plate")), 255);
            CarInfo[idx][cOwned] = dini_Int(file,"Owned");
            CarInfo[idx][cLock] = dini_Int(file,"Locked");
            CarInfo[idx][cID] = dini_Int(file,"ID");
            CarInfo[idx][cPaintjob] = dini_Int(file,"Paintjob");
            CarInfo[idx][cVirWorld] = dini_Int(file,"VirtualWorld");
            CarInfo[idx][cUnused] = dini_Int(file,"Unused");
               CarInfo[idx][cComponent0] = dini_Int(file,"Component0");
               CarInfo[idx][cComponent1] = dini_Int(file,"Component1");
            CarInfo[idx][cComponent2] = dini_Int(file,"Component2");
            CarInfo[idx][cComponent3] = dini_Int(file,"Component3");
            CarInfo[idx][cComponent4] = dini_Int(file,"Component4");
            CarInfo[idx][cComponent5] = dini_Int(file,"Component5");
            CarInfo[idx][cComponent6] = dini_Int(file,"Component6");
            CarInfo[idx][cComponent7] = dini_Int(file,"Component7");
            CarInfo[idx][cComponent8] = dini_Int(file,"Component8");
            CarInfo[idx][cComponent9] = dini_Int(file,"Component9");
            CarInfo[idx][cComponent10] = dini_Int(file,"Component10");
            CarInfo[idx][cComponent11] = dini_Int(file,"Component11");
            CarInfo[idx][cComponent12] = dini_Int(file,"Component12");
            CarInfo[idx][cComponent13] = dini_Int(file,"Component13");
            CarInfo[idx][cCode] = dini_Int(file,"SecurityCode");
            CarInfo[idx][cParkTicket] = dini_Int(file,"TicketPrice");
            strmid(CarInfo[idx][cTicketer], dini_Get(file,"Officer"), 0, strlen(dini_Get(file,"Officer")), 255);
            CarInfo[idx][cTrunkGun1] = dini_Int(file,"Gun1");
            CarInfo[idx][cTrunkAmmo1] = dini_Int(file,"Ammo1");
            CarInfo[idx][cTrunkGun2] = dini_Int(file,"Gun2");
            CarInfo[idx][cTrunkAmmo2] = dini_Int(file,"Ammo2");
            CarInfo[idx][cTrunkGun3] = dini_Int(file,"Gun3");
            CarInfo[idx][cTrunkAmmo3] = dini_Int(file,"Ammo3");
            CarInfo[idx][cTrunkGun4] = dini_Int(file,"Gun4");
            CarInfo[idx][cTrunkAmmo4] = dini_Int(file,"Ammo4");
            CarInfo[idx][cTrunkGun5] = dini_Int(file,"Gun5");
            CarInfo[idx][cTrunkAmmo5] = dini_Int(file,"Ammo5");
            CarInfo[idx][cTrunkGun6] = dini_Int(file,"Gun6");
            CarInfo[idx][cTrunkAmmo6] = dini_Int(file,"Ammo6");
            CarInfo[idx][cTrunkGun7] = dini_Int(file,"Gun7");
            CarInfo[idx][cTrunkAmmo7] = dini_Int(file,"Ammo7");
            CarInfo[idx][cTrunkGun8] = dini_Int(file,"Gun8");
            CarInfo[idx][cTrunkAmmo8] = dini_Int(file,"Ammo8");
            CarInfo[idx][cTrunkGun9] = dini_Int(file,"Gun9");
            CarInfo[idx][cTrunkAmmo9] = dini_Int(file,"Ammo9");
            CarInfo[idx][cTrunkGun10] = dini_Int(file,"Gun10");
            CarInfo[idx][cTrunkAmmo10] = dini_Int(file,"Ammo10");
            CarInfo[idx][cTrunkGun11] = dini_Int(file,"Gun11");
            CarInfo[idx][cTrunkAmmo11] = dini_Int(file,"Ammo11");
    }
    return 1;
}

 

2

public ProportionalUpdate(update,idx)
{
    new file[64];
    if(update == 1)
    {
            format(file, sizeof(file),"LARP/Vehicles/%d.ini",idx);
               dini_IntSet(file,"Model",CarInfo[idx][cModel]);
            dini_FloatSet(file,"Location_X",CarInfo[idx][cLocationx]);
            dini_FloatSet(file,"Location_Y",CarInfo[idx][cLocationy]);
            dini_FloatSet(file,"Location_Z",CarInfo[idx][cLocationz]);
            dini_FloatSet(file,"Angle",CarInfo[idx][cAngle]);
            dini_IntSet(file,"Color_1",CarInfo[idx][cColorOne]);
            dini_IntSet(file,"Color_2",CarInfo[idx][cColorTwo]);
            dini_Set(file,"Owner",CarInfo[idx][cOwner]);
            dini_Set(file,"Plate",CarInfo[idx][cPlate]);
            dini_IntSet(file,"ID",CarInfo[idx][cID]);
            dini_IntSet(file,"Owned",CarInfo[idx][cOwned]);
            dini_IntSet(file,"Locked",CarInfo[idx][cLock]);
            dini_IntSet(file,"Paintjob",CarInfo[idx][cPaintjob]);
            dini_IntSet(file,"VirtualWorld",CarInfo[idx][cVirWorld]);
            dini_IntSet(file,"Unused",CarInfo[idx][cUnused]);
            dini_IntSet(file,"Component0",CarInfo[idx][cComponent0]);
            dini_IntSet(file,"Component1",CarInfo[idx][cComponent1]);
            dini_IntSet(file,"Component2",CarInfo[idx][cComponent2]);
            dini_IntSet(file,"Component3",CarInfo[idx][cComponent3]);
            dini_IntSet(file,"Component4",CarInfo[idx][cComponent4]);
            dini_IntSet(file,"Component5",CarInfo[idx][cComponent5]);
            dini_IntSet(file,"Component6",CarInfo[idx][cComponent6]);
            dini_IntSet(file,"Component7",CarInfo[idx][cComponent7]);
            dini_IntSet(file,"Component8",CarInfo[idx][cComponent8]);
            dini_IntSet(file,"Component9",CarInfo[idx][cComponent9]);
            dini_IntSet(file,"Component10",CarInfo[idx][cComponent10]);
            dini_IntSet(file,"Component11",CarInfo[idx][cComponent11]);
            dini_IntSet(file,"Component12",CarInfo[idx][cComponent12]);
            dini_IntSet(file,"Component13",CarInfo[idx][cComponent13]);
            dini_IntSet(file,"SecurityCode",CarInfo[idx][cCode]);
            dini_IntSet(file,"TicketPrice",CarInfo[idx][cParkTicket]);
            dini_Set(file,"Officer",CarInfo[idx][cTicketer]);
            dini_IntSet(file,"Gun1",CarInfo[idx][cTrunkGun1]);
            dini_IntSet(file,"Ammo1",CarInfo[idx][cTrunkAmmo1]);
            dini_IntSet(file,"Gun2",CarInfo[idx][cTrunkGun2]);
            dini_IntSet(file,"Ammo2",CarInfo[idx][cTrunkAmmo2]);
            dini_IntSet(file,"Gun3",CarInfo[idx][cTrunkGun3]);
            dini_IntSet(file,"Ammo3",CarInfo[idx][cTrunkAmmo3]);
            dini_IntSet(file,"Gun4",CarInfo[idx][cTrunkGun4]);
            dini_IntSet(file,"Ammo4",CarInfo[idx][cTrunkAmmo4]);
            dini_IntSet(file,"Gun5",CarInfo[idx][cTrunkGun5]);
            dini_IntSet(file,"Ammo5",CarInfo[idx][cTrunkAmmo5]);
            dini_IntSet(file,"Gun6",CarInfo[idx][cTrunkGun6]);
            dini_IntSet(file,"Ammo6",CarInfo[idx][cTrunkAmmo6]);
            dini_IntSet(file,"Gun7",CarInfo[idx][cTrunkGun7]);
            dini_IntSet(file,"Ammo7",CarInfo[idx][cTrunkAmmo7]);
            dini_IntSet(file,"Gun8",CarInfo[idx][cTrunkGun8]);
            dini_IntSet(file,"Ammo8",CarInfo[idx][cTrunkAmmo8]);
            dini_IntSet(file,"Gun9",CarInfo[idx][cTrunkGun9]);
            dini_IntSet(file,"Ammo9",CarInfo[idx][cTrunkAmmo9]);
            dini_IntSet(file,"Gun10",CarInfo[idx][cTrunkGun10]);
            dini_IntSet(file,"Ammo10",CarInfo[idx][cTrunkAmmo10]);
            dini_IntSet(file,"Gun11",CarInfo[idx][cTrunkGun11]);
            dini_IntSet(file,"Ammo11",CarInfo[idx][cTrunkAmmo11]);
    }

 

si 3

public OnPropUpdate(update,idx)
{
    new file[64];
    if(update == 1)
    {
        format(file, sizeof(file),"LARP/Vehicles/%d.ini",idx);
        if(dini_Exists(file))
        {
                 dini_IntSet(file,"Model",CarInfo[idx][cModel]);
                 dini_FloatSet(file,"km",CarInfo[idx] VehicleKM(idx));
                dini_FloatSet(file,"Location_X",CarInfo[idx][cLocationx]);
                dini_FloatSet(file,"Location_Y",CarInfo[idx][cLocationy]);
                dini_FloatSet(file,"Location_Z",CarInfo[idx][cLocationz]);
                dini_FloatSet(file,"Angle",CarInfo[idx][cAngle]);
                dini_IntSet(file,"Color_1",CarInfo[idx][cColorOne]);
                dini_IntSet(file,"Color_2",CarInfo[idx][cColorTwo]);
                dini_Set(file,"Owner",CarInfo[idx][cOwner]);
                dini_IntSet(file,"Owned",CarInfo[idx][cOwned]);
                dini_Set(file,"Plate",CarInfo[idx][cPlate]);
                dini_IntSet(file,"ID",CarInfo[idx][cID]);
                dini_IntSet(file,"Locked",CarInfo[idx][cLock]);
                dini_IntSet(file,"Paintjob",CarInfo[idx][cPaintjob]);
                dini_IntSet(file,"VirtualWorld",CarInfo[idx][cVirWorld]);
                dini_IntSet(file,"Unused",CarInfo[idx][cUnused]);
                dini_IntSet(file,"Component0",CarInfo[idx][cComponent0]);
                dini_IntSet(file,"Component1",CarInfo[idx][cComponent1]);
                dini_IntSet(file,"Component2",CarInfo[idx][cComponent2]);
                dini_IntSet(file,"Component3",CarInfo[idx][cComponent3]);
                dini_IntSet(file,"Component4",CarInfo[idx][cComponent4]);
                dini_IntSet(file,"Component5",CarInfo[idx][cComponent5]);
                dini_IntSet(file,"Component6",CarInfo[idx][cComponent6]);
                dini_IntSet(file,"Component7",CarInfo[idx][cComponent7]);
                dini_IntSet(file,"Component8",CarInfo[idx][cComponent8]);
                dini_IntSet(file,"Component9",CarInfo[idx][cComponent9]);
                dini_IntSet(file,"Component10",CarInfo[idx][cComponent10]);
                dini_IntSet(file,"Component11",CarInfo[idx][cComponent11]);
                dini_IntSet(file,"Component12",CarInfo[idx][cComponent12]);
                dini_IntSet(file,"Component13",CarInfo[idx][cComponent13]);
                dini_IntSet(file,"SecurityCode",CarInfo[idx][cCode]);
        }
     }

 

eu am pus la toate cate un vehiclekm idx sau cum era, spune-mi te rog dinnou la care trebuie pus ce trebuie pus si cum

Edited by Selby
Link to comment
Share on other sites

Multumesc mult acum merge la "bordul" de lamasina zice ca are 16km iar in .ini zice ca are 15.7412 e bine cu o eroare de cativa metri,

 

dar nu merge cu   CarInfo[idx][KM] = 0.000;   merge cu "car"  adica

 

CarInfo[car][KM] = 0.000; care e diferenta si e ceva gresit?

 

si cum ziceai ca fac in loc de 16 KM  sa arata 16.3 km

 

Atat mai vreau sa stiu

 

Multumesc anticipat

 

 

 

EDIT: scuze am observat ca greseala nu este la "car" in loc de "idx" ci la 0.000 am pus 0 si merge  CarInfo[idx][KM] = 0;

Edited by Selby
Link to comment
Share on other sites

E diferenta doar ca nu am fost eu atent cum ai tu pastrat ID-ul masinii in comanda pentru cumparare. idx il foloseai la Update si la Load, dar in comanda e car, deci nu e nimic gresit.

 

Si ti-am spus anterior.

 

 

In al patrulea rand, daca vrei sa vezi si cu decimale cati kilometrii ai facut sterge floatround cand ii setezi text-ul textdraw-ului si lasa doar [pawn]VehicleKM[LastCar[playerid]][/pawn]
Link to comment
Share on other sites

if(playerState == PLAYER_STATE_DRIVER)
    {
        if(IsAnOwnableCar(newcar))
        {
       
            format(string, sizeof(string), "~b~ODO:~w~ %d Km",floatround(VehicleKM[LastCar[playerid]], floatround_ceil));//afisam cati kilometrii are parcursi
              TextDrawSetString(Textdraw69[playerid], string);
          }

 

 

Daca il las asa

 

format(string, sizeof(string), "~b~ODO:~w~ %d Km",VehicleKM[LastCar[playerid]]));

 

arata la kilometraj ceva de genul ata "KM: 1034986452"

 

http://i.imgur.com/MYjsDuJ.jpg

Edited by Selby
Link to comment
Share on other sites

Exact. Dar vezi ca la final ai o paranteza in plus (")").

 

[pawn]if(playerState == PLAYER_STATE_DRIVER)
{
if(IsAnOwnableCar(newcar))
{

format(string, sizeof(string), "~b~ODO:~w~ %d Km", VehicleKM[LastCar[playerid]]);//afisam cati kilometrii are parcursi
TextDrawSetString(Textdraw69[playerid], string);
}

[/pawn]

  • Upvote 1
Link to comment
Share on other sites

Ah, am uitat sa iti spun sa modifici %d in %f.

 

[pawn] if(playerState == PLAYER_STATE_DRIVER)
{
if(IsAnOwnableCar(newcar))
{
format(string, sizeof(string), "~b~ODO:~w~ %f Km", VehicleKM[LastCar[playerid]]);//afisam cati kilometrii are parcursi
TextDrawSetString(Textdraw69[playerid], string);
}[/pawn]

  • Upvote 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more details you can also review our Terms of Use and Privacy Policy.