Szerző Téma: Kocsi betöltés hiba  (Megtekintve 641 alkalommal)

Kocsi betöltés hiba
« Dátum: 2016. június 03. - 11:53:18 »
0 Show voters
Hali!
Jelenleg azt akarom megcsinálni, hogy a kocsikat MySQL -be mentse illetve töltse be. /jarmu parancsal létrehoz egyet,be illeszti MySQL táblába ez megy is. Viszont a betöltés már nem működik, nem spawnolja le a kocsikat.
OnGameModeInitnél meghívom a
 
loadVehicles();

 
Ami így nézki:
 
loadVehicles()
{
new query[128];
format(query,sizeof(query),\"SELECT * FROM sveh\");
mysql_function_query(dbhandle,query,true,\"OnQueryFinish\",\"i\",THREAD_LOAD_VEHICLES);
return 1;
}

 
OnQueryFinish -be pedig így tölti be:
 

public OnQueryFinish(resultid, extraid, ConnectionHandle)
{
new num_rows, num_fields;
if(resultid != THREAD_NO_RESULT)
{
cache_get_data(num_rows, num_fields);
}
switch(resultid)
{
    case THREAD_LOAD_VEHICLES:
    {
        if(num_rows)
        {
      new v;
      for(new i = 0; i < num_rows ; i++)
      {
         cInfo[vID] = cache_get_field_content_int(i,\"id\",dbhandle);
         cInfo[vModel] = cache_get_field_content_int(i,\"VehModel\",dbhandle);
         cInfo[vPosX] = cache_get_field_content_float(i,\"VehX\",dbhandle);
         cInfo[vPosY] = cache_get_field_content_float(i,\"VehY\",dbhandle);
         cInfo[vPosZ] = cache_get_field_content_float(i,\"VehZ\",dbhandle);
         cInfo[vRot]  = cache_get_field_content_float(i,\"VehRot\",dbhandle);
         cInfo[vCol1] = cache_get_field_content_int(i,\"VehCol1\",dbhandle);
         cInfo[vCol2] = cache_get_field_content_int(i,\"VehCol2\",dbhandle);
         CreateVehicle(cInfo[vModel],cInfo[vPosX],cInfo[vPosY],cInfo[vPosZ],cInfo[vRot],cInfo[vCol1],cInfo[vCol2],-1);
         cInfo[vID]++;
         v++;
         printf(\"Jarmuvek betoltve: %d\", v);
      }
   }
   printf(\"Jarmuvek betoltve: 0\");
}
}
return 1;
}

 
Na most nem spawnolja le a kocsikat,tehát nem akarja beolvasni. Mi lehet a gond ? :( Előre is köszönöm.

Kocsi betöltés hiba
« Válasz #1 Dátum: 2016. június 03. - 12:12:13 »
+1 Show voters
Ez így rossz, ahogy van, a betöltésre gondolok.  :slap: Miért töltöd be a sorok számával megegyező tömbbe az adatokat? Utána miért kezded el mindig 1-el növelni? Nem adsz meg változót annak az értéknek, amivel a CreateVehicle visszatér. Helyesen valahogy így néz ki:
 
public OnQueryFinish(resultid, extraid, ConnectionHandle)
{
new num_rows, num_fields;
if(resultid != THREAD_NO_RESULT)
{
cache_get_data(num_rows, num_fields);
}
switch(resultid)
{
    case THREAD_LOAD_VEHICLES:
    {
        if(num_rows)
        {
      new v;
      for(new i = 0; i < num_rows ; i++)
      {
         v = cache_get_field_content_int(i,\"id\",dbhandle);
         cInfo[v][vModel] = cache_get_field_content_int(i,\"VehModel\",dbhandle);
         cInfo[v][vPosX] = cache_get_field_content_float(i,\"VehX\",dbhandle);
         cInfo[v][vPosY] = cache_get_field_content_float(i,\"VehY\",dbhandle);
         cInfo[v][vPosZ] = cache_get_field_content_float(i,\"VehZ\",dbhandle);
         cInfo[v][vRot]  = cache_get_field_content_float(i,\"VehRot\",dbhandle);
         cInfo[v][vCol1] = cache_get_field_content_int(i,\"VehCol1\",dbhandle);
         cInfo[v][vCol2] = cache_get_field_content_int(i,\"VehCol2\",dbhandle);
         cInfo[v][vID] = CreateVehicle(cInfo[v][vModel],cInfo[v][vPosX],cInfo[v][vPosY],cInfo[v][vPosZ],cInfo[v][vRot],cInfo[v][vCol1],cInfo[v][vCol2],-1);
         printf(\"Jarmuvek betoltve: %d\", num_rows);
      }
   }
   else
      printf(\"Jarmuvek betoltve: 0\");
}
}
return 1;
}

 
Vagyis, betöltöd a jármű ID-jét a \"v\" változóba, ez az SQL ID-je a járműnek. Aztán folyamatosan az adott ID-jű járműnek a tömbjébe fogod betölteni az adatokat a táblából. A \"vID\"\' változó, amit a létrehoztál az enumban (gondolom) fogja tárolni a CreateVehicle által visszaadott értéket, vagyis a kocsi alap ID-jét. Ha van sor, akkor kiprinteli a sorok számát, amit visszaadott a cache_get_data funkció. Ha nincs, akkor 0-át printel ki. Más ötletem nincs  :shurg:

Kocsi betöltés hiba
« Válasz #2 Dátum: 2016. június 03. - 12:24:38 »
0 Show voters
Nagyon hálás vagyok neked, nagyon szépen köszönöm működik!  :thumbsup: ;)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal