Szerző Téma: Parkol parancs hiba kocsinál  (Megtekintve 2123 alkalommal)

Parkol parancs hiba kocsinál
« Dátum: 2018. április 07. - 11:12:24 »
0 Show voters
Sziasztok, most kezdtem belekóstolgatni úgymond a kocsirendszer írásába, megpróbálkoztam magamtól megírni egyet, viszont a parkol parancsnál hiba van, leparkolja az autót, aztán törlődik és nem lesz meg a kocsi, valamint mindig amikor kocsit veszek id 12-est ad neki, mert már bent van másik kocsi is, hogy lehet azokat a kocsikat kivenni úgymond és 0-ás idt adni a megvett kocsiknak? vagy is hogy az első megvett kocsi idje 0, aztán a másiké 1 stb.. Bevallom jómagam más modból vettem némi segítséget, de nem anyni volt az egész, hogy megfogtam és kimásoltam, értelmeztem a dolgokat, legalább is próbáltam, és nagyjából megértettem hogy mi mit csinál, viszont nem tudom mit rontottam el
 
Itt vannak a stockok amiket használok
 

new bool:validcar[MAX_VEHICLES];
stock GetFreeVehicleSlot()
{
    for(new i = 0; i < sizeof(validcar); i ++)
    {
        if(!validcar[i]) return i;
    }
    return -1;
}
stock vFile(vehicleid)
{
new vehicleFile[60];
format(vehicleFile,sizeof(vehicleFile),\"/kocsik/%d.ini\", vehicleid);
return vehicleFile;
}
stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:a, color1, color2, respawntime, tulaj[24])
{
new vehicleid = GetFreeVehicleSlot();
JarmuInfo[vehicleid][Model] = modelid;
JarmuInfo[vehicleid][XPos] = x;
JarmuInfo[vehicleid][YPos] = y;
JarmuInfo[vehicleid][ZPos] = z;
JarmuInfo[vehicleid][APos] = a;
JarmuInfo[vehicleid][Szin1] = color1;
JarmuInfo[vehicleid][Szin2] = color2;
JarmuInfo[vehicleid][Respawn] = respawntime;
JarmuInfo[vehicleid][Tulaj] = tulaj;
CreateVehicle(modelid, x, y, z, a, color1, color2, respawntime);
return vehicleid;
}
stock LoadVehicle(vehicleid)
{
new vfilename[64];
format(vfilename, sizeof(vfilename),\"/kocsik/%d.ini\", vehicleid);
JarmuInfo[vehicleid][Model] = dini_Int(vfilename,\"Model\");
JarmuInfo[vehicleid][XPos] = dini_Float(vfilename, \"XPos\");
JarmuInfo[vehicleid][YPos] = dini_Float(vfilename, \"YPos\");
JarmuInfo[vehicleid][ZPos] = dini_Float(vfilename, \"ZPos\");
JarmuInfo[vehicleid][APos] = dini_Float(vfilename, \"APos\");
JarmuInfo[vehicleid][Szin1] = dini_Int(vfilename, \"Szin1\");
JarmuInfo[vehicleid][Szin2] = dini_Int(vfilename, \"Szin2\");
JarmuInfo[vehicleid][Respawn] = dini_Int(vfilename, \"Respawn\");
format(JarmuInfo[vehicleid][Tulaj], (60),\"%s\", dini_Get(vfilename, \"Tulaj\"));
JarmuInfo[vehicleid][Elet] = dini_Float(vfilename, \"HP\");
JarmuInfo[vehicleid][Zarva] = dini_Int(vfilename, \"Zarva\");
SetVehicleHealth(vehicleid, JarmuInfo[vehicleid][Elet]);
CreateVehicle(JarmuInfo[vehicleid][Model], JarmuInfo[vehicleid][XPos], JarmuInfo[vehicleid][YPos], JarmuInfo[vehicleid][ZPos], JarmuInfo[vehicleid][APos], JarmuInfo[vehicleid][Szin1], JarmuInfo[vehicleid][Szin2], JarmuInfo[vehicleid][Respawn]);
SetVehicleHealth(vehicleid, JarmuInfo[vehicleid][Elet]);
}
stock ReloadVehicle(vehicleid)
{
DestroyVehicle(vehicleid);
    new vfilename[24];
format(vfilename, sizeof(vfilename),\"/kocsik/%d.ini\", vehicleid);
JarmuInfo[vehicleid][Model] = dini_Int(vfilename,\"Model\");
JarmuInfo[vehicleid][XPos] = dini_Float(vfilename, \"XPos\");
JarmuInfo[vehicleid][YPos] = dini_Float(vfilename, \"YPos\");
JarmuInfo[vehicleid][ZPos] = dini_Float(vfilename, \"ZPos\");
JarmuInfo[vehicleid][APos] = dini_Float(vfilename, \"APos\");
JarmuInfo[vehicleid][Szin1] = dini_Int(vfilename, \"Szin1\");
JarmuInfo[vehicleid][Szin2] = dini_Int(vfilename, \"Szin2\");
JarmuInfo[vehicleid][Respawn] = dini_Int(vfilename, \"Respawn\");
format(JarmuInfo[vehicleid][Tulaj], (60),\"%s\", dini_Get(vfilename, \"Tulaj\"));
JarmuInfo[vehicleid][Elet] = dini_Float(vfilename, \"HP\");
JarmuInfo[vehicleid][Zarva] = dini_Int(vfilename, \"Zarva\");
vehicleid = CreateVehicle(JarmuInfo[vehicleid][Model], JarmuInfo[vehicleid][XPos], JarmuInfo[vehicleid][YPos], JarmuInfo[vehicleid][ZPos], JarmuInfo[vehicleid][APos], JarmuInfo[vehicleid][Szin1], JarmuInfo[vehicleid][Szin2], JarmuInfo[vehicleid][Respawn]);
SetVehicleHealth(vehicleid, JarmuInfo[vehicleid][Elet]);
}
stock SaveVehicle(vehicleid)
{
    vehicleid = GetFreeVehicleSlot();
    GetVehicleHealth(vehicleid, JarmuInfo[vehicleid][Elet]);
    new vfilename[36];
    format(vfilename, sizeof(vfilename),\"/kocsik/%d.ini\", vehicleid);
if(fexist(vfilename))
{
    dini_IntSet(vfilename,\"Model\", JarmuInfo[vehicleid][Model]);
    dini_FloatSet(vfilename,\"XPos\", JarmuInfo[vehicleid][XPos]);
    dini_FloatSet(vfilename,\"YPos\", JarmuInfo[vehicleid][YPos]);
    dini_FloatSet(vfilename,\"ZPos\", JarmuInfo[vehicleid][ZPos]);
    dini_FloatSet(vfilename,\"APos\", JarmuInfo[vehicleid][APos]);
    dini_IntSet(vfilename,\"Szin1\", JarmuInfo[vehicleid][Szin1]);
    dini_IntSet(vfilename,\"Szin2\", JarmuInfo[vehicleid][Szin2]);
    dini_IntSet(vfilename,\"Respawn\", JarmuInfo[vehicleid][Respawn]);
    dini_FloatSet(vfilename,\"HP\", JarmuInfo[vehicleid][Elet]);
   dini_Set(vfilename, \"Tulaj\", JarmuInfo[vehicleid][Tulaj]);
   dini_IntSet(vfilename, \"Zarva\", JarmuInfo[vehicleid][Zarva]);
   //format(JarmuInfo[vehicleid][Tulaj], 30, \"%s\", Name(playerid));
}
}
stock MakeVehicle(vehicleid)
{
vehicleid = GetFreeVehicleSlot();
new vfilename[18];
GetVehicleHealth(vehicleid, JarmuInfo[vehicleid][Elet]);
format(vfilename,sizeof(vfilename),\"/kocsik/%d.ini\", vehicleid);
if(!fexist(vfilename))
{
   dini_Create(vfilename);
    dini_IntSet(vfilename,\"Model\", JarmuInfo[vehicleid][Model]);
    dini_FloatSet(vfilename,\"XPos\", JarmuInfo[vehicleid][XPos]);
    dini_FloatSet(vfilename,\"YPos\", JarmuInfo[vehicleid][YPos]);
    dini_FloatSet(vfilename,\"ZPos\", JarmuInfo[vehicleid][ZPos]);
    dini_FloatSet(vfilename,\"APos\", JarmuInfo[vehicleid][APos]);
    dini_IntSet(vfilename,\"Szin1\", JarmuInfo[vehicleid][Szin1]);
    dini_IntSet(vfilename,\"Szin2\", JarmuInfo[vehicleid][Szin2]);
    dini_IntSet(vfilename,\"Respawn\", JarmuInfo[vehicleid][Respawn]);
    dini_FloatSet(vfilename,\"HP\", JarmuInfo[vehicleid][Elet]);
    dini_Set(vfilename, \"Tulaj\", JarmuInfo[vehicleid][Tulaj]);
    dini_IntSet(vfilename, \"Zarva\", JarmuInfo[vehicleid][Zarva]);
}
}
stock LoadAllVehicles()
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
    LoadVehicle(i);
}
}
stock SaveAllVehicles()
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
    SaveVehicle(i);
}
}

 
 
 
És amiben hiba van, parkol és járművesz dialog: 
 

CMD:parkol(playerid, params[])
{
    new vehicleid = Kozelikocsi(playerid);
new Float:x, Float:y, Float:z;
for(new i; i < MAX_VEHICLES; i++)
{
       GetVehiclePos(i, x, y, z);
    if(IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
       {
          if(CompareEx(Name(playerid), JarmuInfo[i][Tulaj]))
         {
                  if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
            {
               GetVehicleZAngle(vehicleid, JarmuInfo[vehicleid][APos]);
               GetVehiclePos(vehicleid, JarmuInfo[vehicleid][XPos], JarmuInfo[vehicleid][ZPos], JarmuInfo[vehicleid][YPos]);
                SCM(playerid, -1,\"{ffdd00}Sikeresen leparkoltad a kocsid!\");
               SaveVehicle(vehicleid);
                ReloadVehicle(vehicleid);
                }
                else
                {
                    SCM(playerid, -1,\"{ff0000}Szállj be a kocsiba, és úgy parkold le!\");
            }
         }
   }
}
return 1;
}


if(dialogid == jarmuvesz)
{
   if(response)
   {
      new sz_gString[ 128 + 1 ], S[256];
      new i_Vehicle = 0;
         new talalat = 0;
      for(new i; i < MAX_VEHICLES; i ++)
      {
         if( Egyezik( Name(playerid), JarmuInfo[i][Tulaj]))
         {
            talalat++;
         }
      }
      if(talalat >= 3) return SCM(playerid, -1, \"{ff0000}Maximum 3 kocsid lehet, prémium tagság esetén 6!\");
      if( i_Vehicle >= MAX_VEHICLES) return SendClientMessageToAll(PIROS, \"Nem lehet több járművet venni, a járművek elérték a maximumot!\");
      if(JatekosInfo[playerid][Penz] < Vehicles[listitem][1]) return SCM(playerid, -1, \"{ff0000}Nincs elég pénz nálad ennek a kocsinak a vásárlásához!\");
      JatekosInfo[playerid][Penz] -= Vehicles[ listitem ][ 1 ];
      i_Vehicle = CreateVehicle( GetVehicleNameFromDialog(listitem), -1221.7827,1827.3278,41.4795,229.6266, 1, 1, 0 );
 
      JarmuInfo[i_Vehicle][XPos] = -1221.7827;
      JarmuInfo[i_Vehicle][YPos] = 1827.3278;
      JarmuInfo[i_Vehicle][ZPos] = 41.4795;
      JarmuInfo[i_Vehicle][APos] = 229.6266;
      JarmuInfo[i_Vehicle][Szin1] = 1;
      JarmuInfo[i_Vehicle][Szin2] = 1;
           format(JarmuInfo[i_Vehicle][Tulaj], 30, \"%s\", Name(playerid));
      ChangeVehicleColor( i_Vehicle, 1, 1);
      format( sz_gString, sizeof(sz_gString), \"{ffdd00}* Sikeresen megvettél egy járművet! (( ID: %d | Többi infó: /kocsihelp )) *\", i_Vehicle );
      SCM( playerid, -1, sz_gString );
      SCM(playerid, -1,\"{ffdd00}* Vigyázz rá, mert ha felrobban a járműved akkor többé már nem használhatod! *\");
      cmd_me(playerid, \"vett egy járművet.\");
      format(S, sizeof(S), \"{11B0CC}[S-ADMIN] %s vett egy járművet! ID: %d \", Name(playerid), i_Vehicle);
      AdminUzenet(-1, S);
      
      if(talalat == 0)
      {
         JatekosInfo[playerid][KocsiID1] = i_Vehicle;
      }
      else if(talalat == 1)
      {
          JatekosInfo[playerid][KocsiID2] = i_Vehicle;
      }
      else if(talalat == 2)
      {
          JatekosInfo[playerid][KocsiID3] = i_Vehicle;
      }
      if(!dini_Exists(vFile(i_Vehicle)) )
      {
          dini_Create(vFile(i_Vehicle) );
      }
      MakeVehicle(i_Vehicle);
   }
}

 
Előre is köszönöm szépen a válaszokat.

Parkol parancs hiba kocsinál
« Válasz #1 Dátum: 2018. április 07. - 11:44:07 »
0 Show voters

stock SaveVehicle(vehicleid)
{
    vehicleid = GetFreeVehicleSlot();

 
Ez itt mi akar lenni? A függvényt úgy hívod meg, hogy paraméternek megvan adva a vehiclel id alapból. Te meg felülíród ezt free vehicle slottal? Ha levan rakva 1 kocsi, legyen az IDje 0. Te azt le akarod menteni, meghívod a SaveVehicle(/*vehicleid ==*/ 0) függvényt. Mikor meg lefut akkor meg GetFreeVehicleSlot-al felülírod, és keres egy üres slotot? Ha a 0 valid car, akkor azt kihagyja, és a következő ami nem valid car az az utána következő tehát 1-es lesz. Tehát ha lemented a 0-ás kocsit akkor az 1-es invalid kocsinak a tulajdonságait menti le, ami nem létezik tehát = nincs mentés. Nemtudom hogy gondoltad ezt. + dini-t ne használjunk már 2018-ban >< Nyílván mindenki azzal kezdi, de minnél jobban igyekezni kell elhagyni azt.

Parkol parancs hiba kocsinál
« Válasz #2 Dátum: 2018. április 07. - 20:22:07 »
0 Show voters
oh értem, köszönöm, csak tanulok a dinivel egyébként

Nem elérhető kos

  • 292
    • Profil megtekintése
Parkol parancs hiba kocsinál
« Válasz #3 Dátum: 2019. január 18. - 02:40:43 »
0 Show voters
Ne csinálj hülyeségeket, ha szabad megjegyeznem.
 



   
      new vehicleid = Kozelikocsi(playerid);new Float:x, Float:y, Float:z;for(new i; i < MAX_VEHICLES; i++)
   

[/quote]
 
vehicle id-nek semmi értelme, ha \"i\" vel meghatározod a kocsit, azaz kétszer határozod meg a kocsit... az \"i\" a pontosabb a parancsodnál.
 



   
      GetVehiclePos(i, x, y, z);    if(IsPlayerInRangeOfPoint(playerid, 3, x, y, z))
   

[/quote]
 
magyarán egész helyzetben az \"i\" számú kocsit hasznosítod, nem a vehicleid nevezetű lekérdezést! - ne csodálkoz, ha a vehicle idvel bugol a parkolás.
 
 
 
valamint extra segítség:
 

break; // használd h fölösen tovább ne futtassa a keresést miután lefut teljesen már a parancs

 
 
« Utoljára szerkesztve: 2019. január 18. - 02:43:36 írta kos »

Nem elérhető divkn

  • 3259
    • Profil megtekintése
Parkol parancs hiba kocsinál
« Válasz #4 Dátum: 2019. január 18. - 10:20:27 »
+1 Show voters

GetVehiclePos(vehicleid, JarmuInfo[vehicleid][XPos], JarmuInfo[vehicleid][ZPos], JarmuInfo[vehicleid][YPos]);

 
Ez talán megmagyarázza miért tűnik el a jármű. Egy kis enyhe hiba a koordináták lekérésében.

Nem elérhető kos

  • 292
    • Profil megtekintése
Parkol parancs hiba kocsinál
« Válasz #5 Dátum: 2019. január 20. - 02:31:20 »
0 Show voters
Idézetet írta: divkn date=1547803227


   

GetVehiclePos(vehicleid, JarmuInfo[vehicleid][XPos], JarmuInfo[vehicleid][ZPos], JarmuInfo[vehicleid][YPos]);

   
      Ez talán megmagyarázza miért tűnik el a jármű. Egy kis enyhe hiba a koordináták lekérésében.
   


ez a másik fele a problémájának, de remélhetőleg rájött volna miközben módosítja az általam javasolt dologgal 

Parkol parancs hiba kocsinál
« Válasz #6 Dátum: 2019. június 29. - 01:22:05 »
0 Show voters
A for ciklusnál az a parkolásban az \'i\' változónak adj kezdeti értéket! 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal