GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: Zsifon - 2016. március 30. - 23:11:34

Cím: MYSQL ID
Írta: Zsifon - 2016. március 30. - 23:11:34
Helló!
A mai nap abba a problémával találkoztam, hogy van egy rakás kocsim teszt gyanánt. Azt szertném megoldani, hogy adatbázis ID-re (DBID) lehessen őket változtatni. Pl: /getcar [DBID].
Válaszotokat előre is köszönöm!
Cím: MYSQL ID
Írta: Brian Harris - 2016. március 31. - 15:30:30
Betöltöd az adatbázis idt egy külön változóba majd a parancsba berakod h db id alapján geteljen.
Cím: MYSQL ID
Írta: Zsifon - 2016. április 02. - 17:51:10
Hát én így gondolkoztam, de nem jó:
 
CMD:getcar(playerid, params[])
{
new jarmuid;
if(sscanf(params, \"d\", jarmuid))  return SendClientMessage(playerid, -1, \"(( Használat: /gotocar [DBID] ))\");
if(jarmuid >= 1 && jarmuid <= SzSettings[Max_Vehicle])
{
new vehicleid = VehicleInfo[jarmuid-1][DBID];
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid, pX, pY, pZ);
SetVehiclePos(vehicleid, pX, pY+3, pZ+0.5 );
         }
Cím: MYSQL ID
Írta: norbinator09 - 2016. április 02. - 21:32:55
Idézetet írta: Zsifon date=1459612270\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"60021\" data-ipsquote-contentclass=\"forums_Topic
Hát én így gondolkoztam, de nem jó:
 
CMD:getcar(playerid, params[])
{
new jarmuid;
if(sscanf(params, \"d\", jarmuid))  return SendClientMessage(playerid, -1, \"(( Használat: /gotocar [DBID] ))\");
if(jarmuid >= 0 && jarmuid <= SzSettings[Max_Vehicle])
{
new vehicleid = -1;
                new i;
                while(vehicleid == -1)
                {
                if(VehicleInfo[DBID] == jarmuid) vehicleid = i;
                else i++;
                }
new Float:pX, Float:pY, Float:pZ;
GetPlayerPos(playerid, pX, pY, pZ);
SetVehiclePos(vehicleid, pX, pY+3, pZ+0.5 );
         }

 

Na így kapod meg a DBID alapján a  jármű ID-jét. Ha ígysem jó, akkor a betöltéssel lesz baj.
Cím: MYSQL ID
Írta: Zsifon - 2016. április 02. - 23:28:23
Nem jó. Bemásolom a betöltést ide. Amúgy már gondolkoztam azon is, hogy küld mentem a DL ID- is
Amúgy azt vettem észre, hogy valamikért az egyel előtte lévő kocsit hozza ide.
A betöltés:
 
public VehicleLoad()
{
    new sorok, mezok;
    cache_get_data(sorok, mezok, kapcs);
new vehtulaj[MAX_PLAYER_NAME] , plate[64];
new vehicleid;
if(sorok == 0)
{
print(\"Nincsen kocsi az adatbázisban!\");
}
else
{
for(new i = 0; i < sorok; i++)
{
   new VehID = cache_get_row_int(i, 0, kapcs);
   cache_get_row(i, 1, vehtulaj, kapcs, sizeof(vehtulaj));
   new model = cache_get_row_int(i, 2, kapcs );
   new Float: VehX = cache_get_row_float(i, 3, kapcs);
   new Float: VehY = cache_get_row_float(i, 4, kapcs);
   new Float: VehZ = cache_get_row_float(i, 5, kapcs);
   new Float: VehA = cache_get_row_float(i, 6, kapcs);
   new Float: VehHP = cache_get_row_float(i, 7, kapcs);
   new szin1 = cache_get_row_int(i, 8, kapcs);
   new szin2 = cache_get_row_int(i, 9, kapcs);
   cache_get_row(i, 10, plate, kapcs, sizeof(plate));
   new Uzemenyagtiups = cache_get_row_int(i, 11, kapcs);
   new Uzemanyagszint = cache_get_row_int(i, 12, kapcs);
   VehicleInfo[DBID] = VehID;
   VehicleInfo[Owner] = vehtulaj;
   VehicleInfo[ModID] = model;
   VehicleInfo[spawn][0] = VehX;
   VehicleInfo[spawn][1] = VehY;
   VehicleInfo[spawn][2] = VehZ;
   VehicleInfo[spawn][3] = VehA;
   VehicleInfo[HP] = VehHP;
   VehicleInfo[color][0] = szin1;
   VehicleInfo[color][1] = szin2;
   VehicleInfo[rendszam] = plate;
   VehicleInfo[FuelType] = Uzemenyagtiups;
   VehicleInfo[FuelLevel] = Uzemanyagszint;
   VehicleInfo[DLID] = i+1;
   SzSettings[Max_Vehicle] += 1;
   Letrehozva = true;
   if(i != INVALID_VEHICLE_ID)
   {
      vehicleid =  AddStaticVehicle(model, VehX, VehY, VehZ, VehA, szin1, szin2);
      SetVehicleHealth(vehicleid, VehHP);
      SetVehicleNumberPlate(vehicleid, plate);
   }
}
}
return 1;
}
Cím: MYSQL ID
Írta: norbinator09 - 2016. április 02. - 23:41:21
AddStaticVehicle helyett CreateVehicle-vel próbáld.
Cím: MYSQL ID
Írta: Zsifon - 2016. április 03. - 00:04:15
CMD:getcar(playerid, params[])
{
        new jarmuid;
        if(sscanf(params, \"d\", jarmuid))  return SendClientMessage(playerid, -1, \"(( Használat: /gotocar [DBID] ))\");
        if(jarmuid >= 0 && jarmuid <= SzSettings[Max_Vehicle])
        {
                new vehicleid = -1;
                new i;
                while(vehicleid == -1)
                {
                if(VehicleInfo[DBID] == jarmuid) vehicleid = i+1;
                else i++;
                }
                new Float:pX, Float:pY, Float:pZ;
                GetPlayerPos(playerid, pX, pY, pZ);
                SetVehiclePos(vehicleid, pX, pY+3, pZ+0.5 );
         }
return 1;
}

 
Így működik amúgy.
Szerk.: Nem így sem jó. A legmagasabb értékű kocsi-t nem találja meg
Cím: MYSQL ID
Írta: norbinator09 - 2016. április 03. - 14:38:23
if(VehicleInfo[DBID] == jarmuid) vehicleid = i+1;

 
Minek raktál bele egy +1-est? Tegyük fel, járműid-nek beírtál 4-et, elindul a cuklis, és amikor az \"i\" 3.-ra lalálja meg a 4-es DBID-t akkor 3-lesz a vehicleid és nem 3+1, mert a 3. kocsié a 4-es DBID nem a 4.-é!
Cím: MYSQL ID
Írta: Zsifon - 2016. április 03. - 16:32:17
amikor +1 nélkül írtam akkor az 1-es DBID-jü kocsi-ra a 0 0 0-as koordinátákra dobott.