Započeo xFORCERx
•15. Jan. 2015.• Zaključano[Pomoc] SQLite
320
pregleda
5
postova
Enforcer
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
290
Postovi:
16
Teme:
Pridružio se:Okt. 2012
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?
Neke slike/video za lakse dobivanje pomoci(neobavezno):
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):
OG Legend
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
246 / 250 XP
Početnik(0)
2,678
Postovi:
133
Teme:
Pridružio se:Maj 2012
Enforcer
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
290
Postovi:
16
Teme:
Pridružio se:Okt. 2012
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
Usput, zasto mi ne funkcionira IsPlayerInRange tamo kod brisanja firmi? Uvijek izbaci da nisam blizu
OG Legend
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
246 / 250 XP
Početnik(0)
2,678
Postovi:
133
Teme:
Pridružio se:Maj 2012
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");Enforcer
Balkan SA:MP
SA-MP Doprinos
Balkan SA:MP
SA-MP DoprinosNovi Član
90 / 100 XP
Početnik(0)
290
Postovi:
16
Teme:
Pridružio se:Okt. 2012
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