Zaključano

[Pomoc] SQLite

Započeo xFORCERx
pre 11 godina
241
pregleda
5
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
sime30
Enforcer
pre 11 godina
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
OG Legend
pre 11 godina
Mislim da bi jedino resenje za to bilo da u komandi ti postavljas ID firme.
sime30
Enforcer
pre 11 godina
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
OG Legend
pre 11 godina
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
Enforcer
pre 11 godina
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