[Pomoc] SQLite

Započeo xFORCERx
15. Jan. 2015. Zaključano
255
pregleda
5
postova
sime30
4
Enforcer
15. Jan. 2015.
Skripta koju koristim: Moja
Detaljan opis problema: Koristim SQLite. Pravim firme In Game putem komande i ID firme se povecava za +1 nakon svake napravljene. Zelim recimo obrisati firmu ID 3 , a imam 10 Firmi. Kad obrisem , bit ce ovako : ID 1, 2, 4, 5... Zelim da se pri sljedecem kreiranju firme ubaci ID 3, a ne sljedeci (ID 11). Evo ja sam tu vec nesto radio: Nisam obrisao cijeli redak vec samo UPDATE i stavio neke vrijednosti. Sada me zanima kako da ,pri sljedecem kreiranju, skripta prepozna ima li kakav slucaj s tim vrijednostima obrisane firme i da onda stavi na mjesto svjeze napravljene vrijednosti, kao kad normalno radim? Evo vam svi kodovi.
Dio skripte:

// Također, uvijek mi izbaci da nisam blizu firme, zasto je to? Gdje grijesim?

CMD:obrisifirmu(playerid, params[])
{

if(IgracInfo[ AdminLevelIgraca] >= 4)
{
new string;
    new Query;
        for (new i = 0; i < MAX_FIRMI; ++i)
{
  if(IsPlayerInRangeOfPoint(playerid,3.0,FirmaInfo,FirmaInfo,FirmaInfo))
    {
    if(brisanjeutijeku == true && idfirmekojubrise != -1)
    {
       
       
        // kodovi za brisanje
        format(Query,sizeof(Query),"UPDATE `firme` SET `IDFirme`= '0',`ImeVlasnika` = 'Obrisano',`Vrsta` = '0',`EXTX` = '0',`EXTY` = '0',`EXTZ` = '0',`Owned` = '0') WHERE `IDFirme` = '%d'",idfirmekojubrise);
        db_query( Database, Query );
        DestroyDynamic3DTextLabel(FirmaInfo);
    DestroyDynamicPickup(FirmaInfo);
    idfirmekojubrise = -1;
    brisanjeutijeku = false;
        // =======================================
       
        return 1;
    }
    idfirmekojubrise = i;
    brisanjeutijeku = true;
    format(string, sizeof(string), "Zelite li sigurno obrisati firmu ID: "COL_RED"%d {FFFFFF}? Ukoliko zelite, ponovite ovu komandu ovdje unutar 4 sekunde!", i);
    SCM(playerid, COLOR_WHITE,string);
    SetTimerEx("UkloniBrisanjeFirmeVarijablu", 4000, false , "i" , playerid);
   
   
}
else return SendClientMessage(playerid, COLOR_NICERED, "Ne nalazite se blizu firme!");
}
   
}
else return SendClientMessage(playerid, COLOR_NICERED, "Samo Admini!");
return 1;
}


CMD:napravifirmu(playerid, params[])
{
    if(IgracInfo[ AdminLevelIgraca] >= 4)
{
    new cijena,vrsta;
    if(sscanf(params, "ii",vrsta,cijena))
{
    SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid,SVJETLOPLAVA,"ID Liste: {FFFFFF}1. Benzinska(Potrebno skriptati) ...");
SendClientMessage(playerid,SVJETLOPLAVA,"Koristite: {FFFFFF}/napravifirmu ");

return 1;
}
else
{
    new rowid = 0;
    new DBResult: Result;
            new ID = SpawnanihFirmi+1;
            new FirmaString;
            new Query;
            new Float:xa,Float:ya,Float:za;
            new Field;
           
           

      if(vrsta == 1)
{
   
GetPlayerPos(playerid,xa,ya,za);
FirmaInfo = xa;
FirmaInfo = ya;
FirmaInfo = za;
FirmaInfo = cijena;
FirmaInfo = vrsta;

format(Query,sizeof(Query),"SELECT * FROM `firme` WHERE `IDFirme` = '0' LIMIT 1");
Result = db_query( Database, Query );
if( db_num_rows( Result ) )
{
rowid = db_get_field_assoc( Result, "IDFirme", Field, 4 );
FirmaInfo = strval(Field);
}
db_free_result( Result );
if(rowid > 0)
{
format(Query,sizeof(Query),"UPDATE `firme` SET `IDFirme`= '%d',`ImeVlasnika` = 'Nitko',`Vrsta` = '%d',`KolicinaGorivaNaPumpi` = '50',`NovacUFirmi` = '0',`Cijena` = '0',`EXTX` = '%f',`EXTY` = '%f',`EXTZ` = '%f',`Owned` = '0' WHERE `IDFirme` = '%d'",rowid, vrsta,cijena,xa,ya,za,rowid);
                db_query( Database, Query );
}
else
{

format(Query,sizeof(Query),"INSERT INTO `firme` (`IDFirme`,`ImeVlasnika`,`Vrsta`,`KolicinaGorivaNaPumpi`,`NovacUFirmi`,`Cijena`,`EXTX`,`EXTY`,`EXTZ`,`Owned`) VALUES ('%d','Nitko','%d','50','0','%d','%f','%f','%f',0)",ID,vrsta,cijena,xa,ya,za);
                db_query( Database, Query );
                SpawnanihFirmi++;
                format(FirmaString,sizeof(FirmaString),"{00C0FF}Firma na prodaju{FFFFFF} \n{00C0FF}Vrsta:{FFFFFF} Benzinska Pumpa\n{00C0FF}Cijena: {FFFFFF}%d$\n{48E31C}/kupifirmu",cijena);
FirmaInfo = CreateDynamic3DTextLabel(FirmaString, 0xFFFFFFFF, FirmaInfo, FirmaInfo, FirmaInfo, 30.0);
FirmaInfo =  CreateDynamicPickup(1274, 1, FirmaInfo, FirmaInfo, FirmaInfo, 0);
                }
}



Neke slike/video za lakse dobivanje pomoci(neobavezno):
Rudimental
5
OG Legend
15. Jan. 2015.
Mislim da bi jedino resenje za to bilo da u komandi ti postavljas ID firme.
sime30
4
Enforcer
16. Jan. 2015.
Sumnjam da je to jedino rjesenje. Trebam samo nekoga tko koristi SQLite malo vise nego ja.
Usput, zasto mi ne funkcionira IsPlayerInRange tamo kod brisanja firmi? Uvijek izbaci da nisam blizu
Rudimental
5
OG Legend
16. Jan. 2015.
Probaj ovako da sredis proveru dali je igrac blizu firme ili ne
if(!IsPlayerInRangeOfPoint(playerid, 3.0, FirmaInfo, FirmaInfo, FirmaInfo)) return SCM (playerid, -1, "Niste blizu firme");
sime30
4
Enforcer
16. Jan. 2015.
Hvala Rudimental na odgovorima, trudis se, no ipak sa odlucio prebaciti se na MySQL. S njime nikad nisam imao problema, a s ovim SQLite stalno problemi. Mozes zakljucati ovdje jer mi vise nije potrebna pomoc. Hvala jos jednom! 🙂

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava

© 2026 SmartShark. All rights reserved.

Powered by Momentum|v2026.3.001 Alpha