Szerző Téma: Kocsirendszer hiba  (Megtekintve 1602 alkalommal)

Kocsirendszer hiba
« Dátum: 2014. december 06. - 16:15:35 »
0 Show voters
Helló!
Saját kocsirendszert írok, de problémá(k)ba ütköztem. Tudok kocsit létrehozni, betölteni, csak a rendszámot nem megfelelő kocsihoz adja hozzá... :/ Van egy olyan érzésem, hogy a tulajt sem tudja rendesen hozzárendelni.
OnGameModInit:
 
new vfile[64];
for(new vi=0; vi<MAX_VEHICLES; vi++)
    {
    format(vfile, sizeof(vfile), \"/vehicles/%i.ini\", vi);
    if(dini_Exists(vfile))
        {
        format(tulaj[vi], MAX_PLAYER_NAME, \"%s\", dini_Get(vfile, \"Tulaj\"));
        col1[vi]=dini_Int(vfile, \"Col1\");
        col2[vi]=dini_Int(vfile, \"Col2\");
        posx[vi]=dini_Float(vfile, \"PosX\");
            posy[vi]=dini_Float(vfile, \"PosY\");
            posz[vi]=dini_Float(vfile, \"PosZ\");
            posa[vi]=dini_Float(vfile, \"PosA\");
            format(rendszam[vi], 32, \"%s\", dini_Get(vfile, \"Rendszám\"));
            vhp[vi]=dini_Float(vfile, \"HP\");
            print(tulaj[vi]);
            print(rendszam[vi]);
            SetVehicleNumberPlate(vi, rendszam[vi]);
            CreateVehicle(dini_Int(vfile, \"Model\"), posx[vi], posy[vi], posz[vi], posa[vi], col1[vi], col2[vi], -1);
           
            SetVehicleHealth(vi, vhp[vi]);
   SetVehicleParamsEx(vi, false, false, false, true, false, false, false);
   }
    }

 

CMD:kocsicraft(playerid, params[])
{
new model, szin1, szin2;
if(sscanf(params, \"iii\", model, szin1, szin2)) return SendClientMessage(playerid, COLOR_GREY, \"Usage: /kocsicraft [Model] [szin1] [szin2] \");
if(IsPlayerAdmin(playerid))
{
new vfile[64];
for(new vi=0; vi<MAX_VEHICLES; vi++)
    {
    format(vfile, sizeof(vfile), \"/vehicles/%i.ini\", vi);
    if(!dini_Exists(vfile))
        {
        dini_Create(vfile);
        dini_Set(vfile, \"Tulaj\", \"Nincs\");
        dini_IntSet(vfile, \"Model\", model);
        dini_IntSet(vfile, \"Col1\", szin1);
        dini_IntSet(vfile, \"Col2\", szin2);
        dini_FloatSet(vfile, \"PosX\", x[playerid]);
        dini_FloatSet(vfile, \"PosY\", y[playerid]);
        dini_FloatSet(vfile, \"PosZ\", z[playerid]);
        dini_FloatSet(vfile, \"PosA\", 180.000);
        new rszov[10];
        format(rszov, sizeof(rszov), \"%s%s%s-%i\", betuk[random(26)], betuk[random(26)], betuk[random(26)], random(1000));
        dini_Set(vfile, \"Rendszám\", rszov);
        dini_FloatSet(vfile, \"HP\", 1000.0000);
       
        format(tulaj[vi], MAX_PLAYER_NAME, \"%s\", dini_Get(vfile, \"Tulaj\"));
        col1[vi]=dini_Int(vfile, \"Col1\");
        col2[vi]=dini_Int(vfile, \"Col2\");
        posx[vi]=dini_Float(vfile, \"PosX\");
            posy[vi]=dini_Float(vfile, \"PosY\");
            posz[vi]=dini_Float(vfile, \"PosZ\");
            posa[vi]=dini_Float(vfile, \"PosA\");
            format(rendszam[vi], 10, \"%s\", dini_Get(vfile, \"Rendszám\"));
            vhp[vi]=dini_Float(vfile, \"HP\");
            CreateVehicle(dini_Int(vfile, \"Model\"), posx[vi], posy[vi], posz[vi], posa[vi], col1[vi], col2[vi], -1);
            SetVehicleNumberPlate(vi, rendszam[vi]);
            SetVehicleHealth(vi, vhp[vi]);
            SetVehicleParamsEx(vi, false, false, false, true, false, false, false);
            break;
   }
    }
}
return 1;
}

 
Hol lehet a hiba? Előre is köszi!

Dupla hozzászólás automatikusan összefûzve. ( [time]2014. December 06. 16:16:32[/time] )

Bocsi, rossz helyre nyitottam!
« Utoljára szerkesztve: 2014. december 06. - 16:33:18 írta ƒlaﻛh »

Kocsirendszer hiba
« Válasz #1 Dátum: 2014. december 06. - 22:25:15 »
0 Show voters
Nem tudom,hogy pawn-ban mennyire számít de vannak,olyan nyelvek ahol számít a logikai sorrend is.
Pl:
 SetVehicleNumberPlate(vi, rendszam[vi]);
            CreateVehicle(dini_Int(vfile, \"Model\"), posx[vi], posy[vi], posz[vi], posa[vi], col1[vi], col2[vi], -1);

 
Szóval,szerintem megér egy próbát megcserélni a kettőt

Kocsirendszer hiba
« Válasz #2 Dátum: 2014. december 07. - 09:31:17 »
0 Show voters
A helyzet az, hogy alapjaraton logikai sorrendben volt minden benne, csak ugy meg egyaltalan nem ad a jocsikhoz semmilyen rendszamot, a SetVehicleToRespawn meg mukodeskeptelennek latszik... Igy ezert megcsereltem, mert igy a rendszamot mar megirja, es spawnolja utana a jarmuvet... Csak a rendszamok 1-gyel el vannak tolva... Probaltam hozzaadni az idhez 1-et, meg kivonni is 1-et, vagy egyaltalan nem volt rendszam vagy 2-vel tolta el...

Kocsirendszer hiba
« Válasz #3 Dátum: 2014. december 22. - 16:19:58 »
0 Show voters
Csinálj egy változót pl:
 

new car;

 
és ezt tedd a Createvehicle elé,valamint a SetVehicleNumberPlare(vi) helyére
így:
 
 
car=CreateVehicle(dini_Int(vfile, \"Model\"), posx[vi], posy[vi], posz[vi], posa[vi], col1[vi], col2[vi], -1);
SetVehicleNumberPlate(car, rendszam[vi]);

Kocsirendszer hiba
« Válasz #4 Dátum: 2014. december 25. - 20:09:08 »
0 Show voters
Nem tudom mennyiben másabb, ha változót csinálok hozzá, hisz az id ugyanaz marad...
A régi kocsirendszerem csak arra volt jó, hogy 1 embernek 1 autója lehessen, viszont én most névhez szeretném rendelni a kocsikat, hogy 1 embernek több is lehessen... :/ csak valami gond van a string változókkal...
Kipróbáltam ezt is, a probléma ugyanaz maradt.
« Utoljára szerkesztve: 2014. december 25. - 20:20:12 írta kiakovi »

Kocsirendszer hiba
« Válasz #5 Dátum: 2014. december 26. - 22:54:15 »
0 Show voters
Nekem van egy működő dolgom:
 
do
{
format(kkk,sizeof(kkk),\"/Kocsik/k%i.ini\",i);
if(!dini_Exists(kkk))
{
dini_Create(kkk);
dini_IntSet(kkk,\"kid\",0);
dini_FloatSet(kkk,\"kx\",0);
dini_FloatSet(kkk,\"ky\",0);
dini_FloatSet(kkk,\"kz\",0);
dini_IntSet(kkk,\"kszin1\",0);
dini_IntSet(kkk,\"kszin2\",0);
dini_Set(kkk,\"Rsz\",\"Nincs\");
dini_Set(kkk,\"Tulaj\",\"Senki\");
dini_IntSet(kkk,\"ar\",0);
}
else
{
kInfo[kid]=dini_Int(kkk,\"kid\");
kInfo[kx]=dini_Float(kkk,\"kx\");
kInfo[ky]=dini_Float(kkk,\"ky\");
kInfo[kz]=dini_Float(kkk,\"kz\");
kInfo[kszin1]=dini_Int(kkk,\"kszin1\");
kInfo[kszin2]=dini_Int(kkk,\"kszin2\");
kInfo[ar]=dini_Int(kkk,\"ar\");
car=AddStaticVehicle(kInfo[kid],kInfo[kx],kInfo[ky],kInfo[kz],90,kInfo[kszin1],kInfo[kszin2]);
SetVehicleNumberPlate(car, dini_Get(kkk,\"Rsz\"));
}
i++;
}
while(i<kocsik);

 
Ugye itt csak megadott kocsiszámba számol.
Konkrétan ugyan az,mármint a rendszámos rész,csak a format nincs az enyémben,éés tökéletesen működik :D
(
if(!dini_Exists(kkk))

 rész csak azért van benne,hogy ha valami hiba van a számolásban akkor tudjam :D)
« Utoljára szerkesztve: 2014. december 26. - 22:57:36 írta Tlalala »

Nem elérhető tonyo

  • 1335
  • Moderális Generátor
    • Profil megtekintése
Kocsirendszer hiba
« Válasz #6 Dátum: 2014. december 27. - 12:39:18 »
0 Show voters
Idézetet írta: kiakovi date=1419534548\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"51632\" data-ipsquote-contentclass=\"forums_Topic
Nem tudom mennyiben másabb, ha változót csinálok hozzá, hisz az id ugyanaz marad...
A régi kocsirendszerem csak arra volt jó, hogy 1 embernek 1 autója lehessen, viszont én most névhez szeretném rendelni a kocsikat, hogy 1 embernek több is lehessen... :/ csak valami gond van a string változókkal...
Kipróbáltam ezt is, a probléma ugyanaz maradt.
 
Pedig igaza van, az ID-kkel vna a gond. A te esetedben van egy jármű ID-d, amit a \"vi\" tartalmaz ugyebár. Ellenben a CreateVehicle (és a többi járműlétrehozó függvény is) automatikusan osztja ki a jármű ID-ket. Ezek pedig a SAMP által kiosztott ID-k, melyek eltérnek a te általad megadott \"vi\"-től.
A megoldás számodra az lehet, hogy a SAMP által használt jármű ID-t eltárolod egy változóba, és minden járműkezelő függvény esetén ( CreateVehicle, SetVehicleNumberPlate, SetVehicleHealth, SetVehicleParamsEx ) ezt az ID-t használod. Példa egy lehetséges megvalósításra:
 
CMD:kocsicraft(playerid, params[])
{
new model, szin1, szin2;
if(sscanf(params, \"iii\", model, szin1, szin2)) return SendClientMessage(playerid, COLOR_GREY, \"Usage: /kocsicraft [Model] [szin1] [szin2] \");
if(IsPlayerAdmin(playerid))
        {
        new vfile[64];
        for(new vi=0; vi<MAX_VEHICLES; vi++)
            {
            format(vfile, sizeof(vfile), \"/vehicles/%i.ini\", vi);
            if(!dini_Exists(vfile))
                {
                dini_Create(vfile);
                dini_Set(vfile, \"Tulaj\", \"Nincs\");
                dini_IntSet(vfile, \"Model\", model);
                dini_IntSet(vfile, \"Col1\", szin1);
                dini_IntSet(vfile, \"Col2\", szin2);
                dini_FloatSet(vfile, \"PosX\", x[playerid]);
                dini_FloatSet(vfile, \"PosY\", y[playerid]);
                dini_FloatSet(vfile, \"PosZ\", z[playerid]);
                dini_FloatSet(vfile, \"PosA\", 180.000);
                new rszov[10];
                format(rszov, sizeof(rszov), \"%s%s%s-%i\", betuk[random(26)], betuk[random(26)], betuk[random(26)], random(1000));
                dini_Set(vfile, \"Rendszám\", rszov);
                dini_FloatSet(vfile, \"HP\", 1000.0000);
               
                format(tulaj[vi], MAX_PLAYER_NAME, \"%s\", dini_Get(vfile, \"Tulaj\"));
                col1[vi]=dini_Int(vfile, \"Col1\");
                col2[vi]=dini_Int(vfile, \"Col2\");
                posx[vi]=dini_Float(vfile, \"PosX\");
            posy[vi]=dini_Float(vfile, \"PosY\");
            posz[vi]=dini_Float(vfile, \"PosZ\");
            posa[vi]=dini_Float(vfile, \"PosA\");
            format(rendszam[vi], 10, \"%s\", dini_Get(vfile, \"Rendszám\"));
            vhp[vi]=dini_Float(vfile, \"HP\");
            realid[vi] = CreateVehicle(dini_Int(vfile, \"Model\"), posx[vi], posy[vi], posz[vi], posa[vi], col1[vi], col2[vi], -1);
            SetVehicleNumberPlate(realid[vi], rendszam[vi]);
            SetVehicleHealth(realid[vi], vhp[vi]);
            SetVehicleParamsEx(realid[vi], false, false, false, true, false, false, false);
            break;
                        }
            }
        }
return 1;
}

 
Csak azt a részt írtam át amiről beszéltem, feltételezem hogy a többi rész megfelelően működik :)

Kocsirendszer hiba
« Válasz #7 Dátum: 2014. december 27. - 13:18:25 »
0 Show voters
Nálam is a \"kocsik\" változó számolja a kocsikat,és ez alapján spawnolja le.
Szóval mindegyik kocsinak adott lesz a dl id-je így könnyebb beazonosítani.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal