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):